revisione calcolo totali per ordni web e documenti

(cherry picked from commit a7c3163d84)
This commit is contained in:
2025-07-28 15:46:21 +02:00
committed by AnthonyS
parent 9e1a600087
commit ce6a102f45
3 changed files with 77 additions and 89 deletions

View File

@@ -985,86 +985,71 @@ public class DocOrdCalTotaliRules extends QueryRules {
return totImposta; return totImposta;
} }
private static void calcPesoColli(DtbDocOrdR row, BigDecimal qta, DatiTrasportoDTO datiTrasp, boolean prendiNeiTotali) throws Exception { private static void calcPesoColli(DtbDocOrdR row, BigDecimal qta, DatiTrasportoDTO datiTrasp, boolean prendiNeiTotali) {
BigDecimal rapConv = row.getRapConv(); BigDecimal taraKgArt = BigDecimal.ZERO;
BigDecimal pesoLordoRow = row.getPesoLordo();
BigDecimal qtaCnf = row.getQtaCnf();
BigDecimal qtaDoc = qta;
BigDecimal pesoKgTot = UtilityBigDecimal.isNull(datiTrasp.getPesoKg(), BigDecimal.ZERO);
BigDecimal colliTot = UtilityBigDecimal.isNull(datiTrasp.getColli(), BigDecimal.ZERO);
BigDecimal sfusoTot = UtilityBigDecimal.isNull(datiTrasp.getSfuso(), BigDecimal.ZERO);
BigDecimal pesoNettoKgTot = UtilityBigDecimal.isNull(datiTrasp.getPesoNetto(), BigDecimal.ZERO);
BigDecimal pesoKg = UtilityBigDecimal.isNull(row.getMtbAart().getPesoKg(), BigDecimal.ZERO);
BigDecimal taraKg = BigDecimal.ZERO;
if (!row.getMtbAart().getQtaCnf().equals(BigDecimal.ZERO) && !UtilityBigDecimal.isNullOrZero(row.getMtbAart().getTaraKg())) { if (!row.getMtbAart().getQtaCnf().equals(BigDecimal.ZERO) && !UtilityBigDecimal.isNullOrZero(row.getMtbAart().getTaraKg())) {
taraKg = row.getMtbAart().getTaraKg().divide(row.getMtbAart().getQtaCnf(), 5, RoundingMode.HALF_UP); taraKgArt = row.getMtbAart().getTaraKg().divide(row.getMtbAart().getQtaCnf(), 5, RoundingMode.HALF_UP);
} }
BigDecimal taraKgRow = BigDecimal.ZERO;
/*CALCOLO PESO*/ BigDecimal rapConv = row.getRapConv();
BigDecimal taraKgTot = BigDecimal.ZERO;
BigDecimal pesoLordo = BigDecimal.ZERO;
qta = qta.multiply(rapConv); qta = qta.multiply(rapConv);
if (taraKg.compareTo(BigDecimal.ZERO) > 0) if (taraKgArt.compareTo(BigDecimal.ZERO) > 0)
taraKgTot = qta.multiply(taraKg).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP); taraKgRow = qta.multiply(taraKgArt).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
if (!prendiNeiTotali) { BigDecimal pesoNettoKg = (qta.multiply(UtilityBigDecimal.isNull(row.getMtbAart().getPesoKg(), BigDecimal.ZERO))).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
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); BigDecimal pesoLordoRow = pesoNettoKg.add(taraKgRow);
pesoLordo = pesoLordo.multiply(qta).multiply(rapConv).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP); if (row.getPesoLordo().compareTo(BigDecimal.ZERO) == 0 && pesoLordoRow.compareTo(BigDecimal.ZERO) > 0)
if (pesoLordoRow.compareTo(BigDecimal.ZERO) == 0 && pesoLordo.compareTo(BigDecimal.ZERO) > 0) row.setPesoLordo(pesoLordoRow);
row.setPesoLordo(pesoLordo); else
pesoLordoRow = row.getPesoLordo();
datiTrasp.setPesoLordoKg(UtilityBigDecimal.isNull(datiTrasp.getPesoLordoKg(), BigDecimal.ZERO).add(pesoLordoRow));
/*CALCOLO NUMERO COLLI*/ /*CALCOLO NUMERO COLLI*/
BigDecimal qtaCnf = row.getQtaCnf();
BigDecimal colliRiga, sfusoRiga, qtaCnfInt; BigDecimal colliRiga, sfusoRiga, qtaCnfInt;
if (prendiNeiTotali) {
pesoNettoKgTot = pesoNettoKgTot.add(qta.multiply(rapConv).multiply(pesoKg)).setScale(EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP); datiTrasp.setPesoNettoKg(UtilityBigDecimal.isNull(datiTrasp.getPesoNettoKg(), BigDecimal.ZERO).add(pesoNettoKg));
if (qtaCnf.compareTo(BigDecimal.ZERO) == 0) { if (qtaCnf.compareTo(BigDecimal.ZERO) == 0) {
colliRiga = BigDecimal.ZERO; colliRiga = BigDecimal.ZERO;
sfusoRiga = BigDecimal.ZERO;
} else {
qtaCnfInt = qtaCnf.setScale(0, RoundingMode.DOWN);
if (qtaCnf.subtract(qtaCnfInt).compareTo(BigDecimal.ZERO) > 0) {
colliRiga = IntegerUtility.round(qtaDoc.divide(qtaCnf, RoundingMode.HALF_UP), 0);
colliRiga = colliRiga.setScale(0, RoundingMode.DOWN);
sfusoRiga = BigDecimal.ZERO; sfusoRiga = BigDecimal.ZERO;
} else { } else {
colliRiga = qtaDoc.divide(qtaCnf, RoundingMode.HALF_UP); qtaCnfInt = qtaCnf.setScale(0, RoundingMode.DOWN);
colliRiga = colliRiga.setScale(0, RoundingMode.DOWN); if (qtaCnf.subtract(qtaCnfInt).compareTo(BigDecimal.ZERO) > 0) {
sfusoRiga = new BigDecimal(qtaDoc.doubleValue() % qtaCnf.doubleValue()); colliRiga = IntegerUtility.round(qta.divide(qtaCnf, RoundingMode.HALF_UP), 0);
sfusoRiga = IntegerUtility.round(sfusoRiga, 0); colliRiga = colliRiga.setScale(0, RoundingMode.DOWN);
sfusoRiga = BigDecimal.ZERO;
} else {
colliRiga = qta.divide(qtaCnf, RoundingMode.HALF_UP);
colliRiga = colliRiga.setScale(0, RoundingMode.DOWN);
sfusoRiga = new BigDecimal(qtaCnfInt.doubleValue() % qtaCnf.doubleValue());
sfusoRiga = IntegerUtility.round(sfusoRiga, 0);
}
} }
Integer totPedana = datiTrasp.getPedane() == null ? 0 : datiTrasp.getPedane();
BigDecimal colliPedana = row.getColliPedana();
String tipoPedana = row.getCodTcolUl();
if (!UtilityString.isNullOrEmpty(tipoPedana) && !UtilityBigDecimal.isNullOrZero(colliPedana)) {
Integer pedana = colliRiga.divide(colliPedana, RoundingMode.HALF_UP).intValue();
totPedana = totPedana + pedana;
}
datiTrasp.setPedane(totPedana);
datiTrasp.setColli(UtilityBigDecimal.isNull(datiTrasp.getColli(), BigDecimal.ZERO).add(colliRiga));
datiTrasp.setSfuso(UtilityBigDecimal.isNull(datiTrasp.getSfuso(), BigDecimal.ZERO).add(sfusoRiga));
} }
Integer totPedana = datiTrasp.getPedane() == null ? 0 : datiTrasp.getPedane();
BigDecimal colliPedana = row.getColliPedana();
String tipoPedana = row.getCodTcolUl();
if (!UtilityString.isNullOrEmpty(tipoPedana) && !UtilityBigDecimal.isNullOrZero(colliPedana)) {
Integer pedana = colliRiga.divide(colliPedana, RoundingMode.HALF_UP).intValue();
totPedana = totPedana + pedana;
}
datiTrasp.setPedane(totPedana);
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, boolean calcColli, DatiTrasportoDTO public static void setNumColliPeso(DtbDocOrdT 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.getPesoLordoKg();
BigDecimal colliTot = datiTrasp.getColli(); BigDecimal colliTot = datiTrasp.getColli();
BigDecimal sfusoTot = datiTrasp.getSfuso(); BigDecimal sfusoTot = datiTrasp.getSfuso();
BigDecimal pesoNettoKgTot = datiTrasp.getPesoNetto(); BigDecimal pesoNettoKgTot = datiTrasp.getPesoNettoKg();
Integer totPedane = datiTrasp.getPedane(); Integer totPedane = datiTrasp.getPedane();
if (pesoKgTot == null) { if (pesoKgTot == null) {
pesoKgTot = BigDecimal.ZERO; pesoKgTot = BigDecimal.ZERO;
@@ -1127,20 +1112,15 @@ public class DocOrdCalTotaliRules extends QueryRules {
calcColli = true; calcColli = true;
} }
} }
String[] fields = new String[]{"numColli"}; testata.setNumColli(numColli);
DroolsUtil.completeEntity(testata, fields, numColli); if (UtilityString.isNullOrEmpty(testata.getPeso()))
testata.setPeso(peso);
if (testata instanceof DtbDoct) { if (testata instanceof DtbDoct ) {
if (((DtbDoct) testata).getPesoNettoKg() == null) if (((DtbDoct) testata).getPesoNettoKg() == null)
((DtbDoct) testata).setPesoNettoKg(pesoNettoKgTot); ((DtbDoct) testata).setPesoNettoKg(pesoNettoKgTot);
if (((DtbDoct) testata).getPeso() == null) if (((DtbDoct) testata).getPostiPallet() == null)
((DtbDoct) testata).setPeso(peso); ((DtbDoct) testata).setPostiPallet(datiTrasp.getPedane());
} else {
DroolsUtil.completeEntity(testata, new String[]{"peso"}, peso);
}
if (testata instanceof DtbDoct && ((DtbDoct) testata).getPostiPallet() == null) {
((DtbDoct) testata).setPostiPallet(datiTrasp.getPedane());
} else if (testata instanceof DtbOrdt && ((DtbOrdt) testata).getPostiPallet() == null) { } else if (testata instanceof DtbOrdt && ((DtbOrdt) testata).getPostiPallet() == null) {
((DtbOrdt) testata).setPostiPallet(datiTrasp.getPedane()); ((DtbOrdt) testata).setPostiPallet(datiTrasp.getPedane());
} }

View File

@@ -3,47 +3,54 @@ package it.integry.ems.rules.completing.dto;
import java.math.BigDecimal; import java.math.BigDecimal;
public class DatiTrasportoDTO { public class DatiTrasportoDTO {
private BigDecimal pesoKg, colli, sfuso, pesoNetto; private BigDecimal pesoLordoKg;
private BigDecimal colli;
private BigDecimal sfuso;
private BigDecimal pesoNettoKg;
private Integer pedane; private Integer pedane;
public BigDecimal getPesoKg() { public BigDecimal getPesoLordoKg() {
return pesoKg; return pesoLordoKg;
} }
public void setPesoKg(BigDecimal pesoKg) { public DatiTrasportoDTO setPesoLordoKg(BigDecimal pesoLordoKg) {
this.pesoKg = pesoKg; this.pesoLordoKg = pesoLordoKg;
return this;
} }
public BigDecimal getColli() { public BigDecimal getColli() {
return colli; return colli;
} }
public void setColli(BigDecimal colli) { public DatiTrasportoDTO setColli(BigDecimal colli) {
this.colli = colli; this.colli = colli;
return this;
} }
public BigDecimal getSfuso() { public BigDecimal getSfuso() {
return sfuso; return sfuso;
} }
public void setSfuso(BigDecimal sfuso) { public DatiTrasportoDTO setSfuso(BigDecimal sfuso) {
this.sfuso = sfuso; this.sfuso = sfuso;
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public DatiTrasportoDTO setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
} }
public Integer getPedane() { public Integer getPedane() {
return pedane; return pedane;
} }
public void setPedane(Integer pedane) { public DatiTrasportoDTO setPedane(Integer pedane) {
this.pedane = pedane; this.pedane = pedane;
}
public BigDecimal getPesoNetto() {
return pesoNetto;
}
public DatiTrasportoDTO setPesoNetto(BigDecimal pesoNetto) {
this.pesoNetto = pesoNetto;
return this; return this;
} }
} }

View File

@@ -969,6 +969,7 @@ public class WdtbDoct extends DtbBaseDocT {
return this; return this;
} }
@Override @Override
public List<WdtbDocr> getRows() { public List<WdtbDocr> getRows() {
return getWdtbDocr(); return getWdtbDocr();