Author: bleny Date: 2013-09-02 14:08:27 +0200 (Mon, 02 Sep 2013) New Revision: 405 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: fixes #3147 do not affect to another list if user was already affected to a completed list 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 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-09-02 09:48:10 UTC (rev 404) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java 2013-09-02 12:08:27 UTC (rev 405) @@ -88,52 +88,8 @@ DeliveredRequestedList affectedDeliveredRequestedList = deliveredRequestedListDao.findByAffectedTo(magalieUser); - DeliveredRequestedList oldAffectation = null; + if (affectedDeliveredRequestedList == null) { - if (affectedDeliveredRequestedList != null) { - - RequestedList affectedRequestedList = affectedDeliveredRequestedList.getRequestedList(); - - findOrderToExecuteResult = - findOrderToExecute(affectedRequestedList, magalieUser, building); - - if (findOrderToExecuteResult.isSuccess()) { - - if (log.isInfoEnabled()) { - log.info("order to execute " + findOrderToExecuteResult + " found in affected list " + affectedDeliveredRequestedList); - } - - } else { - - if (log.isInfoEnabled()) { - log.info("request list " + affectedDeliveredRequestedList.getRequestedList() - + " is not complete, putting it back to pending"); - } - - affectedDeliveredRequestedList.setStatus(DeliveredRequestedListStatus.PENDING); - - affectedDeliveredRequestedList.setAffectedTo(null); - - oldAffectation = affectedDeliveredRequestedList; - - if (findOrderToExecuteResult.isDriverLicenseRequired()) { - - userNotificationContext.notifyUnaffectedRequestedListDriverLicenseRequired(magalieUser, oldAffectation); - - } else if (findOrderToExecuteResult.isEverythingUnavailable()) { - - userNotificationContext.notifyUnaffectedRequestedListForEverythingUnavailable(magalieUser, oldAffectation); - - } - - } - - } - - DeliveredRequestedList newAffectation = null; - - if (findOrderToExecuteResult == null || ! findOrderToExecuteResult.isSuccess()) { - RequestedArticleJpaDao requestedArticleDao = persistenceContext.getRequestedArticleDao(); @@ -163,7 +119,7 @@ RequestedList requestedList = findOrderToExecuteResult.getRequestedArticle().getRequestedList(); - newAffectation = deliveredRequestedListDao.findByRequestedList(requestedList); + DeliveredRequestedList newAffectation = deliveredRequestedListDao.findByRequestedList(requestedList); if (newAffectation == null) { @@ -185,34 +141,62 @@ deliveredRequestedListDao.merge(newAffectation); + userNotificationContext.notifyAffectedRequestedList(magalieUser, newAffectation); + + findOrderToExecuteResult.setNewAffectation(newAffectation); + } } - } + } else { - persistenceContext.commit(); + RequestedList affectedRequestedList = affectedDeliveredRequestedList.getRequestedList(); - if (oldAffectation != null) { + findOrderToExecuteResult = + findOrderToExecute(affectedRequestedList, magalieUser, building); - findOrderToExecuteResult.setOldAffectation(oldAffectation); + if (findOrderToExecuteResult.isSuccess()) { - } + if (log.isInfoEnabled()) { + log.info("order to execute " + findOrderToExecuteResult + " found in affected list " + affectedDeliveredRequestedList); + } - if (newAffectation != null) { + } else { - findOrderToExecuteResult.setNewAffectation(newAffectation); + if (log.isInfoEnabled()) { + log.info("request list " + affectedDeliveredRequestedList.getRequestedList() + + " is not complete, putting it back to pending"); + } - userNotificationContext.notifyAffectedRequestedList(magalieUser, newAffectation); + affectedDeliveredRequestedList.setStatus(DeliveredRequestedListStatus.PENDING); + affectedDeliveredRequestedList.setAffectedTo(null); + + DeliveredRequestedList oldAffectation = affectedDeliveredRequestedList; + + if (findOrderToExecuteResult.isDriverLicenseRequired()) { + + userNotificationContext.notifyUnaffectedRequestedListDriverLicenseRequired(magalieUser, oldAffectation); + + } else if (findOrderToExecuteResult.isEverythingUnavailable()) { + + userNotificationContext.notifyUnaffectedRequestedListForEverythingUnavailable(magalieUser, oldAffectation); + + } + + findOrderToExecuteResult.setOldAffectation(oldAffectation); + + } + } + persistenceContext.commit(); + if (log.isInfoEnabled()) { log.info("will return " + findOrderToExecuteResult); } - Preconditions.checkState(oldAffectation == null || newAffectation == null || ! oldAffectation.equals(newAffectation)); - Preconditions.checkState(findOrderToExecuteResult != null); Preconditions.checkState( 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-09-02 09:48:10 UTC (rev 404) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java 2013-09-02 12:08:27 UTC (rev 405) @@ -218,15 +218,23 @@ // first list is finished, must know old affectation and new affectation { + orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); + Assert.assertFalse(orderToExecute.isSuccess()); + + Assert.assertNull(orderToExecute.getNewAffectation()); + Assert.assertNotNull(orderToExecute.getOldAffectation()); + + } + + // start a new list, we should have been affected to another list + { + orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); Preconditions.checkState(orderToExecute.isSuccess()); Assert.assertEquals("requestedArticle6", orderToExecute.getRequestedArticle().getId()); Assert.assertNotNull(orderToExecute.getNewAffectation()); - Assert.assertNotNull(orderToExecute.getOldAffectation()); - Assert.assertNotEquals( - orderToExecute.getOldAffectation().getRequestedList(), - orderToExecute.getNewAffectation().getRequestedList()); + Assert.assertNull(orderToExecute.getOldAffectation()); StorageMovementConfirmation confirmation = new StorageMovementConfirmation(); confirmation.setRequestedArticleId(orderToExecute.getRequestedArticle().getId());