Author: bleny Date: 2013-04-17 16:02:00 +0200 (Wed, 17 Apr 2013) New Revision: 106 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: can change quantity in kanban for each warehouse Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/KanbanJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Kanban.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaMagaliePersistenceContext.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/MagaliePersistenceContext.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieFixtures.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java trunk/magalie-services/src/main/resources/fixtures.yaml trunk/magalie-services/src/main/resources/fixtures2.yaml Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaMagaliePersistenceContext.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaMagaliePersistenceContext.java 2013-04-17 13:27:17 UTC (rev 105) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaMagaliePersistenceContext.java 2013-04-17 14:02:00 UTC (rev 106) @@ -4,6 +4,7 @@ import com.franciaflex.magalie.persistence.dao.BuildingDao; import com.franciaflex.magalie.persistence.dao.DeliveredRequestedArticleDao; import com.franciaflex.magalie.persistence.dao.DeliveredRequestedListDao; +import com.franciaflex.magalie.persistence.dao.KanbanDao; import com.franciaflex.magalie.persistence.dao.MagalieUserDao; import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; import com.franciaflex.magalie.persistence.dao.LocationDao; @@ -17,6 +18,7 @@ import com.franciaflex.magalie.persistence.dao.jpa.BuildingJpaDao; import com.franciaflex.magalie.persistence.dao.jpa.DeliveredRequestedArticleJpaDao; import com.franciaflex.magalie.persistence.dao.jpa.DeliveredRequestedListJpaDao; +import com.franciaflex.magalie.persistence.dao.jpa.KanbanJpaDao; import com.franciaflex.magalie.persistence.dao.jpa.LocationErrorJpaDao; import com.franciaflex.magalie.persistence.dao.jpa.LocationJpaDao; import com.franciaflex.magalie.persistence.dao.jpa.MagalieUserJpaDao; @@ -129,4 +131,9 @@ public DeliveredRequestedListDao getDeliveredRequestedListDao() { return new DeliveredRequestedListJpaDao(entityManager); } + + @Override + public KanbanDao getKanbanDao() { + return new KanbanJpaDao(entityManager); + } } Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/MagaliePersistenceContext.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/MagaliePersistenceContext.java 2013-04-17 13:27:17 UTC (rev 105) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/MagaliePersistenceContext.java 2013-04-17 14:02:00 UTC (rev 106) @@ -4,6 +4,7 @@ import com.franciaflex.magalie.persistence.dao.BuildingDao; import com.franciaflex.magalie.persistence.dao.DeliveredRequestedArticleDao; import com.franciaflex.magalie.persistence.dao.DeliveredRequestedListDao; +import com.franciaflex.magalie.persistence.dao.KanbanDao; import com.franciaflex.magalie.persistence.dao.LocationDao; import com.franciaflex.magalie.persistence.dao.LocationErrorDao; import com.franciaflex.magalie.persistence.dao.MagalieUserDao; @@ -51,4 +52,6 @@ DeliveredRequestedListDao getDeliveredRequestedListDao(); + KanbanDao getKanbanDao(); + } Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanDao.java 2013-04-17 14:02:00 UTC (rev 106) @@ -0,0 +1,14 @@ +package com.franciaflex.magalie.persistence.dao; + +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.Kanban; +import com.franciaflex.magalie.persistence.entity.Warehouse; + +/** + * @author bleny + */ +public interface KanbanDao extends Dao<Kanban> { + + public Kanban find(Article article, Warehouse warehouse); + +} Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/KanbanJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/KanbanJpaDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/KanbanJpaDao.java 2013-04-17 14:02:00 UTC (rev 106) @@ -0,0 +1,29 @@ +package com.franciaflex.magalie.persistence.dao.jpa; + +import com.franciaflex.magalie.persistence.dao.KanbanDao; +import com.franciaflex.magalie.persistence.entity.Article; +import com.franciaflex.magalie.persistence.entity.Kanban; +import com.franciaflex.magalie.persistence.entity.Warehouse; + +import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; + +public class KanbanJpaDao extends AbstractJpaDao<Kanban> implements KanbanDao { + + public KanbanJpaDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<Kanban> getEntityClass() { + return Kanban.class; + } + + @Override + public Kanban find(Article article, Warehouse warehouse) { + 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(); + } +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java 2013-04-17 13:27:17 UTC (rev 105) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java 2013-04-17 14:02:00 UTC (rev 106) @@ -22,8 +22,6 @@ protected String code; - protected double quantityInKanban; - protected String unit; protected boolean fixedLocationsFirst; @@ -53,14 +51,6 @@ this.code = code; } - public double getQuantityInKanban() { - return quantityInKanban; - } - - public void setQuantityInKanban(double quantityInKanban) { - this.quantityInKanban = quantityInKanban; - } - public String getUnit() { return unit; } Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Kanban.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Kanban.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Kanban.java 2013-04-17 14:02:00 UTC (rev 106) @@ -0,0 +1,55 @@ +package com.franciaflex.magalie.persistence.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; + +@Entity +public class Kanban extends AbstractEntity { + + @Id + @GeneratedValue + protected String id; + + @ManyToOne + protected Article article; + + @ManyToOne + protected Warehouse warehouse; + + protected double requiredQuantity; + + @Override + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Article getArticle() { + return article; + } + + public void setArticle(Article article) { + this.article = article; + } + + public Warehouse getWarehouse() { + return warehouse; + } + + public void setWarehouse(Warehouse warehouse) { + this.warehouse = warehouse; + } + + public double getRequiredQuantity() { + return requiredQuantity; + } + + public void setRequiredQuantity(double requiredQuantity) { + this.requiredQuantity = requiredQuantity; + } +} Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieFixtures.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieFixtures.java 2013-04-17 13:27:17 UTC (rev 105) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieFixtures.java 2013-04-17 14:02:00 UTC (rev 106) @@ -5,6 +5,7 @@ import com.franciaflex.magalie.MagalieTechnicalException; import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.Building; +import com.franciaflex.magalie.persistence.entity.Kanban; import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.persistence.entity.RequestedArticle; import com.franciaflex.magalie.persistence.entity.Location; @@ -35,6 +36,7 @@ reader.getConfig().setClassTag("building", Building.class); reader.getConfig().setClassTag("warehouse", Warehouse.class); reader.getConfig().setClassTag("article", Article.class); + reader.getConfig().setClassTag("kanban", Kanban.class); reader.getConfig().setClassTag("stored-article", StoredArticle.class); reader.getConfig().setClassTag("user", MagalieUser.class); reader.getConfig().setClassTag("requested-article", RequestedArticle.class); Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java 2013-04-17 13:27:17 UTC (rev 105) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FixturesService.java 2013-04-17 14:02:00 UTC (rev 106) @@ -3,6 +3,7 @@ import com.franciaflex.magalie.persistence.MagaliePersistenceContext; import com.franciaflex.magalie.persistence.dao.ArticleDao; import com.franciaflex.magalie.persistence.dao.BuildingDao; +import com.franciaflex.magalie.persistence.dao.KanbanDao; import com.franciaflex.magalie.persistence.dao.LocationDao; import com.franciaflex.magalie.persistence.dao.MagalieUserDao; import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; @@ -11,6 +12,7 @@ import com.franciaflex.magalie.persistence.dao.WarehouseDao; import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.Building; +import com.franciaflex.magalie.persistence.entity.Kanban; import com.franciaflex.magalie.persistence.entity.Location; import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.persistence.entity.RequestedArticle; @@ -133,6 +135,16 @@ } + KanbanDao kanbanDao = persistenceContext.getKanbanDao(); + + Collection<Kanban> kanbans = fixtures.fixture("kanbans"); + + for (Kanban kanban : kanbans) { + + kanbanDao.persist(kanban); + + } + persistenceContext.commit(); StoredArticleDao storedArticleDao = persistenceContext.getStoredArticleDao(); 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-04-17 13:27:17 UTC (rev 105) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-04-17 14:02:00 UTC (rev 106) @@ -2,17 +2,18 @@ import com.franciaflex.magalie.persistence.Locations; import com.franciaflex.magalie.persistence.MagaliePersistenceContext; +import com.franciaflex.magalie.persistence.dao.KanbanDao; import com.franciaflex.magalie.persistence.dao.LocationDao; import com.franciaflex.magalie.persistence.dao.WarehouseDao; import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.Building; +import com.franciaflex.magalie.persistence.entity.Kanban; import com.franciaflex.magalie.persistence.entity.Location; import com.franciaflex.magalie.persistence.entity.MagalieUser; 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.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -41,32 +42,19 @@ } - public double getDefinedQuantity( - Article article, - Warehouse destinationStore) { + public double getDefinedQuantity(Article article, Warehouse destinationStore) { - double quantityInKanban = article.getQuantityInKanban(); + MagaliePersistenceContext persistenceContext = + serviceContext.getPersistenceContext(); - // TODO brendan 17/04/13 consider destination store + KanbanDao dao = persistenceContext.getKanbanDao(); - return quantityInKanban; + Kanban kanban = dao.find(article, destinationStore); - } + double quantityInKanban = kanban.getRequiredQuantity(); - public BookArticleResult fulfilKanbanTask( - Article article, - MagalieUser magalieUser, - Warehouse destinationStore) { + return quantityInKanban; - MagalieBarcodeService magalieBarcodeService = - serviceContext.newService(MagalieBarcodeService.class); - - double quantityInKanban = article.getQuantityInKanban(); - - Preconditions.checkArgument(quantityInKanban > 0); - - return fulfilKanbanTask(article, magalieUser, destinationStore, quantityInKanban); - } public BookArticleResult fulfilKanbanTask( Modified: trunk/magalie-services/src/main/resources/fixtures.yaml =================================================================== --- trunk/magalie-services/src/main/resources/fixtures.yaml 2013-04-17 13:27:17 UTC (rev 105) +++ trunk/magalie-services/src/main/resources/fixtures.yaml 2013-04-17 14:02:00 UTC (rev 106) @@ -211,7 +211,6 @@ - *location4 - *location8 code: 4034108 - quantityInKanban: 50 unit: M description: Jonc Souple D5 fixedLocationsFirst: false @@ -222,7 +221,6 @@ fixedLocations: - *location11 code: 4033079 - quantityInKanban: 3 unit: PCE description: Moteur Oréa Slt 50 RTS 50/12 fixedLocationsFirst: false @@ -233,7 +231,6 @@ fixedLocations: - *location1 code: 4092459 - quantityInKanban: 50 unit: PCE description: Interface ASA/SOMFY + clip fixedLocationsFirst: false @@ -242,7 +239,6 @@ &article4 !article id: article4 code: 4019450 - quantityInKanban: 20 unit: PCE description: Kit Tr.PM Fixe 122G D40Plat 10 fixedLocationsFirst: false @@ -253,7 +249,6 @@ fixedLocations: - *location5 code: 4020012 - quantityInKanban: 10 unit: B60 description: Caisson 2005 3F 6000 Brun fixedLocationsFirst: false @@ -264,7 +259,6 @@ fixedLocations: - *location3 code: 1421812 - quantityInKanban: 9 unit: PCE description: Ensemble SOLIRIS UNO fixedLocationsFirst: false @@ -277,6 +271,50 @@ - *article5 - *article6 +kanban1: + &kanban1 !kanban + article: *article1 + warehouse: *B01 + requiredQuantity: 50 + +kanban2: + &kanban2 !kanban + article: *article2 + warehouse: *B01 + requiredQuantity: 3 + +kanban3: + &kanban3 !kanban + article: *article3 + warehouse: *B01 + requiredQuantity: 50 + +kanban4: + &kanban4 !kanban + article: *article4 + warehouse: *B01 + requiredQuantity: 20 + +kanban5: + &kanban5 !kanban + article: *article5 + warehouse: *B01 + requiredQuantity: 10 + +kanban6: + &kanban6 !kanban + article: *article6 + warehouse: *B01 + requiredQuantity: 9 + +kanbans: + - *kanban1 + - *kanban2 + - *kanban3 + - *kanban4 + - *kanban5 + - *kanban6 + storedArticle1: &storedArticle1 !stored-article id: storedArticle1 Modified: trunk/magalie-services/src/main/resources/fixtures2.yaml =================================================================== --- trunk/magalie-services/src/main/resources/fixtures2.yaml 2013-04-17 13:27:17 UTC (rev 105) +++ trunk/magalie-services/src/main/resources/fixtures2.yaml 2013-04-17 14:02:00 UTC (rev 106) @@ -70,12 +70,19 @@ code: SOM building: *B1 +B01: + &B01 !warehouse + id: warehouse_b01 + code: B01 + building: *B1 + warehouses: - *U01 - *U02 - *U03 - *U04 - *SOM + - *B01 location1: &location1 !location @@ -125,7 +132,6 @@ fixedLocations: - *location1 code: 111111111 - quantityInKanban: 10 unit: kg description: very big screws fixedLocationsFirst: false @@ -134,7 +140,6 @@ &article2 !article id: article2 code: 222222222 - quantityInKanban: 2 unit: box description: little buttons fixedLocationsFirst: false @@ -145,7 +150,6 @@ fixedLocations: - *location2 code: 333333333 - quantityInKanban: 50 unit: g description: magic powder fixedLocationsFirst: false @@ -155,6 +159,29 @@ - *article2 - *article3 +kanban1: + &kanban1 !kanban + article: *article1 + warehouse: *B01 + requiredQuantity: 10 + +kanban2: + &kanban2 !kanban + article: *article2 + warehouse: *B01 + requiredQuantity: 2 + +kanban3: + &kanban3 !kanban + article: *article3 + warehouse: *B01 + requiredQuantity: 50 + +kanbans: + - *kanban1 + - *kanban2 + - *kanban3 + storedArticle1: &storedArticle1 !stored-article id: storedArticle1