Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit

This commit is contained in:
2025-01-09 15:13:49 +01:00
2 changed files with 57 additions and 24 deletions

View File

@@ -8,7 +8,7 @@ import java.util.List;
public class UpdatePesoArticoloRequestDTO {
private String codMart;
private BigDecimal taraKg;
private List<DtbOrdt> ordersToUpdate;
private boolean updateOpenOrdersULs = true;
public String getCodMart() {
@@ -29,12 +29,12 @@ public class UpdatePesoArticoloRequestDTO {
return this;
}
public List<DtbOrdt> getOrdersToUpdate() {
return ordersToUpdate;
public boolean isUpdateOpenOrdersULs() {
return updateOpenOrdersULs;
}
public UpdatePesoArticoloRequestDTO setOrdersToUpdate(List<DtbOrdt> ordersToUpdate) {
this.ordersToUpdate = ordersToUpdate;
public UpdatePesoArticoloRequestDTO setUpdateOpenOrdersULs(boolean updateOpenOrdersULs) {
this.updateOpenOrdersULs = updateOpenOrdersULs;
return this;
}
}

View File

@@ -1315,35 +1315,68 @@ public class ProductServices {
return barcode;
}
public List<EntityBase> updatePesoArticolo(UpdatePesoArticoloRequestDTO dto) throws Exception {
List<EntityBase> 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<MtbColt> 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));
}
}