From 44e78b336f37e81a035dd3221bb4b96cbc5a3808 Mon Sep 17 00:00:00 2001 From: MinaR Date: Tue, 9 Apr 2024 14:45:45 +0200 Subject: [PATCH 01/10] aggiornamento vista --- .../model/Migration_20240409131537.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409131537.java diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409131537.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409131537.java new file mode 100644 index 0000000000..6632d75d2b --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409131537.java @@ -0,0 +1,59 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240409131537 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateView("cvw_saldiAnagAnno", "CREATE view cvw_saldiAnagAnno as \n" + + "select cod_anag, cod_ccon, anno_comp, sum(saldo_iniz) as saldo_iniz, sum(dare) as dare, sum(avere) as avere from (\n" + + "SELECT ctb_movr.cod_anag,\n" + + " ctb_movr.cod_ccon,\n" + + " ctb_movt.anno_comp,\n" + + " 0 AS saldo_iniz,\n" + + " SUM(imp_dare) AS dare,\n" + + " SUM(imp_avere) AS avere\n" + + "FROM ctb_anag,\n" + + " ctb_caus,\n" + + " ctb_movr,\n" + + " ctb_movt\n" + + "WHERE (ctb_caus.cod_ccau = ctb_movr.cod_ccau)\n" + + " AND (ctb_anag.cod_anag = ctb_movr.cod_anag)\n" + + " AND (ctb_anag.cod_ccon = ctb_movr.cod_ccon)\n" + + " AND (ctb_movt.num_cmov = ctb_movr.num_cmov)\n" + + " AND ((ctb_caus.flag_ap_ch <> 'A' AND ctb_caus.flag_ap_ch <> 'F'))\n" + + "GROUP BY ctb_movr.cod_anag, ctb_movr.cod_ccon, ctb_movt.anno_comp\n" + + "UNION\n" + + "SELECT ctb_movr.cod_anag,\n" + + " ctb_movr.cod_ccon,\n" + + " ctb_movt.anno_comp,\n" + + " SUM(imp_dare - imp_avere) AS saldo_iniz,\n" + + " 0 AS dare,\n" + + " 0 AS avere\n" + + "FROM ctb_anag,\n" + + " ctb_caus,\n" + + " ctb_movr,\n" + + " ctb_movt\n" + + "WHERE (ctb_caus.cod_ccau = ctb_movr.cod_ccau)\n" + + " AND (ctb_anag.cod_anag = ctb_movr.cod_anag)\n" + + " AND (ctb_anag.cod_ccon = ctb_movr.cod_ccon)\n" + + " AND (ctb_movt.num_cmov = ctb_movr.num_cmov)\n" + + " AND ((ctb_caus.flag_ap_ch = 'A'))\n" + + "GROUP BY ctb_movr.cod_anag, ctb_movr.cod_ccon, ctb_movt.anno_comp\n" + + ") t \n" + + "group by cod_anag, cod_ccon, anno_comp"); + + } + + @Override + public void down() throws Exception { + + } + +} From 6f0ec7ad47b7ab2c9e5ceab3a3d8e14ddfd384eb Mon Sep 17 00:00:00 2001 From: FabioN Date: Tue, 9 Apr 2024 17:02:01 +0200 Subject: [PATCH 02/10] Sistemato problema codice EAN imballo su EAN 128 della funzione f_getEAN128UL --- .../model/Migration_20240409155144.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409155144.java diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409155144.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409155144.java new file mode 100644 index 0000000000..c7e8ba8287 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409155144.java @@ -0,0 +1,17 @@ +package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240409155144 extends BaseMigration implements MigrationModelInterface{ + + @Override + public void up()throws Exception { + if(isHistoryDB()) + return; + } + + @Override + public void down()throws Exception{ + + } + +} \ No newline at end of file From 4c4a3a99c2a93a11653d0303d55bc03d04ecb587 Mon Sep 17 00:00:00 2001 From: FabioN Date: Tue, 9 Apr 2024 17:02:18 +0200 Subject: [PATCH 03/10] Sistemato problema codice EAN imballo su EAN 128 della funzione f_getEAN128UL --- .../model/Migration_20240409155144.java | 177 +++++++++++++++++- 1 file changed, 172 insertions(+), 5 deletions(-) diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409155144.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409155144.java index c7e8ba8287..11264a0d6a 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409155144.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409155144.java @@ -1,16 +1,183 @@ -package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration; +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; import it.integry.ems.migration._base.MigrationModelInterface; -public class Migration_20240409155144 extends BaseMigration implements MigrationModelInterface{ +public class Migration_20240409155144 extends BaseMigration implements MigrationModelInterface { @Override - public void up()throws Exception { - if(isHistoryDB()) + public void up() throws Exception { + if (isHistoryDB()) return; + + createOrUpdateFunction("f_getEAN128UL", "CREATE FUNCTION [dbo].[f_getEAN128UL](@gestione VARCHAR(1), @dataCollo DATETIME, @serCollo VARCHAR(2), @numCollo int, @customPrefissoEan VARCHAR(7))\n" + + " RETURNS TABLE AS\n" + + " RETURN\n" + + "\n" + + "-- DECLARE @gestione AS VARCHAR(1) = 'L'\n" + + "-- DECLARE @serCollo AS VARCHAR(10) = '/'\n" + + "-- DECLARE @numCollo AS INT = 4427\n" + + "-- DECLARE @dataCollo AS DATETIME = '2024-02-05';\n" + + "-- DECLARE @customPrefissoEan AS VARCHAR(7);-- = '8017596';\n" + + "\n" + + "WITH barcodes AS (\n" + + " SELECT CONCAT(CASE WHEN @customPrefissoEan IS NULL THEN azienda.prefisso_ean ELSE @customPrefissoEan END,\n" + + " CAST(CAST(mtb_colt.num_collo / 100000 AS INT) AS varchar),\n" + + " CASE mtb_colt.gestione\n" + + " WHEN 'A' THEN '1'\n" + + " WHEN 'L' THEN '2'\n" + + " WHEN 'V' THEN '3' END,\n" + + " RIGHT(CAST(DATEPART(YEAR, mtb_colt.data_collo) AS varchar), 2),\n" + + " RIGHT(FORMAT(mtb_colt.num_collo, REPLICATE('0', 5)), 5)) AS AI_00,\n" + + " CASE\n" + + " WHEN mtb_aart.cod_barre_imb IS NOT NULL AND LEN(mtb_aart.cod_barre_imb) < 14 THEN\n" + + " FORMAT(CONVERT(NUMERIC, ISNULL(NULLIF(mtb_aart.cod_barre_imb, ''), '0')), REPLICATE('0', 14))\n" + + " ELSE mtb_aart.cod_barre_imb\n" + + " END AS AI_01,\n" + + " CASE\n" + + " WHEN mtb_aart.bar_code IS NOT NULL AND LEN(mtb_aart.bar_code) < 14\n" + + " THEN\n" + + " FORMAT(CONVERT(BIGINT, mtb_aart.bar_code), REPLICATE('0', 14))\n" + + " ELSE mtb_aart.bar_code\n" + + " END AS AI_02,\n" + + " CASE\n" + + " WHEN mtb_colr.partita_mag IS NOT NULL THEN\n" + + " mtb_colr.partita_mag + CHAR(29)\n" + + " END AS AI_10,\n" + + " CASE\n" + + " WHEN mtb_partita_mag.data_scad IS NOT NULL THEN\n" + + " REPLACE(CONVERT(varchar(10), mtb_partita_mag.data_scad, 2), '.', '')\n" + + " END AS AI_15,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 6 THEN\n" + + " REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '000000'), '.', '')\n" + + " END AS AI_3100,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 5 THEN\n" + + " REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '00000.0'), '.', '')\n" + + " END AS AI_3101,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 4 THEN\n" + + " REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '0000.00'), '.', '')\n" + + " END AS AI_3102,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 3 THEN\n" + + " REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '000.000'), '.', '')\n" + + " END AS AI_3103,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 2 THEN\n" + + " REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '00.0000'), '.', '')\n" + + " END AS AI_3104,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 1 THEN\n" + + " REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '0.00000'), '.', '')\n" + + " END AS AI_3105,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 6 THEN\n" + + " REPLACE(FORMAT(mtb_colt.peso_kg, '000000'), '.', '')\n" + + " END AS AI_3300,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 5 THEN\n" + + " REPLACE(FORMAT(mtb_colt.peso_kg, '00000.0'), '.', '')\n" + + " END AS AI_3301,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 4 THEN\n" + + " REPLACE(FORMAT(mtb_colt.peso_kg, '0000.00'), '.', '')\n" + + " END AS AI_3302,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 3 THEN\n" + + " REPLACE(FORMAT(mtb_colt.peso_kg, '000.000'), '.', '')\n" + + " END AS AI_3303,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 2 THEN\n" + + " REPLACE(FORMAT(mtb_colt.peso_kg, '00.0000'), '.', '')\n" + + " END AS AI_3304,\n" + + " CASE\n" + + " WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 1 THEN\n" + + " REPLACE(FORMAT(mtb_colt.peso_kg, '0.00000'), '.', '')\n" + + " END AS AI_3305,\n" + + " CONVERT(varchar, CONVERT(integer, SUM(mtb_colr.qta_col / mtb_colr.qta_cnf))) AS AI_37\n" + + " FROM mtb_colt\n" + + " INNER JOIN mtb_colr\n" + + " ON mtb_colt.gestione = mtb_colr.gestione and mtb_colt.data_collo = mtb_colr.data_collo and\n" + + " mtb_colt.ser_collo = mtb_colr.ser_collo and mtb_colt.num_collo = mtb_colr.num_collo\n" + + " INNER JOIN mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" + + " LEFT outer JOIN mtb_partita_mag ON mtb_colr.cod_mart = mtb_partita_mag.cod_mart AND\n" + + " mtb_colr.partita_mag = mtb_partita_mag.partita_mag,\n" + + " azienda\n" + + " WHERE mtb_colt.gestione = @gestione\n" + + " AND mtb_colt.data_collo = @dataCollo\n" + + " AND mtb_colt.ser_collo = @serCollo\n" + + " AND mtb_colt.num_collo = @numCollo\n" + + " GROUP BY mtb_colr.qta_col,\n" + + " mtb_colr.qta_cnf,\n" + + " mtb_colt.data_vers,\n" + + " nome_ditta,\n" + + " azienda.indirizzo,\n" + + " azienda.cap,\n" + + " azienda.citta,\n" + + " azienda.prov,\n" + + " prefisso_ean,\n" + + " mtb_colt.data_collo,\n" + + " mtb_colt.num_collo,\n" + + " mtb_aart.cod_barre_imb,\n" + + " mtb_aart.bar_code,\n" + + " mtb_aart.descrizione_estesa,\n" + + " mtb_colr.partita_mag,\n" + + " mtb_partita_mag.data_scad,\n" + + " mtb_colt.peso_netto_kg,\n" + + " mtb_colr.cod_mart, \n" + + "\t\t\t mtb_colt.gestione,\n" + + "\t\t\t mtb_colt.peso_kg,\n" + + "\t\t\t mtb_aart.peso_kg\n" + + "),\n" + + " appoggio AS (\n" + + " SELECT CONCAT(\n" + + " REPLICATE('0', 17 - LEN(AI_00)),\n" + + " AI_00) AS AI_00,\n" + + " CASE WHEN AI_01 IS NOT NULL AND LEN(AI_01) = 13 THEN CONCAT(AI_01, dbo.getCheckDigitITF14(AI_01)) ELSE AI_01 END AS AI_01,\n" + + " AI_02,\n" + + " AI_10,\n" + + " AI_15,\n" + + " AI_3100,\n" + + " AI_3101,\n" + + " AI_3102,\n" + + " AI_3103,\n" + + " AI_3104,\n" + + " AI_3105,\n" + + " AI_3300,\n" + + " AI_3301,\n" + + " AI_3302,\n" + + " AI_3303,\n" + + " AI_3304,\n" + + " AI_3305,\n" + + " AI_37\n" + + " FROM barcodes\n" + + " )\n" + + "SELECT CONCAT(AI_00,\n" + + " dbo.getCheckDigitSSCC(AI_00)) AS AI_00,\n" + + " AI_01,\n" + + " AI_02,\n" + + " AI_10,\n" + + " AI_15,\n" + + " AI_3100,\n" + + " AI_3101,\n" + + " AI_3102,\n" + + " AI_3103,\n" + + " AI_3104,\n" + + " AI_3105,\n" + + " AI_3300,\n" + + " AI_3301,\n" + + " AI_3302,\n" + + " AI_3303,\n" + + " AI_3304,\n" + + " AI_3305,\n" + + " AI_37\n" + + "FROM appoggio"); } @Override - public void down()throws Exception{ + public void down() throws Exception { } From daf4bc347e80d2183239955b37be1d4892d490cf Mon Sep 17 00:00:00 2001 From: MinaR Date: Tue, 9 Apr 2024 18:12:45 +0200 Subject: [PATCH 04/10] Sistemati controlli su anno contabile a cavallo, aggiunga migration per setupGest, importazione Rosso gargano --- .../ems/migration/_base/BaseMigration.java | 20 ++- .../model/Migration_20240409163647.java | 46 ++++++ .../model/Migration_20240409165638.java | 35 ++++ .../ems/rules/completing/AccountingRules.java | 17 +- .../rules/completing/DocumentCheckRules.java | 80 ++++----- .../ems/rules/completing/DocumentRules.java | 15 +- .../it/integry/ems_model/entity/CtbMovt.java | 6 +- .../src/main/resources/rules/contabilita.drl | 2 +- .../contabil/service/AmmortamentiService.java | 11 -- .../service/RossoGarganoSyncService.java | 6 + .../ems/contabil/service/ScadenzeService.java | 6 +- .../controller/SystemMigrationController.java | 17 ++ .../service/SystemMigrationService.java | 153 +++++++++++++++++- 13 files changed, 325 insertions(+), 89 deletions(-) create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409163647.java create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409165638.java diff --git a/ems-core/src/main/java/it/integry/ems/migration/_base/BaseMigration.java b/ems-core/src/main/java/it/integry/ems/migration/_base/BaseMigration.java index 7eeb589806..1a91b0c856 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/_base/BaseMigration.java +++ b/ems-core/src/main/java/it/integry/ems/migration/_base/BaseMigration.java @@ -19,6 +19,7 @@ import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityString; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.bouncycastle.its.operator.ITSContentSigner; import org.springframework.web.context.ContextLoader; import java.io.IOException; @@ -177,8 +178,11 @@ public abstract class BaseMigration implements MigrationModelInterface { executeStatement(dropSql); } - protected void createSetupQuery(String codQuery, String name, String query, boolean override) throws SQLException, IOException { + if (UtilityString.isNullOrEmpty(codQuery)) { + executeStatement(Query.format("EXEC sp_insertQuerySetup %s", query)); + return; + } boolean existQuery = false; if(override) { String sql = Query.format("SELECT cast(count(*) as bit) FROM stb_gest_setup_query WHERE cod_query = %s", codQuery); @@ -261,12 +265,26 @@ public abstract class BaseMigration implements MigrationModelInterface { ps.executeUpdate(); } } + protected void createSetup(String gestName, String section, String keySection, String value, String description, boolean flagSync, String codQuery, boolean flagUserView, boolean flagSetupDepo, boolean flagSetupUserWeb, boolean flagTipoJson, boolean flagTipoColore, String tipoSetup, boolean flagMultiValue ) throws Exception { + createSetup(gestName, section,keySection, value, description, flagSync, codQuery, flagUserView, flagSetupDepo, + flagSetupUserWeb, flagTipoJson, flagTipoColore, tipoSetup, flagMultiValue, null); + } + + protected void createSetup(String gestName, String section, String keySection, String value, String description, boolean flagSync, + String codQuery, boolean flagUserView, boolean flagSetupDepo, boolean flagSetupUserWeb, + boolean flagTipoJson, boolean flagTipoColore, String tipoSetup, boolean flagMultiValue, + String query) throws Exception { if (existsSetup(gestName, section, keySection)) return; + if (!UtilityString.isNullOrEmpty(query) && UtilityString.isNullOrEmpty(codQuery)) { + codQuery = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), + Query.format("SELECT cod_query FROM stb_gest_setup_query WHERE cod_query = %s", query)); + } + String insertSql = "INSERT INTO " + StbGestSetup.ENTITY + " (gest_name, section, key_section, value, description, flag_sync, query_default,\n" + "flag_user_view, flag_setup_depo, flag_setup_user_web,\n" + diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409163647.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409163647.java new file mode 100644 index 0000000000..628664f4f4 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409163647.java @@ -0,0 +1,46 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240409163647 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateView("[cvw_saldiContAnno]", "CREATE view [dbo].[cvw_saldiContAnno] as \n" + + "select cod_ccon, anno_comp, SUM(saldo_iniz) as saldo_iniz, SUM(dare) as dare, SUM(avere) as avere\n" + + "from (\n" + + "SELECT ctb_movr.cod_ccon, ctb_movt.anno_comp, 0 AS saldo_iniz, SUM(imp_dare) AS dare, SUM(imp_avere) AS avere\n" + + "FROM ctb_cont,\n" + + " ctb_caus,\n" + + " ctb_movr,\n" + + " ctb_movt\n" + + "WHERE (ctb_caus.cod_ccau = ctb_movr.cod_ccau)\n" + + " AND (ctb_cont.cod_ccon = ctb_movr.cod_ccon)\n" + + " AND (ctb_movt.num_cmov = ctb_movr.num_cmov)\n" + + " AND ((ctb_caus.flag_ap_ch <> 'A' AND ctb_caus.flag_ap_ch <> 'F'))\n" + + "GROUP BY ctb_movr.cod_ccon, ctb_movt.anno_comp\n" + + "UNION\n" + + "SELECT ctb_movr.cod_ccon, ctb_movt.anno_comp, SUM(imp_dare - imp_avere) AS saldo_iniz, 0 AS dare, 0 AS avere\n" + + "FROM ctb_cont,\n" + + " ctb_caus,\n" + + " ctb_movr,\n" + + " ctb_movt\n" + + "WHERE (ctb_caus.cod_ccau = ctb_movr.cod_ccau)\n" + + " AND (ctb_cont.cod_ccon = ctb_movr.cod_ccon)\n" + + " AND (ctb_movt.num_cmov = ctb_movr.num_cmov)\n" + + " AND ((ctb_caus.flag_ap_ch = 'A'))\n" + + "GROUP BY ctb_movr.cod_ccon, ctb_movt.anno_comp) t\n" + + "GROUP BY cod_ccon, anno_comp"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409165638.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409165638.java new file mode 100644 index 0000000000..175204ce7f --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409165638.java @@ -0,0 +1,35 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240409165638 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateView("[cvw_mov_black_list]", "CREATE VIEW cvw_mov_black_list AS\n" + + "SELECT crl_movt_rif_cmov.num_cmov, \n" + + " ctb_movt.num_cmov as num_cmov_rif,\n" + + " ctb_movt.data_cmov, \n" + + " ctb_movt.cod_ccau, \n" + + " ctb_movt.cod_anag, \n" + + " gtb_anag.rag_soc,\n" + + " ctb_movt.data_doc, \n" + + " ctb_movt.ser_doc, \n" + + " ctb_movt.num_doc,\n" + + " ctb_movt.importo\n" + + "FROM crl_movt_rif_cmov, ctb_movt, gtb_anag\n" + + "WHERE crl_movt_rif_cmov.num_cmov_rif = ctb_movt.num_cmov AND \n" + + " ctb_movt.cod_anag = gtb_anag.cod_anag"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/AccountingRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/AccountingRules.java index 18764fd6d5..645ce0d614 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/AccountingRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/AccountingRules.java @@ -20,6 +20,8 @@ import java.util.*; public class AccountingRules extends QueryRules { + + public static Integer completeNumIreg(Connection connection, String codIreg) throws Exception { String sql = "SELECT min(num_ireg) as min FROM ctb_inum WHERE cod_ireg = " + UtilityDB.valueToString(codIreg); @@ -118,19 +120,16 @@ public class AccountingRules extends QueryRules { } - public static Integer completeAnnoComp(Connection conn, Date dataCmov) throws SQLException { - if (dataCmov == null) { - SimpleDateFormat formatDate = new SimpleDateFormat("yyyy"); - Date now = new Date(); - return Integer.valueOf(formatDate.format(now)); - } + public static Integer getAnnoComp(Connection conn, Date dataCmov) throws SQLException { + if (dataCmov == null) + return UtilityLocalDate.getNow().getYear(); + String sql = Query.format( - "SELECT anno FROM gtb_periodo_fisc WHERE %s BETWEEN data_iniz AND data_fine", + "SELECT dbo.f_getAnnoFisc(%s)", dataCmov ); - Short annoComp = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); - return annoComp.intValue(); + return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); } public static String getCodBiva(Connection connection, String codAnag) throws Exception { diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/DocumentCheckRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/DocumentCheckRules.java index 62a5090e1d..3937ab0f07 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/DocumentCheckRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/DocumentCheckRules.java @@ -7,10 +7,7 @@ import it.integry.ems_model.entity.DtbDocr; import it.integry.ems_model.entity.DtbDoct; import it.integry.ems_model.entity.NtbDoct; import it.integry.ems_model.types.OperationType; -import it.integry.ems_model.utility.UtilityDB; -import it.integry.ems_model.utility.UtilityDate; -import it.integry.ems_model.utility.UtilityHashMap; -import it.integry.ems_model.utility.UtilityString; +import it.integry.ems_model.utility.*; import java.math.BigDecimal; import java.sql.Connection; @@ -35,7 +32,8 @@ public class DocumentCheckRules { Integer annoAtt = new Integer(DatiAzi.get("anno_attuale").toString()); Integer annoContab = new Integer(DatiAzi.get("anno_contab").toString()); Date ultDataGio = dateformat.parse(DatiAzi.get("ult_data_gio").toString()); - Integer annoMov = Integer.valueOf(annoFormat.format(dataCmov)).intValue(); + + Integer annoMov = AccountingRules.getAnnoComp(conn, dataCmov); Integer numIreg = entity.getDtbTipi().getNumIreg(); String codIreg = entity.getDtbTipi().getCodIreg(); @@ -76,31 +74,26 @@ public class DocumentCheckRules { } private static void checkData(DtbDoct entity, Connection conn) throws Exception { - Date dataToChk = null; - Integer ggUtili = 0, segnoLiquid = 0; - PreparedStatement info; - ResultSet res; - SimpleDateFormat annoFormat = new SimpleDateFormat("yyyy"); - Date dataNow = new Date(); +// Date dataToChk = null; +// Integer ggUtili = 0, segnoLiquid = 0; +// PreparedStatement info; +// ResultSet res; +// SimpleDateFormat annoFormat = new SimpleDateFormat("yyyy"); +// Date dataNow = new Date(); // ACQUISIZION DATI DOCUMENTO String codCcau = entity.getDtbTipi().getCodCcau(); - String codIreg = entity.getDtbTipi().getCodIreg(); // ACQUISIZIONE DATI REGISTRO String sql = - "SELECT segno_liquid " + + "SELECT Cast(segno_liquid as int)" + " FROM ctb_ireg" + " WHERE cod_ireg = " + UtilityDB.valueToString(codIreg); - info = conn.prepareStatement(sql); - res = info.executeQuery(); - while (res.next()) { - segnoLiquid = res.getInt(1); - } - res.close(); - info.close(); + Integer segnoLiquid = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); + + Date dataToChk; if (segnoLiquid == 1) { dataToChk = entity.getDataDoc(); } else { @@ -115,11 +108,16 @@ public class DocumentCheckRules { HashMap DatiAzi = Azienda.getDatiAzienda(conn); Integer annoAtt = new Integer(DatiAzi.get("anno_attuale").toString()); Integer annoMagaz = new Integer(DatiAzi.get("anno_magaz").toString()); + + Integer ggUtili = 0; if (DatiAzi.get("gg_utili") != null) { ggUtili = new Integer(DatiAzi.get("gg_utili").toString()); } - Integer annoComp = Integer.valueOf(annoFormat.format(dataToChk)).intValue(); - Integer giorni = UtilityDate.DaysAfter(dataToChk, dataNow); + + + Integer annoComp = AccountingRules.getAnnoComp(conn, dataToChk); + + Integer giorni = UtilityDate.DaysAfter(dataToChk, UtilityDate.getTodayWithoutTime()); // CONTROLLO DATA MOVIMENTO if (codIreg != null && codCcau != null) { @@ -130,10 +128,8 @@ public class DocumentCheckRules { throw new Exception("Data non ammessa. Anno documento diverso da anno magazzino e anno attuale."); } // CONTROLLO GIORNI UTILI PER LA MODIFICA - if (ggUtili != 0 && ggUtili > 0 && codCcau != null) { - if (giorni > ggUtili) { - throw new Exception("Data non ammessa. Giorni utili per la modifica " + ggUtili + "."); - } + if (ggUtili != 0 && ggUtili > 0 && codCcau != null && giorni > ggUtili) { + throw new Exception("Data non ammessa. Giorni utili per la modifica " + ggUtili + "."); } } @@ -239,12 +235,6 @@ public class DocumentCheckRules { } public static Boolean checkDataDoc(Connection conn, DtbDoct entity) throws Exception { - String sql; - Date dataRegNew = null; - PreparedStatement info; - ResultSet res; - SimpleDateFormat annoFormat = new SimpleDateFormat("yyyy"); - // ACQUISIZIONE DATI CHIAVE String codAnag = entity.getCodAnag(); String codDtip = entity.getCodDtip(); @@ -255,22 +245,16 @@ public class DocumentCheckRules { String gestione = entity.getGestione(); /*LEGGERE DA ENTITY*/ // ACQUSIZIONE DATI DOCUMENTO + Date dataRegNew = null; if (dataReg == null) { - sql = - "SELECT data_reg " + - " FROM dtb_doct" + - " WHERE cod_anag = " + UtilityDB.valueToString(codAnag) + " AND " + - " cod_dtip = " + UtilityDB.valueToString(codDtip) + " AND " + - " data_doc = " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + " AND " + - " ser_doc = " + UtilityDB.valueToString(serDoc) + " AND " + - " num_doc = " + UtilityDB.valueToString(numDoc); - info = conn.prepareStatement(sql); - res = info.executeQuery(); - while (res.next()) { - dataRegNew = res.getDate(1); - } - res.close(); - info.close(); + String sql = "SELECT data_reg " + + " FROM dtb_doct" + + " WHERE cod_anag = " + UtilityDB.valueToString(codAnag) + " AND " + + " cod_dtip = " + UtilityDB.valueToString(codDtip) + " AND " + + " data_doc = " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + " AND " + + " ser_doc = " + UtilityDB.valueToString(serDoc) + " AND " + + " num_doc = " + UtilityDB.valueToString(numDoc); + dataRegNew = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); } else { dataRegNew = dataReg; } @@ -309,7 +293,7 @@ public class DocumentCheckRules { } HashMap DatiAzi = Azienda.getDatiAzienda(conn); - Integer annoDoc = Integer.valueOf(annoFormat.format(dataRegNew)).intValue(); + Integer annoDoc = AccountingRules.getAnnoComp(conn, dataRegNew); Integer annoCont = new Integer(DatiAzi.get("anno_contab").toString()); Integer annoAtt = new Integer(DatiAzi.get("anno_attuale").toString()); if (!(annoDoc.equals(annoCont) || annoDoc.equals(annoAtt))) { diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/DocumentRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/DocumentRules.java index f0a5c8364f..be773b299e 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/DocumentRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/DocumentRules.java @@ -311,20 +311,9 @@ public class DocumentRules extends QueryRules { Integer annoContab = Integer.parseInt(datiAzienda.get("anno_contab").toString()); Integer annoMagaz = Integer.parseInt(datiAzienda.get("anno_magaz").toString()); - sql = - Query.format( - "SELECT anno\n" + - "FROM gtb_periodo_fisc\n" + - "WHERE %s BETWEEN data_iniz AND data_fine", dataReg); + Short annoCompCosto = AccountingRules.getAnnoComp(conn, dataReg).shortValue(); - Short annoCompCosto = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); - - sql = - Query.format( - "SELECT anno\n" + - "FROM gtb_periodo_fisc\n" + - "WHERE %s BETWEEN data_iniz AND data_fine", dtbDocr.getDataReg()); - Short annoCompDoc = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); + Short annoCompDoc = AccountingRules.getAnnoComp(conn, dtbDocr.getDataReg()).shortValue(); if (annoCompCosto < annoCompDoc && annoContab == annoCompDoc - 1 && annoMagaz == annoCompDoc - 1) { isDocAp = true; diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/CtbMovt.java b/ems-core/src/main/java/it/integry/ems_model/entity/CtbMovt.java index c9c619095b..3f0e7b7d16 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/CtbMovt.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/CtbMovt.java @@ -852,11 +852,15 @@ public class CtbMovt extends EntityBase { ps.close(); if (ctbScad == null || ctbScad.size() == 0) { query = "SELECT DISTINCT cs.tipo_anag,\n" + " cs.cod_anag,\n" + " cs.anno_part,\n" + " cs.ser_doc,\n" + " cs.num_doc,\n" + " cs.id_riga\n" + "FROM ctb_movt\n" + " INNER JOIN ctb_caus ON ctb_movt.cod_ccau = ctb_caus.cod_ccau\n" + " INNER JOIN ctb_scad cs ON DatePart(Year, ctb_movt.data_doc) = cs.anno_part AND\n" + " ctb_movt.tipo_anag = cs.tipo_anag AND\n" + " ctb_movt.cod_anag = cs.cod_anag AND\n" + " ctb_movt.ser_doc = cs.ser_doc AND\n" + " ctb_movt.num_doc = cs.num_doc\n" + "WHERE ctb_movt.num_cmov = " + getNumCmov() + "\n" + " AND ctb_caus.azione_su_partita = 0"; - ctbScad = new ResultSetMapper().mapQuerySetToList(connection, query, CtbScad.class, OperationType.DELETE); + List del = new ResultSetMapper().mapQuerySetToList(connection, query, CtbScad.class, OperationType.DELETE); + if (del != null) + for ( CtbScad s: del) + s.manageWithParentConnection(connection, s.getOperation(), dataCompleting, entityHolder); } if (ctbPart == null) { query = "SELECT cs.tipo_anag,\n" + " cs.cod_anag,\n" + " cs.anno_part,\n" + " cs.ser_doc,\n" + " cs.num_doc\n" + "FROM ctb_movt\n" + " INNER JOIN ctb_caus ON ctb_movt.cod_ccau = ctb_caus.cod_ccau\n" + " INNER JOIN ctb_part cs ON DatePart(Year, ctb_movt.data_doc) = cs.anno_part AND\n" + " ctb_movt.tipo_anag = cs.tipo_anag AND\n" + " ctb_movt.cod_anag = cs.cod_anag AND\n" + " ctb_movt.ser_doc = cs.ser_doc AND\n" + " ctb_movt.num_doc = cs.num_doc\n" + "WHERE ctb_movt.num_cmov = " + getNumCmov() + "\n" + " AND ctb_caus.azione_su_partita = 0"; ctbPart = new ResultSetMapper().mapQueryToObject(connection, query, CtbPart.class, OperationType.DELETE); + if (ctbPart != null) ctbPart.manageWithParentConnection(connection, ctbPart.getOperation(), dataCompleting, entityHolder); } } diff --git a/ems-core/src/main/resources/rules/contabilita.drl b/ems-core/src/main/resources/rules/contabilita.drl index 558b8e542f..63e5eff24b 100644 --- a/ems-core/src/main/resources/rules/contabilita.drl +++ b/ems-core/src/main/resources/rules/contabilita.drl @@ -82,7 +82,7 @@ when eval(completeRulesEnabled) $entity : CtbMovt(annoComp == null) then - Integer anno = AccountingRules.completeAnnoComp( conn, $entity.getDataCmov()); + Integer anno = AccountingRules.getAnnoComp( conn, $entity.getDataCmov()); modify ( $entity ) { setAnnoComp(anno) } end diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/service/AmmortamentiService.java b/ems-engine/src/main/java/it/integry/ems/contabil/service/AmmortamentiService.java index dae9fc05dc..d1a0672c19 100644 --- a/ems-engine/src/main/java/it/integry/ems/contabil/service/AmmortamentiService.java +++ b/ems-engine/src/main/java/it/integry/ems/contabil/service/AmmortamentiService.java @@ -75,17 +75,6 @@ public class AmmortamentiService { } } - - - private Integer getAnnoFisc(Date dataVal) throws Exception { - query = "SELECT anno FROM gtb_periodo_fisc WHERE " + UtilityDB.valueDateToString(dataVal, CommonConstants.DATE_FORMAT_YMD) + " between data_iniz and data_fine"; - Integer annoFisc = (Integer) QueryRules.getSingleValue(multiDBTransactionManager.getPrimaryConnection(), query); - if (annoFisc == null) { - throw new Exception("Impossibile individuare l'anno fiscale dalla data " + UtilityDB.valueDateToString(dataVal, CommonConstants.DATE_FORMAT_DMY)); - } - return annoFisc; - } - private BigDecimal getResiduo(Integer anno, String codBene, String tipo) throws Exception { BigDecimal residuo = null; diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/service/RossoGarganoSyncService.java b/ems-engine/src/main/java/it/integry/ems/contabil/service/RossoGarganoSyncService.java index ab41460926..361816b765 100644 --- a/ems-engine/src/main/java/it/integry/ems/contabil/service/RossoGarganoSyncService.java +++ b/ems-engine/src/main/java/it/integry/ems/contabil/service/RossoGarganoSyncService.java @@ -446,6 +446,12 @@ public class RossoGarganoSyncService { codDtip = "TD16"; } + String sql = Query.format("SELECT segno_ireg FROM ctb_caus WHERE cod_ccau = %s ", ctbMovt.getCodCcau()); + BigDecimal segnoReg = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); + if (UtilityBigDecimal.lowerThan(segnoReg, BigDecimal.ZERO) ) { + codDtip = "N" + codDtip; + } + AutofatturaDTO autofatturaDTO = new AutofatturaDTO().setCodDtip(codDtip) .setDescrizione(String.format("AUTOFATTURA EMESSA A FRONTE DELLA FATTURA N.%s DEL %s", diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/service/ScadenzeService.java b/ems-engine/src/main/java/it/integry/ems/contabil/service/ScadenzeService.java index a57c963bb1..0bfef23875 100644 --- a/ems-engine/src/main/java/it/integry/ems/contabil/service/ScadenzeService.java +++ b/ems-engine/src/main/java/it/integry/ems/contabil/service/ScadenzeService.java @@ -45,10 +45,8 @@ public class ScadenzeService { if (ctbScads != null && ctbScads.size() > 0 ) { List collect = ctbScads.stream().map( - x -> { - return String.format("Cod anag: %s - %s, anno_part: %s, numero: %s/%s ", - x.getTipoAnag(), x.getCodAnag(), x.getAnnoPart(), x.getSerDoc(), x.getNumDoc()); - } + x -> String.format("Cod anag: %s - %s, anno_part: %s, numero: %s/%s ", + x.getTipoAnag(), x.getCodAnag(), x.getAnnoPart(), x.getSerDoc(), x.getNumDoc()) ).collect(Collectors.toList()); String elencoScadenze = String.join(CommonConstants.A_CAPO, collect); diff --git a/ems-engine/src/main/java/it/integry/ems/system/controller/SystemMigrationController.java b/ems-engine/src/main/java/it/integry/ems/system/controller/SystemMigrationController.java index 8b4efaf1c1..eab97f08f7 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/controller/SystemMigrationController.java +++ b/ems-engine/src/main/java/it/integry/ems/system/controller/SystemMigrationController.java @@ -4,6 +4,8 @@ import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.system.dto.SqlObjectDTO; import it.integry.ems.system.service.SystemMigrationService; import it.integry.ems.utility.UtilityDebug; +import it.integry.ems_model.base.EntityBase; +import it.integry.ems_model.entity.StbGestSetup; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.web.bind.annotation.*; @@ -38,4 +40,19 @@ public class SystemMigrationController { return ServiceRestResponse.createPositiveResponse(); } + @RequestMapping(value = "createFromGestSetup", method = RequestMethod.POST) + public @ResponseBody + ServiceRestResponse createFromGestSetup(@RequestBody List entityBaseList) throws Exception { + + if (!UtilityDebug.isDebugExecution()) + throw new Exception("Puoi eseguire questa procedura solo in ambiente DEBUG!"); + + if (UtilityDebug.isIntegryServerDev()) + throw new Exception("Non puoi eseguire questa azione su SERVERDEV!"); + + systemMigrationService.createFromGestSetup(entityBaseList); + + return ServiceRestResponse.createPositiveResponse(); + } + } diff --git a/ems-engine/src/main/java/it/integry/ems/system/service/SystemMigrationService.java b/ems-engine/src/main/java/it/integry/ems/system/service/SystemMigrationService.java index deb756fc21..af4b55c515 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/service/SystemMigrationService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/service/SystemMigrationService.java @@ -5,9 +5,17 @@ import it.integry.ems.migration._base.BaseMigration; import it.integry.ems.migration.dto.SqlObjectTypeEnum; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.system.dto.SqlObjectDTO; +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.entity.StbGestSetup; +import it.integry.ems_model.entity.StbGestSetupQuery; +import it.integry.ems_model.service.SetupGest; +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.UtilityLocalDate; +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; @@ -17,8 +25,15 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service @Scope(value = "request") @@ -73,6 +88,142 @@ public class SystemMigrationService { return readObjects; } + public void createFromGestSetup(List entityBaseList) throws IOException { + String migrationClassName = "Migration_" + CommonConstants.TIMESTAMP_FORMATTER.format(UtilityLocalDate.getNowTime()); + + StringBuilder classBuilder = new StringBuilder("package it.integry.ems.migration.model;\n" + + "\n" + + "import it.integry.ems.migration._base.BaseMigration;\n" + + "import it.integry.ems.migration._base.MigrationModelInterface;\n" + + "\n" + + "public class " + migrationClassName + " extends BaseMigration implements MigrationModelInterface {\n" + + "\n" + + " @Override\n" + + " public void up() throws Exception {\n" + + " if (isHistoryDB())\n" + + " return;\n" + + "\n" + + "\n"); + + + for (StbGestSetup setup:entityBaseList){ + + String operation; + if (setup.getOperation() == OperationType.DELETE) { + operation = formatSetup("deleteSetup(%s, %s, %s);", setup.getGestName(), setup.getSection(), setup.getKeySection()); + + classBuilder.append("\t\t" + operation) + .append("\r\n"); + } else { + if (!UtilityString.isNullOrEmpty(setup.getQueryDefault())){ + operation = + formatSetup( + "createSetupQuery(%s, %s, %s, %s);", + setup.getCodQuery(),setup.getCodQuery(),setup.getQueryDefault(), false); + classBuilder.append("\t\t" + operation) + .append("\r\n"); + } + + operation = + formatSetup( + "createSetup(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);", + setup.getGestName(), + setup.getSection(), + setup.getKeySection(), + setup.getValue(), + setup.getDescription(), + setup.getFlagSync().equalsIgnoreCase("S"), + setup.getCodQuery(), + setup.getFlagUserView().equalsIgnoreCase("S"), + setup.getFlagSetupDepo().equalsIgnoreCase("S"), + setup.getFlagSetupUserWeb().equalsIgnoreCase("S"), + setup.getFlagTipoJson().equalsIgnoreCase("S"), + UtilityString.equalsIgnoreCase(setup.getFlagTipoColore(),"S"), + setup.getTipoSetup(), + setup.getFlagMultiValue()==null?false:setup.getFlagMultiValue(), + setup.getQueryDefault() ); + + classBuilder.append("\t\t" + operation) + .append("\r\n"); + } + } + + classBuilder.append( + " }\n" + + "\n" + + " @Override\n" + + " public void down() throws Exception {\n" + + "\n" + + " }\n" + + "\n" + + "}\n"); + + + String executionPath = new File(BaseMigration.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getAbsolutePath(); + final String baseProjectPath = executionPath.substring(0, executionPath.indexOf("ems-engine\\target")) + "ems-core\\src\\main\\"; + final String migrationsJavaPath = baseProjectPath + "java\\it\\integry\\ems\\migration\\model\\"; + final String migrationsJavaFile = migrationsJavaPath + migrationClassName + ".java"; + writeContentToFile(migrationsJavaFile, classBuilder.toString(), true); + } + + private static String formatSetup(String string, Object... params) { + String[] formattedParams = new String[params.length]; + for(int i = 0; i < params.length; i++) { + if (params[i] == null || params[i].equals(EmsRestConstants.NULL)) { + formattedParams[i] = "null"; + } else { + String className = params[i].getClass().getName(); + int pos = className.lastIndexOf("."); + if (pos > 0) { + String type = className.substring(pos + 1).toUpperCase(); + formattedParams[i] = params[i].toString(); + + if (formattedParams[i].length() == 0) { + formattedParams[i] = "null"; + } else { + switch (type) { + case "STRING": + formattedParams[i] = "\"" + formattedParams[i].replaceAll("\"", "''").replaceAll("’", "''") + "\""; + break; + case "DATE": { + SimpleDateFormat dateFormatFile = new SimpleDateFormat("yyyy-MM-dd"); + formattedParams[i] = "\"" + dateFormatFile.format(params[i]) + "\""; + break; + } + case "LOCALDATE": { + formattedParams[i] = "\"" + CommonConstants.DATE_YMD_DASHED_FORMATTER.format((LocalDate) params[i]) + "\""; + break; + } + case "LOCALDATETIME": { + formattedParams[i] = "\"" + CommonConstants.DATETIME_YMD_DASHED_FORMATTER.format((LocalDateTime) params[i]) + "\""; + break; + } + case "TIMESTAMP": + case "INSTANT": { + if (type.equalsIgnoreCase("INSTANT")) { + params[i] = Date.from((Instant) params[i]); + } + + SimpleDateFormat dateFormatFile = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + formattedParams[i] = "\"" + dateFormatFile.format(params[i]) + "\""; + break; + } + case "BOOLEAN": + formattedParams[i] = ((Boolean) params[i]) ? "true" : "false"; + break; + } + } + } else { + formattedParams[i] = null; + } + } + } + + return String.format(string, formattedParams); + } + + + public void createMigrationFileFromSqlObjects(List sqlObjects) throws IOException { @@ -107,7 +258,7 @@ public class SystemMigrationService { .append(typeName) .append("(\"").append(sqlObject.getName()).append("\"").append(", ") .append("\"").append(definition).append("\");") - .append("\r\n\r\n"); + .append("\r\n"); } classBuilder.append( From 9a75993848dedcc8456f2b6004c5dd169a0f629a Mon Sep 17 00:00:00 2001 From: MinaR Date: Tue, 9 Apr 2024 18:44:34 +0200 Subject: [PATCH 05/10] cvw_mov_black_list --- .../model/Migration_20240409184306.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409184306.java diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409184306.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409184306.java new file mode 100644 index 0000000000..433aa4e9df --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240409184306.java @@ -0,0 +1,38 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240409184306 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + + + createOrUpdateView("[cvw_mov_black_list]", "CREATE VIEW cvw_mov_black_list AS\n" + + "SELECT crl_movt_rif_cmov.num_cmov, \n" + + " ctb_movt.num_cmov as num_cmov_rif,\n" + + " ctb_movt.data_cmov, \n" + + " ctb_movt.cod_ccau, \n" + + " ctb_movt.cod_anag, \n" + + " ctb_movt.cod_ireg, \n" + + " gtb_anag.rag_soc,\n" + + " ctb_movt.data_doc, \n" + + " ctb_movt.ser_doc, \n" + + " ctb_movt.num_doc,\n" + + " ctb_movt.importo\n" + + "FROM crl_movt_rif_cmov, ctb_movt, gtb_anag\n" + + "WHERE crl_movt_rif_cmov.num_cmov_rif = ctb_movt.num_cmov AND \n" + + " ctb_movt.cod_anag = gtb_anag.cod_anag"); + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file From d8e4f458276cc5611a17835d34370ce733bb3b08 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Apr 2024 10:30:17 +0200 Subject: [PATCH 06/10] Piccola utility db --- .../component/SQLServerDBSchemaManager.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ems-core/src/main/java/it/integry/ems/entity_logger/db_schema_manager/component/SQLServerDBSchemaManager.java b/ems-core/src/main/java/it/integry/ems/entity_logger/db_schema_manager/component/SQLServerDBSchemaManager.java index 6e0cb327c1..7f462fe70f 100644 --- a/ems-core/src/main/java/it/integry/ems/entity_logger/db_schema_manager/component/SQLServerDBSchemaManager.java +++ b/ems-core/src/main/java/it/integry/ems/entity_logger/db_schema_manager/component/SQLServerDBSchemaManager.java @@ -385,6 +385,27 @@ public class SQLServerDBSchemaManager { } + public List generateAlterTableToDisableAnsiPadding() throws SQLException { + return UtilityDB.executeSimpleQueryOnlyFirstColumn(this.mConnection, "SELECT 'ALTER TABLE ' + OBJECT_SCHEMA_NAME(sys.objects.object_id) + '.' + \n" + + " sys.objects.name + ' ALTER COLUMN [' + sys.columns.name + '] ' + \n" + + " sys.types.name + CASE WHEN sys.types.name IN ('text','ntext') THEN ''\n" + + " WHEN sys.types.name IN ('char','varchar') \n" + + " THEN '('+IIF(sys.columns.max_length = -1, 'MAX', CAST(sys.columns.max_length AS varchar(10)))+')'\n" + + " WHEN sys.types.name IN ('nchar','nvarchar') \n" + + " THEN '('+CAST(sys.columns.max_length/2 AS varchar(10))+')' END +\n" + + " ' ' + CASE WHEN sys.columns.is_nullable = 0 \n" + + " THEN 'NOT NULL' ELSE 'NULL' END\n" + + "FROM sys.columns\n" + + "JOIN sys.types\n" + + " ON sys.columns.user_type_id = sys.types.user_type_id\n" + + "JOIN sys.objects\n" + + " ON sys.columns.object_id = sys.objects.object_id\n" + + "WHERE is_ansi_padded = 0\n" + + " AND sys.types.name in ('char','varchar')\n" + + " AND sys.objects.type = 'U'"); + } + + private String generateAddColumnSyntax(DatabaseTableColumn tableColumn) { String columnSize = null; From 3d394e7591d5eb3841933392933036d613ab1e59 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Apr 2024 10:34:25 +0200 Subject: [PATCH 07/10] Fix date --- .../ems/logistic/Export/service/ICONExportService.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ems-engine/src/main/java/it/integry/ems/logistic/Export/service/ICONExportService.java b/ems-engine/src/main/java/it/integry/ems/logistic/Export/service/ICONExportService.java index a756938737..da6f21547f 100644 --- a/ems-engine/src/main/java/it/integry/ems/logistic/Export/service/ICONExportService.java +++ b/ems-engine/src/main/java/it/integry/ems/logistic/Export/service/ICONExportService.java @@ -52,7 +52,6 @@ public class ICONExportService { EntityExportResponse> response = new EntityExportResponse<>(); JSONObjectMapper jsonObjectMapper = new JSONObjectMapper(); MagAutoPickingRequestDTO ordT = jsonObjectMapper.readValue(body.toString(), MagAutoPickingRequestDTO.class); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // Inizializzazione variabili Integer index = 0; @@ -66,7 +65,7 @@ public class ICONExportService { // Acquisizione dati configurazione String profileDBICON = setupGest.getSetup("ICON", "SETUP", "PROFILE_DB_INTERSCAMBIO"); String gestisciQtaDaApprov = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), type, format, "GESTISCI_QTA_DA_APPROV"); - String tmparmte = "P|" + ordT.getInputCollo().getGestione() + "|" + sdf.format(ordT.getInputCollo().getDataCollo()) + "|" + ordT.getInputCollo().getSerCollo() + "|" + ordT.getInputCollo().getNumCollo().toString(); + String tmparmte = "P|" + ordT.getInputCollo().getGestione() + "|" + CommonConstants.DATE_YMD_DASHED_FORMATTER.format(ordT.getInputCollo().getDataCollo()) + "|" + ordT.getInputCollo().getSerCollo() + "|" + ordT.getInputCollo().getNumCollo().toString(); // Acquisizione dati ordine da passare alla missione String query = @@ -258,7 +257,7 @@ public class ICONExportService { + " il " + CommonConstants.DATETIME_DMY_SLASHED_FORMATTER.format(UtilityLocalDate.getNowTime()); String tmparmte = "ACC" + "|" + colT.getGestione() + - "|" + new SimpleDateFormat("yyyy-MM-dd").format(colT.getDataCollo()) + + "|" + CommonConstants.DATE_YMD_DASHED_FORMATTER.format(colT.getDataCollo()) + "|" + colT.getSerCollo() + "|" + colT.getNumCollo().toString(); From 21cc84f7a1de7b3ba152dd52d7742c07cccc7171 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Apr 2024 10:45:00 +0200 Subject: [PATCH 08/10] Migration per AnsiPadding --- ...240408151802.java => Migration_20240408151803.java} | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) rename ems-core/src/main/java/it/integry/ems/migration/model/{Migration_20240408151802.java => Migration_20240408151803.java} (77%) diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151802.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151803.java similarity index 77% rename from ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151802.java rename to ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151803.java index 4b6ce059fd..14b62da65b 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151802.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151803.java @@ -1,5 +1,6 @@ package it.integry.ems.migration.model; +import it.integry.ems.entity_logger.db_schema_manager.component.SQLServerDBSchemaManager; import it.integry.ems.migration._base.BaseMigration; import it.integry.ems.migration._base.IntegryCustomer; import it.integry.ems.migration._base.MigrationModelInterface; @@ -11,7 +12,8 @@ public class Migration_20240408151802 extends BaseMigration implements Migration if (isHistoryDB()) return; - if (isCustomer(IntegryCustomer.Tosca, + if (isCustomer( + IntegryCustomer.Tosca, IntegryCustomer.Biolevante, IntegryCustomer.Cosmapack, IntegryCustomer.Dulciar, @@ -23,11 +25,13 @@ public class Migration_20240408151802 extends BaseMigration implements Migration IntegryCustomer.ResinaColor, IntegryCustomer.Ivr, IntegryCustomer.Sardinya, - IntegryCustomer.Didonna)) - { + IntegryCustomer.Didonna, + IntegryCustomer.Smetar)) { updateSetupValue("DATI_AZIENDA", "SETUP", "DELIMITED_IDENTIFIER", "1"); updateSetupValue("DATI_AZIENDA", "SETUP", "FLAG_ANSI_PADDING", "S"); updateSetupValue("DATI_AZIENDA", "SETUP", "FLAG_CONCAT_NULL_YIELDS_NULL", "S"); + + SQLServerDBSchemaManager schemaManager = new SQLServerDBSchemaManager(this.advancedDataSource.getConnection()); } } From 22d812a30532390b4ce418e44059c02877f9bd20 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Apr 2024 10:45:00 +0200 Subject: [PATCH 09/10] Migration per AnsiPadding --- ...51802.java => Migration_20240408151803.java} | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) rename ems-core/src/main/java/it/integry/ems/migration/model/{Migration_20240408151802.java => Migration_20240408151803.java} (65%) diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151802.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151803.java similarity index 65% rename from ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151802.java rename to ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151803.java index 4b6ce059fd..705513a218 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151802.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151803.java @@ -1,17 +1,21 @@ package it.integry.ems.migration.model; +import it.integry.ems.entity_logger.db_schema_manager.component.SQLServerDBSchemaManager; import it.integry.ems.migration._base.BaseMigration; import it.integry.ems.migration._base.IntegryCustomer; import it.integry.ems.migration._base.MigrationModelInterface; -public class Migration_20240408151802 extends BaseMigration implements MigrationModelInterface { +import java.util.List; + +public class Migration_20240408151803 extends BaseMigration implements MigrationModelInterface { @Override public void up() throws Exception { if (isHistoryDB()) return; - if (isCustomer(IntegryCustomer.Tosca, + if (isCustomer( + IntegryCustomer.Tosca, IntegryCustomer.Biolevante, IntegryCustomer.Cosmapack, IntegryCustomer.Dulciar, @@ -23,11 +27,16 @@ public class Migration_20240408151802 extends BaseMigration implements Migration IntegryCustomer.ResinaColor, IntegryCustomer.Ivr, IntegryCustomer.Sardinya, - IntegryCustomer.Didonna)) - { + IntegryCustomer.Didonna, + IntegryCustomer.Smetar)) { updateSetupValue("DATI_AZIENDA", "SETUP", "DELIMITED_IDENTIFIER", "1"); updateSetupValue("DATI_AZIENDA", "SETUP", "FLAG_ANSI_PADDING", "S"); updateSetupValue("DATI_AZIENDA", "SETUP", "FLAG_CONCAT_NULL_YIELDS_NULL", "S"); + + SQLServerDBSchemaManager schemaManager = new SQLServerDBSchemaManager(this.advancedDataSource.getConnection()); + final List queries = schemaManager.generateAlterTableToDisableAnsiPadding(); + + //executeStatement(queries.toArray(new String[0])); } } From 4d1b79b1b5abbca971f56dad600d4137c6138a65 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Apr 2024 13:14:26 +0200 Subject: [PATCH 10/10] Fix numIreg da short a int --- .idea/runConfigurations/Tomcat_9__1__ServerDev_.xml | 4 ++++ .../ems/rules/businessLogic/AccountingBusinessLogic.java | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.idea/runConfigurations/Tomcat_9__1__ServerDev_.xml b/.idea/runConfigurations/Tomcat_9__1__ServerDev_.xml index 7ee0a8ef47..638d62bf76 100644 --- a/.idea/runConfigurations/Tomcat_9__1__ServerDev_.xml +++ b/.idea/runConfigurations/Tomcat_9__1__ServerDev_.xml @@ -7,6 +7,10 @@