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

View File

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

View File

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