Franciaflex-magalie-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 438 discussions
31 May '13
Author: bleny
Date: 2013-05-31 11:59:28 +0200 (Fri, 31 May 2013)
New Revision: 223
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
merge trunk into branch
Added:
branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java
branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java
branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java
branches/magalie-eugene/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareWithdrawItemAction.java
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java
branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/prepare-withdraw-item-input.jsp
branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/simple-withdraw-item-input.jsp
branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-input.jsp
branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-location-input.jsp
Removed:
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/BuildingDao.java
branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp
Modified:
branches/magalie-eugene/
branches/magalie-eugene/magalie-persistence/pom.xml
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Locations.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/DeliveredRequestedArticleJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationErrorJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedListJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SupplierJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/UnavailableArticleJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/WarehouseJpaDao.java
branches/magalie-eugene/magalie-persistence/src/main/resources/magalie.properties
branches/magalie-eugene/magalie-services/pom.xml
branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java
branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java
branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java
branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java
branches/magalie-eugene/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java
branches/magalie-eugene/magalie-services/src/test/resources/log4j.properties
branches/magalie-eugene/magalie-web/pom.xml
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/Activity.java
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareArticleReceptionAction.java
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PreparePreparedArticleReceptionAction.java
branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java
branches/magalie-eugene/magalie-web/src/main/resources/struts.properties
branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/choose-activity.jsp
branches/magalie-eugene/magalie-web/src/main/webapp/css/magalie-ck3x.css
branches/magalie-eugene/magalie-web/src/main/webapp/js/magalie.js
branches/magalie-eugene/pom.xml
Property changes on: branches/magalie-eugene
___________________________________________________________________
Added: svn:mergeinfo
+ /trunk:191-222
Modified: branches/magalie-eugene/magalie-persistence/pom.xml
===================================================================
--- branches/magalie-eugene/magalie-persistence/pom.xml 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/pom.xml 2013-05-31 09:59:28 UTC (rev 223)
@@ -29,7 +29,7 @@
<artifactId>hibernate-jpa-2.0-api</artifactId>
</dependency>
- <!--dependency>
+ <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<scope>compile</scope>
@@ -42,10 +42,14 @@
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-c3p0</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <scope>compile</scope>
- </dependency-->
+ </dependency>
<dependency>
<groupId>org.nuiton</groupId>
@@ -80,7 +84,6 @@
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
- <scope>test</scope>
</dependency>
<!-- Test dependencies -->
@@ -131,6 +134,37 @@
</dependency>
</dependencies>
</plugin>
+ <plugin>
+ <groupId>de.juplo</groupId>
+ <artifactId>hibernate4-maven-plugin</artifactId>
+ <version>1.0.1</version>
+ <executions>
+ <execution>
+ <id>executionCreate</id>
+ <goals>
+ <goal>export</goal>
+ </goals>
+ <configuration>
+ <type>CREATE</type>
+ <outputFile>${project.build.directory}/generated-sources/Create.sql</outputFile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>executionDrop</id>
+ <goals>
+ <goal>export</goal>
+ </goals>
+ <configuration>
+ <type>DROP</type>
+ <outputFile>${project.build.directory}/generated-sources/Drop.sql</outputFile>
+ </configuration>
+ </execution>
+ </executions>
+ <configuration>
+ <hibernateDialect>org.hibernate.dialect.Oracle10gDialect</hibernateDialect>
+ <target>SCRIPT</target>
+ </configuration>
+ </plugin>
</plugins>
</build>
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Locations.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Locations.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Locations.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -25,6 +25,7 @@
import com.franciaflex.magalie.persistence.entity.Location;
import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Lists;
@@ -77,6 +78,14 @@
}
}
+ protected static class GetBarcode implements Function<Location, String> {
+
+ @Override
+ public String apply(Location location) {
+ return location.getBarcode();
+ }
+ }
+
public static Predicate<Location> accessibleLocationPredicate(MagalieUser magalieUser) {
return new AccessibleLocationPredicate(magalieUser);
}
@@ -119,4 +128,13 @@
);
return isAcceptableForReception;
}
+
+ public static Predicate<Location> barcodeEquals(String originLocationBarcode) {
+ return Predicates.compose(Predicates.equalTo(originLocationBarcode), getBarcodeFunction());
+ }
+
+ public static Function<Location, String> getBarcodeFunction() {
+ return new GetBarcode();
+ }
+
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -172,4 +172,8 @@
return Functions.compose(Articles.getSupplierFunction(), getArticleFunction());
}
+ public static Predicate<StoredArticle> locationBarcodeEquals(String originLocationBarcode) {
+ return Predicates.compose(Locations.barcodeEquals(originLocationBarcode), getLocationFunction());
+ }
+
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -35,9 +35,10 @@
}
@Override
- public Article findByCode(String articleCode) {
+ public Article findByCode(String articleCode) {
TypedQuery<Article> query = createQuery("from Article a where a.code = :code");
- query.setParameter(Article.PROPERTY_CODE, articleCode);
+ query.setParameter("code", articleCode);
return findUniqueOrNull(query);
}
+
}
Deleted: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/BuildingDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/BuildingDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/BuildingDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -1,31 +0,0 @@
-package com.franciaflex.magalie.persistence.dao;
-
-/*
- * #%L
- * MagaLiE :: Persistence
- * $Id:$
- * $HeadURL:$
- * %%
- * Copyright (C) 2013 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-import com.franciaflex.magalie.persistence.entity.Building;
-
-/** @author bleny */
-public interface BuildingDao {
-
-}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/DeliveredRequestedArticleJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/DeliveredRequestedArticleJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/DeliveredRequestedArticleJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -40,8 +40,8 @@
@Override
public DeliveredRequestedArticle find(StorageMovementOrder storageMovementOrder) {
TypedQuery<DeliveredRequestedArticle> query =
- createQuery(
- "from DeliveredRequestedArticle dra where dra.storageMovementOrder = :storageMovementOrder");
+ entityManager.createQuery(
+ "from DeliveredRequestedArticle dra where dra.storageMovementOrder = :storageMovementOrder", getEntityClass());
query.setParameter("storageMovementOrder", storageMovementOrder);
return findUniqueOrNull(query);
}
@@ -49,8 +49,8 @@
@Override
public List<DeliveredRequestedArticle> findAll(RequestedList requestedList) {
TypedQuery<DeliveredRequestedArticle> query =
- createQuery(
- "from DeliveredRequestedArticle dra where dra.requestedArticle.requestedList = :requestedList");
+ entityManager.createQuery(
+ "from DeliveredRequestedArticle dra where dra.requestedArticle.requestedList = :requestedList", getEntityClass());
query.setParameter("requestedList", requestedList);
return findAll(query);
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/KanbanJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -38,7 +38,7 @@
@Override
public Kanban find(Article article, Warehouse warehouse) {
- TypedQuery<Kanban> query = createQuery("from Kanban k where k.article = :article and k.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: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -36,4 +36,6 @@
List<Location> findAllWithoutReception(Building building);
List<Location> findAllWithoutReception(Warehouse warehouse);
+
+ Location findByBarCode(String barCode, Building building);
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationErrorJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationErrorJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationErrorJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -28,6 +28,7 @@
import com.franciaflex.magalie.persistence.entity.LocationError;
import javax.persistence.EntityManager;
+import javax.persistence.Query;
import javax.persistence.TypedQuery;
import java.util.List;
@@ -46,8 +47,7 @@
@Override
public List<Location> getAllLocationsInError(Article article) {
- TypedQuery<Location> query = createQuery(Location.class,
- "select se.location from LocationError se where se.article = :article");
+ Query query = entityManager.createQuery("select se.location from LocationError se where se.article = :article");
query.setParameter("article", article);
List<Location> allLocationsInError = query.getResultList();
return allLocationsInError;
@@ -55,7 +55,7 @@
@Override
public List<LocationError> findAll() {
- TypedQuery<LocationError> query = createQuery("from LocationError se order by se.reportDate");
+ Query query = entityManager.createQuery("from LocationError se order by se.reportDate");
List<LocationError> all = query.getResultList();
return all;
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -56,11 +56,11 @@
if (filterOnWarehouse) {
hql += " l.warehouse = :warehouse and ";
}
- hql += " l.code != :codeForReceptionLocations and "
- + " l.code != :codeForWarehouseWithoutLocations and "
- + " l.fullLocation = false "
- + " order by l.warehouse.building.code, l.warehouse.code, l.code";
- TypedQuery<Location> query = createQuery(hql);
+ hql += " l.code != :codeForReceptionLocations and "
+ + " l.code != :codeForWarehouseWithoutLocations and "
+ + " l.fullLocation = false "
+ + " order by l.warehouse.building.code, l.warehouse.code, l.code";
+ TypedQuery <Location> query = createQuery(hql);
if (filterOnBuilding) {
query.setParameter("building", building);
}
@@ -81,4 +81,14 @@
public List<Location> findAllWithoutReception(Warehouse warehouse) {
return findAllWithoutReception(null, warehouse);
}
+
+ @Override
+ public Location findByBarCode(String barCode, Building building) {
+ TypedQuery<Location> query = createQuery("from Location l " +
+ "where CONCAT(l.warehouse.code, l.code) = :barCode " +
+ "and l.warehouse.building = :building");
+ query.setParameter("barCode", barCode);
+ query.setParameter("building", building);
+ return findUniqueOrNull(query);
+ }
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -30,7 +30,7 @@
import javax.persistence.TypedQuery;
import java.util.List;
-public class MagalieUserJpaDao extends AbstractMagalieUserJpaDao {
+public class MagalieUserJpaDao extends AbstractMagalieUserJpaDao {
public MagalieUserJpaDao(EntityManager entityManager) {
super(entityManager);
@@ -45,7 +45,7 @@
@Override
public List<MagalieUser> findAll() {
- TypedQuery<MagalieUser> query = createQuery("from MagalieUser mu order by mu.login");
+ Query query = entityManager.createQuery("from MagalieUser mu order by mu.login");
List<MagalieUser> resultList = query.getResultList();
return resultList;
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -42,11 +42,11 @@
@Override
public List<RequestedArticle> findAllUndelivered(Building building, MagalieUser affectedTo, String listType) {
TypedQuery<RequestedArticle> query = createQuery(
- "from RequestedArticle ra where "
- + " ra not in (select dra.requestedArticle from DeliveredRequestedArticle dra) "
- + " and ra.requestedList.building = :building "
- + " and ra.requestedList.listType = :listType "
- + " and ra.requestedList not in (select drl.requestedList from DeliveredRequestedList drl where drl.status = :complete or drl.status = :affected and drl.affectedTo != :affectedTo)");
+ "from RequestedArticle ra where "
+ + " ra not in (select dra.requestedArticle from DeliveredRequestedArticle dra) "
+ + " and ra.requestedList.building = :building "
+ + " and ra.requestedList.listType = :listType "
+ + " and ra.requestedList not in (select drl.requestedList from DeliveredRequestedList drl where drl.status = :complete or drl.status = :affected and drl.affectedTo != :affectedTo)");
query.setParameter("building", building);
query.setParameter("listType", listType);
query.setParameter("complete", DeliveredRequestedListStatus.COMPLETE);
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedListJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedListJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedListJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -23,8 +23,6 @@
* #L%
*/
-import com.franciaflex.magalie.persistence.entity.RequestedList;
-
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import java.util.List;
@@ -37,7 +35,7 @@
@Override
public List<String> findAllDistinctListTypes() {
- TypedQuery<String> query = createQuery(String.class, "select distinct rl.listType from RequestedList rl");
+ TypedQuery<String> query = entityManager.createQuery("select distinct rl.listType from RequestedList rl", String.class);
return query.getResultList();
}
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -26,6 +26,7 @@
import com.franciaflex.magalie.persistence.entity.Article;
import com.franciaflex.magalie.persistence.entity.Building;
import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
import java.util.List;
@@ -37,4 +38,6 @@
List<StorageMovement> findAll();
List<StorageMovement> findAllInReception(Building building);
+
+ List<StorageMovement> findAllImpactingStoredArticle(StoredArticle storedArticle);
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -27,9 +27,10 @@
import com.franciaflex.magalie.persistence.entity.Article;
import com.franciaflex.magalie.persistence.entity.Building;
import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
+import javax.persistence.Query;
import java.util.List;
public class StorageMovementJpaDao extends AbstractStorageMovementJpaDao {
@@ -40,14 +41,14 @@
@Override
public List<StorageMovement> findAllByArticle(Article article) {
- TypedQuery<StorageMovement> query = createQuery("from StorageMovement sm where sm.article = :article");
+ Query query = entityManager.createQuery("from StorageMovement sm where sm.article = :article");
query.setParameter("article", article);
return query.getResultList();
}
@Override
public List<StorageMovement> findAllInReception(Building building) {
- TypedQuery<StorageMovement> query = createQuery(
+ Query query = entityManager.createQuery(
" from StorageMovement sm" +
" where sm.originLocation.code = :codeForReceptionLocations and sm.originLocation.warehouse.building = :building" +
" or " +
@@ -58,8 +59,16 @@
}
@Override
+ public List<StorageMovement> findAllImpactingStoredArticle(StoredArticle storedArticle) {
+ Query query = entityManager.createQuery("from StorageMovement sm where sm.article = :article and (sm.originLocation = :location or sm.destinationLocation = :location)");
+ query.setParameter("location", storedArticle.getLocation());
+ query.setParameter("article", storedArticle.getArticle());
+ return query.getResultList();
+ }
+
+ @Override
public List<StorageMovement> findAll() {
- TypedQuery<StorageMovement> query = createQuery("from StorageMovement sm order by sm.orderDate");
+ Query query = entityManager.createQuery("from StorageMovement sm order by sm.orderDate");
return query.getResultList();
}
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -28,10 +28,10 @@
import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
+import javax.persistence.Query;
import java.util.List;
-public class StorageMovementOrderJpaDao extends AbstractStorageMovementOrderJpaDao{
+public class StorageMovementOrderJpaDao extends AbstractStorageMovementOrderJpaDao {
public StorageMovementOrderJpaDao(EntityManager entityManager) {
super(entityManager);
@@ -39,13 +39,13 @@
@Override
public List<StorageMovementOrder> findNotConfirmedByUser(MagalieUser magalieUser, Building building) {
- TypedQuery<StorageMovementOrder> query = createQuery(
+ Query query = entityManager.createQuery(
" select distinct smo" +
" from StorageMovementOrder smo" +
" inner join smo.storageMovements as sm" +
" where sm.magalieUser = :magalieUser" +
" and sm.originLocation.warehouse.building = :building" +
- " and sm.confirmDate is null");
+ " and sm.confirmDate is null" );
query.setParameter("magalieUser", magalieUser);
query.setParameter("building", building);
return query.getResultList();
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -25,6 +25,7 @@
import com.franciaflex.magalie.persistence.entity.Article;
import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.Location;
import com.franciaflex.magalie.persistence.entity.StoredArticle;
import java.util.List;
@@ -36,4 +37,9 @@
List<StoredArticle> findAllReceivedForAllSupplier(Building building);
List<StoredArticle> findAllReceivedForSupplier(Building building, String supplierId);
+
+ StoredArticle findDetachedById(String storedArticleId);
+
+ List<StoredArticle> findAllByLocation(Location location);
+
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -26,6 +26,7 @@
import com.franciaflex.magalie.persistence.Locations;
import com.franciaflex.magalie.persistence.entity.Article;
import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.Location;
import com.franciaflex.magalie.persistence.entity.StoredArticle;
import javax.persistence.EntityManager;
@@ -74,4 +75,22 @@
}
return resultList;
}
+
+ @Override
+ public List<StoredArticle> findAllByLocation(Location location) {
+ TypedQuery<StoredArticle> query = createQuery("from StoredArticle sa where sa.location = :location");
+ query.setParameter("location", location);
+ List<StoredArticle> resultList = findAll(query);
+ for (StoredArticle storedArticle : resultList) {
+ entityManager.detach(storedArticle);
+ }
+ return resultList;
+ }
+
+ @Override
+ public StoredArticle findDetachedById(String storedArticleId) {
+ StoredArticle storedArticle = findById(storedArticleId);
+ entityManager.detach(storedArticle);
+ return storedArticle;
+ }
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SupplierJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SupplierJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SupplierJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -25,9 +25,7 @@
import com.franciaflex.magalie.persistence.Locations;
import com.franciaflex.magalie.persistence.entity.Building;
-import com.franciaflex.magalie.persistence.entity.Location;
import com.franciaflex.magalie.persistence.entity.Supplier;
-import com.franciaflex.magalie.persistence.entity.Warehouse;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
@@ -42,8 +40,8 @@
@Override
public List<Supplier> findAllWithReceivedArticles(Building building) {
TypedQuery<Supplier> query = createQuery("select sa.article.supplier from StoredArticle sa where sa.location.code = :code and sa.location.warehouse.building = :building");
- query.setParameter(Warehouse.PROPERTY_BUILDING, building);
- query.setParameter(Location.PROPERTY_CODE, Locations.codeForReceptionLocations());
+ query.setParameter("building", building);
+ query.setParameter("code", Locations.codeForReceptionLocations());
return findAll(query);
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/UnavailableArticleJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/UnavailableArticleJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/UnavailableArticleJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -39,8 +39,8 @@
@Override
public UnavailableArticle findByArticle(Building building, Article article) {
TypedQuery<UnavailableArticle> query = createQuery("from UnavailableArticle ua where ua.article = :article and ua.building = :building");
- query.setParameter(UnavailableArticle.PROPERTY_ARTICLE, article);
- query.setParameter(UnavailableArticle.PROPERTY_BUILDING, building);
+ query.setParameter("article", article);
+ query.setParameter("building", building);
return findUniqueOrNull(query);
}
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/WarehouseJpaDao.java
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/WarehouseJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/WarehouseJpaDao.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -39,9 +39,9 @@
@Override
public List<Warehouse> findAllWithoutLocations(Building building) {
- TypedQuery<Warehouse> query = createQuery("from Warehouse w where w.building = :building and w in (select l.warehouse from Location l where l.code = :code)");
- query.setParameter(Warehouse.PROPERTY_BUILDING, building);
- query.setParameter(Warehouse.PROPERTY_CODE, Locations.codeForWarehouseWithoutLocations());
+ TypedQuery<Warehouse> query = entityManager.createQuery("from Warehouse w where w.building = :building and w in (select l.warehouse from Location l where l.code = :code)", getEntityClass());
+ query.setParameter("building", building);
+ query.setParameter("code", Locations.codeForWarehouseWithoutLocations());
return query.getResultList();
}
}
Modified: branches/magalie-eugene/magalie-persistence/src/main/resources/magalie.properties
===================================================================
--- branches/magalie-eugene/magalie-persistence/src/main/resources/magalie.properties 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-persistence/src/main/resources/magalie.properties 2013-05-31 09:59:28 UTC (rev 223)
@@ -29,3 +29,7 @@
hibernate.show_sql=false
hibernate.format_sql=true
hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
+hibernate.c3p0.min_size=5
+hibernate.c3p0.max_size=20
+hibernate.c3p0.timeout=1800
+hibernate.c3p0.max_statements=50
Modified: branches/magalie-eugene/magalie-services/pom.xml
===================================================================
--- branches/magalie-eugene/magalie-services/pom.xml 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-services/pom.xml 2013-05-31 09:59:28 UTC (rev 223)
@@ -35,11 +35,6 @@
</dependency>
<dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- </dependency>
-
- <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
@@ -83,7 +78,6 @@
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
- <scope>test</scope>
</dependency>
<!-- Test dependencies -->
Copied: branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java (from rev 222, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java)
===================================================================
--- branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java (rev 0)
+++ branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,36 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+public class SimpleWithdrawItemTask {
+
+ protected List<StoredArticle> storedArticles;
+
+ protected boolean driverLicenseRequired;
+
+ protected boolean articleUnavailable;
+
+ public SimpleWithdrawItemTask(Iterable<StoredArticle> storedArticles, boolean driverLicenseRequired, boolean articleUnavailable) {
+ this.storedArticles = Lists.newArrayList(storedArticles);
+ this.driverLicenseRequired = driverLicenseRequired;
+ this.articleUnavailable = articleUnavailable;
+ }
+
+ public List<StoredArticle> getStoredArticles() {
+ return storedArticles;
+ }
+
+ public boolean isDriverLicenseRequired() {
+ Preconditions.checkState( ! articleUnavailable);
+ return driverLicenseRequired;
+ }
+
+ public boolean isArticleUnavailable() {
+ Preconditions.checkState( ! driverLicenseRequired);
+ return articleUnavailable;
+ }
+}
Modified: branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java
===================================================================
--- branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -24,6 +24,7 @@
*/
import com.franciaflex.magalie.persistence.MagaliePersistenceContext;
+import com.franciaflex.magalie.persistence.StorageMovements;
import com.franciaflex.magalie.persistence.StoredArticles;
import com.franciaflex.magalie.persistence.dao.LocationJpaDao;
import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
@@ -43,10 +44,10 @@
import com.franciaflex.magalie.services.StorageMovementConfirmation;
import com.franciaflex.magalie.services.StorageMovementTask;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
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;
import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils;
@@ -326,6 +327,8 @@
}
}
+ // TODO brendan 27/05/13 add extra info about the locations
+
return storageMovementTask;
}
@@ -340,61 +343,75 @@
// first get all stored articles in the building at known quantities
Iterable<StoredArticle> storedArticles = storedArticleDao.findAllForArticleInBuilding(article, building);
- ImmutableMap<Location, StoredArticle> storedArticlesByLocation =
- Maps.uniqueIndex(
- storedArticles,
- StoredArticles.getLocationFunction()
- );
+ StorageMovementDao storageMovementDao = persistenceContext.getStorageMovementDao();
+ List<StorageMovement> storageMovementsForArticle = storageMovementDao.findAllByArticle(article);
+
// consider storage movements and compute actually available quantities
+ storedArticles = computeActualQuantities(storedArticles, storageMovementsForArticle);
- StorageMovementDao storageMovementDao = persistenceContext.getStorageMovementDao();
+ // exclude storageMovements on a location reported in error
+ LocationErrorsService locationErrorsService = serviceContext.newService(LocationErrorsService.class);
- // consider all storage movements, adding quantities when someone added some stock and
- // removing quantities if someone has withdraw quantities
- List<StorageMovement> storageMovements = storageMovementDao.findAllByArticle(article);
+ List<Location> allLocationsInError = locationErrorsService.getAllLocationsInError(article);
- for (StorageMovement storageMovement : storageMovements) {
+ storedArticles = Iterables.filter(storedArticles, StoredArticles.articleNotStoredInLocationReportedInError(allLocationsInError));
- Location originLocation = storageMovement.getOriginLocation();
+ return storedArticles;
- StoredArticle storedArticle = storedArticlesByLocation.get(originLocation);
+ }
- if (storedArticle != null) {
+ /**
+ * This method take some storedArticles and update the quantities according
+ * to given storage movements (adding or removing quantities depending if it's
+ * a movement from the location or to the location)
+ */
+ protected Iterable<StoredArticle> computeActualQuantities(Iterable<StoredArticle> storedArticles, Iterable<StorageMovement> storageMovements) {
- double actualQuantity = storedArticle.getQuantity() - storageMovement.getQuantity();
+ Multimap<Article, StoredArticle> storedArticlesByArticles =
+ Multimaps.index(storedArticles, StoredArticles.getArticleFunction());
- storedArticle.setQuantity(actualQuantity);
- }
+ Multimap<Article, StorageMovement> allStorageMovementsInReceptionByArticle =
+ Multimaps.index(storageMovements, StorageMovements.getArticleFunction());
- Location destinationLocation = storageMovement.getDestinationLocation();
+ for (Map.Entry<Article, StoredArticle> articleStored : storedArticlesByArticles.entries()) {
- storedArticle = storedArticlesByLocation.get(destinationLocation);
+ Article article = articleStored.getKey();
- if (storedArticle != null) {
+ StoredArticle storedArticle = articleStored.getValue();
- double actualQuantity = storedArticle.getQuantity() + storageMovement.getQuantity();
+ Location location = storedArticle.getLocation();
- storedArticle.setQuantity(actualQuantity);
+ for (StorageMovement storageMovement : allStorageMovementsInReceptionByArticle.get(article)) {
- }
+ if (storageMovement.getOriginLocation().equals(location)) {
- }
+ double actualQuantity = storedArticle.getQuantity() - storageMovement.getQuantity();
- // don't mention location if stored quantity is 0.
+ storedArticle.setQuantity(actualQuantity);
- storedArticles = Iterables.filter(storedArticles, StoredArticles.notEmpty());
+ }
- // exclude storageMovements on a location reported in error
+ if (storageMovement.getDestinationLocation().equals(location)) {
- LocationErrorsService locationErrorsService = serviceContext.newService(LocationErrorsService.class);
+ double actualQuantity = storedArticle.getQuantity() + storageMovement.getQuantity();
- List<Location> allLocationsInError = locationErrorsService.getAllLocationsInError(article);
+ storedArticle.setQuantity(actualQuantity);
- storedArticles = Iterables.filter(storedArticles, StoredArticles.articleNotStoredInLocationReportedInError(allLocationsInError));
+ }
- return storedArticles;
+ }
+ }
+
+ // Warning :
+ // this function don't add a new StoredArticle
+ // if exist a storage movement with new article in location
+
+ Iterable<StoredArticle> result = Iterables.filter(storedArticles, StoredArticles.notEmpty());
+
+ return result;
+
}
public void confirmStorageMovement(StorageMovementConfirmation confirmation, MagalieUser magalieUser) {
Modified: branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java
===================================================================
--- branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -23,10 +23,8 @@
* #L%
*/
-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.dao.WarehouseJpaDao;
import com.franciaflex.magalie.persistence.entity.Article;
@@ -92,8 +90,12 @@
Building building = destinationWarehouse.getBuilding();
- Location destinationLocation = getDestinationLocation(destinationWarehouse);
+ SimpleWithdrawItemService simpleWithdrawItemService =
+ serviceContext.newService(SimpleWithdrawItemService.class);
+ Location destinationLocation =
+ simpleWithdrawItemService.getDestinationLocation(destinationWarehouse);
+
BookArticleRequest bookArticleRequest =
new BookArticleRequest(
magalieUser, building, article,
@@ -106,18 +108,6 @@
}
- protected Location getDestinationLocation(Warehouse destinationWarehouse) {
-
- MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
-
- LocationDao locationDao = persistenceContext.getLocationDao();
-
- Location location = locationDao.find(Locations.codeForWarehouseWithoutLocations(), destinationWarehouse);
-
- return location;
-
- }
-
public List<Warehouse> getDestinationWarehouses(Building building) {
MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
Modified: branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java
===================================================================
--- branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReceptionService.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -25,7 +25,6 @@
import com.franciaflex.magalie.persistence.Locations;
import com.franciaflex.magalie.persistence.MagaliePersistenceContext;
-import com.franciaflex.magalie.persistence.StorageMovements;
import com.franciaflex.magalie.persistence.StoredArticles;
import com.franciaflex.magalie.persistence.dao.LocationDao;
import com.franciaflex.magalie.persistence.dao.LocationJpaDao;
@@ -47,8 +46,6 @@
import com.franciaflex.magalie.services.MagalieServiceContext;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multimaps;
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets;
@@ -112,36 +109,11 @@
List<StorageMovement> allStorageMovementsInReception =
storageMovementDao.findAllInReception(building);
- Multimap<Article, StoredArticle> storedArticlesByArticles =
- Multimaps.index(receivedArticles, StoredArticles.getArticleFunction());
+ ArticleStorageService articleStorageService =
+ serviceContext.newService(ArticleStorageService.class);
- Multimap<Article, StorageMovement> allStorageMovementsInReceptionByArticle =
- Multimaps.index(allStorageMovementsInReception, StorageMovements.getArticleFunction());
+ receivedArticles = articleStorageService.computeActualQuantities(receivedArticles, allStorageMovementsInReception);
- for (Map.Entry<Article, StoredArticle> articleStored : storedArticlesByArticles.entries()) {
-
- Article article = articleStored.getKey();
-
- StoredArticle storedArticle = articleStored.getValue();
-
- Location location = storedArticle.getLocation();
-
- for (StorageMovement storageMovement : allStorageMovementsInReceptionByArticle.get(article)) {
-
- if (storageMovement.getOriginLocation().equals(location)) {
-
- double actualQuantity = storedArticle.getQuantity() - storageMovement.getQuantity();
-
- storedArticle.setQuantity(actualQuantity);
-
- }
-
- }
-
- }
-
- receivedArticles = Iterables.filter(receivedArticles, StoredArticles.notEmpty());
-
return Lists.newArrayList(receivedArticles);
}
@@ -151,15 +123,30 @@
MagaliePersistenceContext persistenceContext =
serviceContext.getPersistenceContext();
- StoredArticleJpaDao storedArticleDao = persistenceContext.getStoredArticleDao();
+ StoredArticleJpaDao storedArticleDao =
+ persistenceContext.getStoredArticleDao();
StoredArticle storedArticle =
- storedArticleDao.findById(storedArticleId);
+ storedArticleDao.findDetachedById(storedArticleId);
- // FIXME brendan 23/05/13 déduire de la quantité les mouvements de stocks
+ StorageMovementDao storageMovementDao =
+ persistenceContext.getStorageMovementDao();
- double quantity = storedArticle.getQuantity();
+ List<StorageMovement> allStorageMovementsImpactingStoredArticle =
+ storageMovementDao.findAllImpactingStoredArticle(storedArticle);
+ ArticleStorageService articleStorageService =
+ serviceContext.newService(ArticleStorageService.class);
+
+ Iterable<StoredArticle> storedArticleSingleton = Lists.newArrayList(storedArticle);
+
+ storedArticleSingleton =
+ articleStorageService.computeActualQuantities(
+ storedArticleSingleton,
+ allStorageMovementsImpactingStoredArticle);
+
+ double quantity = Iterables.getOnlyElement(storedArticleSingleton).getQuantity();
+
ReceptionTask receptionTask = buildReceptionTask(storedArticle, quantity);
return receptionTask;
Modified: branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java
===================================================================
--- branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -62,6 +62,7 @@
protected MagalieServiceContext serviceContext;
+ @Override
public void setServiceContext(MagalieServiceContext serviceContext) {
this.serviceContext = serviceContext;
}
Copied: branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java (from rev 222, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java)
===================================================================
--- branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java (rev 0)
+++ branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,136 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.Locations;
+import com.franciaflex.magalie.persistence.MagaliePersistenceContext;
+import com.franciaflex.magalie.persistence.StoredArticles;
+import com.franciaflex.magalie.persistence.dao.LocationDao;
+import com.franciaflex.magalie.persistence.dao.StorageMovementJpaDao;
+import com.franciaflex.magalie.persistence.dao.WarehouseJpaDao;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.Location;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.franciaflex.magalie.persistence.entity.Warehouse;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.franciaflex.magalie.services.SimpleWithdrawItemTask;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Date;
+
+public class SimpleWithdrawItemService implements MagalieService {
+
+ private static final Log log = LogFactory.getLog(SimpleWithdrawItemService.class);
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public SimpleWithdrawItemTask getSimpleWithdrawItemTask(Building building, MagalieUser magalieUser, String articleBarcode) throws InvalidMagalieBarcodeException {
+
+ ArticleStorageService articleStorageService =
+ serviceContext.newService(ArticleStorageService.class);
+
+ MagalieBarcodeService magalieBarcodeService =
+ serviceContext.newService(MagalieBarcodeService.class);
+
+ Article article = magalieBarcodeService.getArticle(articleBarcode);
+
+ Iterable<StoredArticle> storedArticles =
+ articleStorageService.getStoredArticles(building, article);
+
+ Predicate<StoredArticle> articleStoredInAccessibleLocationPredicate =
+ StoredArticles.articleStoredInAccessibleLocationPredicate(magalieUser);
+
+ boolean articleIsAccessible =
+ Iterables.any(
+ storedArticles,
+ articleStoredInAccessibleLocationPredicate);
+
+ boolean articleUnavailable = Iterables.isEmpty(storedArticles);
+
+ storedArticles = Iterables.filter(storedArticles, articleStoredInAccessibleLocationPredicate);
+
+ SimpleWithdrawItemTask simpleWithdrawItemTask =
+ new SimpleWithdrawItemTask(storedArticles, ! articleIsAccessible, articleUnavailable);
+
+ return simpleWithdrawItemTask;
+
+ }
+
+ public void confirmStorageMovement(MagalieUser magalieUser, String destinationWarehouseId, StoredArticle storedArticle) {
+
+ MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
+
+ WarehouseJpaDao warehouseDao = persistenceContext.getWarehouseDao();
+
+ Date now = serviceContext.getNow();
+
+ // principle is taking a stored article and get everything (all quantity)
+
+ Location originLocation = storedArticle.getLocation();
+
+ Article article = storedArticle.getArticle();
+
+ double quantity = storedArticle.getQuantity();
+
+ if (log.isInfoEnabled()) {
+ log.info("user " + magalieUser.getLogin() + " took " +
+ quantity + " " + article.getUnit() + " from " +
+ originLocation.getBarcode());
+ }
+
+ // find actual destination location
+
+ Warehouse destinationWarehouse = warehouseDao.findById(destinationWarehouseId);
+
+ Location destinationLocation = getDestinationLocation(destinationWarehouse);
+
+ // create new storage movement
+
+ StorageMovement storageMovement = new StorageMovement();
+
+ storageMovement.setOriginLocation(originLocation);
+
+ storageMovement.setDestinationLocation(destinationLocation);
+
+ storageMovement.setMagalieUser(magalieUser);
+
+ storageMovement.setArticle(article);
+
+ storageMovement.setActualQuantity(quantity);
+
+ storageMovement.setConfirmDate(now);
+
+ // save storage movement
+
+ StorageMovementJpaDao storageMovementDao = persistenceContext.getStorageMovementDao();
+
+ storageMovementDao.persist(storageMovement);
+
+ persistenceContext.commit();
+
+ }
+
+ protected Location getDestinationLocation(Warehouse destinationWarehouse) {
+
+ MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
+
+ LocationDao locationDao = persistenceContext.getLocationDao();
+
+ Location location = locationDao.find(Locations.codeForWarehouseWithoutLocations(), destinationWarehouse);
+
+ return location;
+
+ }
+
+}
Copied: branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java (from rev 222, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java)
===================================================================
--- branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java (rev 0)
+++ branches/magalie-eugene/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,125 @@
+package com.franciaflex.magalie.services.service;
+
+
+import com.franciaflex.magalie.persistence.MagaliePersistenceContext;
+import com.franciaflex.magalie.persistence.dao.LocationDao;
+import com.franciaflex.magalie.persistence.dao.LocationJpaDao;
+import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
+import com.franciaflex.magalie.persistence.dao.StorageMovementJpaDao;
+import com.franciaflex.magalie.persistence.dao.StoredArticleDao;
+import com.franciaflex.magalie.persistence.dao.StoredArticleJpaDao;
+import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.Location;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+public class StorageTransferService implements MagalieService {
+
+ private static final Log log = LogFactory.getLog(StorageTransferService.class);
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public Location getLocationByBarCode(String barCode, Building building) {
+
+ MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
+
+ LocationDao locationDao = persistenceContext.getLocationDao();
+
+ Location location = locationDao.findByBarCode(barCode, building);
+
+ return location;
+ }
+
+ public Location getLocationById(String id) {
+
+ MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
+
+ LocationJpaDao locationDao = persistenceContext.getLocationDao();
+
+ Location location = locationDao.findById(id);
+
+ return location;
+ }
+
+ public List<StoredArticle> getStoredArticlesInLocation(Location location) {
+
+ MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
+
+ StoredArticleDao storedArticleDao = persistenceContext.getStoredArticleDao();
+
+ Iterable<StoredArticle > storedArticles = storedArticleDao.findAllByLocation(location);
+
+ ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class);
+
+ StorageMovementDao storageMovementDao = persistenceContext.getStorageMovementDao();
+
+ List<StorageMovement> allImpactingStoredArticle = new LinkedList<StorageMovement>();
+
+ for (StoredArticle storedArticle : storedArticles) {
+ allImpactingStoredArticle.addAll(storageMovementDao.findAllImpactingStoredArticle(storedArticle));
+ }
+
+ storedArticles = articleStorageService.computeActualQuantities(storedArticles, allImpactingStoredArticle);
+
+ return Lists.newArrayList(storedArticles);
+ }
+
+
+ public StoredArticle findStoredArticle(String storedArticleId) {
+
+ Preconditions.checkArgument(storedArticleId != null);
+
+ MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
+
+ StoredArticleJpaDao storedArticleDao = persistenceContext.getStoredArticleDao();
+
+ StoredArticle storedArticle = storedArticleDao.findById(storedArticleId);
+
+ return storedArticle;
+ }
+
+ public void confirmStorageTransfer(MagalieUser magalieUser, StoredArticle storedArticle, double quantity, Location destinationLocation) {
+
+ MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
+
+ StorageMovementJpaDao storageMovementDao = persistenceContext.getStorageMovementDao();
+
+ Date now = serviceContext.getNow();
+
+ StorageMovement storageMovement = new StorageMovement();
+
+ Location originLocation = storedArticle.getLocation();
+
+ storageMovement.setOriginLocation(originLocation);
+
+ storageMovement.setDestinationLocation(destinationLocation);
+
+ storageMovement.setMagalieUser(magalieUser);
+
+ storageMovement.setArticle(storedArticle.getArticle());
+
+ storageMovement.setActualQuantity(quantity);
+
+ storageMovement.setConfirmDate(now);
+
+ storageMovementDao.persist(storageMovement);
+
+ persistenceContext.commit();
+ }
+}
Modified: branches/magalie-eugene/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java
===================================================================
--- branches/magalie-eugene/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ReceptionServiceTest.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -24,12 +24,12 @@
*/
import com.franciaflex.magalie.persistence.Locations;
-import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
import com.franciaflex.magalie.persistence.dao.StorageMovementJpaDao;
import com.franciaflex.magalie.persistence.entity.Article;
import com.franciaflex.magalie.persistence.entity.Building;
import com.franciaflex.magalie.persistence.entity.Location;
import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.PreparedArticleReception;
import com.franciaflex.magalie.persistence.entity.StorageMovement;
import com.franciaflex.magalie.persistence.entity.StoredArticle;
import com.franciaflex.magalie.persistence.entity.Supplier;
@@ -202,7 +202,7 @@
}
@Test
- public void testWeCannotReceiveTheSameItemMultipleTime() throws Exception {
+ public void testWeCannotReceiveTheSameItemMultipleTime() {
testConfirmReception();
@@ -220,4 +220,20 @@
Assert.assertTrue(suppliers.isEmpty());
}
+
+ @Test
+ public void testReceivePreparedReception() {
+
+ PreparedArticleReception preparedArticleReception =
+ service.getPreparedArticleReception("PAR2");
+
+ Assert.assertNotNull(preparedArticleReception);
+
+ ReceptionTask receptionTask =
+ service.getReceptionTaskForPreparedArticleReception("PAR2");
+
+ Assert.assertEquals(4., receptionTask.getQuantity(), DELTA);
+
+ }
+
}
Copied: branches/magalie-eugene/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java (from rev 222, trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java)
===================================================================
--- branches/magalie-eugene/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java (rev 0)
+++ branches/magalie-eugene/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,97 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.StoredArticles;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.franciaflex.magalie.services.AbstractMagalieServiceTest;
+import com.franciaflex.magalie.services.SimpleWithdrawItemTask;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+public class SimpleWithdrawItemServiceTest extends AbstractMagalieServiceTest {
+
+ private static final Log log = LogFactory.getLog(SimpleWithdrawItemServiceTest.class);
+
+ protected SimpleWithdrawItemService service;
+
+ protected MagalieUser magalieUser;
+
+ protected Building building;
+
+ @Before
+ public void setUp() throws ParseException {
+
+ loadFixtures("fixtures");
+
+ service = newService(SimpleWithdrawItemService.class);
+
+ serviceContext.setDate(new Date(1363948427576l));
+
+ magalieUser = fixture("bruno");
+
+ building = fixture("B1");
+ }
+
+ @Test
+ public void testSimpleWithdraw() throws InvalidMagalieBarcodeException {
+
+ Article article = fixture("article2");
+
+ SimpleWithdrawItemTask simpleWithdrawItemTask =
+ service.getSimpleWithdrawItemTask(building, magalieUser, article.getCode());
+
+ Assert.assertFalse(simpleWithdrawItemTask.isDriverLicenseRequired());
+
+ Assert.assertFalse(simpleWithdrawItemTask.isArticleUnavailable());
+
+ List<StoredArticle> storedArticles = simpleWithdrawItemTask.getStoredArticles();
+
+ Predicate<StoredArticle> articleStoredInAccessibleLocationPredicate =
+ StoredArticles.articleStoredInAccessibleLocationPredicate(magalieUser);
+
+ Assert.assertTrue(Iterables.all(storedArticles, articleStoredInAccessibleLocationPredicate));
+
+ Assert.assertEquals(3, storedArticles.size());
+
+ }
+
+ @Test
+ public void testSimpleWithdrawWithoutDriverLicense() throws InvalidMagalieBarcodeException {
+
+ magalieUser = fixture("corinne");
+
+ Article article = fixture("article1");
+
+ SimpleWithdrawItemTask simpleWithdrawItemTask =
+ service.getSimpleWithdrawItemTask(building, magalieUser, article.getCode());
+
+ Assert.assertFalse(simpleWithdrawItemTask.isDriverLicenseRequired());
+
+ Assert.assertFalse(simpleWithdrawItemTask.isArticleUnavailable());
+
+ List<StoredArticle> storedArticles = simpleWithdrawItemTask.getStoredArticles();
+
+ Predicate<StoredArticle> articleStoredInAccessibleLocationPredicate =
+ StoredArticles.articleStoredInAccessibleLocationPredicate(magalieUser);
+
+ Assert.assertTrue(
+ "all given locations must be accessible for user",
+ Iterables.all(storedArticles, articleStoredInAccessibleLocationPredicate));
+
+ Assert.assertEquals(1, storedArticles.size());
+
+ }
+
+}
Modified: branches/magalie-eugene/magalie-services/src/test/resources/log4j.properties
===================================================================
--- branches/magalie-eugene/magalie-services/src/test/resources/log4j.properties 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-services/src/test/resources/log4j.properties 2013-05-31 09:59:28 UTC (rev 223)
@@ -29,3 +29,4 @@
# log4j.logger.com.franciaflex.magalie=TRACE
# log4j.logger.org.hibernate.tool.hbm2ddl.SchemaExport=FATAL
+log4j.logger.org.nuiton.jpa.api.hibernate.HibernateUtil=TRACE
Modified: branches/magalie-eugene/magalie-web/pom.xml
===================================================================
--- branches/magalie-eugene/magalie-web/pom.xml 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/pom.xml 2013-05-31 09:59:28 UTC (rev 223)
@@ -122,6 +122,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jcl</artifactId>
+ <scope>runtime</scope>
</dependency>
<dependency>
@@ -130,13 +131,7 @@
<scope>runtime</scope>
</dependency>
- <!-- Test dependencies -->
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
-
- <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
Modified: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/Activity.java
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/Activity.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/Activity.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -32,6 +32,9 @@
public enum Activity {
REQUESTED_LISTS,
- KANBANS
+ KANBANS,
+ SIMPLE_WITHDRAW,
+ RECEPTIONS,
+ PREPARED_RECEPTIONS
}
Modified: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -44,6 +44,7 @@
@Results({
+ @Result(name="input", type = "dispatcher", location = "/WEB-INF/content/prepare-withdraw-item-input.jsp"),
@Result(name="success", type="redirectAction", params = { "actionName", "withdraw-item!input", "storageMovementOrderId", "${storageMovementOrderId}" })
})
public class FulfilKanbanAction extends MagalieActionSupport implements Preparable {
Modified: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareArticleReceptionAction.java
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareArticleReceptionAction.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareArticleReceptionAction.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -27,6 +27,7 @@
import com.franciaflex.magalie.persistence.entity.StoredArticle;
import com.franciaflex.magalie.services.service.ReceptionService;
import com.franciaflex.magalie.services.service.SuppliersToReceive;
+import com.franciaflex.magalie.web.Activity;
import com.franciaflex.magalie.web.MagalieActionSupport;
import com.franciaflex.magalie.web.MagalieSession;
@@ -59,6 +60,8 @@
@Override
public String input() {
+ session.setActivity(Activity.RECEPTIONS);
+
Building building = session.getBuilding();
suppliersToReceive = service.getReceivedSuppliers(building);
Modified: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PreparePreparedArticleReceptionAction.java
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PreparePreparedArticleReceptionAction.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PreparePreparedArticleReceptionAction.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -2,7 +2,9 @@
import com.franciaflex.magalie.persistence.entity.PreparedArticleReception;
import com.franciaflex.magalie.services.service.ReceptionService;
+import com.franciaflex.magalie.web.Activity;
import com.franciaflex.magalie.web.MagalieActionSupport;
+import com.franciaflex.magalie.web.MagalieSession;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
@@ -15,6 +17,12 @@
protected String barcode;
+ protected MagalieSession session;
+
+ public void setSession(MagalieSession session) {
+ this.session = session;
+ }
+
public void setReceptionService(ReceptionService receptionService) {
this.receptionService = receptionService;
}
@@ -26,6 +34,8 @@
@Override
public String execute() {
+ session.setActivity(Activity.PREPARED_RECEPTIONS);
+
PreparedArticleReception preparedArticleReception =
receptionService.getPreparedArticleReception(barcode);
Copied: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareWithdrawItemAction.java (from rev 222, trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareWithdrawItemAction.java)
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareWithdrawItemAction.java (rev 0)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/PrepareWithdrawItemAction.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,156 @@
+package com.franciaflex.magalie.web.action;
+
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
+import com.franciaflex.magalie.persistence.entity.Warehouse;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.franciaflex.magalie.services.service.FulfilKanbanService;
+import com.franciaflex.magalie.services.service.SimpleWithdrawItemService;
+import com.franciaflex.magalie.web.Activity;
+import com.franciaflex.magalie.web.MagalieActionSupport;
+import com.franciaflex.magalie.web.MagalieSession;
+import com.opensymphony.xwork2.Preparable;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.convention.annotation.Results;
+
+import java.util.List;
+
+@Results({
+ @Result(name="success", type="redirectAction", params = { "actionName", "simple-withdraw-item!input", "articleBarcode", "${articleBarcode}", "destinationWarehouseId", "${destinationWarehouseId}"})
+})
+public class PrepareWithdrawItemAction extends MagalieActionSupport implements Preparable {
+
+ private static final Log log = LogFactory.getLog(PrepareWithdrawItemAction.class);
+
+ protected MagalieSession session;
+
+ protected String articleBarcode;
+
+ protected StorageMovementOrder storageMovementOrder;
+
+ protected List<Warehouse> destinationWarehouses;
+
+ protected String destinationWarehouseId;
+
+ protected Double quantity;
+
+ protected boolean askQuantity;
+
+ protected Article article;
+
+ protected Warehouse destinationWarehouse;
+
+ protected FulfilKanbanService fulfilKanbanService;
+
+ protected SimpleWithdrawItemService simpleWithdrawItemService;
+
+ public void setSession(MagalieSession session) {
+ this.session = session;
+ }
+
+ public void setFulfilKanbanService(FulfilKanbanService fulfilKanbanService) {
+ this.fulfilKanbanService = fulfilKanbanService;
+ }
+
+ public void setSimpleWithdrawItemService(SimpleWithdrawItemService simpleWithdrawItemService) {
+ this.simpleWithdrawItemService = simpleWithdrawItemService;
+ }
+
+ @Override
+ public void prepare() {
+
+ Building building = session.getBuilding();
+
+ destinationWarehouses = fulfilKanbanService.getDestinationWarehouses(building);
+
+ // let's help user by selecting by default the previously used destination warehouse
+
+ Warehouse lastUsedDestinationWarehouseForKanbans = session.getLastUsedDestinationWarehouseForKanbans();
+
+ if (lastUsedDestinationWarehouseForKanbans != null) {
+
+ destinationWarehouseId = lastUsedDestinationWarehouseForKanbans.getId();
+
+ }
+
+ }
+
+ public boolean isAskQuantity() {
+ return askQuantity;
+ }
+
+ public String getDestinationWarehouseId() {
+ return destinationWarehouseId;
+ }
+
+ public List<Warehouse> getDestinationWarehouses() {
+ return destinationWarehouses;
+ }
+
+ public void setArticleBarcode(String articleBarcode) {
+ this.articleBarcode = articleBarcode;
+ }
+
+ public void setDestinationWarehouseId(String destinationWarehouseId) {
+ this.destinationWarehouseId = destinationWarehouseId;
+ }
+
+ public void setQuantity(Double quantity) {
+ this.quantity = quantity;
+ }
+
+ @Override
+ public void validate() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("article barcode is " + articleBarcode);
+ }
+
+ destinationWarehouse = fulfilKanbanService.getStore(destinationWarehouseId);
+
+ // save used destination warehouse to propose it by default on next kanban
+ session.setLastUsedDestinationWarehouseForKanbans(destinationWarehouse);
+
+ try {
+
+ article = fulfilKanbanService.getArticle(articleBarcode);
+
+ } catch (InvalidMagalieBarcodeException e) {
+
+ addFieldError("articleBarcode", "Le code barre n'est pas un code valide");
+
+ }
+
+ if (quantity != null) {
+
+ addFieldError("quantity", "Il ne faut pas préciser la quantité");
+
+ }
+
+ }
+
+ @Override
+ public String execute() {
+
+ session.setActivity(Activity.SIMPLE_WITHDRAW);
+
+ return SUCCESS;
+
+ }
+
+ public Article getArticle() {
+ return article;
+ }
+
+ public String getArticleBarcode() {
+ return articleBarcode;
+ }
+
+ public String getStorageMovementOrderId() {
+ return storageMovementOrder.getId();
+ }
+
+}
Modified: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReceiveArticleAction.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -42,7 +42,8 @@
import java.util.Map;
@Results({
- @Result(name="success", type="redirectAction", params = { "actionName", "prepare-article-reception!input" })
+ @Result(name= "RECEPTIONS", type="redirectAction", params = { "actionName", "prepare-article-reception!input" }),
+ @Result(name= "PREPARED_RECEPTIONS", type="redirectAction", params = { "actionName", "prepare-prepared-article-reception!input" })
})
public class ReceiveArticleAction extends MagalieActionSupport {
@@ -130,7 +131,7 @@
service.confirmReception(magalieUser, confirmation);
- return SUCCESS;
+ return session.getActivity().name();
}
Copied: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java (from rev 222, trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java)
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java (rev 0)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,150 @@
+package com.franciaflex.magalie.web.action;
+
+import com.franciaflex.magalie.persistence.StoredArticles;
+import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.franciaflex.magalie.services.SimpleWithdrawItemTask;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.franciaflex.magalie.services.service.SimpleWithdrawItemService;
+import com.franciaflex.magalie.web.MagalieActionSupport;
+import com.franciaflex.magalie.web.MagalieSession;
+import com.google.common.base.Optional;
+import com.google.common.collect.Iterables;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.convention.annotation.Results;
+
+@Results({
+ @Result(name="success", type="redirectAction", params = { "actionName", "prepare-withdraw-item!input" }),
+ @Result(name="error", type="redirectAction", params = { "actionName", "prepare-withdraw-item!input" })
+})
+public class SimpleWithdrawItemAction extends MagalieActionSupport {
+
+ private static final Log log = LogFactory.getLog(SimpleWithdrawItemAction.class);
+
+ protected SimpleWithdrawItemService service;
+
+ protected String storedArticleId;
+
+ protected String articleBarcode;
+
+ protected MagalieSession session;
+
+ protected SimpleWithdrawItemTask simpleWithdrawItemTask;
+
+ protected String destinationWarehouseId;
+
+ protected String originLocationBarcode;
+
+ public void setSession(MagalieSession session) {
+ this.session = session;
+ }
+
+ public void setArticleBarcode(String articleBarcode) {
+ this.articleBarcode = articleBarcode;
+ }
+
+ public void setDestinationWarehouseId(String destinationWarehouseId) {
+ this.destinationWarehouseId = destinationWarehouseId;
+ }
+
+ public void setService(SimpleWithdrawItemService service) {
+ this.service = service;
+ }
+
+ @Override
+ public String input() {
+
+ Building building = session.getBuilding();
+
+ MagalieUser magalieUser = session.getMagalieUser();
+
+ try {
+
+ simpleWithdrawItemTask = service.getSimpleWithdrawItemTask(building, magalieUser, articleBarcode);
+
+ } catch (InvalidMagalieBarcodeException e) {
+
+ log.error("should never occur, barcode is validated before arriving in this action", e);
+
+ session.addMessage("Le code barre " + articleBarcode + " n'est pas un code valide");
+
+ return ERROR;
+
+ }
+
+ if (simpleWithdrawItemTask.isDriverLicenseRequired()) {
+
+ session.addMessage("Un permis est requis pour accéder à cet article");
+
+ return ERROR;
+
+ }
+
+ if (simpleWithdrawItemTask.isArticleUnavailable()) {
+
+ session.addMessage("Cet article n'est pas disponible");
+
+ return ERROR;
+
+ }
+
+ return INPUT;
+
+ }
+
+ public String getDestinationWarehouseId() {
+ return destinationWarehouseId;
+ }
+
+ public String getArticleBarcode() {
+ return articleBarcode;
+ }
+
+ public SimpleWithdrawItemTask getSimpleWithdrawItemTask() {
+ return simpleWithdrawItemTask;
+ }
+
+ public void setStoredArticleId(String storedArticleId) {
+ this.storedArticleId = storedArticleId;
+ }
+
+ public void setOriginLocationBarcode(String originLocationBarcode) {
+ this.originLocationBarcode = originLocationBarcode;
+ }
+
+ @Override
+ public String execute() throws InvalidMagalieBarcodeException {
+
+ MagalieUser magalieUser = session.getMagalieUser();
+
+ Building building = session.getBuilding();
+
+ simpleWithdrawItemTask = service.getSimpleWithdrawItemTask(building, magalieUser, articleBarcode);
+
+ Optional<StoredArticle> storedArticleOptional =
+ Iterables.tryFind(
+ simpleWithdrawItemTask.getStoredArticles(),
+ StoredArticles.locationBarcodeEquals(originLocationBarcode));
+
+ if (storedArticleOptional.isPresent()) {
+
+ service.confirmStorageMovement(
+ magalieUser, destinationWarehouseId,
+ storedArticleOptional.get());
+
+ } else {
+
+ addFieldError("originLocationBarcode", "Ce n'est pas le code-barre d'un emplacement valide");
+
+ return INPUT;
+
+ }
+
+ return SUCCESS;
+
+ }
+
+}
Copied: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java (from rev 222, trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java)
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java (rev 0)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,162 @@
+package com.franciaflex.magalie.web.action;
+
+import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.Location;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.franciaflex.magalie.services.service.StorageTransferService;
+import com.franciaflex.magalie.web.MagalieActionSupport;
+import com.franciaflex.magalie.web.MagalieSession;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.convention.annotation.Results;
+
+import java.util.List;
+
+/**
+ * @author Bavencoff
+ */
+
+@Results({
+ @Result(name="success", type="redirectAction", params = { "actionName", "storage-transfer-location!input"})
+})
+public class StorageTransferAction extends MagalieActionSupport {
+
+ private static final Log log = LogFactory.getLog(StorageTransferAction.class);
+
+ protected MagalieSession session;
+
+ protected StorageTransferService service;
+
+ protected String originId;
+
+ protected Location origin;
+
+ protected List<StoredArticle> storedArticles;
+
+ protected String storedArticleId;
+
+ protected StoredArticle storedArticle;
+
+ protected String destinationBarCode;
+
+ protected double quantity;
+
+ public void setService(StorageTransferService service) {
+ this.service = service;
+ }
+
+ public void setSession(MagalieSession session) {
+ this.session = session;
+ }
+
+ public void setOriginId(String originId) {
+ this.originId = originId;
+ }
+
+ @Override
+ public String input() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("originId : " + originId + "\n" +
+ "storedArticleId : " + storedArticleId);
+ }
+
+ origin = service.getLocationById(originId);
+
+ storedArticles = service.getStoredArticlesInLocation(origin);
+
+ if (storedArticleId != null) {
+ storedArticle = service.findStoredArticle(storedArticleId);
+ quantity = storedArticle.getQuantity();
+ }
+
+ return INPUT;
+ }
+
+ public Location getOrigin() {
+ return origin;
+ }
+
+ public List<StoredArticle> getStoredArticles() {
+ return storedArticles;
+ }
+
+ public String getStoredArticleId() {
+ return storedArticleId;
+ }
+
+ public StoredArticle getStoredArticle() {
+ return storedArticle;
+ }
+
+ public double getQuantity() {
+ return quantity;
+ }
+
+ public String getDestinationBarCode (){
+ return destinationBarCode;
+ }
+
+ public void setStoredArticleId(String storedArticleId) {
+ this.storedArticleId = storedArticleId;
+ }
+
+ public void setDestinationBarCode(String destinationBarCode) {
+ this.destinationBarCode = destinationBarCode;
+ }
+
+ public void setQuantity(double quantity) {
+ this.quantity = quantity;
+ }
+
+ @Override
+ public String execute() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("originId : " + originId + "\n" +
+ "storedArticleId : " + storedArticleId + "\n" +
+ "quantity : " + quantity + "\n" +
+ "destinationBarCode : " + destinationBarCode);
+ }
+
+
+ origin = service.getLocationById(originId);
+
+ storedArticle = service.findStoredArticle(storedArticleId);
+
+ if (quantity == 0) {
+ addFieldError("quantity", "la quantité ne doit pas être nulle");
+ return INPUT;
+ }
+
+ if (quantity > storedArticle.getQuantity()) {
+ addFieldError("quantity", "Stock insuffisant");
+ return INPUT;
+ }
+
+ if (destinationBarCode.isEmpty()) {
+ addFieldError("destinationBarCode", "L'emplacement de destination doit être renseigné");
+ return INPUT;
+ }
+
+ Building building = session.getBuilding();
+
+ Location destination = service.getLocationByBarCode(destinationBarCode, building);
+
+ if (destination == null) {
+ addFieldError("destinationBarCode", "Le code barre n'est pas un code valide");
+ return INPUT;
+ }
+
+ if (destination.equals(storedArticle.getLocation())) {
+ addFieldError("destinationBarCode", "la destination doit être différente de l'origine");
+ return INPUT;
+ }
+
+ service.confirmStorageTransfer(session.getMagalieUser(), storedArticle, quantity, destination);
+
+ return SUCCESS;
+ }
+
+}
Copied: branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java (from rev 222, trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java)
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java (rev 0)
+++ branches/magalie-eugene/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,80 @@
+package com.franciaflex.magalie.web.action;
+
+import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.Location;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.franciaflex.magalie.services.service.StorageTransferService;
+import com.franciaflex.magalie.web.MagalieActionSupport;
+import com.franciaflex.magalie.web.MagalieSession;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.convention.annotation.Results;
+
+import java.util.List;
+
+/**
+ * @author Bavencoff
+ */
+
+@Results({
+ @Result(name="success", type="redirectAction", params = { "actionName", "storage-transfer!input", "originId", "${originId}" })
+})
+public class StorageTransferLocationAction extends MagalieActionSupport {
+
+ private static final Log log = LogFactory.getLog(StorageTransferAction.class);
+
+ protected MagalieSession session;
+
+ protected StorageTransferService service;
+
+ protected String originBarCode;
+
+ protected Location origin;
+
+ public void setService(StorageTransferService service) {
+ this.service = service;
+ }
+
+ public void setSession(MagalieSession session) {
+ this.session = session;
+ }
+
+ public void setOriginBarCode(String originBarCode) {
+ this.originBarCode = originBarCode;
+ }
+
+ @Override
+ public String execute() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("origin BarCode : " + originBarCode);
+ }
+
+ Building building = session.getBuilding();
+
+ origin = service.getLocationByBarCode(originBarCode, building);
+
+ if (origin == null) {
+ addFieldError("originBarCode", "Le code barre n'est pas un code valide");
+ return INPUT;
+ }
+
+ List<StoredArticle> storedArticles = service.getStoredArticlesInLocation(origin);
+
+ if (storedArticles.isEmpty()) {
+ addFieldError("originBarCode", "Aucun articles dans cet emplacement");
+ return INPUT;
+ }
+
+ return SUCCESS;
+ }
+
+ public String getOriginId() {
+ String originId = "";
+ if (origin != null) {
+ originId = origin.getId();
+ }
+ return originId;
+ }
+}
Modified: branches/magalie-eugene/magalie-web/src/main/resources/struts.properties
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/resources/struts.properties 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/resources/struts.properties 2013-05-31 09:59:28 UTC (rev 223)
@@ -24,13 +24,13 @@
struts.ognl.allowStaticMethodAccess=true
# Help debugging
-struts.devMode=true
-struts.ognl.logMissingProperties=true
-struts.el.throwExceptionOnFailure=true
-struts.i18n.reload=true
+struts.devMode=${devMode}
+struts.ognl.logMissingProperties=${devMode}
+struts.el.throwExceptionOnFailure=${devMode}
+struts.i18n.reload=${devMode}
struts.custom.i18n.resources=resources
-struts.configuration.xml.reload=true
-struts.convention.classes.reload=true
+struts.configuration.xml.reload=${devMode}
+struts.convention.classes.reload=${devMode}
# Performance tuning
# see http://struts.apache.org/2.2.3/docs/performance-tuning.html
Modified: branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/choose-activity.jsp
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/choose-activity.jsp 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/choose-activity.jsp 2013-05-31 09:59:28 UTC (rev 223)
@@ -33,8 +33,10 @@
bindKey('2', function(){ redirectTo($('#deliverRequestedArticleLink'));});
bindKey('3', function(){ redirectTo($('#prepareArticleReceptionLink'));});
bindKey('4', function(){ redirectTo($('#preparePreparedArticleReceptionLink'));});
+ bindKey('5', function(){ redirectTo($('#storageTransferLink'));});
+ bindKey('6', function(){ redirectTo($('#prepareWithdrawItemLink'));});
<s:if test="movementOrderResume" >
- bindKey('5', function(){ redirectTo($('#movementOrderResumeLink'));});
+ bindKey('7', function(){ redirectTo($('#movementOrderResumeLink'));});
</s:if>
bindKey('Esc', function(){ redirectTo($('#logoutLink'));});
});
@@ -62,11 +64,17 @@
<s:url namespace="/" action="prepare-prepared-article-reception!input" id="preparePreparedArticleReceptionUrl"/>
<s:a href="%{preparePreparedArticleReceptionUrl}" cssClass="btn btn-block" id="preparePreparedArticleReceptionLink" >Traiter les réceptions fournisseurs préparées (4)</s:a>
+<s:url namespace="/" action="storage-transfer-location!input" id="storageTransferUrl"/>
+<s:a href="%{storageTransferUrl}" cssClass="btn btn-block" id="storageTransferLink" >Transfert de stock (5)</s:a>
+
+<s:url namespace="/" action="prepare-withdraw-item!input" id="prepareWithdrawItemUrl"/>
+<s:a href="%{prepareWithdrawItemUrl}" cssClass="btn btn-block" id="prepareWithdrawItemLink" >Prélèvement immédiat (6)</s:a>
+
<s:if test="movementOrderResume" >
<s:url namespace="/" action="withdraw-item!input" id="movementOrderResumeUrl">
<s:param name="storageMovementOrderId" value="%{movementOrderResume.id}" />
</s:url>
- <s:a href="%{movementOrderResumeUrl}" cssClass="btn btn-block" id="movementOrderResumeLink" >Reprendre l'ordre de mouvement (5)</s:a>
+ <s:a href="%{movementOrderResumeUrl}" cssClass="btn btn-block" id="movementOrderResumeLink" >Reprendre l'ordre de mouvement (7)</s:a>
</s:if>
<s:url namespace="/" action="logout" id="logoutUrl"/>
Deleted: branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp 2013-05-31 09:59:28 UTC (rev 223)
@@ -1,57 +0,0 @@
-<%--
- #%L
- MagaLiE :: UI
- $Id:$
- $HeadURL:$
- %%
- Copyright (C) 2013 CodeLutin
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- #L%
- --%>
-<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<head>
- <title>Traitement des kanbans</title>
- <script type="text/javascript">
- $(document).ready(function () {
- $("#fulfil-kanban_articleBarcode").focus();
- bindKey('Esc', function(){ redirectTo($('#chooseActivityLink'));});
- });
- </script>
-</head>
-
-<s:url namespace="/" action="choose-activity" id="chooseActivityUrl"/>
-
-<s:form>
- <s:textfield key="articleBarcode" label="Article" inputAppendIcon="barcode" cssClass="input-medium" />
-
- <s:select label="Magasin destination"
- key="destinationWarehouseId"
- list="destinationWarehouses"
- listKey="id"
- listValue="code"
- required="true"
- />
-
- <s:if test="askQuantity">
- <s:textfield name="quantity" label="Qté" inputAppend="%{article.unit}" cssClass="input-mini" />
- </s:if>
-
- <div class="btn-group">
- <s:a href="%{chooseActivityUrl}" cssClass="btn" id="chooseActivityLink" >Changer d'activité (Esc)</s:a>
- <s:submit name="next" value="Suivant" cssClass="btn btn-primary" />
- </div>
-</s:form>
\ No newline at end of file
Copied: branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/prepare-withdraw-item-input.jsp (from rev 222, trunk/magalie-web/src/main/webapp/WEB-INF/content/prepare-withdraw-item-input.jsp)
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/prepare-withdraw-item-input.jsp (rev 0)
+++ branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/prepare-withdraw-item-input.jsp 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,57 @@
+<%--
+ #%L
+ MagaLiE :: UI
+ $Id:$
+ $HeadURL:$
+ %%
+ Copyright (C) 2013 CodeLutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ --%>
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<head>
+ <title>Traitement des kanbans</title>
+ <script type="text/javascript">
+ $(document).ready(function () {
+ $("#fulfil-kanban_articleBarcode").focus();
+ bindKey('Esc', function(){ redirectTo($('#chooseActivityLink'));});
+ });
+ </script>
+</head>
+
+<s:url namespace="/" action="choose-activity" id="chooseActivityUrl"/>
+
+<s:form>
+ <s:textfield key="articleBarcode" label="Article" inputAppendIcon="barcode" cssClass="input-medium" />
+
+ <s:select label="Magasin destination"
+ key="destinationWarehouseId"
+ list="destinationWarehouses"
+ listKey="id"
+ listValue="code"
+ required="true"
+ />
+
+ <s:if test="askQuantity">
+ <s:textfield name="quantity" label="Qté" inputAppend="%{article.unit}" cssClass="input-mini" />
+ </s:if>
+
+ <div class="btn-group">
+ <s:a href="%{chooseActivityUrl}" cssClass="btn" id="chooseActivityLink" >Changer d'activité (Esc)</s:a>
+ <s:submit name="next" value="Suivant" cssClass="btn btn-primary" />
+ </div>
+</s:form>
\ No newline at end of file
Copied: branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/simple-withdraw-item-input.jsp (from rev 222, trunk/magalie-web/src/main/webapp/WEB-INF/content/simple-withdraw-item-input.jsp)
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/simple-withdraw-item-input.jsp (rev 0)
+++ branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/simple-withdraw-item-input.jsp 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,33 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<head>
+ <title>Prélèvement immédiat</title>
+ <link rel="stylesheet" href="<s:url value='/css/magalie-ck3x-reduced.css' />"/>
+</head>
+
+<s:url namespace="/" action="choose-activity" id="cancelUrl" />
+
+<s:form>
+
+ <ul>
+
+ <s:iterator value="simpleWithdrawItemTask.storedArticles">
+
+ <li><s:property value="location.barcode" /></li>
+ </s:iterator>
+
+ </ul>
+
+ <s:textfield key="originLocationBarcode" label="Emplacement prélevé" inputAppendIcon="barcode" cssClass="input-medium" />
+
+ <s:hidden name="destinationWarehouseId" value="%{destinationWarehouseId}" />
+
+ <s:hidden name="articleBarcode" value="%{articleBarcode}" />
+
+ <div class="btn-group">
+ <s:a href="%{cancelUrl}" cssClass="btn" id="CancelLink" >Quitter (Esc)</s:a>
+ <s:submit name="" value="Valider" cssClass="btn btn-primary" />
+ </div>
+
+</s:form>
Copied: branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-input.jsp (from rev 222, trunk/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-input.jsp)
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-input.jsp (rev 0)
+++ branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-input.jsp 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,89 @@
+
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<head>
+ <title>Transfert de stock</title>
+ <script type="text/javascript">
+ $(document).ready(function () {
+ bindKey("Esc", function(){ redirectTo($('#CancelLink'));});
+ <s:if test="storedArticle != null" >
+ $('#storage-transfer_destinationBarCode').focus();
+ </s:if>
+ });
+
+
+ </script>
+ <link rel="stylesheet" href="<s:url value='/css/magalie-ck3x-reduced.css' />"/>
+</head>
+
+<s:url namespace="/" action="choose-activity" id="cancelUrl" />
+
+<header>
+ <dl class="dl-horizontal">
+ <dt>Source</dt>
+ <dd><s:property value="origin.warehouse.code + origin.code" /></dd>
+ <s:if test="storedArticle != null" >
+ <dt>Article</dt>
+ <dd><s:property value="storedArticle.article.description" /></dd>
+ <dt>Réf</dt>
+ <dd><s:property value="storedArticle.article.code" /></dd>
+ <dt>Qté disponible</dt>
+ <dd><s:property value="storedArticle.quantity + ' ' + storedArticle.article.unit" /></dd>
+ </s:if>
+ </dl>
+</header>
+
+
+<s:if test="storedArticle == null" >
+ <s:iterator value="storedArticles" status="stat">
+ <li>
+ <s:set var="elementStoredArticleId">storedArticleId<s:property value="#stat.index" /></s:set>
+ <s:url namespace="/" action="storage-transfer!input" id="storageTransferNextStepUrl">
+ <s:param name="originId" value="%{origin.id}" />
+ <s:param name="storedArticleId" value="%{id}" />
+ </s:url>
+ <s:if test="#stat.index < shortcuts.size()">
+ <script type="text/javascript">
+ $(document).ready(function () {
+ var id = '<s:property value="elementStoredArticleId" />';
+ bindKey(<s:property value="shortcuts.get(#stat.index)" />, function(){ redirectTo($('#' + id));});
+ });
+ </script>
+ <s:a href="%{storageTransferNextStepUrl}" id="%{elementStoredArticleId}">
+ <s:property value="article.description" />
+ (<s:property value="article.code" />)
+ (<s:property value="quantity" />
+ <s:property value="article.unit" />)
+ (<s:property value="shortcuts.get(#stat.index)" />)
+ </s:a>
+ </s:if>
+ <s:else>
+ <s:a href="%{storageTransferNextStepUrl}" >
+ <s:property value="article.description" />
+ (<s:property value="article.code" />)
+ (<s:property value="quantity" />
+ <s:property value="article.unit" />)
+ </s:a>
+ </s:else>
+ </li>
+ </s:iterator>
+
+ <s:a href="%{cancelUrl}" cssClass="btn" id="CancelLink" >Quitter (Esc)</s:a>
+
+</s:if>
+<s:else>
+ <s:form cssClass="form-horizontal">
+ <s:hidden name="originId" value="%{origin.id}" />
+ <s:hidden name="storedArticleId" value="%{storedArticle.id}" />
+
+ <s:textfield name="quantity" label="Qté" inputAppend="%{storedArticle.article.unit}" type="number" step="any" min="0" cssClass="input-mini" />
+
+ <s:textfield key="destinationBarCode" label="Destination" inputAppendIcon="barcode" cssClass="input-small" />
+
+ <div class="btn-group">
+ <s:a href="%{cancelUrl}" cssClass="btn" id="CancelLink" >Quitter (Esc)</s:a>
+ <s:submit name="" value="Valider" cssClass="btn btn-primary" />
+ </div>
+ </s:form>
+</s:else>
Copied: branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-location-input.jsp (from rev 222, trunk/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-location-input.jsp)
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-location-input.jsp (rev 0)
+++ branches/magalie-eugene/magalie-web/src/main/webapp/WEB-INF/content/storage-transfer-location-input.jsp 2013-05-31 09:59:28 UTC (rev 223)
@@ -0,0 +1,24 @@
+
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<head>
+ <title>Transfert de stock</title>
+ <script type="text/javascript">
+ $(document).ready(function () {
+ $("#storage-transfer-location_originBarCode").focus();
+ bindKey('Esc', function(){ redirectTo($('#chooseActivityLink'));});
+ });
+ </script>
+</head>
+
+<s:url namespace="/" action="choose-activity" id="chooseActivityUrl"/>
+
+<s:form>
+ <s:textfield key="originBarCode" label="Emplacement de prélévement" inputAppendIcon="barcode" cssClass="input-medium" />
+
+ <div class="btn-group">
+ <s:a href="%{chooseActivityUrl}" cssClass="btn" id="chooseActivityLink" >Changer d'activité (Esc)</s:a>
+ <s:submit name="next" value="Suivant" cssClass="btn btn-primary" />
+ </div>
+</s:form>
\ No newline at end of file
Modified: branches/magalie-eugene/magalie-web/src/main/webapp/css/magalie-ck3x.css
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/webapp/css/magalie-ck3x.css 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/webapp/css/magalie-ck3x.css 2013-05-31 09:59:28 UTC (rev 223)
@@ -45,6 +45,25 @@
margin-left: 110px;
}
+.control-group.radio > .controls {
+ margin-left: 0px;
+}
+
+label.radio {
+position:relative;
+
+}
+
+input.radio {
+ position:inherit;
+ margin-top: 0px;
+ height:auto;
+}
+
+/*.controls {
+ margin-left: 30px;
+}
+*/
.btn-group {
margin-top: 3px;
position: absolute;
Modified: branches/magalie-eugene/magalie-web/src/main/webapp/js/magalie.js
===================================================================
--- branches/magalie-eugene/magalie-web/src/main/webapp/js/magalie.js 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/magalie-web/src/main/webapp/js/magalie.js 2013-05-31 09:59:28 UTC (rev 223)
@@ -74,7 +74,7 @@
function bindKey(key, handler) {
$(document).keydown(function(event) {
- if (event.which == KEYS[key]) {
+ if (event.which == KEYS[key] && !($(document.activeElement).is(":input") && SHORTCUTS.indexOf(key) >= 0)) {
event.preventDefault();
handler();
}
Modified: branches/magalie-eugene/pom.xml
===================================================================
--- branches/magalie-eugene/pom.xml 2013-05-31 07:46:32 UTC (rev 222)
+++ branches/magalie-eugene/pom.xml 2013-05-31 09:59:28 UTC (rev 223)
@@ -79,6 +79,17 @@
<role>technical writer</role>
</roles>
</developer>
+ <developer>
+ <id>sbavencoff</id>
+ <name>Sylvain Bavencoff</name>
+ <email>bavencoff at codelutin.com</email>
+ <organization>CodeLutin</organization>
+ <organizationUrl>http://www.codelutin.com</organizationUrl>
+ <timezone>+2</timezone>
+ <roles>
+ <role>developer</role>
+ </roles>
+ </developer>
</developers>
<packaging>pom</packaging>
@@ -94,19 +105,18 @@
<nuitonWebVersion>1.13</nuitonWebVersion>
<nuitonUtilsVersion>2.6.12</nuitonUtilsVersion>
- <h2Version>1.3.170</h2Version>
+ <h2Version>1.3.172</h2Version>
<postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion>
- <struts2Version>2.3.8</struts2Version>
+ <struts2Version>2.3.14.2</struts2Version>
<jqueryPluginVersion>3.5.1</jqueryPluginVersion>
<bootstrapPluginVersion>1.6.0</bootstrapPluginVersion>
<shiroVersion>1.2.1</shiroVersion>
- <slf4jVersion>1.7.2</slf4jVersion>
+ <slf4jVersion>1.7.5</slf4jVersion>
<jettyVersion>${jettyPluginVersion}</jettyVersion>
- <hibernateVersion>4.1.9.Final</hibernateVersion>
+ <hibernateVersion>4.2.2.Final</hibernateVersion>
<seleniumVersion>2.28.0</seleniumVersion>
<mockitoVersion>1.9.5</mockitoVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
- <topiaVersion>2.7.1</topiaVersion>
<eugeneVersion>2.6.3</eugeneVersion>
<!-- license to use -->
@@ -115,6 +125,9 @@
<!--Site configuration -->
<locales>fr</locales>
+ <!-- configuration -->
+ <devMode>true</devMode>
+
</properties>
<dependencyManagement>
@@ -142,9 +155,14 @@
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-c3p0</artifactId>
+ <version>${hibernateVersion}</version>
+ </dependency>
+
+ <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <scope>test</scope>
<version>${h2Version}</version>
</dependency>
@@ -199,6 +217,7 @@
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2Version}</version>
+ <scope>compile</scope>
</dependency>
<dependency>
@@ -252,15 +271,22 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jcl</artifactId>
<version>${slf4jVersion}</version>
- <scope>runtime</scope>
+ <scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4jVersion}</version>
+ <scope>test</scope>
+ </dependency>
+
<!-- Others -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
- <version>1.4.6</version>
+ <version>1.4.7</version>
</dependency>
<dependency>
@@ -426,6 +452,20 @@
</properties>
</profile>
+
+ <profile>
+ <id>disableDevModeProfile</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <properties>
+ <devMode>false</devMode>
+ </properties>
+ </profile>
+
</profiles>
</project>
\ No newline at end of file
1
0
r222 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa magalie-services/src/main/java/com/franciaflex/magalie/services/service magalie-web/src/main/java/com/franciaflex/magalie/web/action
by Bavencoff@users.forge.codelutin.com 31 May '13
by Bavencoff@users.forge.codelutin.com 31 May '13
31 May '13
Author: Bavencoff
Date: 2013-05-31 09:46:32 +0200 (Fri, 31 May 2013)
New Revision: 222
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
refs #2164 : when scan location barcode, check building
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/LocationJpaDao.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationDao.java 2013-05-30 15:11:54 UTC (rev 221)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/LocationDao.java 2013-05-31 07:46:32 UTC (rev 222)
@@ -37,5 +37,5 @@
List<Location> findAllWithoutReception(Warehouse warehouse);
- Location findByBarCode(String barCode);
+ Location findByBarCode(String barCode, Building building);
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/LocationJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/LocationJpaDao.java 2013-05-30 15:11:54 UTC (rev 221)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/LocationJpaDao.java 2013-05-31 07:46:32 UTC (rev 222)
@@ -89,9 +89,12 @@
}
@Override
- public Location findByBarCode(String barCode) {
- TypedQuery<Location> query = createQuery("from Location l where CONCAT(l.warehouse.code, l.code) = :barCode");
+ public Location findByBarCode(String barCode, Building building) {
+ TypedQuery<Location> query = createQuery("from Location l " +
+ "where CONCAT(l.warehouse.code, l.code) = :barCode " +
+ "and l.warehouse.building = :building");
query.setParameter("barCode", barCode);
+ query.setParameter("building", building);
return findUniqueOrNull(query);
}
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java 2013-05-30 15:11:54 UTC (rev 221)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/StorageTransferService.java 2013-05-31 07:46:32 UTC (rev 222)
@@ -5,6 +5,7 @@
import com.franciaflex.magalie.persistence.dao.LocationDao;
import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
import com.franciaflex.magalie.persistence.dao.StoredArticleDao;
+import com.franciaflex.magalie.persistence.entity.Building;
import com.franciaflex.magalie.persistence.entity.Location;
import com.franciaflex.magalie.persistence.entity.MagalieUser;
import com.franciaflex.magalie.persistence.entity.StorageMovement;
@@ -31,13 +32,13 @@
this.serviceContext = serviceContext;
}
- public Location getLocationByBarCode(String barCode) {
+ public Location getLocationByBarCode(String barCode, Building building) {
MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext();
LocationDao locationDao = persistenceContext.getLocationDao();
- Location location = locationDao.findByBarCode(barCode);
+ Location location = locationDao.findByBarCode(barCode, building);
return location;
}
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java 2013-05-30 15:11:54 UTC (rev 221)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferAction.java 2013-05-31 07:46:32 UTC (rev 222)
@@ -1,5 +1,6 @@
package com.franciaflex.magalie.web.action;
+import com.franciaflex.magalie.persistence.entity.Building;
import com.franciaflex.magalie.persistence.entity.Location;
import com.franciaflex.magalie.persistence.entity.StoredArticle;
import com.franciaflex.magalie.services.service.StorageTransferService;
@@ -139,8 +140,10 @@
return INPUT;
}
- Location destination = service.getLocationByBarCode(destinationBarCode);
+ Building building = session.getBuilding();
+ Location destination = service.getLocationByBarCode(destinationBarCode, building);
+
if (destination == null) {
addFieldError("destinationBarCode", "Le code barre n'est pas un code valide");
return INPUT;
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java 2013-05-30 15:11:54 UTC (rev 221)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/StorageTransferLocationAction.java 2013-05-31 07:46:32 UTC (rev 222)
@@ -1,5 +1,6 @@
package com.franciaflex.magalie.web.action;
+import com.franciaflex.magalie.persistence.entity.Building;
import com.franciaflex.magalie.persistence.entity.Location;
import com.franciaflex.magalie.persistence.entity.StoredArticle;
import com.franciaflex.magalie.services.service.StorageTransferService;
@@ -50,8 +51,10 @@
log.debug("origin BarCode : " + originBarCode);
}
- origin = service.getLocationByBarCode(originBarCode);
+ Building building = session.getBuilding();
+ origin = service.getLocationByBarCode(originBarCode, building);
+
if (origin == null) {
addFieldError("originBarCode", "Le code barre n'est pas un code valide");
return INPUT;
1
0
r221 - in trunk: . magalie-persistence magalie-persistence/src/main/resources
by Bavencoff@users.forge.codelutin.com 30 May '13
by Bavencoff@users.forge.codelutin.com 30 May '13
30 May '13
Author: Bavencoff
Date: 2013-05-30 17:11:54 +0200 (Thu, 30 May 2013)
New Revision: 221
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
Prepare release : hibernate c3p0
Modified:
trunk/magalie-persistence/pom.xml
trunk/magalie-persistence/src/main/resources/magalie.properties
trunk/pom.xml
Modified: trunk/magalie-persistence/pom.xml
===================================================================
--- trunk/magalie-persistence/pom.xml 2013-05-30 15:09:57 UTC (rev 220)
+++ trunk/magalie-persistence/pom.xml 2013-05-30 15:11:54 UTC (rev 221)
@@ -38,6 +38,12 @@
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-c3p0</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>compile</scope>
Modified: trunk/magalie-persistence/src/main/resources/magalie.properties
===================================================================
--- trunk/magalie-persistence/src/main/resources/magalie.properties 2013-05-30 15:09:57 UTC (rev 220)
+++ trunk/magalie-persistence/src/main/resources/magalie.properties 2013-05-30 15:11:54 UTC (rev 221)
@@ -29,3 +29,7 @@
hibernate.show_sql=false
hibernate.format_sql=true
hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
+hibernate.c3p0.min_size=5
+hibernate.c3p0.max_size=20
+hibernate.c3p0.timeout=1800
+hibernate.c3p0.max_statements=50
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-30 15:09:57 UTC (rev 220)
+++ trunk/pom.xml 2013-05-30 15:11:54 UTC (rev 221)
@@ -153,6 +153,12 @@
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-c3p0</artifactId>
+ <version>${hibernateVersion}</version>
+ </dependency>
+
+ <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>provided</scope>
1
0
Author: bleny
Date: 2013-05-30 17:09:57 +0200 (Thu, 30 May 2013)
New Revision: 220
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
actually hibernate can be used if you clean the h2 database
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-30 13:47:47 UTC (rev 219)
+++ trunk/pom.xml 2013-05-30 15:09:57 UTC (rev 220)
@@ -111,13 +111,7 @@
<shiroVersion>1.2.1</shiroVersion>
<slf4jVersion>1.7.5</slf4jVersion>
<jettyVersion>${jettyPluginVersion}</jettyVersion>
-
- <!-- FIXME bleny 30/05/13
- updating hibernate to 4.2.1 break the app when running in tomcat
- and making a first http request, changelog doesn't show anything
- meaningful. 4.2.2 doesn't fix it. -->
- <hibernateVersion>4.2.0.Final</hibernateVersion>
-
+ <hibernateVersion>4.2.2.Final</hibernateVersion>
<seleniumVersion>2.28.0</seleniumVersion>
<mockitoVersion>1.9.5</mockitoVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
1
0
Author: bleny
Date: 2013-05-30 15:47:47 +0200 (Thu, 30 May 2013)
New Revision: 219
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
rename profile
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-30 13:46:32 UTC (rev 218)
+++ trunk/pom.xml 2013-05-30 13:47:47 UTC (rev 219)
@@ -440,7 +440,7 @@
</profile>
<profile>
- <id>admin-release</id>
+ <id>disableDevModeProfile</id>
<activation>
<property>
<name>performRelease</name>
1
0
Author: bleny
Date: 2013-05-30 15:46:32 +0200 (Thu, 30 May 2013)
New Revision: 218
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
lower version of hibernate
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-30 13:41:17 UTC (rev 217)
+++ trunk/pom.xml 2013-05-30 13:46:32 UTC (rev 218)
@@ -111,7 +111,13 @@
<shiroVersion>1.2.1</shiroVersion>
<slf4jVersion>1.7.5</slf4jVersion>
<jettyVersion>${jettyPluginVersion}</jettyVersion>
- <hibernateVersion>4.1.9.Final</hibernateVersion>
+
+ <!-- FIXME bleny 30/05/13
+ updating hibernate to 4.2.1 break the app when running in tomcat
+ and making a first http request, changelog doesn't show anything
+ meaningful. 4.2.2 doesn't fix it. -->
+ <hibernateVersion>4.2.0.Final</hibernateVersion>
+
<seleniumVersion>2.28.0</seleniumVersion>
<mockitoVersion>1.9.5</mockitoVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
1
0
30 May '13
Author: Bavencoff
Date: 2013-05-30 15:41:17 +0200 (Thu, 30 May 2013)
New Revision: 217
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
Prepare release : stuts.properties devmodes if release
Modified:
trunk/magalie-web/src/main/resources/struts.properties
trunk/pom.xml
Modified: trunk/magalie-web/src/main/resources/struts.properties
===================================================================
--- trunk/magalie-web/src/main/resources/struts.properties 2013-05-30 12:55:46 UTC (rev 216)
+++ trunk/magalie-web/src/main/resources/struts.properties 2013-05-30 13:41:17 UTC (rev 217)
@@ -24,13 +24,13 @@
struts.ognl.allowStaticMethodAccess=true
# Help debugging
-struts.devMode=true
-struts.ognl.logMissingProperties=true
-struts.el.throwExceptionOnFailure=true
-struts.i18n.reload=true
+struts.devMode=${devMode}
+struts.ognl.logMissingProperties=${devMode}
+struts.el.throwExceptionOnFailure=${devMode}
+struts.i18n.reload=${devMode}
struts.custom.i18n.resources=resources
-struts.configuration.xml.reload=true
-struts.convention.classes.reload=true
+struts.configuration.xml.reload=${devMode}
+struts.convention.classes.reload=${devMode}
# Performance tuning
# see http://struts.apache.org/2.2.3/docs/performance-tuning.html
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-30 12:55:46 UTC (rev 216)
+++ trunk/pom.xml 2013-05-30 13:41:17 UTC (rev 217)
@@ -123,6 +123,9 @@
<!--Site configuration -->
<locales>fr</locales>
+ <!-- configuration -->
+ <devMode>true</devMode>
+
</properties>
<dependencyManagement>
@@ -429,6 +432,20 @@
</properties>
</profile>
+
+ <profile>
+ <id>admin-release</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <properties>
+ <devMode>false</devMode>
+ </properties>
+ </profile>
+
</profiles>
</project>
\ No newline at end of file
1
0
r216 - in trunk: magalie-services/src/main/java/com/franciaflex/magalie/services 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
by bleny@users.forge.codelutin.com 30 May '13
by bleny@users.forge.codelutin.com 30 May '13
30 May '13
Author: bleny
Date: 2013-05-30 14:55:46 +0200 (Thu, 30 May 2013)
New Revision: 216
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
refs #2168 in simple withdraw item, consider driver license
Added:
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java
Modified:
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java 2013-05-30 12:43:01 UTC (rev 215)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SimpleWithdrawItemTask.java 2013-05-30 12:55:46 UTC (rev 216)
@@ -1,6 +1,8 @@
package com.franciaflex.magalie.services;
import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
import java.util.List;
@@ -8,13 +10,14 @@
protected List<StoredArticle> storedArticles;
- // TODO brendan 29/05/13
protected boolean driverLicenseRequired;
protected boolean articleUnavailable;
- public SimpleWithdrawItemTask(List<StoredArticle> storedArticles) {
- this.storedArticles = storedArticles;
+ public SimpleWithdrawItemTask(Iterable<StoredArticle> storedArticles, boolean driverLicenseRequired, boolean articleUnavailable) {
+ this.storedArticles = Lists.newArrayList(storedArticles);
+ this.driverLicenseRequired = driverLicenseRequired;
+ this.articleUnavailable = articleUnavailable;
}
public List<StoredArticle> getStoredArticles() {
@@ -22,10 +25,12 @@
}
public boolean isDriverLicenseRequired() {
+ Preconditions.checkState( ! articleUnavailable);
return driverLicenseRequired;
}
public boolean isArticleUnavailable() {
+ Preconditions.checkState( ! driverLicenseRequired);
return articleUnavailable;
}
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java 2013-05-30 12:43:01 UTC (rev 215)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemService.java 2013-05-30 12:55:46 UTC (rev 216)
@@ -2,6 +2,7 @@
import com.franciaflex.magalie.persistence.Locations;
import com.franciaflex.magalie.persistence.MagaliePersistenceContext;
+import com.franciaflex.magalie.persistence.StoredArticles;
import com.franciaflex.magalie.persistence.dao.LocationDao;
import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
import com.franciaflex.magalie.persistence.dao.WarehouseDao;
@@ -16,7 +17,8 @@
import com.franciaflex.magalie.services.MagalieServiceContext;
import com.franciaflex.magalie.services.SimpleWithdrawItemTask;
import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
-import com.google.common.collect.Lists;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -33,7 +35,7 @@
this.serviceContext = serviceContext;
}
- public SimpleWithdrawItemTask getSimpleWithdrawItemTask(Building building, String articleBarcode) throws InvalidMagalieBarcodeException {
+ public SimpleWithdrawItemTask getSimpleWithdrawItemTask(Building building, MagalieUser magalieUser, String articleBarcode) throws InvalidMagalieBarcodeException {
ArticleStorageService articleStorageService =
serviceContext.newService(ArticleStorageService.class);
@@ -46,8 +48,20 @@
Iterable<StoredArticle> storedArticles =
articleStorageService.getStoredArticles(building, article);
+ Predicate<StoredArticle> articleStoredInAccessibleLocationPredicate =
+ StoredArticles.articleStoredInAccessibleLocationPredicate(magalieUser);
+
+ boolean articleIsAccessible =
+ Iterables.any(
+ storedArticles,
+ articleStoredInAccessibleLocationPredicate);
+
+ boolean articleUnavailable = Iterables.isEmpty(storedArticles);
+
+ storedArticles = Iterables.filter(storedArticles, articleStoredInAccessibleLocationPredicate);
+
SimpleWithdrawItemTask simpleWithdrawItemTask =
- new SimpleWithdrawItemTask(Lists.newArrayList(storedArticles));
+ new SimpleWithdrawItemTask(storedArticles, ! articleIsAccessible, articleUnavailable);
return simpleWithdrawItemTask;
Added: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/SimpleWithdrawItemServiceTest.java 2013-05-30 12:55:46 UTC (rev 216)
@@ -0,0 +1,97 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.StoredArticles;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.Building;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.franciaflex.magalie.services.AbstractMagalieServiceTest;
+import com.franciaflex.magalie.services.SimpleWithdrawItemTask;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+public class SimpleWithdrawItemServiceTest extends AbstractMagalieServiceTest {
+
+ private static final Log log = LogFactory.getLog(SimpleWithdrawItemServiceTest.class);
+
+ protected SimpleWithdrawItemService service;
+
+ protected MagalieUser magalieUser;
+
+ protected Building building;
+
+ @Before
+ public void setUp() throws ParseException {
+
+ loadFixtures("fixtures");
+
+ service = newService(SimpleWithdrawItemService.class);
+
+ serviceContext.setDate(new Date(1363948427576l));
+
+ magalieUser = fixture("bruno");
+
+ building = fixture("B1");
+ }
+
+ @Test
+ public void testSimpleWithdraw() throws InvalidMagalieBarcodeException {
+
+ Article article = fixture("article2");
+
+ SimpleWithdrawItemTask simpleWithdrawItemTask =
+ service.getSimpleWithdrawItemTask(building, magalieUser, article.getCode());
+
+ Assert.assertFalse(simpleWithdrawItemTask.isDriverLicenseRequired());
+
+ Assert.assertFalse(simpleWithdrawItemTask.isArticleUnavailable());
+
+ List<StoredArticle> storedArticles = simpleWithdrawItemTask.getStoredArticles();
+
+ Predicate<StoredArticle> articleStoredInAccessibleLocationPredicate =
+ StoredArticles.articleStoredInAccessibleLocationPredicate(magalieUser);
+
+ Assert.assertTrue(Iterables.all(storedArticles, articleStoredInAccessibleLocationPredicate));
+
+ Assert.assertEquals(3, storedArticles.size());
+
+ }
+
+ @Test
+ public void testSimpleWithdrawWithoutDriverLicense() throws InvalidMagalieBarcodeException {
+
+ magalieUser = fixture("corinne");
+
+ Article article = fixture("article1");
+
+ SimpleWithdrawItemTask simpleWithdrawItemTask =
+ service.getSimpleWithdrawItemTask(building, magalieUser, article.getCode());
+
+ Assert.assertFalse(simpleWithdrawItemTask.isDriverLicenseRequired());
+
+ Assert.assertFalse(simpleWithdrawItemTask.isArticleUnavailable());
+
+ List<StoredArticle> storedArticles = simpleWithdrawItemTask.getStoredArticles();
+
+ Predicate<StoredArticle> articleStoredInAccessibleLocationPredicate =
+ StoredArticles.articleStoredInAccessibleLocationPredicate(magalieUser);
+
+ Assert.assertTrue(
+ "all given locations must be accessible for user",
+ Iterables.all(storedArticles, articleStoredInAccessibleLocationPredicate));
+
+ Assert.assertEquals(1, storedArticles.size());
+
+ }
+
+}
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java 2013-05-30 12:43:01 UTC (rev 215)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/SimpleWithdrawItemAction.java 2013-05-30 12:55:46 UTC (rev 216)
@@ -59,9 +59,11 @@
Building building = session.getBuilding();
+ MagalieUser magalieUser = session.getMagalieUser();
+
try {
- simpleWithdrawItemTask = service.getSimpleWithdrawItemTask(building, articleBarcode);
+ simpleWithdrawItemTask = service.getSimpleWithdrawItemTask(building, magalieUser, articleBarcode);
} catch (InvalidMagalieBarcodeException e) {
@@ -120,7 +122,7 @@
Building building = session.getBuilding();
- simpleWithdrawItemTask = service.getSimpleWithdrawItemTask(building, articleBarcode);
+ simpleWithdrawItemTask = service.getSimpleWithdrawItemTask(building, magalieUser, articleBarcode);
Optional<StoredArticle> storedArticleOptional =
Iterables.tryFind(
1
0
Author: Bavencoff
Date: 2013-05-30 14:43:01 +0200 (Thu, 30 May 2013)
New Revision: 215
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
Prepare release : update Struts
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-30 12:29:49 UTC (rev 214)
+++ trunk/pom.xml 2013-05-30 12:43:01 UTC (rev 215)
@@ -105,7 +105,7 @@
<nuitonUtilsVersion>2.6.12</nuitonUtilsVersion>
<h2Version>1.3.172</h2Version>
<postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion>
- <struts2Version>2.3.8</struts2Version>
+ <struts2Version>2.3.14.2</struts2Version>
<jqueryPluginVersion>3.5.1</jqueryPluginVersion>
<bootstrapPluginVersion>1.6.0</bootstrapPluginVersion>
<shiroVersion>1.2.1</shiroVersion>
1
0
Author: Bavencoff
Date: 2013-05-30 14:29:49 +0200 (Thu, 30 May 2013)
New Revision: 214
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
Prepare release : generate script SQL, check dependency, update dependency
Modified:
trunk/magalie-persistence/pom.xml
Modified: trunk/magalie-persistence/pom.xml
===================================================================
--- trunk/magalie-persistence/pom.xml 2013-05-30 12:16:14 UTC (rev 213)
+++ trunk/magalie-persistence/pom.xml 2013-05-30 12:29:49 UTC (rev 214)
@@ -117,52 +117,37 @@
<!--</execution>-->
<!--</executions>-->
<!--</plugin>-->
- <plugin>
- <groupId>com.aziphael</groupId>
- <artifactId>hibernate4-dll-maven-plugin</artifactId>
- <version>1.0.RELEASE</version>
+ <plugin>
+ <groupId>de.juplo</groupId>
+ <artifactId>hibernate4-maven-plugin</artifactId>
+ <version>1.0.1</version>
+ <executions>
+ <execution>
+ <id>executionCreate</id>
<goals>
- <goal>export</goal>
+ <goal>export</goal>
</goals>
<configuration>
- <entityPackage>com.franciaflex.magalie.persistence.entity</entityPackage>
- <dialect>org.hibernate.dialect.Oracle10gDialect</dialect>
- <drop>false</drop>
- <!-- Export file. Default is ${project.build.directory}/generated-sources/sql/schema-export.sql -->
- <exportFile>${project.build.directory}/generated-sources/sql/export.sql</exportFile>
+ <type>CREATE</type>
+ <outputFile>${project.build.directory}/generated-sources/Create.sql</outputFile>
</configuration>
- </plugin>
- <plugin>
- <groupId>de.juplo</groupId>
- <artifactId>hibernate4-maven-plugin</artifactId>
- <version>1.0.1</version>
- <executions>
- <execution>
- <id>executionCreate</id>
- <goals>
- <goal>export</goal>
- </goals>
- <configuration>
- <type>CREATE</type>
- <outputFile>${project.build.directory}/generated-sources/Create.sql</outputFile>
- </configuration>
- </execution>
- <execution>
- <id>executionDrop</id>
- <goals>
- <goal>export</goal>
- </goals>
- <configuration>
- <type>DROP</type>
- <outputFile>${project.build.directory}/generated-sources/Drop.sql</outputFile>
- </configuration>
- </execution>
- </executions>
+ </execution>
+ <execution>
+ <id>executionDrop</id>
+ <goals>
+ <goal>export</goal>
+ </goals>
<configuration>
- <hibernateDialect>org.hibernate.dialect.Oracle10gDialect</hibernateDialect>
- <target>SCRIPT</target>
+ <type>DROP</type>
+ <outputFile>${project.build.directory}/generated-sources/Drop.sql</outputFile>
</configuration>
- </plugin>
+ </execution>
+ </executions>
+ <configuration>
+ <hibernateDialect>org.hibernate.dialect.Oracle10gDialect</hibernateDialect>
+ <target>SCRIPT</target>
+ </configuration>
+ </plugin>
</plugins>
</build>
1
0