diff --git a/ems-engine/src/main/java/it/integry/ems/product/dto/UpdatePesoArticoloRequestDTO.java b/ems-engine/src/main/java/it/integry/ems/product/dto/UpdatePesoArticoloRequestDTO.java index 9e6b7e064b..d80a51cf6b 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/dto/UpdatePesoArticoloRequestDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/product/dto/UpdatePesoArticoloRequestDTO.java @@ -8,7 +8,7 @@ import java.util.List; public class UpdatePesoArticoloRequestDTO { private String codMart; private BigDecimal taraKg; - private List ordersToUpdate; + private boolean updateOpenOrdersULs = true; public String getCodMart() { @@ -29,12 +29,12 @@ public class UpdatePesoArticoloRequestDTO { return this; } - public List getOrdersToUpdate() { - return ordersToUpdate; + public boolean isUpdateOpenOrdersULs() { + return updateOpenOrdersULs; } - public UpdatePesoArticoloRequestDTO setOrdersToUpdate(List ordersToUpdate) { - this.ordersToUpdate = ordersToUpdate; + public UpdatePesoArticoloRequestDTO setUpdateOpenOrdersULs(boolean updateOpenOrdersULs) { + this.updateOpenOrdersULs = updateOpenOrdersULs; return this; } } diff --git a/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ProductServices.java b/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ProductServices.java index a170e7aef5..7f7c5774e3 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ProductServices.java +++ b/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ProductServices.java @@ -1315,35 +1315,68 @@ public class ProductServices { return barcode; } - public List updatePesoArticolo(UpdatePesoArticoloRequestDTO dto) throws Exception { - List entities = new ArrayList<>(); + public MtbAart updatePesoArticolo(UpdatePesoArticoloRequestDTO dto) throws Exception { try { MtbAart mtbAart = new MtbAart(); mtbAart.setCodMart(dto.getCodMart()) .setTaraKg(dto.getTaraKg()) .setOperation(OperationType.UPDATE); - entities.add(mtbAart); - if (!UtilityList.isNullOrEmpty(dto.getOrdersToUpdate())) { - for (DtbOrdt ordLav : dto.getOrdersToUpdate()) { - String sql = it.integry.ems_model.utility.Query.format("SELECT * from mtb_colt where data_ord = {} and gestione = {} and num_ord = {}", - ordLav.getDataOrd(), ordLav.getGestione(), ordLav.getNumOrd()); + entityProcessor.processEntity(mtbAart, true, multiDBTransactionManager); - List coltsToUpdate = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class); - if (UtilityList.isNullOrEmpty(coltsToUpdate)) { - continue; - } - entities.addAll(coltsToUpdate.stream().map(ul -> { - ul.setCalcPeso(true).setOperation(OperationType.UPDATE); - return ul; - }).collect(Collectors.toList())); - } + if (dto.isUpdateOpenOrdersULs()) { + updateOperOrdersForArt(dto.getCodMart()); } - - entityProcessor.processEntityList(entities, true); + return mtbAart; } catch (Exception e) { multiDBTransactionManager.rollbackAll(); throw e; } - return entities; + } + + private void updateOperOrdersForArt(String codMart) throws Exception { + UtilityDB.executeSimpleUpdate(multiDBTransactionManager.getPrimaryConnection(), it.integry.ems_model.utility.Query.format("\n" + + "UPDATE mtb_colr\n" + + "SET mtb_colr.peso_lordo_kg = mtb_colr.peso_netto_kg + (mtb_colr.num_cnf * mtb_aart.tara_kg)\n" + + "FROM mtb_colr\n" + + " INNER JOIN mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" + + " INNER JOIN mtb_colt ON mtb_colr.gestione = mtb_colt.gestione AND mtb_colr.data_collo = mtb_colt.data_collo AND\n" + + " mtb_colr.ser_collo = mtb_colt.ser_collo AND mtb_colr.num_collo = mtb_colt.num_collo\n" + + " INNER JOIN dtb_ordt\n" + + " ON dtb_ordt.data_ord = mtb_colt.data_ord AND dtb_ordt.num_ord = mtb_colt.num_ord AND\n" + + " dtb_ordt.gestione = mtb_colt.gestione\n" + + "WHERE mtb_colt.data_doc IS NULL\n" + + " AND mtb_colt.num_doc IS NULL\n" + + " AND mtb_colt.gestione = 'L'\n" + + " AND segno = 1\n" + + " AND mtb_aart.cod_mart = {}\n" + + "and dtb_ordt.flag_evaso_prod = 'I'\n" + + "and dtb_ordt.flag_evaso_forzato = 'N'", codMart)); + + UtilityDB.executeSimpleUpdate(multiDBTransactionManager.getPrimaryConnection(), it.integry.ems_model.utility.Query.format("UPDATE mtb_colt\n" + + "SET mtb_colt.peso_kg = mtb_colr.peso_lordo_kg,\n" + + " mtb_colt.peso_netto_kg = mtb_colr.peso_netto_kg\n" + + "FROM mtb_colt\n" + + " INNER JOIN dtb_ordt\n" + + " ON dtb_ordt.data_ord = mtb_colt.data_ord AND dtb_ordt.num_ord = mtb_colt.num_ord AND\n" + + " dtb_ordt.gestione = mtb_colt.gestione\n" + + " INNER JOIN (SELECT data_collo,\n" + + " ser_collo,\n" + + " gestione,\n" + + " num_collo,\n" + + " SUM(peso_netto_kg) AS peso_netto_kg,\n" + + " SUM(peso_lordo_kg) AS peso_lordo_kg\n" + + " FROM mtb_colr\n" + + " WHERE gestione = 'L'\n" + + " GROUP BY data_collo, ser_collo, gestione, num_collo) mtb_colr\n" + + " ON mtb_colr.gestione = mtb_colt.gestione AND mtb_colr.data_collo = mtb_colt.data_collo AND\n" + + " mtb_colr.ser_collo = mtb_colt.ser_collo AND mtb_colr.num_collo = mtb_colt.num_collo\n" + + "\n" + + "WHERE mtb_colt.data_doc IS NULL\n" + + " AND mtb_colt.num_doc IS NULL\n" + + " AND mtb_colt.gestione = 'L'\n" + + " AND dtb_ordt.cod_prod = {}\n" + + " AND segno = 1\n" + + "and dtb_ordt.flag_evaso_prod = 'I'\n" + + "and dtb_ordt.flag_evaso_forzato = 'N'", codMart)); } }