r281 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao magalie-services/src/main/java/com/franciaflex/magalie/services/exception magalie-services/src/main/java/com/franciaflex/magalie/services/service magalie-services/src/main/resources magalie-services/src/test/java/com/franciaflex/magalie/services/service magalie-web/src/main/java/com/franciaflex/magalie/web/action
Author: bleny Date: 2013-07-04 10:10:43 +0200 (Thu, 04 Jul 2013) New Revision: 281 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: some article may not be available by kanban Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/ArticleNotAvailableForKanbanException.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/FulfilKanbanServiceTest.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanJpaDao.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java trunk/magalie-services/src/main/resources/fixtures.yaml trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanJpaDao.java 2013-07-04 07:48:01 UTC (rev 280) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanJpaDao.java 2013-07-04 08:10:43 UTC (rev 281) @@ -41,6 +41,7 @@ TypedQuery<Kanban> query = entityManager.createQuery("from Kanban k where k.article = :article and k.warehouse = :warehouse", getEntityClass()); query.setParameter("article", article); query.setParameter("warehouse", warehouse); - return query.getSingleResult(); + return findAnyOrNull(query); } + } Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/ArticleNotAvailableForKanbanException.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/ArticleNotAvailableForKanbanException.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/ArticleNotAvailableForKanbanException.java 2013-07-04 08:10:43 UTC (rev 281) @@ -0,0 +1,16 @@ +package com.franciaflex.magalie.services.exception; + +import com.franciaflex.magalie.persistence.entity.Article; + +public class ArticleNotAvailableForKanbanException extends MagalieException { + + protected Article article; + + public ArticleNotAvailableForKanbanException(Article article) { + this.article = article; + } + + public Article getArticle() { + return article; + } +} Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-07-04 07:48:01 UTC (rev 280) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-07-04 08:10:43 UTC (rev 281) @@ -36,6 +36,7 @@ import com.franciaflex.magalie.persistence.entity.Warehouse; import com.franciaflex.magalie.services.MagalieService; import com.franciaflex.magalie.services.MagalieServiceContext; +import com.franciaflex.magalie.services.exception.ArticleNotAvailableForKanbanException; import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -65,7 +66,7 @@ } - public double getDefinedQuantity(Article article, Warehouse destinationStore) { + public double getDefinedQuantity(Article article, Warehouse destinationStore) throws ArticleNotAvailableForKanbanException { JpaMagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); @@ -74,7 +75,9 @@ Kanban kanban = dao.find(article, destinationStore); - // FIXME brendan 03/07/13 NPE + if (kanban == null) { + throw new ArticleNotAvailableForKanbanException(article); + } double quantityInKanban = kanban.getRequiredQuantity(); Modified: trunk/magalie-services/src/main/resources/fixtures.yaml =================================================================== --- trunk/magalie-services/src/main/resources/fixtures.yaml 2013-07-04 07:48:01 UTC (rev 280) +++ trunk/magalie-services/src/main/resources/fixtures.yaml 2013-07-04 08:10:43 UTC (rev 281) @@ -427,19 +427,12 @@ warehouse: *B01 requiredQuantity: 10 -kanban6: - &kanban6 !kanban - article: *article6 - warehouse: *B01 - requiredQuantity: 9 - kanbans: - *kanban1 - *kanban2 - *kanban3 - *kanban4 - *kanban5 - - *kanban6 storedArticle1: &storedArticle1 !stored-article Added: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/FulfilKanbanServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/FulfilKanbanServiceTest.java (rev 0) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/FulfilKanbanServiceTest.java 2013-07-04 08:10:43 UTC (rev 281) @@ -0,0 +1,77 @@ +package com.franciaflex.magalie.services.service; + +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.Warehouse; +import com.franciaflex.magalie.services.AbstractMagalieServiceTest; +import com.franciaflex.magalie.services.exception.ArticleNotAvailableForKanbanException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class FulfilKanbanServiceTest extends AbstractMagalieServiceTest { + + private static final Log log = LogFactory.getLog(FulfilKanbanServiceTest.class); + + protected FulfilKanbanService service; + + protected Warehouse warehouse; + + @Before + public void setUp() { + + loadFixtures("fixtures"); + + warehouse = fixture("B01"); + + service = newService(FulfilKanbanService.class); + + } + + @Test + public void testGetDefinedQuantity() { + + Article article = fixture("article1"); + + try { + + double definedQuantity = service.getDefinedQuantity(article, warehouse); + + Assert.assertEquals(50., definedQuantity, DELTA); + + } catch (ArticleNotAvailableForKanbanException e) { + + if (log.isErrorEnabled()) { + log.error("unexpected exception", e); + } + + Assert.fail(); + + } + + article = fixture("article6"); + + try { + + double definedQuantity = service.getDefinedQuantity(article, warehouse); + + if (log.isTraceEnabled()) { + log.trace("defined quantity = " + definedQuantity); + } + + Assert.fail("expected exception"); + + } catch (ArticleNotAvailableForKanbanException e) { + + if (log.isTraceEnabled()) { + log.trace("expected exception", e); + } + + Assert.assertEquals(article, e.getArticle()); + + } + + } + +} Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-07-04 07:48:01 UTC (rev 280) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-07-04 08:10:43 UTC (rev 281) @@ -29,6 +29,7 @@ import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; import com.franciaflex.magalie.persistence.entity.Warehouse; +import com.franciaflex.magalie.services.exception.ArticleNotAvailableForKanbanException; import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; import com.franciaflex.magalie.services.service.BookArticleResult; import com.franciaflex.magalie.services.service.FulfilKanbanService; @@ -165,8 +166,20 @@ if (quantity == null) { - double quantityDefined = service.getDefinedQuantity(article, destinationWarehouse); + double quantityDefined; + try { + + quantityDefined = service.getDefinedQuantity(article, destinationWarehouse); + + } catch (ArticleNotAvailableForKanbanException e) { + + addFieldError("articleBarcode", "Article non disponible par kanban"); + + return INPUT; + + } + if (quantityDefined > 0) { quantity = quantityDefined;
participants (1)
-
bleny@users.forge.codelutin.com