Author: bleny Date: 2013-05-22 14:30:18 +0200 (Wed, 22 May 2013) New Revision: 178 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: fixes #2452 notify user when requested list is complete Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java 2013-05-22 09:01:57 UTC (rev 177) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java 2013-05-22 12:30:18 UTC (rev 178) @@ -30,6 +30,7 @@ import com.franciaflex.magalie.persistence.dao.DeliveredRequestedListDao; import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; import com.franciaflex.magalie.persistence.dao.RequestedListDao; +import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao; import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.Building; import com.franciaflex.magalie.persistence.entity.DeliveredRequestedArticle; @@ -326,26 +327,23 @@ public void onStorageMovementConfirmation(StorageMovementOrder storageMovementOrder) { - MagaliePersistenceContext persistenceContext = - serviceContext.getPersistenceContext(); + MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); - DeliveredRequestedArticleDao deliveredRequestedArticleDao = - persistenceContext.getDeliveredRequestedArticleDao(); + DeliveredRequestedList deliveredRequestedList = getDeliveredRequestedList(storageMovementOrder.getId()); - DeliveredRequestedArticle deliveredRequestedArticle = - deliveredRequestedArticleDao.find(storageMovementOrder); + if (deliveredRequestedList != null) { - if (deliveredRequestedArticle != null) { - // a order is confirmed and this order is about a requested article // so we may update the status of the list - RequestedList requestedList = - deliveredRequestedArticle.getRequestedArticle().getRequestedList(); + RequestedList requestedList = deliveredRequestedList.getRequestedList(); RequestedArticleDao requestedArticleDao = persistenceContext.getRequestedArticleDao(); + DeliveredRequestedArticleDao deliveredRequestedArticleDao = + persistenceContext.getDeliveredRequestedArticleDao(); + List<RequestedArticle> requestedArticles = requestedArticleDao.findAll(requestedList); @@ -364,16 +362,8 @@ + requestedList.getCode() + " as complete"); } - DeliveredRequestedListDao deliveredRequestedListDao = - persistenceContext.getDeliveredRequestedListDao(); - - DeliveredRequestedList deliveredRequestedList = - deliveredRequestedListDao.findByRequestedList(requestedList); - deliveredRequestedList.setStatus(DeliveredRequestedListStatus.COMPLETE); - // TODO brendan 25/04/13 notify user - } } @@ -440,4 +430,44 @@ return allDistinctListTypes; } + + /** + * @return null if storage movement order is not about a requested-list (for example, kanban) + */ + public DeliveredRequestedList getDeliveredRequestedList(String storageMovementOrderId) { + + MagaliePersistenceContext persistenceContext = + serviceContext.getPersistenceContext(); + + DeliveredRequestedArticleDao deliveredRequestedArticleDao = + persistenceContext.getDeliveredRequestedArticleDao(); + + StorageMovementOrderDao storageMovementOrderDao = + persistenceContext.getStorageMovementOrderDao(); + + StorageMovementOrder storageMovementOrder = + storageMovementOrderDao.findById(storageMovementOrderId); + + DeliveredRequestedArticle deliveredRequestedArticle = + deliveredRequestedArticleDao.find(storageMovementOrder); + + DeliveredRequestedList deliveredRequestedList = null; + + if (deliveredRequestedArticle != null) { + + RequestedList requestedList = + deliveredRequestedArticle.getRequestedArticle().getRequestedList(); + + DeliveredRequestedListDao deliveredRequestedListDao = + persistenceContext.getDeliveredRequestedListDao(); + + deliveredRequestedList = + deliveredRequestedListDao.findByRequestedList(requestedList); + + } + + return deliveredRequestedList; + + } + } Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java 2013-05-22 09:01:57 UTC (rev 177) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java 2013-05-22 12:30:18 UTC (rev 178) @@ -24,8 +24,11 @@ */ import com.franciaflex.magalie.persistence.entity.Building; +import com.franciaflex.magalie.persistence.entity.DeliveredRequestedList; +import com.franciaflex.magalie.persistence.entity.DeliveredRequestedListStatus; import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.persistence.entity.RequestedArticle; +import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; import com.franciaflex.magalie.services.AbstractMagalieServiceTest; import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; @@ -223,4 +226,47 @@ } + @Test + public void testCompleteStatusIsReachable() throws Exception { + + FindOrderToExecuteResult orderToExecute; + StorageMovementOrder storageMovementOrder; + DeliveredRequestedList deliveredRequestedList; + + // we will process a requested list with to articles to checks that the state is updated + + // first article + + { + + orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); + + Preconditions.checkState(orderToExecute.isSuccess()); + + storageMovementOrder = orderToExecute.getStorageMovementOrder(); + + service.onStorageMovementConfirmation(storageMovementOrder); + + deliveredRequestedList = service.getDeliveredRequestedList(storageMovementOrder.getId()); + + Assert.assertNotEquals(DeliveredRequestedListStatus.COMPLETE, deliveredRequestedList.getStatus()); + + } + + // now treat last article of the list to make it complete + + orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); + + Preconditions.checkState(orderToExecute.isSuccess()); + + storageMovementOrder = orderToExecute.getStorageMovementOrder(); + + service.onStorageMovementConfirmation(storageMovementOrder); + + deliveredRequestedList = service.getDeliveredRequestedList(storageMovementOrder.getId()); + + Assert.assertNotEquals(DeliveredRequestedListStatus.COMPLETE, deliveredRequestedList.getStatus()); + + } + } Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-05-22 09:01:57 UTC (rev 177) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-05-22 12:30:18 UTC (rev 178) @@ -24,10 +24,13 @@ */ import com.franciaflex.magalie.MagalieTechnicalException; +import com.franciaflex.magalie.persistence.entity.DeliveredRequestedList; +import com.franciaflex.magalie.persistence.entity.DeliveredRequestedListStatus; import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.services.StorageMovementConfirmation; import com.franciaflex.magalie.services.StorageMovementTask; import com.franciaflex.magalie.services.service.ArticleStorageService; +import com.franciaflex.magalie.services.service.RequestedArticleService; import com.franciaflex.magalie.web.MagalieActionSupport; import com.franciaflex.magalie.web.MagalieSession; import com.google.common.base.Preconditions; @@ -49,8 +52,10 @@ private static final Log log = LogFactory.getLog(WithdrawItemAction.class); - protected ArticleStorageService service; + protected ArticleStorageService articleStorageService; + protected RequestedArticleService requestedArticleService; + protected String storageMovementOrderId; protected StorageMovementTask storageMovementTask; @@ -63,10 +68,14 @@ this.session = session; } - public void setService(ArticleStorageService service) { - this.service = service; + public void setArticleStorageService(ArticleStorageService articleStorageService) { + this.articleStorageService = articleStorageService; } + public void setRequestedArticleService(RequestedArticleService requestedArticleService) { + this.requestedArticleService = requestedArticleService; + } + public void setStorageMovementOrderId(String storageMovementOrderId) { this.storageMovementOrderId = storageMovementOrderId; } @@ -76,7 +85,7 @@ Preconditions.checkNotNull(storageMovementOrderId); - storageMovementTask = service.getStorageMovementTask(storageMovementOrderId); + storageMovementTask = articleStorageService.getStorageMovementTask(storageMovementOrderId); return INPUT; @@ -118,10 +127,23 @@ MagalieUser magalieUser = session.getMagalieUser(); - service.confirmStorageMovement(confirmation, magalieUser); + articleStorageService.confirmStorageMovement(confirmation, magalieUser); String resultName = session.getActivity().name(); + DeliveredRequestedList deliveredRequestedList = + requestedArticleService.getDeliveredRequestedList(confirmation.getStorageMovementOrderId()); + + if (deliveredRequestedList != null) { + + if (deliveredRequestedList.getStatus() == DeliveredRequestedListStatus.COMPLETE) { + + session.addMessage("La liste " + deliveredRequestedList.getRequestedList().getCode() + " est terminée"); + + } + + } + return resultName; }