imporazione rosso gargano

This commit is contained in:
2024-02-12 12:19:20 +01:00
parent cf91030464
commit 3a2a8f3d4b

View File

@@ -5,6 +5,7 @@ import com.annimon.stream.Stream;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.rules.businessLogic.AccountingBusinessLogic;
import it.integry.ems.rules.businessLogic.enums.TipoPartita;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
@@ -80,7 +81,7 @@ public class RossoGarganoSyncService {
saveCtbMovt(rgExchange.getConnection(), "(PNOTA.PN_SEZIONALE_IVA <> '' AND PN_CAUSALE_MOVIMENTO <> '998')", dataIniz, dataFine);
logger.info("Importazione fatture attive e passive: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
// saveCtbMovt(rgExchange.getConnection(), "", dataIniz, dataFine);
saveCtbMovt(rgExchange.getConnection(), "", dataIniz, dataFine);
logger.info("Importazione altri movimenti contabili: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
}
@@ -307,9 +308,11 @@ public class RossoGarganoSyncService {
}
if (pagaScadenze && !UtilityString.isNullOrEmpty(codAnag)) {
List<CtbScad> scadenzeAperte = pagaScadenze(pnPartita, tipoAnag, codAnag, ctbMovt, pnImportoMov, ctbMovr);
if (scadenzeAperte != null)
ctbMovt.setCtbScad(scadenzeAperte);
List<CtbScad> scadenzeAperte = pagaScadenze(pnPartita, tipoAnag, codAnag, ctbMovt, pnImportoMov, pnSegnoMovimento, ctbMovr);
if (scadenzeAperte != null) {
if (ctbMovt.getCtbScad() == null) ctbMovt.setCtbScad(new ArrayList<>());
ctbMovt.getCtbScad().addAll(scadenzeAperte);
}
}
}
}
@@ -1040,15 +1043,18 @@ public class RossoGarganoSyncService {
ctbMovt.setCtbPart(ctbPart);
}
private List<CtbScad> pagaScadenze(String pnPartita, String tipoAnag, String codAnag, CtbMovt ctbMovt, BigDecimal impIncasso, CtbMovr ctbMovr) throws Exception {
String anno = "20" + pnPartita.substring(0, 2);
private List<CtbScad> pagaScadenze(String pnPartita, String tipoAnag, String codAnag, CtbMovt ctbMovt, BigDecimal impIncasso, String pnSegnoMovimento, CtbMovr ctbMovr) throws Exception {
String anno = null;
if (UtilityString.isNumber(pnPartita.substring(0, 2)))
anno = "20" + pnPartita.substring(0, 2);
String numero = pnPartita.substring(2);
if (UtilityString.isNumber(numero))
numero = new Integer(numero).toString();
List<CtbScad> elencoScadenze;
Integer annoPart = 2021, numDoc = 0, tipoPartita = 0;
String serDoc = "/";
List<CtbScad> elencoScadenze = new ArrayList<>();
Integer annoPart = null, numDoc = null, tipoPartita = null;
String serDoc = null;
if (ctbMovt.getCtbPart() != null) {
annoPart = UtilityDate.getYear(ctbMovt.getDataDoc());
@@ -1065,11 +1071,11 @@ public class RossoGarganoSyncService {
" ctb_part.anno_part = ctb_parr.anno_part AND ctb_part.ser_doc = ctb_parr.ser_doc AND\n" +
" ctb_part.num_doc = ctb_parr.num_doc\n" +
" INNER JOIN ctb_movt ON ctb_parr.num_cmov = ctb_movt.num_cmov\n" +
"WHERE ctb_part.anno_part = %s\n" +
" AND ISNULL(ctb_movt.num_doc_forn, cast(ctb_part.num_doc as varchar)) = %s\n" +
"WHERE " + ( anno != null?"ctb_part.anno_part = " + anno + " AND \n":"") +
" ISNULL(ctb_movt.num_doc_forn, cast(ctb_part.num_doc as varchar)) = %s\n" +
" AND ctb_part.cod_anag = %s\n" +
" AND ctb_part.tipo_anag = %s",
anno, numero, codAnag, tipoAnag);
" AND ctb_part.tipo_anag = %s\n",
numero, codAnag, tipoAnag);
HashMap<String, Object> datiPartita = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql);
if (UtilityHashMap.isPresent(datiPartita)) {
@@ -1077,12 +1083,40 @@ public class RossoGarganoSyncService {
numDoc = UtilityHashMap.getValueIfExists(datiPartita, "num_doc");
serDoc = UtilityHashMap.getValueIfExists(datiPartita, "ser_doc");
tipoPartita = UtilityHashMap.getValueIfExists(datiPartita, "tipo_partita");
} else {
numDoc = 0;
serDoc = "/";
annoPart = 2021;
}
elencoScadenze = AccountingBusinessLogic.loadScadenze(multiDBTransactionManager.getPrimaryConnection(), tipoAnag, codAnag, annoPart, serDoc, numDoc);
if (ctbMovt.getCtbScad() != null) {
Integer finalAnnoPart = annoPart;
String finalSerDoc = serDoc;
Integer finalNumDoc = numDoc;
elencoScadenze = Stream.of(ctbMovt.getCtbScad()).filter(x -> x.getCodAnag().equalsIgnoreCase(codAnag) &&
x.getTipoAnag().equalsIgnoreCase(tipoAnag) &&
x.getAnnoPart().intValue() == finalAnnoPart &&
x.getSerDoc().equalsIgnoreCase(finalSerDoc) &&
x.getNumDoc().intValue() == finalNumDoc).toList();
}
AccountingBusinessLogic.pagaScadenze(ctbMovt.getDataCmov(), impIncasso.abs(), elencoScadenze, ctbMovr.getIdRiga());
if (elencoScadenze != null) {
if (elencoScadenze == null || elencoScadenze.size() == 0)
elencoScadenze = AccountingBusinessLogic.loadScadenze(multiDBTransactionManager.getPrimaryConnection(), tipoAnag, codAnag, annoPart, serDoc, numDoc);
else
ctbMovt.getCtbScad().removeAll(elencoScadenze);
}
if (tipoPartita != null) {
if ((pnSegnoMovimento.equalsIgnoreCase("A") && TipoPartita.fromValue(tipoPartita.intValue()) == TipoPartita.PASSIVA) ||
(pnSegnoMovimento.equalsIgnoreCase("D") && TipoPartita.fromValue(tipoPartita.intValue()) == TipoPartita.ATTIVA)
) {
impIncasso = impIncasso.multiply(new BigDecimal(-1));
}
}
AccountingBusinessLogic.pagaScadenze(ctbMovt.getDataCmov(), impIncasso, elencoScadenze, ctbMovr.getIdRiga());
if (elencoScadenze != null && elencoScadenze.size() > 0) {
List<CtbScad> scad = Stream.of(elencoScadenze).filter(x -> x.getIdRigaMov() != null && x.getIdRigaMov().equals(ctbMovr.getIdRiga())).toList();
ctbMovr
.setAnnoPart(annoPart)