r353 - trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service
Author: bleny Date: 2013-07-31 18:15:32 +0200 (Wed, 31 Jul 2013) New Revision: 353 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: refs #3006 prevent creation of duplicate storage movement Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-07-31 15:49:10 UTC (rev 352) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-07-31 16:15:32 UTC (rev 353) @@ -49,6 +49,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import com.google.common.collect.Ordering; @@ -433,27 +434,46 @@ Location destinationLocation = locationDao.findById(destinationLocationId); - StorageMovement storageMovement = new StorageMovement(); + StorageMovementJpaDao storageMovementDao = + persistenceContext.getStorageMovementDao(); - storageMovement.setOriginLocation(originLocation); + Map<String, Object> storageMovementProperties = Maps.newHashMap(); + storageMovementProperties.put(StorageMovement.PROPERTY_MAGALIE_USER, magalieUser); + storageMovementProperties.put(StorageMovement.PROPERTY_ARTICLE, article); + storageMovementProperties.put(StorageMovement.PROPERTY_ORIGIN_LOCATION, originLocation); + storageMovementProperties.put(StorageMovement.PROPERTY_DESTINATION_LOCATION, destinationLocation); + storageMovementProperties.put(StorageMovement.PROPERTY_CONFIRM_DATE, null); - storageMovement.setDestinationLocation(destinationLocation); + StorageMovement storageMovement = storageMovementDao.findByProperties(storageMovementProperties); - storageMovement.setMagalieUser(magalieUser); + if (storageMovement == null) { - storageMovement.setArticle(article); + storageMovement = new StorageMovement(); + storageMovement.setOriginLocation(originLocation); + + storageMovement.setDestinationLocation(destinationLocation); + + storageMovement.setMagalieUser(magalieUser); + + storageMovement.setArticle(article); + + storageMovementDao.persist(storageMovement); + + } else { + + if (log.isDebugEnabled()) { + log.debug("storage movement already exists, user just want to update quantity " + storageMovement); + } + + } + storageMovement.setActualQuantity(quantity); Date now = serviceContext.getNow(); storageMovement.setMovementDate(now); - StorageMovementJpaDao storageMovementDao = - persistenceContext.getStorageMovementDao(); - - storageMovementDao.persist(storageMovement); - persistenceContext.commit(); if (log.isInfoEnabled()) {
participants (1)
-
bleny@users.forge.codelutin.com