Author: bleny Date: 2013-07-31 14:53:45 +0200 (Wed, 31 Jul 2013) New Revision: 348 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: fixes #2995 : the stored article asked was in the result of preferred location 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/ReceptionTask.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java 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-31 12:15:10 UTC (rev 347) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-07-31 12:53:45 UTC (rev 348) @@ -206,24 +206,21 @@ Set<Location> preferredLocations = getPreferredLocations(warehouse, article); - boolean userMustChooseExtraLocation = preferredLocations.isEmpty(); + Iterable<Location> acceptablePreferredLocations = Iterables.filter(preferredLocations, isAcceptableForReception); // second step, add extra locations Set<Location> extraLocations = getExtraLocations(warehouse); - Set<Location> locations = Sets.newLinkedHashSet(); + Iterable<Location> acceptableExtraLocations = Iterables.filter(extraLocations, isAcceptableForReception); - Iterables.addAll(locations, Iterables.filter(preferredLocations, isAcceptableForReception)); + ReceptionTask receptionTask = new ReceptionTask(storedArticle, quantity, acceptablePreferredLocations, acceptableExtraLocations); - Iterables.addAll(locations, Iterables.filter(extraLocations, isAcceptableForReception)); - - ReceptionTask receptionTask = new ReceptionTask(storedArticle, quantity, locations, userMustChooseExtraLocation); - if (log.isDebugEnabled()) { - log.debug(locations.size() + " locations to receive articles for article " - + article + " in warehouse " + warehouse + " are " - + StringUtils.join(locations, ", ")); + log.debug("locations to receive articles for article " + + article + " in warehouse " + warehouse + " are acceptable = " + + StringUtils.join(acceptablePreferredLocations, ", ") + + " extra = " + StringUtils.join(acceptableExtraLocations, ", ")); } return receptionTask; Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionTask.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionTask.java 2013-07-31 12:15:10 UTC (rev 347) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionTask.java 2013-07-31 12:53:45 UTC (rev 348) @@ -25,6 +25,9 @@ import com.franciaflex.magalie.persistence.entity.Location; import com.franciaflex.magalie.persistence.entity.StoredArticle; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import java.util.Set; @@ -36,13 +39,17 @@ protected double quantity; + protected Iterable<Location> preferredLocations; + + protected Iterable<Location> extraLocations; + protected Set<Location> locations; - public ReceptionTask(StoredArticle storedArticle, double quantity, Set<Location> locations, boolean userMustChooseExtraLocation) { + public ReceptionTask(StoredArticle storedArticle, double quantity, Iterable<Location> preferredLocations, Iterable<Location> extraLocations) { this.storedArticle = storedArticle; this.quantity = quantity; - this.locations = locations; - this.userMustChooseExtraLocation = userMustChooseExtraLocation; + this.preferredLocations = preferredLocations; + this.extraLocations = extraLocations; } public StoredArticle getStoredArticle() { @@ -50,6 +57,11 @@ } public Set<Location> getLocations() { + if (locations == null) { + locations = Sets.newLinkedHashSet(); + Iterables.addAll(locations, preferredLocations); + Iterables.addAll(locations, extraLocations); + } return locations; } @@ -58,7 +70,12 @@ } public boolean isUserMustChooseExtraLocation() { - return userMustChooseExtraLocation; + return Iterables.isEmpty(preferredLocations); } + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + } 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-31 12:15:10 UTC (rev 347) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java 2013-07-31 12:53:45 UTC (rev 348) @@ -98,12 +98,6 @@ receptionTask = service.getReceptionTaskForPreparedArticleReception(building, preparedArticleReceptionBarcode); - if (receptionTask.isUserMustChooseExtraLocation()) { - - addActionMessage("Pas de stock : emplacement libre proposé"); - - } - } catch (PreparedArticleReceptionAlreadyStoredException e) { session.addMessage("Article déjà rangé"); @@ -126,6 +120,12 @@ Preconditions.checkNotNull(receptionTask); + if (receptionTask.isUserMustChooseExtraLocation()) { + + addActionMessage("Pas de stock : emplacement libre proposé"); + + } + return INPUT; }