r364 - in trunk: magalie-services/src/main/java/com/franciaflex/magalie/services/service magalie-web/src/main/java/com/franciaflex/magalie/web/action
Author: bleny Date: 2013-08-19 15:57:53 +0200 (Mon, 19 Aug 2013) New Revision: 364 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: fixes #2994 change redirection after reception confirmation Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-08-05 15:06:30 UTC (rev 363) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-08-19 13:57:53 UTC (rev 364) @@ -49,6 +49,7 @@ import com.franciaflex.magalie.services.MagalieServiceContext; import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; import com.franciaflex.magalie.services.exception.PreparedArticleReceptionAlreadyStoredException; +import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableSet; @@ -431,4 +432,45 @@ } + /** + * On cherche à savoir si pour un storedArticle donné, il y a encore des articles à recevoir pour le même fournisseur + */ + public Optional<Supplier> isSupplierHaveOtherArticlesToReceive(Building building, String storedArticleId) { + + JpaMagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); + + StoredArticleJpaDao storedArticleDao = persistenceContext.getStoredArticleDao(); + + StoredArticle storedArticle = storedArticleDao.findById(storedArticleId); + + Supplier supplier = storedArticle.getArticle().getSupplier(); + + Optional<Supplier> result; + + if (supplier == null) { + + result = Optional.absent(); + + } else { + + SuppliersToReceive receivedSuppliers = getReceivedSuppliers(building); + + boolean isSupplierHaveOtherArticlesToReceive = receivedSuppliers.getSuppliersByGroup().values().contains(supplier); + + if (isSupplierHaveOtherArticlesToReceive) { + + result = Optional.of(supplier); + + } else { + + result = Optional.absent(); + + } + + } + + return result; + + } + } Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java 2013-08-05 15:06:30 UTC (rev 363) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java 2013-08-19 13:57:53 UTC (rev 364) @@ -26,13 +26,16 @@ import com.franciaflex.magalie.MagalieTechnicalException; import com.franciaflex.magalie.persistence.entity.Building; import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.Supplier; import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; import com.franciaflex.magalie.services.exception.PreparedArticleReceptionAlreadyStoredException; import com.franciaflex.magalie.services.service.ReceptionConfirmation; import com.franciaflex.magalie.services.service.ReceptionService; import com.franciaflex.magalie.services.service.ReceptionTask; +import com.franciaflex.magalie.web.Activity; import com.franciaflex.magalie.web.MagalieActionSupport; import com.franciaflex.magalie.web.MagalieSession; +import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Strings; import org.apache.commons.logging.Log; @@ -46,7 +49,8 @@ import java.util.Map; @Results({ - @Result(name= "RECEPTIONS", type="redirectAction", params = { "actionName", "prepare-article-reception!input" }), + @Result(name= "REDIRECT_TO_ARTICLES", type="redirectAction", params = { "actionName", "prepare-article-reception", "supplierId", "%{supplierId}" }), + @Result(name= "REDIRECT_TO_SUPPLIERS", type="redirectAction", params = { "actionName", "prepare-article-reception!input" }), @Result(name= "PREPARED_RECEPTIONS", type="redirectAction", params = { "actionName", "prepare-prepared-article-reception!input" }) }) public class ReceiveArticleAction extends MagalieActionSupport { @@ -65,6 +69,8 @@ protected ReceptionConfirmation confirmation; + protected String supplierId; + public void setSession(MagalieSession session) { this.session = session; } @@ -165,10 +171,46 @@ MagalieUser magalieUser = session.getMagalieUser(); + Building building = session.getBuilding(); + service.confirmReception(magalieUser, confirmation, preparedArticleReceptionBarcode); - return session.getActivity().name(); + // on redirige selon l'activité + String result; + + if (Activity.PREPARED_RECEPTIONS.equals(session.getActivity())) { + + result = Activity.PREPARED_RECEPTIONS.name(); + + } else { + + // dans ce cas on redirige vers la listes des articles, s'il reste des articles à réceptionner pour le même fournisseur + // sinon, on renvoie vers la liste des fournisseurs + + Optional<Supplier> supplierOptional = + service.isSupplierHaveOtherArticlesToReceive(building, confirmation.getStoredArticleId()); + + if (supplierOptional.isPresent()) { + + result = "REDIRECT_TO_ARTICLES"; + + supplierId = supplierOptional.get().getId(); + + } else { + + result = "REDIRECT_TO_SUPPLIERS"; + + } + + } + + return result; + } + public String getSupplierId() { + return supplierId; + } + }
participants (1)
-
bleny@users.forge.codelutin.com