r280 - in trunk: magalie-services/src/main/java/com/franciaflex/magalie/services/exception magalie-services/src/main/java/com/franciaflex/magalie/services/service 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 09:48:01 +0200 (Thu, 04 Jul 2013) New Revision: 280 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: check that prepared article reception is not already stored Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/PreparedArticleReceptionAlreadyStoredException.java 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/MagalieBarcodeService.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 trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PreparePreparedArticleReceptionAction.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/PreparedArticleReceptionAlreadyStoredException.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/PreparedArticleReceptionAlreadyStoredException.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/PreparedArticleReceptionAlreadyStoredException.java 2013-07-04 07:48:01 UTC (rev 280) @@ -0,0 +1,17 @@ +package com.franciaflex.magalie.services.exception; + +import com.franciaflex.magalie.persistence.entity.PreparedArticleReception; + +public class PreparedArticleReceptionAlreadyStoredException extends MagalieException { + + protected PreparedArticleReception preparedArticleReception; + + public PreparedArticleReceptionAlreadyStoredException(PreparedArticleReception preparedArticleReception) { + super("prepared article reception is already stored"); + this.preparedArticleReception = preparedArticleReception; + } + + public PreparedArticleReception getPreparedArticleReception() { + return preparedArticleReception; + } +} 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-03 12:53:55 UTC (rev 279) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-07-04 07:48:01 UTC (rev 280) @@ -74,6 +74,8 @@ Kanban kanban = dao.find(article, destinationStore); + // FIXME brendan 03/07/13 NPE + double quantityInKanban = kanban.getRequiredQuantity(); return quantityInKanban; Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java 2013-07-03 12:53:55 UTC (rev 279) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java 2013-07-04 07:48:01 UTC (rev 280) @@ -26,13 +26,18 @@ import com.franciaflex.magalie.persistence.JpaMagaliePersistenceContext; import com.franciaflex.magalie.persistence.dao.ArticleDao; import com.franciaflex.magalie.persistence.dao.LocationDao; +import com.franciaflex.magalie.persistence.dao.PreparedArticleReceptionJpaDao; +import com.franciaflex.magalie.persistence.dao.StoredArticleJpaDao; import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.Building; import com.franciaflex.magalie.persistence.entity.Company; import com.franciaflex.magalie.persistence.entity.Location; +import com.franciaflex.magalie.persistence.entity.PreparedArticleReception; +import com.franciaflex.magalie.persistence.entity.StoredArticle; import com.franciaflex.magalie.services.MagalieService; import com.franciaflex.magalie.services.MagalieServiceContext; import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; +import com.franciaflex.magalie.services.exception.PreparedArticleReceptionAlreadyStoredException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -91,4 +96,35 @@ } + public PreparedArticleReception getPreparedArticleReception(String barcode) + throws InvalidMagalieBarcodeException, PreparedArticleReceptionAlreadyStoredException { + + JpaMagaliePersistenceContext persistenceContext = + serviceContext.getPersistenceContext(); + + PreparedArticleReceptionJpaDao dao = + persistenceContext.getPreparedArticleReceptionDao(); + + PreparedArticleReception preparedArticleReception = + dao.findByBarcode(barcode); + + if (preparedArticleReception == null) { + throw new InvalidMagalieBarcodeException("'" + barcode +"' is not a existing prepared article reception"); + } + + StoredArticleJpaDao storedArticleDao = + persistenceContext.getStoredArticleDao(); + + Article article = preparedArticleReception.getArticle(); + + StoredArticle storedArticle = + storedArticleDao.findInReception(article); + + if (storedArticle == null) { + throw new PreparedArticleReceptionAlreadyStoredException(preparedArticleReception); + } + + return preparedArticleReception; + } + } 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-07-03 12:53:55 UTC (rev 279) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-07-04 07:48:01 UTC (rev 280) @@ -46,6 +46,8 @@ 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.InvalidMagalieBarcodeException; +import com.franciaflex.magalie.services.exception.PreparedArticleReceptionAlreadyStoredException; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableSet; @@ -187,7 +189,7 @@ } - public ReceptionTask getReceptionTaskForPreparedArticleReception(String barcode) { + public ReceptionTask getReceptionTaskForPreparedArticleReception(String barcode) throws PreparedArticleReceptionAlreadyStoredException, InvalidMagalieBarcodeException { PreparedArticleReception preparedArticleReception = getPreparedArticleReception(barcode); @@ -370,16 +372,13 @@ } - public PreparedArticleReception getPreparedArticleReception(String barcode) { + public PreparedArticleReception getPreparedArticleReception(String barcode) throws InvalidMagalieBarcodeException, PreparedArticleReceptionAlreadyStoredException { - JpaMagaliePersistenceContext persistenceContext = - serviceContext.getPersistenceContext(); + MagalieBarcodeService magalieBarcodeService = + serviceContext.newService(MagalieBarcodeService.class); - PreparedArticleReceptionJpaDao dao = - persistenceContext.getPreparedArticleReceptionDao(); - PreparedArticleReception preparedArticleReception = - dao.findByBarcode(barcode); + magalieBarcodeService.getPreparedArticleReception(barcode); return preparedArticleReception; 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-07-03 12:53:55 UTC (rev 279) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java 2013-07-04 07:48:01 UTC (rev 280) @@ -36,6 +36,8 @@ import com.franciaflex.magalie.persistence.entity.StoredArticle; import com.franciaflex.magalie.persistence.entity.Supplier; import com.franciaflex.magalie.services.AbstractMagalieServiceTest; +import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; +import com.franciaflex.magalie.services.exception.PreparedArticleReceptionAlreadyStoredException; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import org.apache.commons.logging.Log; @@ -230,15 +232,41 @@ // we will try to receive a prepared article reception with following barcode String barcode = "PAR2"; - PreparedArticleReception preparedArticleReception = - service.getPreparedArticleReception(barcode); + try { - Assert.assertNotNull(preparedArticleReception); + PreparedArticleReception preparedArticleReception = + service.getPreparedArticleReception(barcode); - ReceptionTask receptionTask = - service.getReceptionTaskForPreparedArticleReception(barcode); + Assert.assertNotNull(preparedArticleReception); + } catch (InvalidMagalieBarcodeException e) { + if (log.isErrorEnabled()) { + log.error("unexpected exception", e); + } + Assert.fail(); + } catch (PreparedArticleReceptionAlreadyStoredException e) { + if (log.isErrorEnabled()) { + log.error("unexpected exception", e); + } + Assert.fail(); + } + ReceptionTask receptionTask = null; + try { + receptionTask = service.getReceptionTaskForPreparedArticleReception(barcode); + } catch (PreparedArticleReceptionAlreadyStoredException e) { + if (log.isErrorEnabled()) { + log.error("unexpected exception", e); + } + Assert.fail(); + } catch (InvalidMagalieBarcodeException e) { + if (log.isErrorEnabled()) { + log.error("unexpected exception", e); + } + Assert.fail(); + } + + // checks that given reception task asks to store quantity given Assert.assertEquals(4., receptionTask.getQuantity(), DELTA); Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PreparePreparedArticleReceptionAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PreparePreparedArticleReceptionAction.java 2013-07-03 12:53:55 UTC (rev 279) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PreparePreparedArticleReceptionAction.java 2013-07-04 07:48:01 UTC (rev 280) @@ -23,7 +23,8 @@ * #L% */ -import com.franciaflex.magalie.persistence.entity.PreparedArticleReception; +import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException; +import com.franciaflex.magalie.services.exception.PreparedArticleReceptionAlreadyStoredException; import com.franciaflex.magalie.services.service.ReceptionService; import com.franciaflex.magalie.web.Activity; import com.franciaflex.magalie.web.MagalieActionSupport; @@ -59,11 +60,18 @@ session.setActivity(Activity.PREPARED_RECEPTIONS); - PreparedArticleReception preparedArticleReception = - receptionService.getPreparedArticleReception(barcode); + try { - if (preparedArticleReception == null) { + receptionService.getPreparedArticleReception(barcode); + } catch (PreparedArticleReceptionAlreadyStoredException e) { + + addFieldError("barcode", "Article déjà rangé"); + + return INPUT; + + } catch (InvalidMagalieBarcodeException e) { + addFieldError("barcode", "Ce n'est pas un code-barre valide"); return INPUT; 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-07-03 12:53:55 UTC (rev 279) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java 2013-07-04 07:48:01 UTC (rev 280) @@ -25,6 +25,8 @@ import com.franciaflex.magalie.MagalieTechnicalException; import com.franciaflex.magalie.persistence.entity.MagalieUser; +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; @@ -89,8 +91,28 @@ if (preparedArticleReceptionBarcode != null) { - receptionTask = service.getReceptionTaskForPreparedArticleReception(preparedArticleReceptionBarcode); + try { + receptionTask = service.getReceptionTaskForPreparedArticleReception(preparedArticleReceptionBarcode); + + } catch (PreparedArticleReceptionAlreadyStoredException e) { + + session.addMessage("Article déjà rangé"); + + log.warn("should never occur", e); + + return "PREPARED_RECEPTIONS"; + + } catch (InvalidMagalieBarcodeException e) { + + session.addMessage("Le code n'est pas valide"); + + log.warn("should never occur", e); + + return "PREPARED_RECEPTIONS"; + + } + } Preconditions.checkNotNull(receptionTask);
participants (1)
-
bleny@users.forge.codelutin.com