Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-01-13 14:08:18 +01:00
2 changed files with 34 additions and 13 deletions

View File

@@ -612,7 +612,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
if (qta.compareTo(BigDecimal.ZERO) != 0) { if (qta.compareTo(BigDecimal.ZERO) != 0) {
boolean ventilazione = false; boolean ventilazione = false;
if ( row instanceof DtbDocr) ventilazione = ((DtbDocr) row).getVentilazione(); if ( row instanceof DtbDocr) ventilazione = ((DtbDocr) row).getVentilazione();
addCastellettoIva(flagIvaInclusa?impRigaIva:importoRiga, codAliq, ventilazione, castelletto); addCastellettoIva(flagIvaInclusa?impRigaIva:importoRiga, codAliq, ventilazione, castelletto, flagIvaInclusa);
} }
/************************** /**************************
@@ -736,7 +736,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
setNumColliPeso(testata, calcColli, datiTrasp, colli, colliFromDB); setNumColliPeso(testata, calcColli, datiTrasp, colli, colliFromDB);
//CALCOLO TOTALI E CASTELLETTO IVA //CALCOLO TOTALI E CASTELLETTO IVA
calcTotImponib(testata, conn, flagIvaInclusa, castelletto, cifreDec); calcTotImponib(testata, conn, castelletto, cifreDec);
//Prima di calcolare l'acconto estrerre l'elenco delle bolle agganciate alla fatture differita //Prima di calcolare l'acconto estrerre l'elenco delle bolle agganciate alla fatture differita
if (testata instanceof DtbDoct && ((DtbDoct) testata).getDtbTipi().getTipoEmissioneEnum() == TipoEmissione.DIFFERITA) { if (testata instanceof DtbDoct && ((DtbDoct) testata).getDtbTipi().getTipoEmissioneEnum() == TipoEmissione.DIFFERITA) {
@@ -823,7 +823,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
} }
totSpese = totSpese.add(importoRiga); totSpese = totSpese.add(importoRiga);
if (addCastelletto) { if (addCastelletto) {
addCastellettoIva(importoRiga, codAliq, ventilazione, castelletto); addCastellettoIva(importoRiga, codAliq, ventilazione, castelletto, flagIvaInclusa);
} }
} }
} }
@@ -831,7 +831,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
return totSpese; return totSpese;
} }
private static void calcTotImponib(DtbDocOrdT testata, Connection conn, boolean flagIvaInclusa, private static void calcTotImponib(DtbDocOrdT testata, Connection conn,
List<CtbMovi> castellettoIva, Integer cifreDec) throws Exception { List<CtbMovi> castellettoIva, Integer cifreDec) throws Exception {
BigDecimal totImponib = BigDecimal.ZERO; BigDecimal totImponib = BigDecimal.ZERO;
BigDecimal totImposta = BigDecimal.ZERO; BigDecimal totImposta = BigDecimal.ZERO;
@@ -849,17 +849,23 @@ public class DocOrdCalTotaliRules extends QueryRules {
Boolean ventilazioneIva = iva.getVentilazione(); Boolean ventilazioneIva = iva.getVentilazione();
BigDecimal totImpostaAliq; BigDecimal totImpostaAliq;
if (!UtilityString.isNullOrEmpty(codAliq)) { if (!UtilityString.isNullOrEmpty(codAliq)) {
String sql = "SELECT tipo_iva, flag_marca_da_bollo, perc_aliq, flag_iva_acq_merci FROM gtb_aliq WHERE cod_aliq = " + UtilityDB.valueToString(codAliq); String sql = "SELECT tipo_iva, " +
"flag_marca_da_bollo, " +
"perc_aliq, " +
"flag_iva_acq_merci " +
"FROM gtb_aliq " +
"WHERE cod_aliq = " + UtilityDB.valueToString(codAliq);
HashMap<String, Object> dati = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql); HashMap<String, Object> dati = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql);
String tipoIva = (String) dati.get("tipo_iva"); String tipoIva = (String) dati.get("tipo_iva");
String flagAddMarcaBollo = (String) dati.get("flag_marca_da_bollo"); String flagAddMarcaBollo = (String) dati.get("flag_marca_da_bollo");
BigDecimal percAliq = (BigDecimal) dati.get("perc_aliq"); BigDecimal percAliq = (BigDecimal) dati.get("perc_aliq");
boolean flagIvaAcqMerci = UtilityHashMap.<String>getValueIfExists(dati, "flag_iva_acq_merci").equalsIgnoreCase("S"); boolean flagIvaAcqMerci = UtilityHashMap.<String>getValueIfExists(dati, "flag_iva_acq_merci").equalsIgnoreCase("S");
if (flagIvaInclusa) { if (iva.getFlagIvaInclusa()) {
BigDecimal totImpScorporo = IntegerUtility.round(CommonRules.scorporoIva(conn, totImponibAliq, codAliq), 2); BigDecimal totImpScorporo = IntegerUtility.round(CommonRules.scorporoIva(conn, totImponibAliq, codAliq), 2);
totImpostaAliq = totImponibAliq.subtract(totImpScorporo); totImpostaAliq = totImponibAliq.subtract(totImpScorporo);
totImponibAliq = totImponibAliq.subtract(totImpostaAliq); totImponibAliq = totImponibAliq.subtract(totImpostaAliq);
iva.setFlagIvaInclusa(false);
} else { } else {
totImpostaAliq = calcImposta(conn, totImponibAliq, percAliq, tipoIva, cifreDec); totImpostaAliq = calcImposta(conn, totImponibAliq, percAliq, tipoIva, cifreDec);
} }
@@ -890,8 +896,12 @@ public class DocOrdCalTotaliRules extends QueryRules {
testata.setTotImponib(totImponib).setTotIva(totImposta); testata.setTotImponib(totImponib).setTotIva(totImposta);
} }
private static void addCastellettoIva(BigDecimal importoRiga, String codAliq, Boolean ventilazione, List<CtbMovi> castelletto) { private static void addCastellettoIva(BigDecimal importoRiga, String codAliq, Boolean ventilazione, List<CtbMovi> castelletto, Boolean flagIvaInclusa) {
java.util.Optional<CtbMovi> first = castelletto.stream().filter(x -> UtilityString.equalsIgnoreCase(x.getCodAliq(), codAliq) && x.getVentilazione() == ventilazione).findFirst(); java.util.Optional<CtbMovi> first =
castelletto.stream()
.filter(x -> UtilityString.equalsIgnoreCase(x.getCodAliq(), codAliq) && x.getVentilazione() == ventilazione &&
x.getFlagIvaInclusa() == flagIvaInclusa)
.findFirst();
CtbMovi ctbMovi; CtbMovi ctbMovi;
if (first.isPresent()) { if (first.isPresent()) {
ctbMovi = first.get(); ctbMovi = first.get();
@@ -901,7 +911,8 @@ public class DocOrdCalTotaliRules extends QueryRules {
ctbMovi = new CtbMovi() ctbMovi = new CtbMovi()
.setCodAliq(codAliq) .setCodAliq(codAliq)
.setVentilazione(ventilazione) .setVentilazione(ventilazione)
.setImponibile(importoRiga); .setImponibile(importoRiga)
.setFlagIvaInclusa(flagIvaInclusa);
} }
castelletto.add(ctbMovi); castelletto.add(ctbMovi);
} }
@@ -1291,7 +1302,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
maxRigaSpesa = addAltreSpese(connection, testata, castelletto, speseCalc, maxRigaSpesa, whereCondExcSpese, cifreDec, ventilazione, flagPrzIva); maxRigaSpesa = addAltreSpese(connection, testata, castelletto, speseCalc, maxRigaSpesa, whereCondExcSpese, cifreDec, ventilazione, flagPrzIva);
if ( maxRigaSpesa > 0) if ( maxRigaSpesa > 0)
calcTotImponib(testata, connection, flagPrzIva, castelletto, cifreDec); calcTotImponib(testata, connection, castelletto, cifreDec);
} }
//Imposta di bollo //Imposta di bollo
@@ -1310,7 +1321,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
if (totDoc.compareTo(BigDecimal.ZERO) != 0) { if (totDoc.compareTo(BigDecimal.ZERO) != 0) {
maxRigaSpesa = addImpostaBollo(connection, testata, castelletto, speseCalc, maxRigaSpesa, whereCondExcSpese, totDoc, ventilazione); maxRigaSpesa = addImpostaBollo(connection, testata, castelletto, speseCalc, maxRigaSpesa, whereCondExcSpese, totDoc, ventilazione);
if (maxRigaSpesa > 0) if (maxRigaSpesa > 0)
calcTotImponib(testata, connection, flagPrzIva, castelletto, cifreDec); calcTotImponib(testata, connection, castelletto, cifreDec);
} }
} }
} }
@@ -1365,7 +1376,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
dtbDocs.setRiga(maxRigaSpesa); dtbDocs.setRiga(maxRigaSpesa);
dtbDocs.setOperation(OperationType.INSERT); dtbDocs.setOperation(OperationType.INSERT);
if (castelletto != null) { if (castelletto != null) {
addCastellettoIva(dtbDocs.getImporto(), dtbDocs.getCodAliq(), ventilazione, castelletto); addCastellettoIva(dtbDocs.getImporto(), dtbDocs.getCodAliq(), ventilazione, castelletto, false);
} }
speseCalc.add(dtbDocs); speseCalc.add(dtbDocs);
@@ -1504,7 +1515,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
maxRigaSpesa = setDtbDocs(testata, castelletto, spesa, BigDecimal.ZERO, importo, speseCalc, maxRigaSpesa, ventilazione); maxRigaSpesa = setDtbDocs(testata, castelletto, spesa, BigDecimal.ZERO, importo, speseCalc, maxRigaSpesa, ventilazione);
} }
} }
calcTotImponib(testata, connection, flagPrzIva, castelletto, cifreDec); calcTotImponib(testata, connection, castelletto, cifreDec);
} }
/* /*
calcolo spese sul totale del documento calcolo spese sul totale del documento

View File

@@ -69,6 +69,7 @@ public class CtbMovi extends EntityBase {
private String flagMarcaDaBollo; private String flagMarcaDaBollo;
private String tipoIva; private String tipoIva;
private Boolean flagIvaInclusa;
public CtbMovi() { public CtbMovi() {
super(logger); super(logger);
@@ -217,4 +218,13 @@ public class CtbMovi extends EntityBase {
this.tipoIva = tipoIva; this.tipoIva = tipoIva;
return this; return this;
} }
public Boolean getFlagIvaInclusa() {
return flagIvaInclusa;
}
public CtbMovi setFlagIvaInclusa(Boolean flagIvaInclusa) {
this.flagIvaInclusa = flagIvaInclusa;
return this;
}
} }