Author: bleny Date: 2013-05-27 13:34:33 +0200 (Mon, 27 May 2013) New Revision: 197 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: remove FIXME by deducing quantities already received Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java 2013-05-27 10:14:06 UTC (rev 196) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java 2013-05-27 11:34:33 UTC (rev 197) @@ -26,6 +26,7 @@ import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.Building; import com.franciaflex.magalie.persistence.entity.StorageMovement; +import com.franciaflex.magalie.persistence.entity.StoredArticle; import java.util.List; @@ -39,4 +40,6 @@ List<StorageMovement> findAll(); List<StorageMovement> findAllInReception(Building building); + + List<StorageMovement> findAllImpactingStoredArticle(StoredArticle storedArticle); } Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java 2013-05-27 10:14:06 UTC (rev 196) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java 2013-05-27 11:34:33 UTC (rev 197) @@ -28,6 +28,7 @@ import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.Building; import com.franciaflex.magalie.persistence.entity.StorageMovement; +import com.franciaflex.magalie.persistence.entity.StoredArticle; import javax.persistence.EntityManager; import javax.persistence.Query; @@ -64,6 +65,14 @@ } @Override + public List<StorageMovement> findAllImpactingStoredArticle(StoredArticle storedArticle) { + Query query = entityManager.createQuery("from StorageMovement sm where sm.article = :article and (sm.originLocation = :location or sm.destinationLocation = :location)"); + query.setParameter("location", storedArticle.getLocation()); + query.setParameter("article", storedArticle.getArticle()); + return query.getResultList(); + } + + @Override public List<StorageMovement> findAll() { Query query = entityManager.createQuery("from StorageMovement sm order by sm.orderDate"); return query.getResultList(); 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-05-27 10:14:06 UTC (rev 196) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-05-27 11:34:33 UTC (rev 197) @@ -120,15 +120,30 @@ MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); - StoredArticleDao storedArticleDao = persistenceContext.getStoredArticleDao(); + StoredArticleDao storedArticleDao = + persistenceContext.getStoredArticleDao(); StoredArticle storedArticle = storedArticleDao.findById(storedArticleId); - // FIXME brendan 23/05/13 déduire de la quantité les mouvements de stocks + StorageMovementDao storageMovementDao = + persistenceContext.getStorageMovementDao(); - double quantity = storedArticle.getQuantity(); + List<StorageMovement> allStorageMovementsImpactingStoredArticle = + storageMovementDao.findAllImpactingStoredArticle(storedArticle); + ArticleStorageService articleStorageService = + serviceContext.newService(ArticleStorageService.class); + + Iterable<StoredArticle> storedArticleSingleton = Lists.newArrayList(storedArticle); + + storedArticleSingleton = + articleStorageService.computeActualQuantities( + storedArticleSingleton, + allStorageMovementsImpactingStoredArticle); + + double quantity = Iterables.getOnlyElement(storedArticleSingleton).getQuantity(); + ReceptionTask receptionTask = buildReceptionTask(storedArticle, quantity); return receptionTask; Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java 2013-05-27 10:14:06 UTC (rev 196) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java 2013-05-27 11:34:33 UTC (rev 197) @@ -29,6 +29,7 @@ import com.franciaflex.magalie.persistence.entity.Building; import com.franciaflex.magalie.persistence.entity.Location; import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.PreparedArticleReception; import com.franciaflex.magalie.persistence.entity.StorageMovement; import com.franciaflex.magalie.persistence.entity.StoredArticle; import com.franciaflex.magalie.persistence.entity.Supplier; @@ -201,7 +202,7 @@ } @Test - public void testWeCannotReceiveTheSameItemMultipleTime() throws Exception { + public void testWeCannotReceiveTheSameItemMultipleTime() { testConfirmReception(); @@ -219,4 +220,20 @@ Assert.assertTrue(suppliers.isEmpty()); } + + @Test + public void testReceivePreparedReception() { + + PreparedArticleReception preparedArticleReception = + service.getPreparedArticleReception("PAR2"); + + Assert.assertNotNull(preparedArticleReception); + + ReceptionTask receptionTask = + service.getReceptionTaskForPreparedArticleReception("PAR2"); + + Assert.assertEquals(4., receptionTask.getQuantity(), DELTA); + + } + }