feat: add stock move verification for wms
This commit is contained in:
@ -418,22 +418,59 @@ public class StockMoveServiceImpl implements StockMoveService {
|
||||
String newStockSeq = null;
|
||||
stockMoveLineService.checkTrackingNumber(stockMove);
|
||||
stockMoveLineService.checkConformitySelection(stockMove);
|
||||
System.out.println("Checking oooo...................");
|
||||
|
||||
// checking .....
|
||||
if (stockMove.getFromStockLocation().getTypeSelect() != StockLocationRepository.TYPE_VIRTUAL)
|
||||
{
|
||||
List<Long> listOfIds = Arrays.asList(10L, 11L, 13L, 14L, 15L, 16L, 13L, 12L, 54L, 55L, 58L,50L);
|
||||
System.out.println("Checking...................");
|
||||
System.out.println(listOfIds.contains(stockMove.getToStockLocation().getId()));
|
||||
System.out.println("Checking...................");
|
||||
System.out.println("----------------------------------------------------");
|
||||
System.out.println("stockMove.getTypeSelect() : " + stockMove.getTypeSelect());
|
||||
System.out.println("----------------------------------------------------");
|
||||
|
||||
if(listOfIds.contains(stockMove.getToStockLocation().getId())){
|
||||
checkIfQuarantine(stockMove);
|
||||
checkIfNonConformityTag(stockMove);
|
||||
}
|
||||
|
||||
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_INTERNAL){
|
||||
System.out.println("INTERNAL MOVE");
|
||||
StockConfig stockConfig = stockMove.getCompany().getStockConfig();
|
||||
StockLocation parentwasteStockLocation = stockConfig.getWasteStockLocationParent();
|
||||
|
||||
if(Boolean.TRUE.equals(stockMove.getToStockLocation().getNeedCheckInVerification())){
|
||||
System.out.println("Check-in required for this stock location...");
|
||||
checkIfConforme(stockMove);
|
||||
checkIfNonConformityTag(stockMove);
|
||||
|
||||
} else if (parentwasteStockLocation.equals(stockMove.getToStockLocation().getParentStockLocation())){
|
||||
System.out.println("**************************** Child of Waste Parent ******************************");
|
||||
CheckIfNotNotconforme(stockMove);
|
||||
checkIfNonConformityTag(stockMove);
|
||||
}
|
||||
}
|
||||
|
||||
else if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_OUTGOING
|
||||
&& stockMove.getPartner().getId() != 853
|
||||
&& stockMove.getIsReversion() == false){
|
||||
|
||||
System.out.println("Livraison Client.");
|
||||
checkIfConforme(stockMove);
|
||||
checkIfNonConformityTag(stockMove);
|
||||
}
|
||||
|
||||
else if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_OUTGOING
|
||||
&& stockMove.getPartner().getId() == 853
|
||||
&& stockMove.getIsReversion() == false){
|
||||
|
||||
System.out.println("Sortie.");
|
||||
StockConfig stockConfig = stockMove.getCompany().getStockConfig();
|
||||
StockLocation nonCoreStockLocationParent = stockConfig.getNonCoreStockLocation();
|
||||
StockLocation parentwasteStockLocation = stockConfig.getWasteStockLocationParent();
|
||||
|
||||
if (parentwasteStockLocation.equals(stockMove.getToStockLocation().getParentStockLocation())){
|
||||
System.out.println("**************************** Child of Waste Parent ******************************");
|
||||
CheckIfNotNotconforme(stockMove);
|
||||
checkIfNonConformityTag(stockMove);
|
||||
} else if (!nonCoreStockLocationParent.equals(stockMove.getToStockLocation().getParentStockLocation())) {
|
||||
checkIfConforme(stockMove);
|
||||
checkIfNonConformityTag(stockMove);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
checkExpirationDates(stockMove);
|
||||
|
||||
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_INCOMING) {
|
||||
@ -1592,53 +1629,81 @@ public class StockMoveServiceImpl implements StockMoveService {
|
||||
}
|
||||
|
||||
|
||||
public void checkIfQuarantine(StockMove stockMove)
|
||||
public void checkIfConforme(StockMove stockMove)
|
||||
throws AxelorException {
|
||||
|
||||
Query sql =
|
||||
JPA.em()
|
||||
.createNativeQuery(
|
||||
"SELECT LINE.ID"+
|
||||
" FROM STOCK_STOCK_MOVE_LINE LINE LEFT JOIN STOCK_STOCK_LOCATION_LINE LOCATION_LINE ON LINE.TRACKING_NUMBER = LOCATION_LINE.TRACKING_NUMBER and LINE.INTERNAL_TRACKING_NUMBER = LOCATION_LINE.INTERNAL_TRACKING_NUMBER and LINE.product = LOCATION_LINE.product"+
|
||||
" where LOCATION_LINE.DETAILS_STOCK_LOCATION = ?1 AND LOCATION_LINE.CONFORMITY_SELECT != 2 AND LOCATION_LINE.CONFORMITY_SELECT != 5 AND LINE.STOCK_MOVE = ?2");
|
||||
" FROM STOCK_STOCK_MOVE_LINE LINE LEFT JOIN STOCK_STOCK_LOCATION_LINE LOCATION_LINE ON LINE.TRACKING_NUMBER = LOCATION_LINE.TRACKING_NUMBER and LINE.product = LOCATION_LINE.product"+
|
||||
" where LOCATION_LINE.DETAILS_STOCK_LOCATION = ?1 AND LOCATION_LINE.CONFORMITY_SELECT != 2 AND LINE.STOCK_MOVE = ?2");
|
||||
sql.setParameter(1, stockMove.getFromStockLocation().getId());
|
||||
sql.setParameter(2, stockMove.getId());
|
||||
|
||||
System.out.println("*****************checkIfQuarantine******************");
|
||||
System.out.println("*****************checkIfConforme******************");
|
||||
System.out.println(sql.getResultList().size() > 0);
|
||||
System.out.println("******************checkIfQuarantine*****************");
|
||||
System.out.println("******************checkIfConforme*****************");
|
||||
if (sql.getResultList().size() > 0) {
|
||||
throw new AxelorException(
|
||||
stockMove,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
"Vous avez une ligne en etat qurantaine");
|
||||
"Certaines lignes ne sont pas conformes (état différent de 'Conforme').");
|
||||
}
|
||||
}
|
||||
|
||||
public void checkIfNonConformityTag(StockMove stockMove)
|
||||
public void CheckIfNotNotconforme(StockMove stockMove)
|
||||
throws AxelorException {
|
||||
|
||||
|
||||
Query sql =
|
||||
JPA.em()
|
||||
.createNativeQuery(
|
||||
"SELECT LINE.ID" +
|
||||
" FROM STOCK_STOCK_MOVE_LINE LINE LEFT JOIN STOCK_STOCK_LOCATION_LINE LOCATION_LINE ON LINE.TRACKING_NUMBER = LOCATION_LINE.TRACKING_NUMBER and LINE.INTERNAL_TRACKING_NUMBER = LOCATION_LINE.INTERNAL_TRACKING_NUMBER and LINE.product = LOCATION_LINE.product" +
|
||||
" where LOCATION_LINE.DETAILS_STOCK_LOCATION = :location AND LOCATION_LINE.is_conform_tag is not true AND LINE.STOCK_MOVE = :move");
|
||||
|
||||
sql.setParameter("location", stockMove.getFromStockLocation().getId());
|
||||
sql.setParameter("move", stockMove.getId());
|
||||
"SELECT LINE.ID"+
|
||||
" FROM STOCK_STOCK_MOVE_LINE LINE LEFT JOIN STOCK_STOCK_LOCATION_LINE LOCATION_LINE ON LINE.TRACKING_NUMBER = LOCATION_LINE.TRACKING_NUMBER and LINE.product = LOCATION_LINE.product"+
|
||||
" where LOCATION_LINE.DETAILS_STOCK_LOCATION = ?1 AND LOCATION_LINE.CONFORMITY_SELECT != 3 AND LINE.STOCK_MOVE = ?2");
|
||||
sql.setParameter(1, stockMove.getFromStockLocation().getId());
|
||||
sql.setParameter(2, stockMove.getId());
|
||||
|
||||
System.out.println("*****************checkIfNonConformityTag*****************");
|
||||
System.out.println(sql.getResultList().size() > 0);
|
||||
System.out.println("*****************checkIfNonConformityTag****************");
|
||||
|
||||
if (sql.getResultList().size() > 0) {
|
||||
throw new AxelorException(
|
||||
stockMove,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
"Vous avez une ligne non étiquetée");
|
||||
System.out.println("*****************CheckIfNotNotconforme******************");
|
||||
System.out.println(sql.getResultList().size() > 0);
|
||||
System.out.println("******************CheckIfNotNotconforme*****************");
|
||||
if (sql.getResultList().size() > 0) {
|
||||
throw new AxelorException(
|
||||
stockMove,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
"Toutes les lignes doivent être en état 'Non conforme'.");
|
||||
}
|
||||
}
|
||||
|
||||
public void checkIfNonConformityTag(StockMove stockMove)
|
||||
throws AxelorException {
|
||||
|
||||
Query sql = JPA.em()
|
||||
.createNativeQuery(
|
||||
"SELECT LINE.ID" +
|
||||
" FROM STOCK_STOCK_MOVE_LINE LINE" +
|
||||
" LEFT JOIN STOCK_STOCK_LOCATION_LINE LOCATION_LINE" +
|
||||
" ON LINE.TRACKING_NUMBER = LOCATION_LINE.TRACKING_NUMBER" +
|
||||
" AND LINE.PRODUCT = LOCATION_LINE.PRODUCT" +
|
||||
" WHERE LOCATION_LINE.DETAILS_STOCK_LOCATION = :location" +
|
||||
" AND (LOCATION_LINE.IS_CONFORM_TAG IS NULL OR LOCATION_LINE.IS_CONFORM_TAG = FALSE)" +
|
||||
" AND LINE.STOCK_MOVE = :move");
|
||||
|
||||
sql.setParameter("location", stockMove.getFromStockLocation().getId());
|
||||
sql.setParameter("move", stockMove.getId());
|
||||
|
||||
System.out.println("*****************checkIfNonConformityTag*****************");
|
||||
boolean hasNonTags = !sql.getResultList().isEmpty();
|
||||
System.out.println("Has non conform tag: " + hasNonTags);
|
||||
System.out.println("*****************checkIfNonConformityTag****************");
|
||||
|
||||
if (hasNonTags) {
|
||||
throw new AxelorException(
|
||||
stockMove,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
"Vous avez une ligne non étiquetée");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void massPlan(List<Long> moveIds) throws AxelorException {
|
||||
|
||||
@ -18,6 +18,9 @@
|
||||
<many-to-one name="supplierVirtualStockLocation" ref="com.axelor.apps.stock.db.StockLocation" title="Supplier virtual stock location"/>
|
||||
<many-to-one name="inventoryVirtualStockLocation" ref="com.axelor.apps.stock.db.StockLocation" title="Inventory virtual stock location"/>
|
||||
|
||||
<many-to-one name="nonCoreStockLocation" ref="com.axelor.apps.stock.db.StockLocation" title="Non-core stock location"/>
|
||||
<many-to-one name="wasteStockLocationParent" ref="com.axelor.apps.stock.db.StockLocation" title="Parent waste stock location"/>
|
||||
|
||||
<many-to-one name="customsMassUnit" ref="com.axelor.apps.base.db.Unit" title="Unit of mass"/>
|
||||
|
||||
<boolean name="realizeStockMovesUponParcelPalletCollection" title="Realize stock moves upon parcel/pallet collection" />
|
||||
@ -102,6 +105,9 @@
|
||||
|
||||
<field name="displayTrackNbrOnCertificateOfConformityPrinting" on="UPDATE"/>
|
||||
<field name="displayExtRefOnCertificateOfConformityPrinting" on="UPDATE"/>
|
||||
|
||||
<field name="nonCoreStockLocation" on="UPDATE"/>
|
||||
<field name="wasteStockLocationParent" on="UPDATE"/>
|
||||
</track>
|
||||
</entity>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user