Merge branch 'develop' into feature/SpostaUl
This commit is contained in:
@@ -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)");
|
||||
}
|
||||
|
||||
@@ -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" +
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
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_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";
|
||||
|
||||
@@ -277,7 +277,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
||||
@SqlField(value = "peso", maxLength = 20)
|
||||
private String peso;
|
||||
|
||||
@SqlField(value = "porto", maxLength = 20)
|
||||
@SqlField(value = "porto", maxLength = 40)
|
||||
private String porto;
|
||||
|
||||
@SqlField(value = "qta_evasa_prod", defaultObjectValue = "0")
|
||||
@@ -381,6 +381,9 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
||||
@SqlField(value = "incoterms", maxLength = 20)
|
||||
private String incoterms;
|
||||
|
||||
@SqlField(value = "note_incoterms", maxLength = 20)
|
||||
private String noteIncoterms;
|
||||
|
||||
private BigDecimal cambio;
|
||||
|
||||
private String userName;
|
||||
@@ -1378,6 +1381,15 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNoteIncoterms() {
|
||||
return noteIncoterms;
|
||||
}
|
||||
|
||||
public DtbOrdt setNoteIncoterms(String noteIncoterms) {
|
||||
this.noteIncoterms = noteIncoterms;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DtbOrdr> getRows() {
|
||||
return getDtbOrdr();
|
||||
|
||||
@@ -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<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)
|
||||
public @ResponseBody
|
||||
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.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<String, Object> 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<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));
|
||||
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<String, Object> 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<String, Object> 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 =
|
||||
|
||||
@@ -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<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 {
|
||||
String query;
|
||||
Connection PrimaryConn = multiDBTransactionManager.getPrimaryConnection();
|
||||
@@ -1476,15 +1299,6 @@ public class ContabilService {
|
||||
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 {
|
||||
|
||||
String sql =
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user