From 9b30938d9df669180a59333bad1938f74a7ffc96 Mon Sep 17 00:00:00 2001 From: CarlaD Date: Fri, 28 Feb 2025 14:38:40 +0100 Subject: [PATCH 1/5] inserito campo note_incoterms nella dtb_ordt e ingrandito campo porto a 40 nella dtb_ordt --- .../model/Migration_20250228142840.java | 20 +++++++++++++++++++ .../it/integry/ems_model/entity/DtbOrdt.java | 14 ++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228142840.java diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228142840.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228142840.java new file mode 100644 index 0000000000..6f2697f634 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228142840.java @@ -0,0 +1,20 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250228142840 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + executeStatement("ALTER TABLE dtb_ordt ADD note_incoterms VARCHAR(20)", + "ALTER TABLE dtb_ordt ALTER COLUMN porto VARCHAR(40)"); + } + + @Override + public void down() throws Exception { + } +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/DtbOrdt.java b/ems-core/src/main/java/it/integry/ems_model/entity/DtbOrdt.java index 8fd8b09047..2e3283b91e 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/DtbOrdt.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/DtbOrdt.java @@ -277,7 +277,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface getRows() { return getDtbOrdr(); From 7461568eb8fd46f476121323647e4c32c35aa57b Mon Sep 17 00:00:00 2001 From: FabioN Date: Fri, 28 Feb 2025 16:18:32 +0100 Subject: [PATCH 2/5] Disattivazione AR012 --- .../migration/model/Migration_20250228161635.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228161635.java diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228161635.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228161635.java new file mode 100644 index 0000000000..dda001c741 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228161635.java @@ -0,0 +1,15 @@ +package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250228161635 extends BaseMigration implements MigrationModelInterface{ + + @Override + public void up()throws Exception { + if(isHistoryDB()) + return; + } + + @Override + public void down()throws Exception { + } +} \ No newline at end of file From adec19a03321656ee46d6f0eb1e0d8ed23ba562c Mon Sep 17 00:00:00 2001 From: FabioN Date: Fri, 28 Feb 2025 16:18:47 +0100 Subject: [PATCH 3/5] Disattivazione AR012 --- .../migration/model/Migration_20250228161635.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228161635.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228161635.java index dda001c741..5fd09137c8 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228161635.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228161635.java @@ -1,15 +1,19 @@ -package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration; +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; import it.integry.ems.migration._base.MigrationModelInterface; -public class Migration_20250228161635 extends BaseMigration implements MigrationModelInterface{ +public class Migration_20250228161635 extends BaseMigration implements MigrationModelInterface { @Override - public void up()throws Exception { - if(isHistoryDB()) + public void up() throws Exception { + if (isHistoryDB()) return; + + executeStatement("update stb_menu set flag_attivo = 'N' where cod_opz = 'AR012'"); } @Override - public void down()throws Exception { + public void down() throws Exception { } } \ No newline at end of file From 5569f46e6777c53cff7a68eec100dd5ca374d536 Mon Sep 17 00:00:00 2001 From: FabioN Date: Fri, 28 Feb 2025 16:25:57 +0100 Subject: [PATCH 4/5] Modifica per DMS --- .../integry/ems/migration/model/Migration_20250226143555.java | 4 ++++ .../integry/ems/migration/model/Migration_20250227122632.java | 3 +++ .../integry/ems/migration/model/Migration_20250228142840.java | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250226143555.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250226143555.java index ba745b0732..3f49a65b6f 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250226143555.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250226143555.java @@ -1,6 +1,7 @@ package it.integry.ems.migration.model; import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomerDB; import it.integry.ems.migration._base.MigrationModelInterface; public class Migration_20250226143555 extends BaseMigration implements MigrationModelInterface { @@ -10,6 +11,9 @@ public class Migration_20250226143555 extends BaseMigration implements Migration if (isHistoryDB()) return; + if (isCustomerDb(IntegryCustomerDB.Siciliani_DMS)) + return; + executeStatement("alter table dtb_ordt add incoterms varchar(20)", "alter table vtb_viaggi add note_incoterms varchar(20)"); } diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250227122632.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250227122632.java index 80483b4a77..4f99ea854e 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250227122632.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250227122632.java @@ -1,6 +1,7 @@ package it.integry.ems.migration.model; import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomerDB; import it.integry.ems.migration._base.MigrationModelInterface; public class Migration_20250227122632 extends BaseMigration implements MigrationModelInterface { @@ -10,6 +11,8 @@ public class Migration_20250227122632 extends BaseMigration implements Migration if (isHistoryDB()) return; + if (isCustomerDb(IntegryCustomerDB.Siciliani_DMS)) + return; createOrUpdateFunction("getSospesoClienti_completa", "CREATE FUNCTION [dbo].[getSospesoClienti_completa]\n" + "\n" + diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228142840.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228142840.java index 6f2697f634..2eba5ce1c8 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228142840.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228142840.java @@ -1,6 +1,7 @@ package it.integry.ems.migration.model; import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomerDB; import it.integry.ems.migration._base.MigrationModelInterface; public class Migration_20250228142840 extends BaseMigration implements MigrationModelInterface { @@ -10,6 +11,9 @@ public class Migration_20250228142840 extends BaseMigration implements Migration if (isHistoryDB()) return; + if (isCustomerDb(IntegryCustomerDB.Siciliani_DMS)) + return; + executeStatement("ALTER TABLE dtb_ordt ADD note_incoterms VARCHAR(20)", "ALTER TABLE dtb_ordt ALTER COLUMN porto VARCHAR(40)"); } From d959425bce256bbb155ac960e824d5e2d9e2fb26 Mon Sep 17 00:00:00 2001 From: MinaR Date: Fri, 28 Feb 2025 18:29:35 +0100 Subject: [PATCH 5/5] modificata registrazione giroconto riscontie e calcolo risconti --- .../model/Migration_20250228145852.java | 28 ++ .../AccountingBusinessLogic.java | 28 ++ .../ems_model/config/EmsRestConstants.java | 1 - .../controller/ContabilController.java | 18 +- .../controller/RiscontiController.java | 46 ++++ .../integry/ems/contabil/dto/RiscontoDTO.java | 26 ++ .../contabil/service/AmmortamentiService.java | 23 +- .../ems/contabil/service/ContabilService.java | 188 +------------- .../ems/contabil/service/PassaggioAnno.java | 12 +- .../ems/contabil/service/RiscontiService.java | 240 ++++++++++++++++++ .../document/service/DocumentProdService.java | 4 +- 11 files changed, 390 insertions(+), 224 deletions(-) create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228145852.java create mode 100644 ems-engine/src/main/java/it/integry/ems/contabil/controller/RiscontiController.java create mode 100644 ems-engine/src/main/java/it/integry/ems/contabil/dto/RiscontoDTO.java create mode 100644 ems-engine/src/main/java/it/integry/ems/contabil/service/RiscontiService.java diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228145852.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228145852.java new file mode 100644 index 0000000000..21291e9c4f --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250228145852.java @@ -0,0 +1,28 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250228145852 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + executeStatement("\n" + + "insert into gtb_periodo_fisc\n" + + "select YEAR(GETDATE()) + rowId, \n" + + "DATEFROMPARTS(YEAR(GETDATE()) + rowId, azienda.mese_iniz_anno_fisc, azienda.giorno_iniz_anno_fisc),\n" + + "DateAdd( DAY, -1, DateAdd(Year, 1, DATEFROMPARTS(YEAR(GETDATE()) + rowId, azienda.mese_iniz_anno_fisc, azienda.giorno_iniz_anno_fisc)))\n" + + "from dbo.stb_counter, azienda\n" + + "where rowId <=10\n" + + "except \n" + + "select * \n" + + "from gtb_periodo_fisc "); + } + + @Override + public void down() throws Exception { + } +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/rules/businessLogic/AccountingBusinessLogic.java b/ems-core/src/main/java/it/integry/ems/rules/businessLogic/AccountingBusinessLogic.java index f8244f384e..12c3e5ba42 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/businessLogic/AccountingBusinessLogic.java +++ b/ems-core/src/main/java/it/integry/ems/rules/businessLogic/AccountingBusinessLogic.java @@ -541,5 +541,33 @@ public class AccountingBusinessLogic { return importoCompetenza; } + public static GtbPeriodoFisc getPeriodoFisc(Connection conn, Integer anno) throws Exception { + String whereCond = String.format("anno = %s", UtilityDB.valueToString(anno)); + GtbPeriodoFisc gtbPeriodoFisc = getPeriodoFisc(conn, whereCond); + if (gtbPeriodoFisc == null) { + throw new Exception("Impossibile individuare il periodo fiscale per l'anno " + anno); + } + return gtbPeriodoFisc; + } + public static GtbPeriodoFisc getPeriodoFisc(Connection conn, Date data) throws Exception { + String whereCond = String.format("%s BETWEEN data_iniz AND data_fine", UtilityDB.valueToString(data)); + GtbPeriodoFisc gtbPeriodoFisc = getPeriodoFisc(conn, whereCond); + if (gtbPeriodoFisc == null) { + throw new Exception("Impossibile individuare il periodo fiscale per la data " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(data)); + } + return gtbPeriodoFisc; + } + + public static Integer getAnnoFisc(Connection conn, Date data) throws Exception { + GtbPeriodoFisc periodoFisc = getPeriodoFisc(conn, data); + return periodoFisc.getAnno(); + } + + private static GtbPeriodoFisc getPeriodoFisc(Connection conn, String whereCond) throws Exception { + String sql = "SELECT * FROM gtb_periodo_fisc "; + sql = UtilityDB.addwhereCond(sql, whereCond, true, false); + GtbPeriodoFisc gtbPeriodoFisc = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, sql, GtbPeriodoFisc.class); + return gtbPeriodoFisc; + } } diff --git a/ems-core/src/main/java/it/integry/ems_model/config/EmsRestConstants.java b/ems-core/src/main/java/it/integry/ems_model/config/EmsRestConstants.java index 873d557649..77ba9460f1 100644 --- a/ems-core/src/main/java/it/integry/ems_model/config/EmsRestConstants.java +++ b/ems-core/src/main/java/it/integry/ems_model/config/EmsRestConstants.java @@ -476,7 +476,6 @@ public class EmsRestConstants { public static final String PATH_REGISTRA_MOVCONV_AMMORTAMENTI = PATH + "registraMovContAmmortamenti"; public static final String PATH_CHK_AUTOFATTURA = PATH + "chkAutofattura"; public static final String PATH_PASSAGGIO_ANNO = PATH + "passaggioAnno"; - public static final String PATH_REG_GIRO_RISCONTI = PATH + "registraGirocontoRisconti"; //SLIM2k public static final String PATH_IMPORT_COLLI_SLIM2K = PATH + "importColliSlim2k"; public static final String PATH_IMPORT_COLLI_ACQ_SLIM2K = PATH + "importColliAcqSlim2k"; diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/controller/ContabilController.java b/ems-engine/src/main/java/it/integry/ems/contabil/controller/ContabilController.java index be0eaae961..bfcd5d9900 100644 --- a/ems-engine/src/main/java/it/integry/ems/contabil/controller/ContabilController.java +++ b/ems-engine/src/main/java/it/integry/ems/contabil/controller/ContabilController.java @@ -13,6 +13,7 @@ import it.integry.ems.javabeans.RequestDataDTO; import it.integry.ems.response.EsitoType; import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.response.StatusResponse; +import it.integry.ems.rules.businessLogic.AccountingBusinessLogic; import it.integry.ems.service.comuni.base.CapCittaProv; import it.integry.ems.service.comuni.entities.Comune; import it.integry.ems.service.comuni.exceptions.ComuniException; @@ -31,6 +32,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.ws.soap.SOAPFaultException; import java.lang.reflect.Method; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -182,22 +184,6 @@ public class ContabilController { return response; } - @RequestMapping(value = EmsRestConstants.PATH_REG_GIRO_RISCONTI, method = RequestMethod.POST) - public @ResponseBody - List creaMovGiroRisconti(HttpServletRequest request, - @RequestParam(CommonConstants.PROFILE_DB) String configuration, - @RequestParam("dataReg") Date dataReg, - @RequestParam("causale") String codCcau) { - List listResponse = new ArrayList(); - try { - listResponse = UtilityEntity.toServiceRestResponse(contabilService.creaMovGiroRisconti(dataReg, codCcau)); - } catch (Exception e) { - logger.error(request.getRequestURI(), e); - listResponse.add(new ServiceRestResponse(EsitoType.KO, configuration, e)); - } - return listResponse; - } - @RequestMapping(value = "/checkPartitaIva", method = RequestMethod.POST) public @ResponseBody ServiceRestResponse checkPartitaIva(@RequestParam(required = false, defaultValue = "true") boolean enableLocationCheck, diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/controller/RiscontiController.java b/ems-engine/src/main/java/it/integry/ems/contabil/controller/RiscontiController.java new file mode 100644 index 0000000000..7a9a38ba5f --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/contabil/controller/RiscontiController.java @@ -0,0 +1,46 @@ +package it.integry.ems.contabil.controller; + +import it.integry.common.var.CommonConstants; +import it.integry.ems.contabil.service.RiscontiService; +import it.integry.ems.response.EsitoType; +import it.integry.ems.response.ServiceRestResponse; +import it.integry.ems.utility.UtilityEntity; +import it.integry.ems_model.config.EmsRestConstants; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@RestController +@Scope("request") +@RequestMapping("risconti") +public class RiscontiController { + @Autowired + private RiscontiService riscontiService; + + @RequestMapping(value = "calcolo", method = RequestMethod.GET) + public @ResponseBody + ServiceRestResponse calcolo(HttpServletRequest request, + @RequestParam(CommonConstants.PROFILE_DB) String configuration, + @RequestParam("dataInizComp") Date dataIniz, + @RequestParam("dataFineComp") Date dataFine, + @RequestParam("dataDoc") Date dataDoc, + @RequestParam("importo") BigDecimal importo ) throws Exception { + return ServiceRestResponse.createPositiveResponse(riscontiService.calcRisconto(dataIniz, dataFine, dataDoc, importo)); + } + + @RequestMapping(value = "giroconto", method = RequestMethod.POST) + public @ResponseBody + ServiceRestResponse creaMovGiroRisconti(HttpServletRequest request, + @RequestParam(CommonConstants.PROFILE_DB) String configuration, + @RequestParam("dataReg") Date dataReg, + @RequestParam("causale") String codCcau) throws Exception { + return ServiceRestResponse.createEntityPositiveResponse(riscontiService.creaMovGiroRisconti(dataReg, codCcau)); + } + +} diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/dto/RiscontoDTO.java b/ems-engine/src/main/java/it/integry/ems/contabil/dto/RiscontoDTO.java new file mode 100644 index 0000000000..77f0a6f13b --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/contabil/dto/RiscontoDTO.java @@ -0,0 +1,26 @@ +package it.integry.ems.contabil.dto; + +import java.math.BigDecimal; + +public class RiscontoDTO { + private BigDecimal importoCompetenza; + private BigDecimal importoRisconto; + + public BigDecimal getImportoCompetenza() { + return importoCompetenza; + } + + public RiscontoDTO setImportoCompetenza(BigDecimal importoCompetenza) { + this.importoCompetenza = importoCompetenza; + return this; + } + + public BigDecimal getImportoRisconto() { + return importoRisconto; + } + + public RiscontoDTO setImportoRisconto(BigDecimal importoRisconto) { + this.importoRisconto = importoRisconto; + return this; + } +} diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/service/AmmortamentiService.java b/ems-engine/src/main/java/it/integry/ems/contabil/service/AmmortamentiService.java index 17096d4c4a..8a40ea7102 100644 --- a/ems-engine/src/main/java/it/integry/ems/contabil/service/AmmortamentiService.java +++ b/ems-engine/src/main/java/it/integry/ems/contabil/service/AmmortamentiService.java @@ -3,6 +3,7 @@ package it.integry.ems.contabil.service; import it.integry.common.var.CommonConstants; import it.integry.ems.contabil.dto.CalcAmmortamentoDTO; import it.integry.ems.contabil.dto.RegMovConAmmortamentoDTO; +import it.integry.ems.rules.businessLogic.AccountingBusinessLogic; import it.integry.ems.rules.completing.QueryRules; import it.integry.ems.service.EntityProcessor; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; @@ -195,9 +196,9 @@ public class AmmortamentiService { // Inizializzazione variabili Integer annoFondo = calcAmmDTO.getAnno(); - HashMap datiPeriodoFisc = contabilService.getPeriodoFisc(annoFondo); - Date dataInizAnnFondo = (Date) datiPeriodoFisc.get("data_iniz"); - Date dataFineAnnFondo = (Date) datiPeriodoFisc.get("data_fine"); + GtbPeriodoFisc gtbPeriodoFisc = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), annoFondo); + Date dataInizAnnFondo = gtbPeriodoFisc.getDataIniz(); + Date dataFineAnnFondo = gtbPeriodoFisc.getDataFine(); // Cancellazione fondi dell'anno cancellaFondi(calcAmmDTO); @@ -416,7 +417,9 @@ public class AmmortamentiService { HashMap toReturn = new HashMap<>(); String tipoConto = (String) QueryRules.getSingleValue(multiDBTransactionManager.getPrimaryConnection(), "SELECT ctb_grup.tipo FROM ctb_cont, ctb_grup WHERE ctb_cont.cod_cgrp = ctb_grup.cod_cgrp AND ctb_cont.cod_ccon = " + UtilityDB.valueToString(conto)); if (tipoConto.equalsIgnoreCase("4") || tipoConto.equalsIgnoreCase("5")){ - toReturn = contabilService.getPeriodoFisc(annoComp); + GtbPeriodoFisc gtbPeriodoFisc = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), annoComp); + toReturn.put("data_iniz", gtbPeriodoFisc.getDataIniz()); + toReturn.put("data_fine", gtbPeriodoFisc.getDataFine()); } else { toReturn.put("data_iniz", null); toReturn.put("data_fine", null); @@ -641,9 +644,9 @@ public class AmmortamentiService { } public void aggiornaStampaReg(RegMovConAmmortamentoDTO regMovConAmmortamentoDTO) throws Exception { - HashMap datiPeriodoFisc = contabilService.getPeriodoFisc(regMovConAmmortamentoDTO.getAnnoComp()); - Date dataInizAnnpComp = (Date) datiPeriodoFisc.get("data_iniz"); - Date dataFineAnnpComp = (Date) datiPeriodoFisc.get("data_fine"); + GtbPeriodoFisc gtbPeriodoFisc = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), regMovConAmmortamentoDTO.getAnnoComp()); + Date dataInizAnnpComp = gtbPeriodoFisc.getDataIniz(); + Date dataFineAnnpComp = gtbPeriodoFisc.getDataFine(); String whereCondCatBeni = UtilityString.replaceSubString(regMovConAmmortamentoDTO.getWhereCondCatBeni(), "dtb_catbeni", "ctb_beni"); // Controllo che non ci siano anni inferiori all'anno di competenza ancora da stampare @@ -689,9 +692,9 @@ public class AmmortamentiService { CtbMovt movT = new CtbMovt(); Integer rigaMov = 0; - HashMap datiPeriodoFisc = contabilService.getPeriodoFisc(regMovConAmmortamentoDTO.getAnnoComp()); - Date dataInizAnnoComp = (Date) datiPeriodoFisc.get("data_iniz"); - Date dataFineAnnpComp = (Date) datiPeriodoFisc.get("data_fine"); + GtbPeriodoFisc gtbPeriodoFisc = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), regMovConAmmortamentoDTO.getAnnoComp()); + Date dataInizAnnoComp = gtbPeriodoFisc.getDataIniz(); + Date dataFineAnnpComp = gtbPeriodoFisc.getDataFine(); String descCaus = (String) QueryRules.getSingleValue(multiDBTransactionManager.getPrimaryConnection(), "SELECT descrizione FROM ctb_caus WHERE cod_ccau = " + UtilityDB.valueToString(regMovConAmmortamentoDTO.getCodCcau())); query = diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/service/ContabilService.java b/ems-engine/src/main/java/it/integry/ems/contabil/service/ContabilService.java index 2b58c861ec..82249a056e 100644 --- a/ems-engine/src/main/java/it/integry/ems/contabil/service/ContabilService.java +++ b/ems-engine/src/main/java/it/integry/ems/contabil/service/ContabilService.java @@ -21,6 +21,7 @@ import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.utility.UtilityEntity; import it.integry.ems_model.base.EntityBase; +import it.integry.ems_model.config.EmsRestConstants; import it.integry.ems_model.db.ResultSetMapper; import it.integry.ems_model.entity.*; import it.integry.ems_model.exception.EntityException; @@ -807,184 +808,6 @@ public class ContabilService { return listaCtbParr; } - public List creaMovGiroRisconti(Date dataReg, String causale) throws Exception { - List entityList = new ArrayList(); - Connection connection = multiDBTransactionManager.getPrimaryConnection(); - - BigDecimal importoTotMov = BigDecimal.ZERO; - int anno = UtilityDate.datePart(Calendar.YEAR, dataReg); - HashMap datePeriodo = getPeriodoFisc(anno); - - Date dataInizio = UtilityHashMap.getValueIfExists(datePeriodo, "data_iniz"); - Date dataFine = UtilityHashMap.getValueIfExists(datePeriodo, "data_fine"); - - String query = "SELECT descrizione FROM ctb_caus where cod_ccau = " + UtilityDB.valueToString(causale); - String descrCausale = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, query); - if (!descrCausale.contains("RISCONT")) { - descrCausale = descrCausale.concat(" RISCONTI"); - } - - query = - Query.format( - "SELECT ctb_movr.num_cmov,\n" + - " ctb_movr.id_riga,\n" + - " ctb_movr.imp_dare,\n" + - " ctb_movr.imp_avere,\n" + - " ctb_movr.cod_ccon,\n" + - " ctb_movr.cod_ccon_risconto,\n" + - " ctb_movr.data_iniz_comp_risc,\n" + - " ctb_movr.data_fine_comp_risc,\n" + - " ctb_movr.des_agg,\n" + - " ctb_movr.perc_ded\n" + - "FROM ctb_movt\n" + - " INNER JOIN gtb_periodo_fisc\n" + - " ON ctb_movt.data_cmov BETWEEN gtb_periodo_fisc.data_iniz AND gtb_periodo_fisc.data_fine\n" + - " INNER JOIN ctb_movr ON ctb_movt.num_cmov = ctb_movr.num_cmov\n" + - " INNER JOIN ctb_cont ON ctb_movr.cod_ccon = ctb_cont.cod_ccon\n" + - "WHERE ctb_cont.flag_risconto = 'S'\n" + - " AND gtb_periodo_fisc.anno = %s\n" + - " AND ctb_movr.data_iniz_comp_risc IS NOT NULL\n" + - " AND ctb_movr.data_fine_comp_risc IS NOT NULL\n" + - " AND ctb_movr.cod_ccon_risconto IS NOT NULL\n" + - "ORDER BY ctb_movr.num_cmov ", anno - 1); - List ctbMovrList = UtilityDB.executeSimpleQueryDTO(connection, query, CtbMovr.class); - if (ctbMovrList != null && !ctbMovrList.isEmpty()) { - List ctbMovr = new ArrayList<>(); - - for (CtbMovr movr : ctbMovrList) { - BigDecimal impDareCosto = BigDecimal.ZERO, impAvereCosto = BigDecimal.ZERO; - BigDecimal impRisconto = movr.getImpDare().subtract(movr.getImpAvere()).abs(); - Integer annoInizComp = UtilityDate.datePart(Calendar.YEAR, movr.getDataInizCompRisc()); - Integer annoFineComp = UtilityDate.datePart(Calendar.YEAR, movr.getDataFineCompRisc()); - importoTotMov = importoTotMov.add(impRisconto); - - CtbMovr movRisc = new CtbMovr(); - movRisc.setCodCcon(movr.getCodCcon()); - movRisc.setImpDare(movr.getImpAvere()); - movRisc.setImpAvere(movr.getImpDare()); - movRisc.setDesAgg(movr.getDesAgg()); - ctbMovr.add(movRisc); - - //Risconto su più anni - if (annoFineComp.intValue() > anno) { - BigDecimal impDareRisc = BigDecimal.ZERO, impAvereRisc = BigDecimal.ZERO; - Date dataInizComp; - if (annoInizComp.intValue() > anno) { - impDareRisc = movr.getImpDare(); - impAvereRisc = movr.getImpAvere(); - dataInizComp = movr.getDataInizCompRisc(); - } else { - Date dataFineComp = UtilityDate.dateAdd(Calendar.YEAR, 1, dataFine); - dataInizComp = UtilityDate.dateFromPart(UtilityDate.getYear(dataFineComp), 1, 1); - - BigDecimal riscontoComp = AccountingBusinessLogic.calcRisconto(movr, movr.getDataInizCompRisc(), dataFine, impRisconto); - BigDecimal riscontoResiduo = impRisconto.subtract(riscontoComp); - - if (movr.getImpDare().compareTo(BigDecimal.ZERO) > 0) { - impDareRisc = riscontoResiduo; - impDareCosto = riscontoComp; - } else { - impAvereRisc = riscontoResiduo; - impAvereCosto = riscontoComp; - } - } - - CtbMovr movNewRisc = new CtbMovr(); - movNewRisc.setCodCcon(movr.getCodCcon()); - movNewRisc.setImpDare(impDareRisc); - movNewRisc.setImpAvere(impAvereRisc); - movNewRisc.setDesAgg(movr.getDesAgg()); - movNewRisc.setDataInizCompRisc(dataInizComp); - movNewRisc.setDataFineCompRisc(movr.getDataFineCompRisc()); - movNewRisc.setCodCconRisconto(movr.getCodCconRisconto()); - movNewRisc.setPercDed(movr.getPercDed()); - ctbMovr.add(movNewRisc); - - } else { - impDareCosto = movr.getImpDare(); - impAvereCosto = movr.getImpAvere(); - } - if (UtilityDate.getYear(movr.getDataInizCompRisc()) == anno) { - CtbMovr movCosto = new CtbMovr(); - movCosto.setCodCcon(movr.getCodCconRisconto()); - movCosto.setImpDare(impDareCosto); - movCosto.setImpAvere(impAvereCosto); - movCosto.setDesAgg(movr.getDesAgg()); - movCosto.setDataInizCompRisc(movr.getDataInizCompRisc()); - movCosto.setDataFineCompRisc(dataFine); - movCosto.setPercDed(movr.getPercDed()); - - generaCtbMovrCoan(movCosto, movr.getNumCmov(), movr.getIdRiga()); - ctbMovr.add(movCosto); - } - - - } - - CtbMovt ctbMovt = new CtbMovt(); - ctbMovt.setOperation(OperationType.INSERT); - ctbMovt.setDataCmov(dataReg); - ctbMovt.setCodCcau(causale); - ctbMovt.setDescrizioneCaus(descrCausale); - ctbMovt.setImporto(importoTotMov); - ctbMovt.getCtbMovr().addAll(ctbMovr); - - entityList.add(ctbMovt); - - } - - if (entityList.isEmpty()) - throw new Exception("Nessun movimento contabile da registrare."); - - return entityProcessor.processEntityList(entityList, true); - - } - - private void generaCtbMovrCoan(CtbMovr ctbMovr, Integer numCmov, Integer idRiga) throws Exception { - - String query = "SELECT id_riga, id_riga_coan, cod_jcom, cod_jfas, imp_dare, imp_avere, note " + - "FROM ctb_movr_coan " + - "WHERE num_cmov = " + UtilityDB.valueToString(numCmov) + - " AND id_riga = " + UtilityDB.valueToString(idRiga); - List ctbMovrCoanList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, CtbMovrCoan.class); - - if (ctbMovrCoanList == null) { - ctbMovrCoanList = new ArrayList<>(); - } - BigDecimal totImpDareCoan = BigDecimal.ZERO, totImpAvereCoan = BigDecimal.ZERO; - for (CtbMovrCoan coan : ctbMovrCoanList) { - totImpDareCoan = totImpDareCoan.add(coan.getImpDare()); - totImpAvereCoan = totImpAvereCoan.add(coan.getImpAvere()); - } - - Integer riga = 0; - for (CtbMovrCoan coan : ctbMovrCoanList) { - riga++; - BigDecimal impDareCoan = BigDecimal.ZERO, impAvereCoan = BigDecimal.ZERO; - CtbMovrCoan movrCoan = new CtbMovrCoan(); - movrCoan.setIdRigaCoan(riga); - movrCoan.setCodJcom(coan.getCodJcom()); - movrCoan.setCodJfas(coan.getCodJfas()); - if (ctbMovr.getImpDare().subtract(ctbMovr.getImpAvere()).abs().compareTo(totImpDareCoan.subtract(totImpAvereCoan).abs()) != 0) { - impDareCoan = totImpDareCoan.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : coan.getImpDare().multiply(ctbMovr.getImpDare()).divide(totImpDareCoan, 5, RoundingMode.HALF_UP); - impAvereCoan = totImpAvereCoan.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : coan.getImpAvere().multiply(ctbMovr.getImpAvere()).divide(totImpAvereCoan, 5, RoundingMode.HALF_UP); - } else { - impDareCoan = coan.getImpDare(); - impAvereCoan = coan.getImpAvere(); - } - - movrCoan.setImpDare(totImpDareCoan.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : impDareCoan.divide(ctbMovr.getImpDare(), 10, RoundingMode.HALF_UP).multiply(ctbMovr.getImpDare()).setScale(2, RoundingMode.HALF_UP)); - movrCoan.setImpAvere(totImpAvereCoan.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : impAvereCoan.divide(ctbMovr.getImpAvere(), 10, RoundingMode.HALF_UP).multiply(ctbMovr.getImpAvere()).setScale(2, RoundingMode.HALF_UP)); - movrCoan.setNote(coan.getNote()); - - ctbMovr.getCtbMovrCoan().add(movrCoan); - if (riga == 1) { - ctbMovr.setCodJcom(coan.getCodJcom()); - ctbMovr.setCodJfas(coan.getCodJfas()); - } - } - } - public List creaMovContFrontSt(String codMdep) throws Exception { String query; Connection PrimaryConn = multiDBTransactionManager.getPrimaryConnection(); @@ -1476,15 +1299,6 @@ public class ContabilService { return ctbMovtList; } - public HashMap getPeriodoFisc(Integer anno) throws Exception { - String sql = "SELECT data_iniz, data_fine FROM gtb_periodo_fisc WHERE anno = " + UtilityDB.valueToString(anno); - HashMap toReturn = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql); - if (toReturn == null) { - throw new Exception("Impossibile individuare il periodo fiscale dell'anno " + anno); - } - return toReturn; - } - public void allineaPartitaContabili() throws Exception { String sql = diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/service/PassaggioAnno.java b/ems-engine/src/main/java/it/integry/ems/contabil/service/PassaggioAnno.java index 78a901014f..b86faac9b7 100644 --- a/ems-engine/src/main/java/it/integry/ems/contabil/service/PassaggioAnno.java +++ b/ems-engine/src/main/java/it/integry/ems/contabil/service/PassaggioAnno.java @@ -154,18 +154,14 @@ public class PassaggioAnno { listEntityBase.add(anniDivi); } - query = "SELECT count(*) FROM gtb_periodo_fisc WHERE anno = " + (annoAttuale + 1); - find = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, query); - - if (find == 0) { - LocalDate.of(annoAttuale + 1, azienda.getMeseInizAnnoFisc(), azienda.getGiornoInizAnnoFisc()); - Date dataInizPeriodoFisc = UtilityDate.dateFromPart(annoAttuale + 1, azienda.getMeseInizAnnoFisc(), azienda.getGiornoInizAnnoFisc()); + for ( int i = 1; i <= 10; i++ ) { + LocalDate.of(annoAttuale + i, azienda.getMeseInizAnnoFisc(), azienda.getGiornoInizAnnoFisc()); + Date dataInizPeriodoFisc = UtilityDate.dateFromPart(annoAttuale + i, azienda.getMeseInizAnnoFisc(), azienda.getGiornoInizAnnoFisc()); Date dataFinePeriodoFisc = UtilityDate.dateAdd(Calendar.YEAR, 1, dataInizPeriodoFisc); dataFinePeriodoFisc = UtilityDate.dateAdd(Calendar.DATE, -1, dataFinePeriodoFisc); - GtbPeriodoFisc periodoFisc = new GtbPeriodoFisc() - .setAnno(annoAttuale + 1) + .setAnno(annoAttuale + i) .setDataIniz(dataInizPeriodoFisc) .setDataFine(dataFinePeriodoFisc); periodoFisc.setOperation(OperationType.DELETE_THEN_INSERT); diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/service/RiscontiService.java b/ems-engine/src/main/java/it/integry/ems/contabil/service/RiscontiService.java new file mode 100644 index 0000000000..c9158ccea2 --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/contabil/service/RiscontiService.java @@ -0,0 +1,240 @@ +package it.integry.ems.contabil.service; + +import it.integry.ems.contabil.dto.RiscontoDTO; +import it.integry.ems.rules.businessLogic.AccountingBusinessLogic; +import it.integry.ems.service.EntityProcessor; +import it.integry.ems.sync.MultiDBTransaction.Connection; +import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; +import it.integry.ems_model.base.EntityBase; +import it.integry.ems_model.entity.CtbMovr; +import it.integry.ems_model.entity.CtbMovrCoan; +import it.integry.ems_model.entity.CtbMovt; +import it.integry.ems_model.entity.GtbPeriodoFisc; +import it.integry.ems_model.types.OperationType; +import it.integry.ems_model.utility.Query; +import it.integry.ems_model.utility.UtilityDB; +import it.integry.ems_model.utility.UtilityDate; +import it.integry.ems_model.utility.UtilityLocalDate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +@Service +@Scope("request") +public class RiscontiService { + @Autowired + private MultiDBTransactionManager multiDBTransactionManager; + + @Autowired + private EntityProcessor entityProcessor; + + public RiscontoDTO calcRisconto(Date dataInizComp, Date dataFineComp, Date dataDoc, BigDecimal importo) throws Exception { + BigDecimal importoCompetenza = importo; + + Connection conn = multiDBTransactionManager.getPrimaryConnection(); + GtbPeriodoFisc periodoFiscInizComp = AccountingBusinessLogic.getPeriodoFisc(conn, dataInizComp); + Integer annoIniz = periodoFiscInizComp.getAnno(); + Integer annoFine = AccountingBusinessLogic.getAnnoFisc(conn, dataFineComp); + Integer annoDoc = AccountingBusinessLogic.getAnnoFisc(conn, dataDoc); + + if (annoIniz.compareTo(annoFine) < 0 && annoDoc.compareTo(annoIniz) <= 0) { + LocalDate dataInizCompMov = UtilityLocalDate.localDateFromDate(UtilityDate.dateAdd(Calendar.DATE, -1, dataInizComp)); + + LocalDate dataFineCompMov = UtilityLocalDate.localDateFromDate(dataFineComp); + + long giorniTot = UtilityLocalDate.daysAfterDate(dataInizCompMov, dataFineCompMov); + long giorniAnno = UtilityLocalDate.daysAfterDate(dataInizCompMov, UtilityLocalDate.localDateFromDate(periodoFiscInizComp.getDataFine())); + importoCompetenza = importo.divide(new BigDecimal(giorniTot), 10, RoundingMode.HALF_UP).multiply(new BigDecimal(giorniAnno)).setScale(2, RoundingMode.HALF_UP); + } + + BigDecimal impRisconto = importo.subtract(importoCompetenza); + RiscontoDTO riscontoDTO = new RiscontoDTO() + .setImportoCompetenza(importoCompetenza) + .setImportoRisconto(impRisconto); + + return riscontoDTO; + } + public EntityBase creaMovGiroRisconti(Date dataReg, String causale) throws Exception { + BigDecimal importoTotMov = BigDecimal.ZERO; + GtbPeriodoFisc periodoFiscMov = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), dataReg); + int anno = periodoFiscMov.getAnno(); + Date dataInizioPfm = periodoFiscMov.getDataIniz(); + Date dataFinePfm = periodoFiscMov.getDataFine(); + + String query = "SELECT descrizione FROM ctb_caus where cod_ccau = " + UtilityDB.valueToString(causale); + String descrCausale = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query); + if (!descrCausale.contains("RISCONT")) { + descrCausale = descrCausale.concat(" RISCONTI"); + } + + query = + Query.format( + "SELECT ctb_movr.num_cmov,\n" + + " ctb_movr.id_riga,\n" + + " ctb_movr.imp_dare,\n" + + " ctb_movr.imp_avere,\n" + + " ctb_movr.cod_ccon,\n" + + " ctb_movr.cod_ccon_risconto,\n" + + " ctb_movr.data_iniz_comp_risc,\n" + + " ctb_movr.data_fine_comp_risc,\n" + + " ctb_movr.des_agg,\n" + + " ctb_movr.perc_ded\n" + + "FROM ctb_movt\n" + + " INNER JOIN gtb_periodo_fisc\n" + + " ON ctb_movt.data_cmov BETWEEN gtb_periodo_fisc.data_iniz AND gtb_periodo_fisc.data_fine\n" + + " INNER JOIN ctb_movr ON ctb_movt.num_cmov = ctb_movr.num_cmov\n" + + " INNER JOIN ctb_cont ON ctb_movr.cod_ccon = ctb_cont.cod_ccon\n" + + "WHERE ctb_cont.flag_risconto = 'S'\n" + + " AND gtb_periodo_fisc.anno = %s\n" + + " AND ctb_movr.data_iniz_comp_risc IS NOT NULL\n" + + " AND ctb_movr.data_fine_comp_risc IS NOT NULL\n" + + " AND ctb_movr.cod_ccon_risconto IS NOT NULL\n" + + "ORDER BY ctb_movr.num_cmov ", anno - 1); + List ctbMovrList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, CtbMovr.class); + if (ctbMovrList != null && !ctbMovrList.isEmpty()) { + List ctbMovr = new ArrayList<>(); + + for (CtbMovr movr : ctbMovrList) { + BigDecimal impDareCosto = BigDecimal.ZERO, impAvereCosto = BigDecimal.ZERO; + BigDecimal impRisconto = movr.getImpDare().subtract(movr.getImpAvere()).abs(); + GtbPeriodoFisc gtbPeriodoFiscIniz = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), movr.getDataInizCompRisc()); + Integer annoInizComp = gtbPeriodoFiscIniz.getAnno(); + GtbPeriodoFisc gtbPeriodoFiscFine = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), movr.getDataFineCompRisc()); + Integer annoFineComp = gtbPeriodoFiscFine.getAnno(); + importoTotMov = importoTotMov.add(impRisconto); + + CtbMovr movRisc = new CtbMovr(); + movRisc.setCodCcon(movr.getCodCcon()); + movRisc.setImpDare(movr.getImpAvere()); + movRisc.setImpAvere(movr.getImpDare()); + movRisc.setDesAgg(movr.getDesAgg()); + ctbMovr.add(movRisc); + + Date dataFineCompRisc = movr.getDataFineCompRisc(); + + CtbMovr movNewRisc = null; + //Risconto su più anni + if (annoFineComp.intValue() > anno) { + BigDecimal impDareRisc = BigDecimal.ZERO, impAvereRisc = BigDecimal.ZERO; + Date dataInizComp; + if (annoInizComp.intValue() > anno) { + impDareRisc = movr.getImpDare(); + impAvereRisc = movr.getImpAvere(); + dataInizComp = movr.getDataInizCompRisc(); + } else { + dataInizComp = UtilityDate.dateAdd(Calendar.DATE, 1, gtbPeriodoFiscIniz.getDataFine()); + dataFineCompRisc = gtbPeriodoFiscIniz.getDataFine(); + + BigDecimal riscontoComp = AccountingBusinessLogic.calcRisconto(movr, movr.getDataInizCompRisc(), gtbPeriodoFiscIniz.getDataFine(), impRisconto); + BigDecimal riscontoResiduo = impRisconto.subtract(riscontoComp); + + if (movr.getImpDare().compareTo(BigDecimal.ZERO) > 0) { + impDareRisc = riscontoResiduo; + impDareCosto = riscontoComp; + } else { + impAvereRisc = riscontoResiduo; + impAvereCosto = riscontoComp; + } + } + + movNewRisc = new CtbMovr() + .setCodCcon(movr.getCodCcon()) + .setImpDare(impDareRisc) + .setImpAvere(impAvereRisc) + .setDesAgg(movr.getDesAgg()) + .setDataInizCompRisc(dataInizComp) + .setDataFineCompRisc(movr.getDataFineCompRisc()) + .setCodCconRisconto(movr.getCodCconRisconto()) + .setPercDed(movr.getPercDed()); + } else { + impDareCosto = movr.getImpDare(); + impAvereCosto = movr.getImpAvere(); + } + if (gtbPeriodoFiscIniz.getAnno() == anno) { + CtbMovr movCosto = new CtbMovr() + .setCodCcon(movr.getCodCconRisconto()) + .setImpDare(impDareCosto) + .setImpAvere(impAvereCosto) + .setDesAgg(movr.getDesAgg()) + .setDataInizCompRisc(movr.getDataInizCompRisc()) + .setDataFineCompRisc(dataFineCompRisc) + .setPercDed(movr.getPercDed()); + + generaCtbMovrCoan(movCosto, movr.getNumCmov(), movr.getIdRiga()); + ctbMovr.add(movCosto); + } + + //Spostato fuori dall'if per avere le righe nel movimento contabile in ordine per competenza + if (movNewRisc != null ) ctbMovr.add(movNewRisc); + } + + CtbMovt ctbMovt = + new CtbMovt() + .setDataCmov(dataReg) + .setCodCcau(causale) + .setDescrizioneCaus(descrCausale) + .setImporto(importoTotMov); + ctbMovt.getCtbMovr().addAll(ctbMovr); + ctbMovt.setOperation(OperationType.INSERT); + + entityProcessor.processEntity(ctbMovt, multiDBTransactionManager); + return ctbMovt; + } else { + throw new Exception("Non ci sono movimenti da girocontare"); + } + } + private void generaCtbMovrCoan(CtbMovr ctbMovr, Integer numCmov, Integer idRiga) throws Exception { + + String query = "SELECT id_riga, id_riga_coan, cod_jcom, cod_jfas, imp_dare, imp_avere, note " + + "FROM ctb_movr_coan " + + "WHERE num_cmov = " + UtilityDB.valueToString(numCmov) + + " AND id_riga = " + UtilityDB.valueToString(idRiga); + List ctbMovrCoanList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, CtbMovrCoan.class); + + if (ctbMovrCoanList == null) { + ctbMovrCoanList = new ArrayList<>(); + } + BigDecimal totImpDareCoan = BigDecimal.ZERO, totImpAvereCoan = BigDecimal.ZERO; + for (CtbMovrCoan coan : ctbMovrCoanList) { + totImpDareCoan = totImpDareCoan.add(coan.getImpDare()); + totImpAvereCoan = totImpAvereCoan.add(coan.getImpAvere()); + } + + Integer riga = 0; + for (CtbMovrCoan coan : ctbMovrCoanList) { + riga++; + BigDecimal impDareCoan, impAvereCoan; + CtbMovrCoan movrCoan = new CtbMovrCoan(); + movrCoan.setIdRigaCoan(riga); + movrCoan.setCodJcom(coan.getCodJcom()); + movrCoan.setCodJfas(coan.getCodJfas()); + if (ctbMovr.getImpDare().subtract(ctbMovr.getImpAvere()).abs().compareTo(totImpDareCoan.subtract(totImpAvereCoan).abs()) != 0) { + impDareCoan = totImpDareCoan.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : coan.getImpDare().multiply(ctbMovr.getImpDare()).divide(totImpDareCoan, 5, RoundingMode.HALF_UP); + impAvereCoan = totImpAvereCoan.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : coan.getImpAvere().multiply(ctbMovr.getImpAvere()).divide(totImpAvereCoan, 5, RoundingMode.HALF_UP); + } else { + impDareCoan = coan.getImpDare(); + impAvereCoan = coan.getImpAvere(); + } + + movrCoan.setImpDare(totImpDareCoan.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : impDareCoan.divide(ctbMovr.getImpDare(), 10, RoundingMode.HALF_UP).multiply(ctbMovr.getImpDare()).setScale(2, RoundingMode.HALF_UP)); + movrCoan.setImpAvere(totImpAvereCoan.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : impAvereCoan.divide(ctbMovr.getImpAvere(), 10, RoundingMode.HALF_UP).multiply(ctbMovr.getImpAvere()).setScale(2, RoundingMode.HALF_UP)); + movrCoan.setNote(coan.getNote()); + + ctbMovr.getCtbMovrCoan().add(movrCoan); + if (riga == 1) { + ctbMovr.setCodJcom(coan.getCodJcom()); + ctbMovr.setCodJfas(coan.getCodJfas()); + } + } + } + + +} diff --git a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java index 3a19c80ca3..ca360a7b2c 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java +++ b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java @@ -845,7 +845,7 @@ public class DocumentProdService { Integer numOrd = carico.getNumOrd(); String codJfas = carico.getCodJfas(); - if (carico.getTerminaLavorazione().compareTo("N") == 0) { + if (carico.getTerminaLavorazione().equalsIgnoreCase("N")) { if (codJfas != null) { condFase = "mtb_colt.cod_jfas = " + UtilityDB.valueToString(codJfas); } @@ -920,7 +920,7 @@ public class DocumentProdService { .setCodDtip(carico.getCodDtipScar()) .setDataDoc(results.get(j).getDataDocFromCollo()) .setSerDoc(carico.getSerDoc()) - .setCodMdep(carico.getCodMdep()) + .setCodMdep(UtilityString.isNull(carico.getCodMdepScar(), carico.getCodMdep())) .setDataOrd(dataOrd) .setNumOrd(numOrd);