diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdCalTotaliRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdCalTotaliRules.java index 0e0c8a87af..5d396e3bce 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdCalTotaliRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdCalTotaliRules.java @@ -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 colli, List 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) {