revisione calcolo totali per ordni web e documenti
(cherry picked from commit a7c3163d84)
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -969,6 +969,7 @@ public class WdtbDoct extends DtbBaseDocT {
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<WdtbDocr> getRows() {
|
||||
return getWdtbDocr();
|
||||
|
||||
Reference in New Issue
Block a user