sistemato calcolo totale peso nel documento
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-07-11 12:07:18 +02:00
parent 5724dc53c9
commit 3b461350d5

View File

@@ -449,10 +449,10 @@ public class DocOrdCalTotaliRules extends QueryRules {
.filter(x -> Objects.equals(x.getIdRiga(), idRiga)).findFirst().orElse(null); .filter(x -> Objects.equals(x.getIdRiga(), idRiga)).findFirst().orElse(null);
if (dtbDocr != null && if (dtbDocr != null &&
(Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getQta(), dtbDocr.getQta()), dtbDocr.getQta()) && (Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getQta(), row.getQta()), row.getQta()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getNumCnf(), dtbDocr.getNumCnf()), dtbDocr.getNumCnf()) && Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getNumCnf(), row.getNumCnf()), row.getNumCnf()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getPesoLordo(), dtbDocr.getPesoLordo()), dtbDocr.getPesoLordo()) && Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getPesoLordo(), row.getPesoLordo()), row.getPesoLordo()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getPesoNetto(), dtbDocr.getPesoNetto()), dtbDocr.getPesoNetto()))) { Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getPesoNetto(), ((DtbDocr) row).getPesoNetto()), ((DtbDocr) row).getPesoNetto()))) {
return false; return false;
} else if (dtbDocr == null && row.getOperation() == OperationType.SELECT_OBJECT) } else if (dtbDocr == null && row.getOperation() == OperationType.SELECT_OBJECT)
return false; return false;
@@ -534,23 +534,23 @@ public class DocOrdCalTotaliRules extends QueryRules {
} }
} }
String calcColli = "N"; boolean calcColli = false;
if (testata instanceof WdtbDoct || testata instanceof WdtbOrdt) { if (testata instanceof WdtbDoct || testata instanceof WdtbOrdt) {
calcColli = "N"; calcColli = false;
} else if (isOrdine) { } else if (isOrdine) {
calcColli = "S"; calcColli = true;
} else { } else {
String whereCondTestata = testata.getEntityHolder().getWherePK(testata); String whereCondTestata = testata.getEntityHolder().getWherePK(testata);
String sql = "select mtb_colt.gestione, mtb_colt.data_collo, mtb_colt.ser_collo, mtb_colt.num_collo from mtb_colt where " + whereCondTestata; String sql = "select mtb_colt.gestione, mtb_colt.data_collo, mtb_colt.ser_collo, mtb_colt.num_collo from mtb_colt where " + whereCondTestata;
colliFromDB = new ResultSetMapper().mapQuerySetToList(conn, sql, MtbColt.class); colliFromDB = new ResultSetMapper().mapQuerySetToList(conn, sql, MtbColt.class);
calcColli = setup.getSetup(conn, "DATI_AZIENDA", "DOCU_ORD", "CALC_COLLI"); calcColli = setup.getSetupBoolean(conn, "DATI_AZIENDA", "DOCU_ORD", "CALC_COLLI");
/*20-04-20 (FABIO): commentato la lettura dei colli da MtbColt al momento, ma è una logica che non dovrebbe più essere utilizzata, /*20-04-20 (FABIO): commentato la lettura dei colli da MtbColt al momento, ma è una logica che non dovrebbe più essere utilizzata,
* ma in tal caso dovremmo valuare delle poche aziende che hanno il flag calc_colli = 'N' se è giusto che calcoli il numero dei colli * ma in tal caso dovremmo valuare delle poche aziende che hanno il flag calc_colli = 'N' se è giusto che calcoli il numero dei colli
logistici (alcune aziende pur avendo N gestivano il calcolo come se fosse impostato a S, perchè la vecchia DTBDOCCOLLI non venendo logistici (alcune aziende pur avendo N gestivano il calcolo come se fosse impostato a S, perchè la vecchia DTBDOCCOLLI non venendo
* valorizzata impostava automaticamente a S il flag CALC_COLLI )*/ * valorizzata impostava automaticamente a S il flag CALC_COLLI )*/
if ((colli == null || colli.isEmpty()) && colliFromDB.isEmpty()) { if ((colli == null || colli.isEmpty()) && colliFromDB.isEmpty()) {
calcColli = "S"; calcColli = true;
} }
} }
@@ -666,9 +666,9 @@ public class DocOrdCalTotaliRules extends QueryRules {
/************************** /**************************
CALCOLO NUM_COLLI e PESO CALCOLO NUM_COLLI e PESO
**************************/ **************************/
if ("S".equals(calcColli) && codMart != null && prendiNeiTotali) { if (calcColli && codMart != null) {
if (!changeQta) changeQta = checkQtaChange(testata, row); if (!changeQta) changeQta = checkQtaChange(testata, row);
calcPesoColli(row, qta, datiTrasp); calcPesoColli(row, qta, datiTrasp, prendiNeiTotali);
} }
//Assegna costo //Assegna costo
if (row instanceof DtbDocr && (((DtbDocr) row).getCostoUnt() == null || ((DtbDocr) row).getCostoUnt().compareTo(BigDecimal.ZERO) == 0)) { if (row instanceof DtbDocr && (((DtbDocr) row).getCostoUnt() == null || ((DtbDocr) row).getCostoUnt().compareTo(BigDecimal.ZERO) == 0)) {
@@ -682,7 +682,6 @@ public class DocOrdCalTotaliRules extends QueryRules {
((DtbDocr) row).setCostoUnt(costo); ((DtbDocr) row).setCostoUnt(costo);
} }
if (row instanceof DtbDocr) { if (row instanceof DtbDocr) {
DtbDocr dtbDocr = (DtbDocr) row; DtbDocr dtbDocr = (DtbDocr) row;
@@ -986,7 +985,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
return totImposta; return totImposta;
} }
private static void calcPesoColli(DtbDocOrdR row, BigDecimal qta, DatiTrasportoDTO datiTrasp) throws Exception { private static void calcPesoColli(DtbDocOrdR row, BigDecimal qta, DatiTrasportoDTO datiTrasp, boolean prendiNeiTotali) throws Exception {
BigDecimal rapConv = row.getRapConv(); BigDecimal rapConv = row.getRapConv();
BigDecimal pesoLordoRow = row.getPesoLordo(); BigDecimal pesoLordoRow = row.getPesoLordo();
BigDecimal qtaCnf = row.getQtaCnf(); BigDecimal qtaCnf = row.getQtaCnf();
@@ -1005,11 +1004,13 @@ public class DocOrdCalTotaliRules extends QueryRules {
/*CALCOLO PESO*/ /*CALCOLO PESO*/
BigDecimal taraKgTot = BigDecimal.ZERO; BigDecimal taraKgTot = BigDecimal.ZERO;
BigDecimal pesoLordo = BigDecimal.ZERO; BigDecimal pesoLordo = BigDecimal.ZERO;
qta = qta.multiply(rapConv);
if (taraKg.compareTo(BigDecimal.ZERO) > 0) if (taraKg.compareTo(BigDecimal.ZERO) > 0)
taraKgTot = qta.multiply(rapConv).multiply(taraKg).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP); taraKgTot = qta.multiply(taraKg).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
pesoKgTot = pesoKgTot.add(taraKgTot).add(qta.multiply(rapConv).multiply(pesoKg)).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
pesoNettoKgTot = pesoNettoKgTot.add(qta.multiply(rapConv).multiply(pesoKg)).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
if (!prendiNeiTotali) {
pesoKgTot = pesoKgTot.add(taraKgTot).add(qta.multiply(pesoKg)).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
}
/*CALCOLO PESO LORDO SU RIGHE*/ /*CALCOLO PESO LORDO SU RIGHE*/
pesoLordo = pesoLordo.add(pesoKg).add(taraKg); pesoLordo = pesoLordo.add(pesoKg).add(taraKg);
pesoLordo = pesoLordo.multiply(qta).multiply(rapConv).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP); pesoLordo = pesoLordo.multiply(qta).multiply(rapConv).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
@@ -1018,6 +1019,8 @@ public class DocOrdCalTotaliRules extends QueryRules {
/*CALCOLO NUMERO COLLI*/ /*CALCOLO NUMERO COLLI*/
BigDecimal colliRiga, sfusoRiga, qtaCnfInt; BigDecimal colliRiga, sfusoRiga, qtaCnfInt;
pesoNettoKgTot = pesoNettoKgTot.add(qta.multiply(rapConv).multiply(pesoKg)).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
if (qtaCnf.compareTo(BigDecimal.ZERO) == 0) { if (qtaCnf.compareTo(BigDecimal.ZERO) == 0) {
colliRiga = BigDecimal.ZERO; colliRiga = BigDecimal.ZERO;
sfusoRiga = BigDecimal.ZERO; sfusoRiga = BigDecimal.ZERO;
@@ -1047,13 +1050,14 @@ public class DocOrdCalTotaliRules extends QueryRules {
colliTot = colliTot.add(colliRiga); colliTot = colliTot.add(colliRiga);
sfusoTot = sfusoTot.add(sfusoRiga); sfusoTot = sfusoTot.add(sfusoRiga);
datiTrasp.setPesoKg(pesoKgTot); datiTrasp.setPesoKg(pesoKgTot);
datiTrasp.setColli(colliTot); datiTrasp.setColli(colliTot);
datiTrasp.setSfuso(sfusoTot); datiTrasp.setSfuso(sfusoTot);
datiTrasp.setPesoNetto(pesoNettoKgTot); datiTrasp.setPesoNetto(pesoNettoKgTot);
} }
public static void setNumColliPeso(EntityBase testata, String calcColli, DatiTrasportoDTO public static void setNumColliPeso(EntityBase testata, boolean calcColli, DatiTrasportoDTO
datiTrasp, List<MtbColt> colli, List<MtbColt> colliFromDB) throws Exception { datiTrasp, List<MtbColt> colli, List<MtbColt> colliFromDB) throws Exception {
String peso = null, numColli = null; String peso = null, numColli = null;
BigDecimal pesoKgTot = datiTrasp.getPesoKg(); BigDecimal pesoKgTot = datiTrasp.getPesoKg();
@@ -1078,10 +1082,10 @@ public class DocOrdCalTotaliRules extends QueryRules {
colli = ((DtbDoct) testata).getMtbColt(); colli = ((DtbDoct) testata).getMtbColt();
} }
if ("S".equals(calcColli)) { if (calcColli) {
if (pesoKgTot.compareTo(BigDecimal.ZERO) > 0) { if (pesoKgTot.compareTo(BigDecimal.ZERO) > 0) {
pesoKgTot = IntegerUtility.round(pesoKgTot, 2); pesoKgTot = IntegerUtility.round(pesoKgTot, 2);
peso = "KG " + pesoKgTot.toString(); peso = "KG. " + pesoKgTot.toString();
} }
numColli = colliTot.toString(); numColli = colliTot.toString();
if (sfusoTot.compareTo(BigDecimal.ZERO) > 0) if (sfusoTot.compareTo(BigDecimal.ZERO) > 0)
@@ -1119,14 +1123,19 @@ public class DocOrdCalTotaliRules extends QueryRules {
} }
peso = null; peso = null;
} else { } else {
calcColli = "S"; calcColli = true;
} }
} }
String[] fields = new String[]{"peso", "numColli"}; String[] fields = new String[]{"numColli"};
DroolsUtil.completeEntity(testata, fields, peso, numColli); DroolsUtil.completeEntity(testata, fields, numColli);
if (testata instanceof DtbDoct) { if (testata instanceof DtbDoct) {
((DtbDoct) testata).setPesoNettoKg(pesoNettoKgTot); if (((DtbDoct) testata).getPesoNettoKg() == null)
((DtbDoct) testata).setPesoNettoKg(pesoNettoKgTot);
if (((DtbDoct) testata).getPeso() == null)
((DtbDoct) testata).setPeso(peso);
} else {
DroolsUtil.completeEntity(testata, new String[]{"peso"}, peso);
} }
if (testata instanceof DtbDoct && ((DtbDoct) testata).getPostiPallet() == null) { if (testata instanceof DtbDoct && ((DtbDoct) testata).getPostiPallet() == null) {