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);
if (dtbDocr != null &&
(Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getQta(), dtbDocr.getQta()), dtbDocr.getQta()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getNumCnf(), dtbDocr.getNumCnf()), dtbDocr.getNumCnf()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getPesoLordo(), dtbDocr.getPesoLordo()), dtbDocr.getPesoLordo()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getPesoNetto(), dtbDocr.getPesoNetto()), dtbDocr.getPesoNetto()))) {
(Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getQta(), row.getQta()), row.getQta()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getNumCnf(), row.getNumCnf()), row.getNumCnf()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getPesoLordo(), row.getPesoLordo()), row.getPesoLordo()) &&
Objects.equals(UtilityBigDecimal.isNull(dtbDocr.getPesoNetto(), ((DtbDocr) row).getPesoNetto()), ((DtbDocr) row).getPesoNetto()))) {
return false;
} else if (dtbDocr == null && row.getOperation() == OperationType.SELECT_OBJECT)
return false;
@@ -534,23 +534,23 @@ public class DocOrdCalTotaliRules extends QueryRules {
}
}
String calcColli = "N";
boolean calcColli = false;
if (testata instanceof WdtbDoct || testata instanceof WdtbOrdt) {
calcColli = "N";
calcColli = false;
} else if (isOrdine) {
calcColli = "S";
calcColli = true;
} else {
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;
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,
* 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
* valorizzata impostava automaticamente a S il flag CALC_COLLI )*/
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
**************************/
if ("S".equals(calcColli) && codMart != null && prendiNeiTotali) {
if (calcColli && codMart != null) {
if (!changeQta) changeQta = checkQtaChange(testata, row);
calcPesoColli(row, qta, datiTrasp);
calcPesoColli(row, qta, datiTrasp, prendiNeiTotali);
}
//Assegna costo
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);
}
if (row instanceof DtbDocr) {
DtbDocr dtbDocr = (DtbDocr) row;
@@ -986,7 +985,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
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 pesoLordoRow = row.getPesoLordo();
BigDecimal qtaCnf = row.getQtaCnf();
@@ -1005,11 +1004,13 @@ public class DocOrdCalTotaliRules extends QueryRules {
/*CALCOLO PESO*/
BigDecimal taraKgTot = BigDecimal.ZERO;
BigDecimal pesoLordo = BigDecimal.ZERO;
qta = qta.multiply(rapConv);
if (taraKg.compareTo(BigDecimal.ZERO) > 0)
taraKgTot = qta.multiply(rapConv).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);
taraKgTot = qta.multiply(taraKg).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*/
pesoLordo = pesoLordo.add(pesoKg).add(taraKg);
pesoLordo = pesoLordo.multiply(qta).multiply(rapConv).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
@@ -1018,6 +1019,8 @@ public class DocOrdCalTotaliRules extends QueryRules {
/*CALCOLO NUMERO COLLI*/
BigDecimal colliRiga, sfusoRiga, qtaCnfInt;
pesoNettoKgTot = pesoNettoKgTot.add(qta.multiply(rapConv).multiply(pesoKg)).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
if (qtaCnf.compareTo(BigDecimal.ZERO) == 0) {
colliRiga = BigDecimal.ZERO;
sfusoRiga = BigDecimal.ZERO;
@@ -1047,13 +1050,14 @@ public class DocOrdCalTotaliRules extends QueryRules {
colliTot = colliTot.add(colliRiga);
sfusoTot = sfusoTot.add(sfusoRiga);
datiTrasp.setPesoKg(pesoKgTot);
datiTrasp.setColli(colliTot);
datiTrasp.setSfuso(sfusoTot);
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 {
String peso = null, numColli = null;
BigDecimal pesoKgTot = datiTrasp.getPesoKg();
@@ -1078,10 +1082,10 @@ public class DocOrdCalTotaliRules extends QueryRules {
colli = ((DtbDoct) testata).getMtbColt();
}
if ("S".equals(calcColli)) {
if (calcColli) {
if (pesoKgTot.compareTo(BigDecimal.ZERO) > 0) {
pesoKgTot = IntegerUtility.round(pesoKgTot, 2);
peso = "KG " + pesoKgTot.toString();
peso = "KG. " + pesoKgTot.toString();
}
numColli = colliTot.toString();
if (sfusoTot.compareTo(BigDecimal.ZERO) > 0)
@@ -1119,14 +1123,19 @@ public class DocOrdCalTotaliRules extends QueryRules {
}
peso = null;
} else {
calcColli = "S";
calcColli = true;
}
}
String[] fields = new String[]{"peso", "numColli"};
DroolsUtil.completeEntity(testata, fields, peso, numColli);
String[] fields = new String[]{"numColli"};
DroolsUtil.completeEntity(testata, fields, numColli);
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) {