Merge branch 'develop' into feature/SpostaUl
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package it.integry.ems.migration.model;
|
package it.integry.ems.migration.model;
|
||||||
|
|
||||||
import it.integry.ems.migration._base.BaseMigration;
|
import it.integry.ems.migration._base.BaseMigration;
|
||||||
|
import it.integry.ems.migration._base.IntegryCustomerDB;
|
||||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||||
|
|
||||||
public class Migration_20250226143555 extends BaseMigration implements MigrationModelInterface {
|
public class Migration_20250226143555 extends BaseMigration implements MigrationModelInterface {
|
||||||
@@ -10,6 +11,9 @@ public class Migration_20250226143555 extends BaseMigration implements Migration
|
|||||||
if (isHistoryDB())
|
if (isHistoryDB())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (isCustomerDb(IntegryCustomerDB.Siciliani_DMS))
|
||||||
|
return;
|
||||||
|
|
||||||
executeStatement("alter table dtb_ordt add incoterms varchar(20)",
|
executeStatement("alter table dtb_ordt add incoterms varchar(20)",
|
||||||
"alter table vtb_viaggi add note_incoterms varchar(20)");
|
"alter table vtb_viaggi add note_incoterms varchar(20)");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package it.integry.ems.migration.model;
|
package it.integry.ems.migration.model;
|
||||||
|
|
||||||
import it.integry.ems.migration._base.BaseMigration;
|
import it.integry.ems.migration._base.BaseMigration;
|
||||||
|
import it.integry.ems.migration._base.IntegryCustomerDB;
|
||||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||||
|
|
||||||
public class Migration_20250227122632 extends BaseMigration implements MigrationModelInterface {
|
public class Migration_20250227122632 extends BaseMigration implements MigrationModelInterface {
|
||||||
@@ -10,6 +11,8 @@ public class Migration_20250227122632 extends BaseMigration implements Migration
|
|||||||
if (isHistoryDB())
|
if (isHistoryDB())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (isCustomerDb(IntegryCustomerDB.Siciliani_DMS))
|
||||||
|
return;
|
||||||
|
|
||||||
createOrUpdateFunction("getSospesoClienti_completa", "CREATE FUNCTION [dbo].[getSospesoClienti_completa]\n" +
|
createOrUpdateFunction("getSospesoClienti_completa", "CREATE FUNCTION [dbo].[getSospesoClienti_completa]\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
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 {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void up() throws Exception {
|
||||||
|
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)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void down() throws Exception {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
executeStatement("update stb_menu set flag_attivo = 'N' where cod_opz = 'AR012'");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void down() throws Exception {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -541,5 +541,33 @@ public class AccountingBusinessLogic {
|
|||||||
return importoCompetenza;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -476,7 +476,6 @@ public class EmsRestConstants {
|
|||||||
public static final String PATH_REGISTRA_MOVCONV_AMMORTAMENTI = PATH + "registraMovContAmmortamenti";
|
public static final String PATH_REGISTRA_MOVCONV_AMMORTAMENTI = PATH + "registraMovContAmmortamenti";
|
||||||
public static final String PATH_CHK_AUTOFATTURA = PATH + "chkAutofattura";
|
public static final String PATH_CHK_AUTOFATTURA = PATH + "chkAutofattura";
|
||||||
public static final String PATH_PASSAGGIO_ANNO = PATH + "passaggioAnno";
|
public static final String PATH_PASSAGGIO_ANNO = PATH + "passaggioAnno";
|
||||||
public static final String PATH_REG_GIRO_RISCONTI = PATH + "registraGirocontoRisconti";
|
|
||||||
//SLIM2k
|
//SLIM2k
|
||||||
public static final String PATH_IMPORT_COLLI_SLIM2K = PATH + "importColliSlim2k";
|
public static final String PATH_IMPORT_COLLI_SLIM2K = PATH + "importColliSlim2k";
|
||||||
public static final String PATH_IMPORT_COLLI_ACQ_SLIM2K = PATH + "importColliAcqSlim2k";
|
public static final String PATH_IMPORT_COLLI_ACQ_SLIM2K = PATH + "importColliAcqSlim2k";
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
|||||||
@SqlField(value = "peso", maxLength = 20)
|
@SqlField(value = "peso", maxLength = 20)
|
||||||
private String peso;
|
private String peso;
|
||||||
|
|
||||||
@SqlField(value = "porto", maxLength = 20)
|
@SqlField(value = "porto", maxLength = 40)
|
||||||
private String porto;
|
private String porto;
|
||||||
|
|
||||||
@SqlField(value = "qta_evasa_prod", defaultObjectValue = "0")
|
@SqlField(value = "qta_evasa_prod", defaultObjectValue = "0")
|
||||||
@@ -381,6 +381,9 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
|||||||
@SqlField(value = "incoterms", maxLength = 20)
|
@SqlField(value = "incoterms", maxLength = 20)
|
||||||
private String incoterms;
|
private String incoterms;
|
||||||
|
|
||||||
|
@SqlField(value = "note_incoterms", maxLength = 20)
|
||||||
|
private String noteIncoterms;
|
||||||
|
|
||||||
private BigDecimal cambio;
|
private BigDecimal cambio;
|
||||||
|
|
||||||
private String userName;
|
private String userName;
|
||||||
@@ -1378,6 +1381,15 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getNoteIncoterms() {
|
||||||
|
return noteIncoterms;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DtbOrdt setNoteIncoterms(String noteIncoterms) {
|
||||||
|
this.noteIncoterms = noteIncoterms;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DtbOrdr> getRows() {
|
public List<DtbOrdr> getRows() {
|
||||||
return getDtbOrdr();
|
return getDtbOrdr();
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import it.integry.ems.javabeans.RequestDataDTO;
|
|||||||
import it.integry.ems.response.EsitoType;
|
import it.integry.ems.response.EsitoType;
|
||||||
import it.integry.ems.response.ServiceRestResponse;
|
import it.integry.ems.response.ServiceRestResponse;
|
||||||
import it.integry.ems.response.StatusResponse;
|
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.base.CapCittaProv;
|
||||||
import it.integry.ems.service.comuni.entities.Comune;
|
import it.integry.ems.service.comuni.entities.Comune;
|
||||||
import it.integry.ems.service.comuni.exceptions.ComuniException;
|
import it.integry.ems.service.comuni.exceptions.ComuniException;
|
||||||
@@ -31,6 +32,7 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.xml.ws.soap.SOAPFaultException;
|
import javax.xml.ws.soap.SOAPFaultException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -182,22 +184,6 @@ public class ContabilController {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = EmsRestConstants.PATH_REG_GIRO_RISCONTI, method = RequestMethod.POST)
|
|
||||||
public @ResponseBody
|
|
||||||
List<ServiceRestResponse> creaMovGiroRisconti(HttpServletRequest request,
|
|
||||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
|
||||||
@RequestParam("dataReg") Date dataReg,
|
|
||||||
@RequestParam("causale") String codCcau) {
|
|
||||||
List<ServiceRestResponse> listResponse = new ArrayList<ServiceRestResponse>();
|
|
||||||
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)
|
@RequestMapping(value = "/checkPartitaIva", method = RequestMethod.POST)
|
||||||
public @ResponseBody
|
public @ResponseBody
|
||||||
ServiceRestResponse checkPartitaIva(@RequestParam(required = false, defaultValue = "true") boolean enableLocationCheck,
|
ServiceRestResponse checkPartitaIva(@RequestParam(required = false, defaultValue = "true") boolean enableLocationCheck,
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package it.integry.ems.contabil.service;
|
|||||||
import it.integry.common.var.CommonConstants;
|
import it.integry.common.var.CommonConstants;
|
||||||
import it.integry.ems.contabil.dto.CalcAmmortamentoDTO;
|
import it.integry.ems.contabil.dto.CalcAmmortamentoDTO;
|
||||||
import it.integry.ems.contabil.dto.RegMovConAmmortamentoDTO;
|
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.rules.completing.QueryRules;
|
||||||
import it.integry.ems.service.EntityProcessor;
|
import it.integry.ems.service.EntityProcessor;
|
||||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||||
@@ -195,9 +196,9 @@ public class AmmortamentiService {
|
|||||||
|
|
||||||
// Inizializzazione variabili
|
// Inizializzazione variabili
|
||||||
Integer annoFondo = calcAmmDTO.getAnno();
|
Integer annoFondo = calcAmmDTO.getAnno();
|
||||||
HashMap<String, Object> datiPeriodoFisc = contabilService.getPeriodoFisc(annoFondo);
|
GtbPeriodoFisc gtbPeriodoFisc = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), annoFondo);
|
||||||
Date dataInizAnnFondo = (Date) datiPeriodoFisc.get("data_iniz");
|
Date dataInizAnnFondo = gtbPeriodoFisc.getDataIniz();
|
||||||
Date dataFineAnnFondo = (Date) datiPeriodoFisc.get("data_fine");
|
Date dataFineAnnFondo = gtbPeriodoFisc.getDataFine();
|
||||||
|
|
||||||
// Cancellazione fondi dell'anno
|
// Cancellazione fondi dell'anno
|
||||||
cancellaFondi(calcAmmDTO);
|
cancellaFondi(calcAmmDTO);
|
||||||
@@ -416,7 +417,9 @@ public class AmmortamentiService {
|
|||||||
HashMap<String, Object> toReturn = new HashMap<>();
|
HashMap<String, Object> 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));
|
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")){
|
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 {
|
} else {
|
||||||
toReturn.put("data_iniz", null);
|
toReturn.put("data_iniz", null);
|
||||||
toReturn.put("data_fine", null);
|
toReturn.put("data_fine", null);
|
||||||
@@ -641,9 +644,9 @@ public class AmmortamentiService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void aggiornaStampaReg(RegMovConAmmortamentoDTO regMovConAmmortamentoDTO) throws Exception {
|
public void aggiornaStampaReg(RegMovConAmmortamentoDTO regMovConAmmortamentoDTO) throws Exception {
|
||||||
HashMap<String, Object> datiPeriodoFisc = contabilService.getPeriodoFisc(regMovConAmmortamentoDTO.getAnnoComp());
|
GtbPeriodoFisc gtbPeriodoFisc = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), regMovConAmmortamentoDTO.getAnnoComp());
|
||||||
Date dataInizAnnpComp = (Date) datiPeriodoFisc.get("data_iniz");
|
Date dataInizAnnpComp = gtbPeriodoFisc.getDataIniz();
|
||||||
Date dataFineAnnpComp = (Date) datiPeriodoFisc.get("data_fine");
|
Date dataFineAnnpComp = gtbPeriodoFisc.getDataFine();
|
||||||
String whereCondCatBeni = UtilityString.replaceSubString(regMovConAmmortamentoDTO.getWhereCondCatBeni(), "dtb_catbeni", "ctb_beni");
|
String whereCondCatBeni = UtilityString.replaceSubString(regMovConAmmortamentoDTO.getWhereCondCatBeni(), "dtb_catbeni", "ctb_beni");
|
||||||
|
|
||||||
// Controllo che non ci siano anni inferiori all'anno di competenza ancora da stampare
|
// 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();
|
CtbMovt movT = new CtbMovt();
|
||||||
Integer rigaMov = 0;
|
Integer rigaMov = 0;
|
||||||
|
|
||||||
HashMap<String, Object> datiPeriodoFisc = contabilService.getPeriodoFisc(regMovConAmmortamentoDTO.getAnnoComp());
|
GtbPeriodoFisc gtbPeriodoFisc = AccountingBusinessLogic.getPeriodoFisc(multiDBTransactionManager.getPrimaryConnection(), regMovConAmmortamentoDTO.getAnnoComp());
|
||||||
Date dataInizAnnoComp = (Date) datiPeriodoFisc.get("data_iniz");
|
Date dataInizAnnoComp = gtbPeriodoFisc.getDataIniz();
|
||||||
Date dataFineAnnpComp = (Date) datiPeriodoFisc.get("data_fine");
|
Date dataFineAnnpComp = gtbPeriodoFisc.getDataFine();
|
||||||
String descCaus = (String) QueryRules.getSingleValue(multiDBTransactionManager.getPrimaryConnection(), "SELECT descrizione FROM ctb_caus WHERE cod_ccau = " + UtilityDB.valueToString(regMovConAmmortamentoDTO.getCodCcau()));
|
String descCaus = (String) QueryRules.getSingleValue(multiDBTransactionManager.getPrimaryConnection(), "SELECT descrizione FROM ctb_caus WHERE cod_ccau = " + UtilityDB.valueToString(regMovConAmmortamentoDTO.getCodCcau()));
|
||||||
|
|
||||||
query =
|
query =
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import it.integry.ems.sync.MultiDBTransaction.Connection;
|
|||||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||||
import it.integry.ems.utility.UtilityEntity;
|
import it.integry.ems.utility.UtilityEntity;
|
||||||
import it.integry.ems_model.base.EntityBase;
|
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.db.ResultSetMapper;
|
||||||
import it.integry.ems_model.entity.*;
|
import it.integry.ems_model.entity.*;
|
||||||
import it.integry.ems_model.exception.EntityException;
|
import it.integry.ems_model.exception.EntityException;
|
||||||
@@ -807,184 +808,6 @@ public class ContabilService {
|
|||||||
return listaCtbParr;
|
return listaCtbParr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EntityBase> creaMovGiroRisconti(Date dataReg, String causale) throws Exception {
|
|
||||||
List<CtbMovt> entityList = new ArrayList<CtbMovt>();
|
|
||||||
Connection connection = multiDBTransactionManager.getPrimaryConnection();
|
|
||||||
|
|
||||||
BigDecimal importoTotMov = BigDecimal.ZERO;
|
|
||||||
int anno = UtilityDate.datePart(Calendar.YEAR, dataReg);
|
|
||||||
HashMap<String, Object> 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<CtbMovr> ctbMovrList = UtilityDB.executeSimpleQueryDTO(connection, query, CtbMovr.class);
|
|
||||||
if (ctbMovrList != null && !ctbMovrList.isEmpty()) {
|
|
||||||
List<CtbMovr> 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<CtbMovrCoan> 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<EntityBase> creaMovContFrontSt(String codMdep) throws Exception {
|
public List<EntityBase> creaMovContFrontSt(String codMdep) throws Exception {
|
||||||
String query;
|
String query;
|
||||||
Connection PrimaryConn = multiDBTransactionManager.getPrimaryConnection();
|
Connection PrimaryConn = multiDBTransactionManager.getPrimaryConnection();
|
||||||
@@ -1476,15 +1299,6 @@ public class ContabilService {
|
|||||||
return ctbMovtList;
|
return ctbMovtList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String, Object> getPeriodoFisc(Integer anno) throws Exception {
|
|
||||||
String sql = "SELECT data_iniz, data_fine FROM gtb_periodo_fisc WHERE anno = " + UtilityDB.valueToString(anno);
|
|
||||||
HashMap<String, Object> 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 {
|
public void allineaPartitaContabili() throws Exception {
|
||||||
|
|
||||||
String sql =
|
String sql =
|
||||||
|
|||||||
@@ -154,18 +154,14 @@ public class PassaggioAnno {
|
|||||||
listEntityBase.add(anniDivi);
|
listEntityBase.add(anniDivi);
|
||||||
}
|
}
|
||||||
|
|
||||||
query = "SELECT count(*) FROM gtb_periodo_fisc WHERE anno = " + (annoAttuale + 1);
|
for ( int i = 1; i <= 10; i++ ) {
|
||||||
find = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, query);
|
LocalDate.of(annoAttuale + i, azienda.getMeseInizAnnoFisc(), azienda.getGiornoInizAnnoFisc());
|
||||||
|
Date dataInizPeriodoFisc = UtilityDate.dateFromPart(annoAttuale + i, azienda.getMeseInizAnnoFisc(), azienda.getGiornoInizAnnoFisc());
|
||||||
if (find == 0) {
|
|
||||||
LocalDate.of(annoAttuale + 1, azienda.getMeseInizAnnoFisc(), azienda.getGiornoInizAnnoFisc());
|
|
||||||
Date dataInizPeriodoFisc = UtilityDate.dateFromPart(annoAttuale + 1, azienda.getMeseInizAnnoFisc(), azienda.getGiornoInizAnnoFisc());
|
|
||||||
Date dataFinePeriodoFisc = UtilityDate.dateAdd(Calendar.YEAR, 1, dataInizPeriodoFisc);
|
Date dataFinePeriodoFisc = UtilityDate.dateAdd(Calendar.YEAR, 1, dataInizPeriodoFisc);
|
||||||
dataFinePeriodoFisc = UtilityDate.dateAdd(Calendar.DATE, -1, dataFinePeriodoFisc);
|
dataFinePeriodoFisc = UtilityDate.dateAdd(Calendar.DATE, -1, dataFinePeriodoFisc);
|
||||||
|
|
||||||
GtbPeriodoFisc periodoFisc =
|
GtbPeriodoFisc periodoFisc =
|
||||||
new GtbPeriodoFisc()
|
new GtbPeriodoFisc()
|
||||||
.setAnno(annoAttuale + 1)
|
.setAnno(annoAttuale + i)
|
||||||
.setDataIniz(dataInizPeriodoFisc)
|
.setDataIniz(dataInizPeriodoFisc)
|
||||||
.setDataFine(dataFinePeriodoFisc);
|
.setDataFine(dataFinePeriodoFisc);
|
||||||
periodoFisc.setOperation(OperationType.DELETE_THEN_INSERT);
|
periodoFisc.setOperation(OperationType.DELETE_THEN_INSERT);
|
||||||
|
|||||||
@@ -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<CtbMovr> ctbMovrList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, CtbMovr.class);
|
||||||
|
if (ctbMovrList != null && !ctbMovrList.isEmpty()) {
|
||||||
|
List<CtbMovr> 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<CtbMovrCoan> 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -845,7 +845,7 @@ public class DocumentProdService {
|
|||||||
Integer numOrd = carico.getNumOrd();
|
Integer numOrd = carico.getNumOrd();
|
||||||
String codJfas = carico.getCodJfas();
|
String codJfas = carico.getCodJfas();
|
||||||
|
|
||||||
if (carico.getTerminaLavorazione().compareTo("N") == 0) {
|
if (carico.getTerminaLavorazione().equalsIgnoreCase("N")) {
|
||||||
if (codJfas != null) {
|
if (codJfas != null) {
|
||||||
condFase = "mtb_colt.cod_jfas = " + UtilityDB.valueToString(codJfas);
|
condFase = "mtb_colt.cod_jfas = " + UtilityDB.valueToString(codJfas);
|
||||||
}
|
}
|
||||||
@@ -920,7 +920,7 @@ public class DocumentProdService {
|
|||||||
.setCodDtip(carico.getCodDtipScar())
|
.setCodDtip(carico.getCodDtipScar())
|
||||||
.setDataDoc(results.get(j).getDataDocFromCollo())
|
.setDataDoc(results.get(j).getDataDocFromCollo())
|
||||||
.setSerDoc(carico.getSerDoc())
|
.setSerDoc(carico.getSerDoc())
|
||||||
.setCodMdep(carico.getCodMdep())
|
.setCodMdep(UtilityString.isNull(carico.getCodMdepScar(), carico.getCodMdep()))
|
||||||
.setDataOrd(dataOrd)
|
.setDataOrd(dataOrd)
|
||||||
.setNumOrd(numOrd);
|
.setNumOrd(numOrd);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user