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

This commit is contained in:
2024-10-21 11:30:13 +02:00
7 changed files with 102 additions and 94 deletions

View File

@@ -54,12 +54,24 @@ public class TxtMapper<T> {
if (dtoField.maxLength() > 0 && !UtilityString.isNullOrEmpty(dtoField.fillChar())) {
UtilityString.H_POSITION position;
String segno = "";
int maxLength = dtoField.maxLength();
if (declaredField.getType() == Integer.class || declaredField.getType() == BigDecimal.class) {
position = UtilityString.H_POSITION.LEFT;
if (dtoField.showSign()) {
segno = value.substring(0, 1);
if (segno.equalsIgnoreCase("-") || segno.equalsIgnoreCase("+"))
value = value.substring(1);
else
segno="+";
maxLength = maxLength - 1;
}
} else {
position = UtilityString.H_POSITION.RIGHT;
}
value = UtilityString.fillString(value, dtoField.fillChar().charAt(0), dtoField.maxLength(), position);
value = UtilityString.fillString(value, dtoField.fillChar().charAt(0), maxLength, position);
value = segno + value;
}
if (ignorePosition)
@@ -208,10 +220,13 @@ public class TxtMapper<T> {
if (!UtilityString.isNullOrEmpty(dtoField.moltiplicatore())) {
value = ((BigDecimal) value).multiply(new BigDecimal(dtoField.moltiplicatore()));
}
value = value.toString();
if (!dtoField.showFloatPoint()) value = ((String) value).replaceAll("\\.", "").replaceAll(",", "");
if (!dtoField.showFloatPoint())
value = ((String) value).replaceAll("\\.", "").replaceAll(",", "");
else if (!UtilityString.isNullOrEmpty(dtoField.separator()))
value = ((String) value).replaceAll("\\.", dtoField.separator()).replaceAll(",", dtoField.separator());
} else if (value instanceof Integer) {
value = value.toString();
} else if (value instanceof Boolean) {

View File

@@ -23,4 +23,8 @@ public @interface DtoField {
String fillChar() default "";
boolean showFloatPoint() default false;
String separator() default "";
boolean showSign() default false;
}

View File

@@ -3,26 +3,32 @@ package it.integry.ems.contabil.dto;
import it.integry.ems_model.annotation.DtoField;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.util.Date;
public class ScadenzeDocFinanceDTO {
final String formatDate = "ddMMyyyy";
final String sepDec = ",";
@SqlField(value = "tipo_pagamento")
@DtoField(startPosition = 0, maxLength = 2, fillChar = " ")
private String tipoPagamento;
@SqlField(value = "importo")
@DtoField(startPosition = 2, maxLength = 16, fillChar = " ")
private String importo;
@DtoField(startPosition = 2, maxLength = 16, fillChar = "0", scale = 3, showFloatPoint = true, separator = sepDec, showSign = true)
private BigDecimal importo;
@SqlField(value = "divisa_scadenza")
@DtoField(startPosition = 18, maxLength = 5, fillChar = " ")
private String divisaScadenza;
@SqlField(value = "cambio")
@DtoField(startPosition = 23, maxLength = 9, fillChar = " ")
private String cambio;
@DtoField(startPosition = 23, maxLength = 9, fillChar = "0", scale = 3, showFloatPoint = true, separator = sepDec)
private BigDecimal cambio;
@SqlField(value = "controvalore")
@DtoField(startPosition = 32, maxLength = 16, fillChar = " ")
private String controvalore;
@DtoField(startPosition = 32, maxLength = 16, fillChar = "0", scale = 3, showFloatPoint = true, separator = sepDec, showSign = true)
private BigDecimal controvalore;
@SqlField(value = "document_type")
@DtoField(startPosition = 48, maxLength = 2, fillChar = " ")
@@ -37,12 +43,12 @@ public class ScadenzeDocFinanceDTO {
private String rating;
@SqlField(value = "data_scadenza")
@DtoField(startPosition = 57, maxLength = 8, fillChar = " ")
private String dataScadenza;
@DtoField(startPosition = 57, maxLength = 8, fillChar = " ", format = formatDate)
private Date dataScadenza;
@SqlField(value = "data_valuta")
@DtoField(startPosition = 65, maxLength = 8, fillChar = " ")
private String dataValuta;
@DtoField(startPosition = 65, maxLength = 8, fillChar = " ", format = formatDate)
private Date dataValuta;
@SqlField(value = "banca")
@DtoField(startPosition = 73, maxLength = 8, fillChar = " ")
@@ -129,8 +135,8 @@ public class ScadenzeDocFinanceDTO {
private String chkPaese;
@SqlField(value = "data_documento")
@DtoField(startPosition = 267, maxLength = 8, fillChar = " ")
private String dataDocumento;
@DtoField(startPosition = 267, maxLength = 8, fillChar = " ", format = formatDate)
private Date dataDocumento;
@SqlField(value = "note")
@DtoField(startPosition = 275, maxLength = 80, fillChar = " ")
@@ -185,15 +191,6 @@ public class ScadenzeDocFinanceDTO {
return this;
}
public String getImporto() {
return importo;
}
public ScadenzeDocFinanceDTO setImporto(String importo) {
this.importo = importo;
return this;
}
public String getDivisaScadenza() {
return divisaScadenza;
}
@@ -203,20 +200,20 @@ public class ScadenzeDocFinanceDTO {
return this;
}
public String getCambio() {
public BigDecimal getCambio() {
return cambio;
}
public ScadenzeDocFinanceDTO setCambio(String cambio) {
public ScadenzeDocFinanceDTO setCambio(BigDecimal cambio) {
this.cambio = cambio;
return this;
}
public String getControvalore() {
public BigDecimal getControvalore() {
return controvalore;
}
public ScadenzeDocFinanceDTO setControvalore(String controvalore) {
public ScadenzeDocFinanceDTO setControvalore(BigDecimal controvalore) {
this.controvalore = controvalore;
return this;
}
@@ -248,24 +245,33 @@ public class ScadenzeDocFinanceDTO {
return this;
}
public String getDataScadenza() {
public Date getDataScadenza() {
return dataScadenza;
}
public ScadenzeDocFinanceDTO setDataScadenza(String dataScadenza) {
public ScadenzeDocFinanceDTO setDataScadenza(Date dataScadenza) {
this.dataScadenza = dataScadenza;
return this;
}
public String getDataValuta() {
public Date getDataDocumento() {
return dataDocumento;
}
public Date getDataValuta() {
return dataValuta;
}
public ScadenzeDocFinanceDTO setDataValuta(String dataValuta) {
public ScadenzeDocFinanceDTO setDataValuta(Date dataValuta) {
this.dataValuta = dataValuta;
return this;
}
public ScadenzeDocFinanceDTO setDataDocumento(Date dataDocumento) {
this.dataDocumento = dataDocumento;
return this;
}
public String getBanca() {
return banca;
}
@@ -455,15 +461,6 @@ public class ScadenzeDocFinanceDTO {
return this;
}
public String getDataDocumento() {
return dataDocumento;
}
public ScadenzeDocFinanceDTO setDataDocumento(String dataDocumento) {
this.dataDocumento = dataDocumento;
return this;
}
public String getNote() {
return note;
}
@@ -562,4 +559,13 @@ public class ScadenzeDocFinanceDTO {
this.codiceMandato = codiceMandato;
return this;
}
public BigDecimal getImporto() {
return importo;
}
public ScadenzeDocFinanceDTO setImporto(BigDecimal importo) {
this.importo = importo;
return this;
}
}

View File

@@ -31,27 +31,14 @@ public class ScadenzeExporterService {
String codPagaRitAcc = setupGest.getSetup("CTB_SCAD", "COD_PAGA", "RITENUTA");
String sql = "SELECT gtb_tipi_paga_intercode.intercode AS 'tipo_pagamento',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(\n" +
" (ctb_scad.imp_dare + ctb_scad.imp_avere),\n" +
" IIF(ctb_scad.imp_dare - ctb_scad.imp_avere < 0 , '-', '+') + '00000000000.000'\n" +
" ) AS VARCHAR), '.', ',') AS 'importo',\n" +
" gtb_divi.cod_divi AS 'divisa_scadenza',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(ctb_part.cambio, '00000.000') AS VARCHAR), '.', ',') AS 'cambio',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(\n" +
" ((ctb_scad.imp_dare + ctb_scad.imp_avere) / ctb_part.cambio),\n" +
" IIF(ctb_part.tipo_partita = 0, '-', '+') + '00000000000.000'\n" +
" ) AS VARCHAR), '.',\n" +
" ',') AS 'controvalore',\n" +
" ctb_scad.imp_dare - ctb_scad.imp_avere AS 'importo',\n" +
" IsNull(gtb_divi.cod_divi_iso, gtb_divi.cod_divi) AS 'divisa_scadenza',\n" +
" ctb_part.cambio AS 'cambio',\n" +
" ((ctb_scad.imp_dare - ctb_scad.imp_avere) / ctb_part.cambio) AS 'controvalore',\n" +
" '00001' AS 'type',\n" +
" 'N' AS 'raiting',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_scad.data_scad, 103), '/', '') AS 'data_scadenza',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_scad.data_scad, 103), '/', '') AS 'data_valuta',\n" +
" ctb_scad.data_scad AS 'data_scadenza',\n" +
" ctb_scad.data_scad AS 'data_valuta',\n" +
" CASE WHEN c.banca_azi = 1 THEN LEFT(gtb_banc_azi_intercode.intercode, 8) ELSE '' END AS 'banca',\n" +
" CASE WHEN c.banca_azi = 1 THEN RIGHT(gtb_banc_azi_intercode.intercode, 4) ELSE '' END AS 'rbn',\n" +
" 'N' AS 'bloccata',\n" +
@@ -76,7 +63,7 @@ public class ScadenzeExporterService {
" CASE WHEN c.banca_azi = 1 THEN '' ELSE SUBSTRING(ctb_part.iban, 5, 1) END AS 'cin',\n" +
" CASE WHEN c.banca_azi = 1 THEN '' ELSE LEFT(ctb_part.iban, 2) END AS 'paese',\n" +
" CASE WHEN c.banca_azi = 1 THEN '' ELSE SUBSTRING(ctb_part.iban, 3, 2) END AS 'chk_paese',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_part.data_doc, 103), '/', '') AS 'data_documento',\n" +
" ctb_part.data_doc AS 'data_documento',\n" +
" ctb_parr.des_agg AS 'note',\n" +
" IIF(vtb_clie.cod_anag IS NULL, atb_forn.cod_bic, vtb_clie.cod_bic) AS 'cod_bic',\n" +
" CASE WHEN c.banca_azi = 1 THEN gtb_banc_azi.cod_iban ELSE ctb_part.iban END AS iban\n" +
@@ -87,11 +74,12 @@ public class ScadenzeExporterService {
" INNER JOIN gtb_anag ON ctb_part.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN gtb_paga ON ctb_scad.cod_paga = gtb_paga.cod_paga\n" +
" LEFT outer join gtb_tipi_paga on gtb_paga.tipo_paga = gtb_tipi_paga.tipo_paga\n" +
" LEFT OUTER JOIN gtb_tipi_paga_intercode ON gtb_tipi_paga.tipo_paga = gtb_tipi_paga_intercode.tipo_paga\n" +
" LEFT OUTER JOIN gtb_tipi_paga_intercode ON gtb_tipi_paga.tipo_paga = gtb_tipi_paga_intercode.tipo_paga AND\n" +
" gtb_tipi_paga_intercode.formato = " + UtilityDB.valueToString(format) +"\n" +
" LEFT OUTER JOIN gtb_banc ON ctb_part.cod_banc = gtb_banc.cod_banc\n" +
" LEFT OUTER JOIN gtb_banc_azi ON gtb_banc.cod_banc = gtb_banc_azi.cod_banc\n" +
" LEFT OUTER JOIN gtb_banc_azi_intercode ON gtb_banc_azi.cod_banc_azi = gtb_banc_azi_intercode.cod_banc_azi AND\n" +
" gtb_banc_azi_intercode.formato = 'docfi'\n" +
" gtb_banc_azi_intercode.formato = " + UtilityDB.valueToString(format) +"\n" +
" LEFT OUTER JOIN vtb_clie ON ctb_part.cod_anag = vtb_clie.cod_anag AND ctb_part.tipo_anag = 'C'\n" +
" LEFT OUTER JOIN atb_forn ON ctb_part.cod_anag = atb_forn.cod_anag AND ctb_part.tipo_anag = 'F'\n" +
" INNER JOIN gtb_divi ON ctb_part.cod_divi = gtb_divi.cod_divi\n" +
@@ -111,32 +99,14 @@ public class ScadenzeExporterService {
(UtilityString.isNullOrEmpty(codPagaRitAcc)?"":"AND ctb_scad.cod_paga <> " + UtilityDB.valueToString(codPagaRitAcc)) +
"UNION ALL\n" +
"SELECT 'RD' AS 'tipo_pagamento',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(\n" +
" (ctb_movr.imp_dare - ctb_movr.imp_avere),\n" +
" IIF(ctb_movr.imp_dare - ctb_movr.imp_avere > 0, '+', '-') + '00000000000.000'\n" +
" ) AS VARCHAR\n" +
" ), '.', ','\n" +
" ) AS 'importo',\n" +
" ctb_movt.cod_divi_cont AS 'divisa_scadenza',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(ctb_movt.cambio_divi_cont, '00000.000') AS VARCHAR\n" +
" ), '.', ','\n" +
" ) AS 'cambio',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(\n" +
" (ctb_movr.imp_dare - ctb_movr.imp_avere),\n" +
" IIF((ctb_movr.imp_dare - ctb_movr.imp_avere) > 0, '+', '') + '00000000000.000'\n" +
" ) AS VARCHAR\n" +
" ), '.', ','\n" +
" ) AS 'controlvalore',\n" +
" '01' AS 'type',\n" +
" (ctb_movr.imp_dare - ctb_movr.imp_avere) AS 'importo',\n" +
" IsNull(gtb_divi.cod_divi_iso, gtb_divi.cod_divi) AS 'divisa_scadenza',\n" +
" ctb_movt.cambio_divi_cont AS 'cambio',\n" +
" (ctb_movr.imp_dare - ctb_movr.imp_avere) AS 'controlvalore',\n" +
" '0001' AS 'type',\n" +
" 'N' AS 'raiting',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_movt.data_cmov, 103), '/', '') AS 'data_scadenza',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_movt.data_cmov, 103), '/', '') AS 'data_valuta',\n" +
" ctb_movt.data_cmov AS 'data_scadenza',\n" +
" ctb_movt.data_cmov AS 'data_valuta',\n" +
" '' AS 'banca',\n" +
" '' AS 'rbn',\n" +
" 'N' AS 'bloccata',\n" +
@@ -159,7 +129,7 @@ public class ScadenzeExporterService {
" '' AS cin,\n" +
" '' AS paese,\n" +
" '' AS chk_paese,\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_movt.data_cmov, 103), '/', '') AS 'data_documento',\n" +
" ctb_movt.data_cmov AS 'data_documento',\n" +
" ctb_movr.des_agg AS 'note',\n" +
" '' AS 'cod_bic',\n" +
" '' AS 'iban'\n" +
@@ -167,12 +137,16 @@ public class ScadenzeExporterService {
" INNER JOIN ctb_movt\n" +
" ON ctb_movr.num_cmov = ctb_movt.num_cmov\n" +
" INNER JOIN gtb_anag ON ctb_movr.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN gtb_divi ON ctb_movt.cod_divi_cont = gtb_divi.cod_divi\n" +
" INNER JOIN ctb_caus ON ctb_movt.cod_ccau = ctb_caus.cod_ccau AND ctb_caus.flag_ap_ch = 'N'\n" +
" LEFT OUTER JOIN ctb_movr_intercode ON ctb_movr.num_cmov = ctb_movr_intercode.num_cmov AND\n" +
" ctb_movr.id_riga = ctb_movr_intercode.id_riga\n" +
"WHERE anno_part IS NULL \n" +
" AND (gtb_anag.part_iva Is null OR gtb_anag.part_iva not in (SELECT part_iva FROM azienda))\n";
sql = "SELECT * FROM (" + sql + ") t ORDER BY t.piano_dei_conti, chiave_coge";
List<ScadenzeDocFinanceDTO> scadenzeDocFinance = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, ScadenzeDocFinanceDTO.class);
TxtMapper<ScadenzeDocFinanceDTO> txtMapper = new TxtMapper<ScadenzeDocFinanceDTO>()

View File

@@ -172,7 +172,7 @@ public class RossoGarganoSyncService {
" (rg_crl_movt.data_ins is null OR pnota.PN_DATA_MODIFICA >= CAST(FORMAT(DATEPART(YEAR, rg_crl_movt.data_ins), '0000') +\n" +
" FORMAT(DATEPART(MONTH, rg_crl_movt.data_ins), '00') +\n" +
" FORMAT(DATEPART(DAY, rg_crl_movt.data_ins), '00') AS NUMERIC) " +
(chkPartita?"OR t.has_part <> ISNULL(m.has_partita, 0)":"") + ") \n "
(chkPartita?"OR (t.has_part = 1 and isNull(m.has_partita, 0) = 0) ":"") + ") \n "
+ (UtilityString.isNullOrEmpty(whereCond) ? "" : " AND " + whereCond) +
"ORDER BY PNOTA.PN_DATA_COMPETENZA, PNOTA.PN_NRO_REG",
dataIniz, dataFine);

View File

@@ -30,7 +30,7 @@ public class AnagraficaExporter extends BaseEntityExporter implements IEntityExp
return slim2kService.export(type, format);
case DOCFINANCE:
AnagraficaDocFinanceService anagraficaDocFinanceService = context.getBean(AnagraficaDocFinanceService.class);
return anagraficaDocFinanceService.exportDocFinance(super.type, super.format);
return anagraficaDocFinanceService.exportDocFinance(type, format, jsonBody);
default:
throw new Exception(String.format("Formato %s non supportato", format));
}

View File

@@ -1,5 +1,6 @@
package it.integry.ems.system.export.services.anagrafiche;
import com.fasterxml.jackson.databind.JsonNode;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.file_formatter.txt.TxtMapper;
import it.integry.ems.response.FileItem;
@@ -7,6 +8,7 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.export.dto.AnagraficaDocFinanceDTO;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityString;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@@ -23,10 +25,15 @@ public class AnagraficaDocFinanceService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
public EntityExportResponse<List<FileItem>> exportDocFinance(String type, String format) throws Exception {
public EntityExportResponse<List<FileItem>> exportDocFinance(String type, String format, JsonNode body) throws Exception {
EntityExportResponse<List<FileItem>> entityExportResponse = new EntityExportResponse<>();
entityExportResponse.setResponse(new ArrayList<>());
boolean exportAllAnag = false;
if (body.has("exportAllAnag")) {
exportAllAnag = body.get("exportAllAnag").asBoolean();
}
String sql = "SELECT 'ROSSOGARGA' AS azienda,\n" +
" IIF(diacod > 0, diacod, ctb_anag.cod_ccon + gtb_anag.cod_anag) AS codice_pdc,\n" +
" IIF(vtb_clie.cod_anag IS NULL, 'F', 'C') AS tipo,\n" +
@@ -61,8 +68,9 @@ public class AnagraficaDocFinanceService {
" LEFT OUTER JOIN atb_forn ON gtb_anag.cod_anag = atb_forn.cod_anag\n" +
" LEFT OUTER JOIN gtb_banc_azi_intercode ON vtb_clie.cod_banc_azi = gtb_banc_azi_intercode.cod_banc_azi AND\n" +
" gtb_banc_azi_intercode.formato = 'DOCFINANCE'\n" +
(exportAllAnag?"":
"WHERE (data_ins >= CAST(GETDATE() AS DATE)\n" +
" OR data_mod = CAST(GETDATE() AS DATE))\n" +
" OR data_mod = CAST(GETDATE() AS DATE))\n" )+
"UNION ALL\n" +
"SELECT 'ROSSOGARGA' AS azienda,\n" +
" IIF(diacod > 0, diacod, ctb_cont.cod_ccon) AS codice_pdc,\n" +
@@ -91,8 +99,9 @@ public class AnagraficaDocFinanceService {
" NULL AS cod_bic,\n" +
" NULL AS voce_finanziaria\n" +
"FROM ctb_cont\n" +
(exportAllAnag?"":
"WHERE (data_ins >= CAST(GETDATE() AS DATE)\n" +
" OR data_mod = CAST(GETDATE() AS DATE))";
" OR data_mod = CAST(GETDATE() AS DATE))");
List<AnagraficaDocFinanceDTO> anagraficaDocFinance = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AnagraficaDocFinanceDTO.class);
TxtMapper<AnagraficaDocFinanceDTO> txtMapper = new TxtMapper<AnagraficaDocFinanceDTO>()