diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240708155342.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240708155342.java new file mode 100644 index 0000000000..a4058709c6 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240708155342.java @@ -0,0 +1,585 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240708155342 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateFunction("MES_GetWorkOrders", "CREATE FUNCTION [dbo].[MES_GetWorkOrders](@codJfas VARCHAR(50), @dateStart DATE, @dateEnd DATE, @flagEvaso VARCHAR(1),\n" + + " @codAnag VARCHAR(5))\n" + + " RETURNS @val TABLE\n" + + " (\n" + + " [sort] [int] NULL,\n" + + " [cod_jcom] [varchar](10) NULL,\n" + + " [data_ord_prod] [datetime] NULL,\n" + + " [num_ord_prod] [int] NULL,\n" + + " [riga_ord_prod] [int] NULL,\n" + + " [flag_avviabile] [varchar](1) NULL,\n" + + " [flag_tracciabilita] [varchar](1) NULL,\n" + + " [unt_ord] [varchar](3) NULL,\n" + + " [rap_conv] [numeric](20, 10) NULL,\n" + + " [unt_ord2] [varchar](3) NULL,\n" + + " [rap_conv2] [numeric](20, 5) NULL,\n" + + " [unt_ord3] [varchar](3) NULL,\n" + + " [rap_conv3] [numeric](20, 5) NULL,\n" + + " [descrizione_prod] [varchar](255) NULL,\n" + + " [num_pezzi] [numeric](38, 6) NULL,\n" + + " [num_cnf] [numeric](20, 5) NULL,\n" + + " [gg_scad_partita] [int] NULL,\n" + + " [qta_cnf] [numeric](15, 5) NULL,\n" + + " [colli_pedana] [numeric](20, 5) NULL,\n" + + " [num_pedane] [numeric](38, 18) NULL,\n" + + " [pos_riga] [int] NULL,\n" + + " [flag_evaso_prod] [varchar](1) NULL,\n" + + " [flag_evaso_forzato] [varchar](1) NOT NULL,\n" + + " [flag_ordine_evaso] [varchar](1) NULL,\n" + + " [gestione] [varchar](1) NOT NULL,\n" + + " [data_ord] [datetime] NOT NULL,\n" + + " [cod_tcol_UL] [varchar](5) NULL,\n" + + " [descrizione_tcol] [varchar](40) NULL,\n" + + " [cod_anag] [varchar](5) NOT NULL,\n" + + " [rag_soc_anag] [varchar](40) NULL,\n" + + " [rif_ord] [varchar](40) NULL,\n" + + " [cod_vdes] [varchar](5) NULL,\n" + + " [cod_mdep] [varchar](5) NOT NULL,\n" + + " [num_ord] [int] NOT NULL,\n" + + " [cod_jfas] [varchar](5) NOT NULL,\n" + + " [cod_jfas_lav] [varchar](5) NOT NULL,\n" + + " [partita_mag] [varchar](20) NULL,\n" + + " [note_lav] [varchar](255) NULL,\n" + + " [data_scad] [datetime] NULL,\n" + + " [cod_prod] [varchar](15) NULL,\n" + + " [descrizione_commessa] [varchar](40) NULL,\n" + + " [data_iniz_prod] [datetime] NULL,\n" + + " [max_step] [int] NULL,\n" + + " [unt_mis_prod] [varchar](5) NULL,\n" + + " [qta_batch_prod] [numeric](15, 5) NULL,\n" + + " [rap_conv_prod] [numeric](20, 10) NULL,\n" + + " [data_iniz] [datetime] NULL,\n" + + " [data_fine] [datetime] NULL,\n" + + " [qta_prod] [decimal](20, 5) NULL,\n" + + " [qta_lav] [decimal](20, 5) NULL,\n" + + " [max_fase] [int] NULL,\n" + + " [num_fase] [int] NULL,\n" + + " [hr_num] [int] NOT NULL,\n" + + " [descrizione_attivita] [varchar](1024) NULL,\n" + + " [prod_std] [numeric](38, 21) NULL,\n" + + " [elapsed_time] [int] NULL,\n" + + " [qta_trasferite] [numeric](38, 5) NULL,\n" + + " [udc_trasferiti] [int] NULL,\n" + + " [stato] [varchar](11) NOT NULL,\n" + + " [pz_trasferiti] [int] NULL,\n" + + " [run_time_sec] [numeric](38, 6) NULL,\n" + + " [cumulative_run_time_sec] [numeric](38, 6) NULL,\n" + + " [run_time_hour] [int] NULL,\n" + + " [run_time_min] [numeric](38, 6) NULL,\n" + + " [run_time_end] [datetime] NULL,\n" + + " [id_lotto] [int] NULL,\n" + + " [data_lotto] [datetime] NULL,\n" + + " [peso_kg] [numeric](20, 5) NULL\n" + + " ) AS\n" + + "BEGIN\n" + + "\n" + + " -- DECLARE @codJfas VARCHAR(5) = 'L1'\n" + + "-- DECLARE @dateStart DATE = DATEADD(MONTH, -1, GETDATE())\n" + + "-- DECLARE @dateEnd DATE = DATEADD(MONTH, 1, GETDATE())\n" + + "-- DECLARE @flagEvaso VARCHAR(1) = 'I'\n" + + "-- DECLARE @codAnag VARCHAR(5) = null;\n" + + "\n" + + " SET @dateStart = ISNULL(@dateStart, DATEADD(DAY, -14, GETDATE()));\n" + + " SET @dateEND = ISNULL(@dateEnd, GETDATE());\n" + + " SET @flagEvaso = ISNULL(@flagEvaso, 'I');\n" + + "\n" + + "--Funzione per calcolare la sequenza di ordini su una linea e il RunTimeEND\n" + + " WITH setup AS (SELECT @dateStart AS date_start,\n" + + " @dateEnd AS date_end,\n" + + " @flagEvaso AS flag_evaso,\n" + + " @codJfas AS cod_jfas,\n" + + " @codAnag AS cod_anag),\n" + + " setup_jfas AS (SELECT value_string AS cod_jfas\n" + + " FROM dbo.ParseStringIntoArray(@codJfas, '|')),\n" + + " setup_depo AS (SELECT cod_mdep, value AS flag_carico_scarico_immediato\n" + + " FROM stb_gest_setup_depo\n" + + " WHERE gest_name = 'CARICO_SCARICO_PF'\n" + + " AND section = 'SETUP'\n" + + " AND key_section = 'GENERA_CARICO_SCARICO_IMMEDIATO'),\n" + + " mtb_colr_sum AS (SELECT mtb_colr.gestione,\n" + + " mtb_colr.data_collo,\n" + + " mtb_colr.num_collo,\n" + + " mtb_colr.cod_mart,\n" + + " mtb_colr.data_ord,\n" + + " mtb_colr.num_ord,\n" + + " SUM(mtb_colr.qta_col) AS qta_col,\n" + + " SUM(mtb_colr.num_cnf) AS num_cnf\n" + + " FROM mtb_colr\n" + + " WHERE mtb_colr.gestione_rif IS NULL\n" + + " AND mtb_colr.data_collo_rif IS NULL\n" + + " AND mtb_colr.ser_collo_rif IS NULL\n" + + " AND mtb_colr.num_collo_rif IS NULL\n" + + " AND EXISTS(SELECT *\n" + + " FROM mtb_colt\n" + + " WHERE mtb_colr.gestione = mtb_colt.gestione\n" + + " AND mtb_colr.data_collo = mtb_colt.data_collo\n" + + " AND mtb_colr.ser_collo = mtb_colt.ser_collo\n" + + " AND mtb_colr.num_collo = mtb_colt.num_collo\n" + + " AND mtb_colt.segno = 1)\n" + + " GROUP BY mtb_colr.gestione,\n" + + " mtb_colr.data_collo,\n" + + " mtb_colr.num_collo,\n" + + " mtb_colr.cod_mart,\n" + + " mtb_colr.data_ord,\n" + + " mtb_colr.num_ord),\n" + + " in_production_machines AS (SELECT DISTINCT dtb_ord_macc.gestione,\n" + + " dtb_ord_macc.data_ord,\n" + + " dtb_ord_macc.num_ord,\n" + + " MAX(dtb_ord_macc.data_mov) AS max_data_mov\n" + + " FROM dtb_ord_macc\n" + + " INNER JOIN (SELECT gestione, data_ord, num_ord, cod_cmac, MAX(data_mov) AS data_mov\n" + + " FROM dtb_ord_macc\n" + + " GROUP BY gestione, data_ord, num_ord, cod_cmac) last_event\n" + + " ON dtb_ord_macc.data_ord = last_event.data_ord AND\n" + + " dtb_ord_macc.num_ord = last_event.num_ord AND\n" + + " dtb_ord_macc.gestione = last_event.gestione AND\n" + + " dtb_ord_macc.cod_cmac = last_event.cod_cmac AND\n" + + " dtb_ord_macc.data_mov = last_event.data_mov\n" + + " INNER JOIN (SELECT evento, IIF(tipologia = 'ENTRATA', 1, -1) AS value\n" + + " FROM dtb_ord_macc_eventi) dtb_ord_macc_eventi\n" + + " ON dtb_ord_macc.evento = dtb_ord_macc_eventi.evento\n" + + " WHERE value = 1\n" + + " GROUP BY dtb_ord_macc.num_ord, dtb_ord_macc.data_ord, dtb_ord_macc.gestione),\n" + + " dtb_ord_max_step AS (SELECT gestione,\n" + + " data_ord,\n" + + " num_ord,\n" + + " MAX(id_step) AS max_step,\n" + + " num_fase,\n" + + " MAX(num_fase) OVER (PARTITION BY gestione,\n" + + " data_ord,\n" + + " num_ord) AS max_fase,\n" + + " dtb_ord_steps.cod_jfas,\n" + + " SUM(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE()))) AS elapsed_time\n" + + " FROM dtb_ord_steps\n" + + " CROSS APPLY setup\n" + + " WHERE data_ord BETWEEN setup.date_start AND setup.date_end\n" + + " GROUP BY gestione,\n" + + " data_ord,\n" + + " num_ord,\n" + + " num_fase,\n" + + " dtb_ord_steps.cod_jfas),\n" + + " dtb_ordr_prod_with_art AS (SELECT dtb_ordr.data_ord AS data_ord_prod,\n" + + " dtb_ordr.num_ord AS num_ord_prod,\n" + + " dtb_ordr.riga_ord AS riga_ord_prod,\n" + + " dtb_ordr.gestione AS gestione_ord_prod,\n" + + " IIF(CONVERT(DATE, dtb_ordr.data_ord) >= CONVERT(DATE, GETDATE()), 'S',\n" + + " 'N') AS flag_avviabile,\n" + + " mtb_aart_prod.flag_tracciabilita,\n" + + " dtb_ordr.unt_ord,\n" + + " dtb_ordr.rap_conv,\n" + + " dtb_ordr.unt_ord2,\n" + + " CAST(ROUND(dtb_ordr.qta_ord2 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" + + " 5) AS NUMERIC(20, 5)) AS rap_conv2,\n" + + " dtb_ordr.unt_ord3,\n" + + " CAST(ROUND(dtb_ordr.qta_ord3 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" + + " 5) AS NUMERIC(20, 5)) AS rap_conv3,\n" + + " dtb_ordr.qta_ord,\n" + + " dtb_ordr.qta_ord2,\n" + + " dtb_ordr.qta_ord3,\n" + + " dtb_ordr.num_cnf,\n" + + " IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf,\n" + + " IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf /\n" + + " ISNULL(NULLIF(mtb_aart_prod.rap_conv2, 0), 1),\n" + + " mtb_aart_prod.qta_cnf)) AS cal_qta_cnf,\n" + + "\n" + + " IIF(dtb_ordr.colli_pedana = 0 OR dtb_ordr.colli_pedana = 1,\n" + + " IIF(mtb_aart_prod.colli_pedana = 0, 1, mtb_aart_prod.colli_pedana),\n" + + " dtb_ordr.colli_pedana)\n" + + " AS colli_pedana,\n" + + " dtb_ordr.pos_riga,\n" + + "\n" + + " IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), 1,\n" + + " IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR') AND\n" + + " NULLIF(mtb_aart_prod.rap_conv2, 0) IS NOT NULL,\n" + + " mtb_aart_prod.rap_conv2,\n" + + " 1)) AS calc_rap_conv,\n" + + " mtb_aart_prod.gg_scad_partita,\n" + + " mtb_aart_prod.qta_cnf\n" + + " FROM dtb_ordr\n" + + " INNER JOIN mtb_aart mtb_aart_prod ON mtb_aart_prod.cod_mart = dtb_ordr.cod_mart),\n" + + " ord_lav AS (SELECT dtb_ordt.cod_jcom,\n" + + " dtb_ordr_prod_with_art.data_ord_prod,\n" + + " dtb_ordr_prod_with_art.num_ord_prod,\n" + + " dtb_ordr_prod_with_art.riga_ord_prod,\n" + + " dtb_ordr_prod_with_art.flag_avviabile,\n" + + " dtb_ordr_prod_with_art.flag_tracciabilita,\n" + + " dtb_ordr_prod_with_art.unt_ord,\n" + + " CASE\n" + + " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + + " dtb_ordr_prod_with_art.rap_conv\n" + + " ELSE CASE\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis THEN\n" + + " dtb_ordr_prod_with_art.rap_conv\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis2 THEN\n" + + " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis3 THEN\n" + + " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + + " END\n" + + " END\n" + + " AS rap_conv,\n" + + " dtb_ordr_prod_with_art.unt_ord2,\n" + + " CASE\n" + + " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + + " dtb_ordr_prod_with_art.rap_conv2\n" + + " ELSE CASE\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis THEN\n" + + " dtb_ordr_prod_with_art.rap_conv2\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis2 THEN\n" + + " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis3 THEN\n" + + " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + + " END\n" + + " END\n" + + " AS rap_conv2,\n" + + " dtb_ordr_prod_with_art.unt_ord3,\n" + + " CASE\n" + + " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + + " dtb_ordr_prod_with_art.rap_conv3\n" + + " ELSE CASE\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis THEN\n" + + " dtb_ordr_prod_with_art.rap_conv3\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis2 THEN\n" + + " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis3 THEN\n" + + " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + + " END\n" + + " END\n" + + " AS rap_conv3,\n" + + " ISNULL(dtb_ordt.descr_estesa_prod, dtb_ordt.descrizione_prod) AS descrizione_prod,\n" + + " dtb_ordr_prod_with_art.num_cnf * dtb_ordr_prod_with_art.cal_qta_cnf AS num_pezzi,\n" + + " dtb_ordr_prod_with_art.num_cnf,\n" + + " dtb_ordr_prod_with_art.gg_scad_partita,\n" + + " dtb_ordr_prod_with_art.qta_cnf,\n" + + " dtb_ordr_prod_with_art.colli_pedana,\n" + + " dtb_ordr_prod_with_art.num_cnf / dtb_ordr_prod_with_art.colli_pedana AS num_pedane,\n" + + " dtb_ordr_prod_with_art.pos_riga,\n" + + " dtb_ordt.flag_evaso_prod,\n" + + " dtb_ordt.flag_evaso_forzato,\n" + + " CASE\n" + + " WHEN (dtb_ordt.flag_evaso_prod = 'I' OR\n" + + " (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' AND\n" + + " flag_evaso_prod = 'E'))\n" + + " AND dtb_ordt.flag_evaso_forzato = 'N'\n" + + " THEN 'I'\n" + + " WHEN flag_evaso_prod <> 'I' AND dtb_ordt.flag_evaso_forzato = 'S'\n" + + " THEN flag_evaso_prod\n" + + " END AS flag_ordine_evaso,\n" + + " dtb_ordt.gestione,\n" + + " dtb_ordt.data_ord,\n" + + " dtb_ordt.cod_tcol_UL,\n" + + " mtb_tcol.descrizione AS descrizione_tcol,\n" + + " dtb_ordt.cod_anag,\n" + + " gtb_anag.rag_soc AS rag_soc_anag,\n" + + " dtb_ordt.rif_ord,\n" + + " dtb_ordt.cod_vdes,\n" + + " dtb_ordt.cod_mdep,\n" + + " dtb_ordt.num_ord,\n" + + " dtb_ord_steps.cod_jfas,\n" + + " dtb_ordt.cod_jfas AS cod_jfas_lav,\n" + + " mtb_partita_mag.partita_mag,\n" + + " dtb_ordt.note AS note_lav,\n" + + " mtb_partita_mag.data_scad,\n" + + " dtb_ordt.cod_prod,\n" + + " jtb_comt.descrizione AS descrizione_commessa,\n" + + " dtb_ordt.data_iniz_prod,\n" + + " q.max_step,\n" + + " q.max_fase,\n" + + " q.num_fase,\n" + + " IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" + + " (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1), 'Colli',\n" + + " jtb_cicl.unt_mis_prod)\n" + + " AS unt_mis_prod,\n" + + " IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" + + " (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1),\n" + + " dtb_ordr_prod_with_art.colli_pedana, jtb_cicl.qta_prod)\n" + + " AS qta_batch_prod,\n" + + " IIF(mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1, mtb_aart.qta_cnf,\n" + + " jtb_cicl.rap_conv_prod) AS rap_conv_prod,\n" + + " dtb_ord_steps.data_iniz,\n" + + " dtb_ord_steps.data_fine,\n" + + " dtb_ord_steps.qta_lav AS qta_lav,\n" + + " IIF(dtb_ord_steps.qta_prod <> 0, dtb_ord_steps.qta_prod,\n" + + " dtb_ordt.qta_prod) AS qta_prod,\n" + + " dtb_ord_steps.hr_num,\n" + + " dtb_ord_steps.descrizione_attivita,\n" + + " 3600 / (ISNULL(NULLIF(jtb_dist_clav_dir.duration, 0), 1) /\n" + + " ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) AS prod_std,\n" + + " q.elapsed_time,\n" + + " SUM(ISNULL(mtb_colr.qta_col, 0)) AS qta_trasferite,\n" + + " COUNT(mtb_colr.num_collo) AS udc_trasferiti,\n" + + " CASE\n" + + " WHEN (in_production_machines.max_data_mov IS NOT NULL AND (q.max_step = 0 OR\n" + + " (q.max_step > 0 AND\n" + + " dtb_ord_steps.data_fine IS NOT NULL AND\n" + + " DATEDIFF(MINUTE,\n" + + " dtb_ord_steps.data_fine,\n" + + " in_production_machines.max_data_mov) >\n" + + " 5)))\n" + + " THEN 'IN AVVIO'\n" + + " WHEN q.max_step = 0\n" + + " THEN 'PROGRAMMATO'\n" + + " WHEN data_fine IS NULL\n" + + " THEN 'IN CORSO'\n" + + " ELSE 'IN PAUSA'\n" + + " END\n" + + " AS stato,\n" + + " CONVERT(INT, SUM(ISNULL(mtb_colr.qta_col / dtb_ordr_prod_with_art.calc_rap_conv, 0))) AS pz_trasferiti,\n" + + " CASE\n" + + " WHEN (jtb_dist_clav_dir.duration / ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" + + " (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" + + " SUM(ISNULL(mtb_colr.qta_col, 0))) > 0\n" + + " THEN\n" + + " (jtb_dist_clav_dir.duration /\n" + + " ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" + + " (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" + + " SUM(ISNULL(mtb_colr.qta_col, 0)))\n" + + " ELSE 0 END AS run_time_sec,\n" + + " jl.id_lotto,\n" + + " jlt.data_lotto,\n" + + " mtb_aart.peso_kg\n" + + " FROM dtb_ord_steps\n" + + " INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" + + " AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" + + " AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" + + " LEFT OUTER JOIN setup_depo setupCaricoImmediato\n" + + " ON dtb_ordt.cod_mdep = setupCaricoImmediato.cod_mdep\n" + + " LEFT OUTER JOIN jtb_dist_clav_dir\n" + + " ON dtb_ordt.cod_prod = jtb_dist_clav_dir.cod_prod AND\n" + + " dtb_ordt.cod_jfas = jtb_dist_clav_dir.cod_jfas\n" + + " LEFT OUTER JOIN mtb_partita_mag\n" + + " ON dtb_ordt.partita_mag = mtb_partita_mag.partita_mag AND\n" + + " dtb_ordt.cod_prod = mtb_partita_mag.cod_mart AND\n" + + " mtb_partita_mag.flag_stato = 'A'\n" + + " LEFT OUTER JOIN mtb_colr_sum mtb_colr ON dtb_ordt.data_ord = mtb_colr.data_ord AND\n" + + " dtb_ordt.gestione = mtb_colr.gestione AND\n" + + " dtb_ordt.num_ord = mtb_colr.num_ord AND\n" + + " dtb_ordt.cod_prod = mtb_colr.cod_mart\n" + + " LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom\n" + + " INNER JOIN dtb_ord_max_step q ON dtb_ord_steps.gestione = q.gestione AND\n" + + " dtb_ord_steps.data_ord = q.data_ord AND\n" + + " dtb_ord_steps.num_ord = q.num_ord AND\n" + + " dtb_ord_steps.id_step = q.max_step AND\n" + + " dtb_ord_steps.cod_jfas = q.cod_jfas\n" + + " LEFT OUTER JOIN dtb_ordr_prod_with_art\n" + + " ON dtb_ordr_prod_with_art.gestione_ord_prod =\n" + + " dtb_ordt.gestione_rif AND\n" + + " dtb_ordr_prod_with_art.data_ord_prod = dtb_ordt.data_ord_rif AND\n" + + " dtb_ordr_prod_with_art.num_ord_prod = dtb_ordt.num_ord_rif AND\n" + + " dtb_ordr_prod_with_art.riga_ord_prod = dtb_ordt.riga_ord_rif\n" + + " LEFT OUTER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordt.cod_prod\n" + + " LEFT OUTER JOIN mtb_aart ON mtb_aart.cod_mart = dtb_ordt.cod_prod\n" + + " LEFT OUTER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" + + " LEFT OUTER JOIN mtb_tcol ON dtb_ordt.cod_tcol_UL = mtb_tcol.cod_tcol\n" + + " LEFT OUTER JOIN in_production_machines\n" + + " ON dtb_ord_steps.data_ord = in_production_machines.data_ord\n" + + " AND dtb_ord_steps.num_ord = in_production_machines.num_ord\n" + + " AND dtb_ord_steps.gestione = in_production_machines.gestione\n" + + " LEFT OUTER JOIN jtb_lotr jl\n" + + " ON dtb_ord_steps.cod_jfas = jl.cod_jfas AND\n" + + " dtb_ordt.gestione = jl.gestione AND\n" + + " dtb_ordt.data_ord = jl.data_ord AND\n" + + " dtb_ordt.num_ord = jl.num_ord\n" + + " LEFT OUTER JOIN jtb_lott jlt\n" + + " ON jl.cod_jfas = jlt.cod_jfas AND jl.id_lotto = jlt.id_lotto\n" + + "\n" + + " CROSS APPLY setup\n" + + " WHERE dtb_ordt.flag_annulla = 'N'\n" + + " AND (setup.flag_evaso IS NULL\n" + + " OR (\n" + + " (setup.flag_evaso = 'I'\n" + + " AND\n" + + " dtb_ord_steps.flag_step_attivo = 'S'\n" + + " AND (flag_evaso_prod = 'I'\n" + + " OR\n" + + " (setupCaricoImmediato.flag_carico_scarico_immediato = 'S'\n" + + " AND\n" + + " flag_evaso_prod = 'E'))\n" + + " AND dtb_ordt.flag_evaso_forzato = 'N'\n" + + " )\n" + + " OR (setup.flag_evaso = 'E '\n" + + " AND flag_evaso_prod = 'E')\n" + + " )\n" + + " )\n" + + " AND (setup.cod_jfas IS NULL\n" + + " OR dtb_ord_steps.cod_jfas IN (SELECT cod_jfas FROM setup_jfas))\n" + + " AND (setup.cod_anag IS NULL\n" + + " OR dtb_ordt.cod_anag = setup.cod_anag)\n" + + " GROUP BY dtb_ordr_prod_with_art.data_ord_prod,\n" + + " dtb_ordr_prod_with_art.num_ord_prod,\n" + + " dtb_ordr_prod_with_art.riga_ord_prod,\n" + + " dtb_ordr_prod_with_art.flag_avviabile,\n" + + " dtb_ordr_prod_with_art.flag_tracciabilita,\n" + + " dtb_ordr_prod_with_art.unt_ord,\n" + + " mtb_partita_mag.rap_conv2,\n" + + " mtb_partita_mag.rap_conv3,\n" + + " dtb_ordt.note,\n" + + " dtb_ordr_prod_with_art.rap_conv,\n" + + " dtb_ordt.descrizione_prod,\n" + + " dtb_ordt.descr_estesa_prod,\n" + + " dtb_ordr_prod_with_art.num_cnf,\n" + + " mtb_aart.qta_cnf,\n" + + " mtb_aart.gg_scad_partita,\n" + + " mtb_aart.flag_qta_cnf_fissa,\n" + + " dtb_ordr_prod_with_art.pos_riga,\n" + + " dtb_ordt.flag_evaso_prod,\n" + + " dtb_ordt.flag_evaso_forzato,\n" + + " dtb_ordt.gestione,\n" + + " dtb_ordt.data_ord,\n" + + " dtb_ordt.num_ord,\n" + + " dtb_ord_steps.cod_jfas,\n" + + " dtb_ordt.cod_jfas,\n" + + " dtb_ordt.cod_jcom,\n" + + " mtb_partita_mag.partita_mag,\n" + + " mtb_partita_mag.data_scad,\n" + + " dtb_ordt.cod_prod,\n" + + " dtb_ordt.data_iniz_prod,\n" + + " q.max_step,\n" + + " dtb_ord_steps.data_iniz,\n" + + " dtb_ord_steps.data_fine,\n" + + " dtb_ordt.cod_tcol_UL,\n" + + " dtb_ordt.cod_anag,\n" + + " gtb_anag.rag_soc,\n" + + " dtb_ordt.rif_ord,\n" + + " dtb_ordt.cod_vdes,\n" + + " dtb_ordt.cod_mdep,\n" + + " mtb_aart.colli_pedana,\n" + + " dtb_ord_steps.qta_prod,\n" + + " dtb_ordt.qta_prod,\n" + + " jtb_dist_clav_dir.duration,\n" + + " jtb_comt.descrizione,\n" + + " q.elapsed_time,\n" + + " dtb_ordr_prod_with_art.colli_pedana,\n" + + " dtb_ord_steps.hr_num,\n" + + " mtb_aart.unt_mis,\n" + + " mtb_aart.unt_mis2,\n" + + " mtb_aart.rap_conv2,\n" + + " mtb_aart.unt_mis3,\n" + + " mtb_aart.rap_conv3,\n" + + " dtb_ordr_prod_with_art.unt_ord2,\n" + + " dtb_ordr_prod_with_art.unt_ord3,\n" + + " dtb_ordr_prod_with_art.qta_ord,\n" + + " dtb_ordr_prod_with_art.qta_ord2,\n" + + " dtb_ordr_prod_with_art.qta_ord3,\n" + + " dtb_ordr_prod_with_art.rap_conv2,\n" + + " dtb_ordr_prod_with_art.rap_conv3,\n" + + " dtb_ordr_prod_with_art.qta_cnf,\n" + + " dtb_ordr_prod_with_art.cal_qta_cnf,\n" + + " dtb_ordr_prod_with_art.gg_scad_partita,\n" + + " jtb_cicl.qta_prod,\n" + + " jtb_cicl.rap_conv_prod,\n" + + " dtb_ord_steps.descrizione_attivita,\n" + + " jtb_cicl.unt_mis_prod,\n" + + " mtb_tcol.descrizione,\n" + + " dtb_ordt.qta_prod,\n" + + " dtb_ordt.rap_conv_prod,\n" + + " setupCaricoImmediato.flag_carico_scarico_immediato,\n" + + " in_production_machines.max_data_mov, q.num_fase, dtb_ord_steps.qta_lav, q.max_fase,\n" + + " jl.id_lotto, jlt.data_lotto, mtb_aart.peso_kg)\n" + + " INSERT\n" + + " INTO @val\n" + + " SELECT ROW_NUMBER() OVER (ORDER BY data_ord, num_ord_prod, pos_riga, num_ord) AS sort,\n" + + " cod_jcom,\n" + + " data_ord_prod,\n" + + " num_ord_prod,\n" + + " riga_ord_prod,\n" + + " flag_avviabile,\n" + + " flag_tracciabilita,\n" + + " unt_ord,\n" + + " rap_conv,\n" + + " unt_ord2,\n" + + " rap_conv2,\n" + + " unt_ord3,\n" + + " rap_conv3,\n" + + " descrizione_prod,\n" + + " num_pezzi,\n" + + " num_cnf,\n" + + " gg_scad_partita,\n" + + " qta_cnf,\n" + + " colli_pedana,\n" + + " num_pedane,\n" + + " pos_riga,\n" + + " flag_evaso_prod,\n" + + " flag_evaso_forzato,\n" + + " flag_ordine_evaso,\n" + + " gestione,\n" + + " data_ord,\n" + + " cod_tcol_UL,\n" + + " descrizione_tcol,\n" + + " cod_anag,\n" + + " rag_soc_anag,\n" + + " rif_ord,\n" + + " cod_vdes,\n" + + " cod_mdep,\n" + + " num_ord,\n" + + " cod_jfas,\n" + + " cod_jfas_lav,\n" + + " partita_mag,\n" + + " note_lav,\n" + + " data_scad,\n" + + " cod_prod,\n" + + " descrizione_commessa,\n" + + " data_iniz_prod,\n" + + " max_step,\n" + + " unt_mis_prod,\n" + + " qta_batch_prod,\n" + + " rap_conv_prod,\n" + + " data_iniz,\n" + + " data_fine,\n" + + " qta_prod,\n" + + " qta_lav,\n" + + " max_fase,\n" + + " num_fase,\n" + + " hr_num,\n" + + " descrizione_attivita,\n" + + " prod_std,\n" + + " elapsed_time,\n" + + " qta_trasferite,\n" + + " udc_trasferiti,\n" + + " stato,\n" + + " pz_trasferiti,\n" + + " run_time_sec,\n" + + " SUM(run_time_sec) OVER (PARTITION BY cod_jfas, data_ord_prod) AS cumulative_run_time_sec,\n" + + " CONVERT(INT, run_time_sec / 3600) AS run_time_hour,\n" + + " ROUND((run_time_sec / 3600 - CONVERT(INT, run_time_sec / 3600)) * 60, 0) AS run_time_min,\n" + + " DATEADD(SECOND, SUM(run_time_sec)\n" + + " OVER (PARTITION BY cod_jfas, data_ord_prod ORDER BY stato, cod_jfas, data_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" + + " CASE\n" + + " WHEN data_ord_prod > GETDATE() THEN DATEADD(HH, 7, data_ord_prod)\n" + + " ELSE GETDATE() END) AS run_time_end,\n" + + " id_lotto,\n" + + " data_lotto,\n" + + " peso_kg\n" + + " FROM ord_lav\n" + + " ORDER BY ord_lav.data_ord,\n" + + " ord_lav.num_ord_prod,\n" + + " ord_lav.pos_riga,\n" + + " ord_lav.num_ord\n" + + " RETURN\n" + + "END"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240715105345.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240715105345.java new file mode 100644 index 0000000000..35b6b5a9e5 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240715105345.java @@ -0,0 +1,21 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240715105345 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + executeStatement("ALTER TABLE ntb_docr\n" + + " ADD causale_reso VARCHAR(5);"); + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716090151.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716090151.java new file mode 100644 index 0000000000..8887a2eb48 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716090151.java @@ -0,0 +1,43 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240716090151 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateView("vvw_banc_riba", "CREATE VIEW [dbo].[vvw_banc_riba] AS SELECT \n" + + " DISTINCT vtb_riba.tipo_anag, \n" + + " vtb_riba.cod_anag, \n" + + " vtb_riba.data_doc, \n" + + " vtb_riba.ser_doc, \n" + + " vtb_riba.num_doc, \n" + + " CASE WHEN ctb_part.tipo_anag IS NULL THEN CASE vtb_riba.tipo_anag WHEN 'C' THEN vtb_clie.cod_banc WHEN 'F' THEN atb_forn.cod_banc END ELSE ctb_part.cod_banc END AS cod_banc, \n" + + " CASE WHEN ctb_part.tipo_anag IS NULL THEN CASE vtb_riba.tipo_anag WHEN 'C' THEN vtb_clie.cod_abi WHEN 'F' THEN atb_forn.cod_abi END ELSE ctb_part.cod_abi END AS cod_abi, \n" + + " CASE WHEN ctb_part.tipo_anag IS NULL THEN CASE vtb_riba.tipo_anag WHEN 'C' THEN vtb_clie.cod_cab WHEN 'F' THEN atb_forn.cod_cab END ELSE ctb_part.cod_cab END AS cod_cab,\n" + + " CASE WHEN ctb_part.tipo_anag IS NULL THEN CASE vtb_riba.tipo_anag WHEN 'C' THEN vtb_clie.iban WHEN 'F' THEN atb_forn.iban END ELSE ctb_part.iban END AS iban,\n" + + " ctb_part.flag_verificata \n" + + " /*, ctb_scad.note as note*/\n" + + "FROM \n" + + " vtb_riba \n" + + " LEFT OUTER JOIN ctb_part ON vtb_riba.tipo_anag = ctb_part.tipo_anag \n" + + " AND vtb_riba.cod_anag = ctb_part.cod_anag \n" + + " AND vtb_riba.data_doc = ctb_part.data_doc \n" + + " AND vtb_riba.ser_doc = ctb_part.ser_doc \n" + + " AND vtb_riba.num_doc = ctb_part.num_doc \n" + + " /*LEFT OUTER JOIN ctb_scad ON ctb_scad.tipo_anag = vtb_riba.tipo_anag AND ctb_scad.cod_anag = vtb_riba.cod_anag AND ctb_scad.data_doc = vtb_riba.data_doc AND ctb_scad.ser_doc = vtb_riba.ser_doc AND ctb_scad.num_doc = vtb_riba.num_doc AND ctb_scad.id_riga = vtb_riba.num_scad */\n" + + " LEFT OUTER JOIN vtb_clie ON vtb_riba.cod_anag = vtb_clie.cod_anag \n" + + " LEFT OUTER JOIN atb_forn ON vtb_riba.cod_anag = atb_forn.cod_anag"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716091543.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716091543.java new file mode 100644 index 0000000000..7bbe69dec8 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716091543.java @@ -0,0 +1,20 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240716091543 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + executeStatement("update stb_gest_setup set key_section ='D_CDISTEFF_REP' where gest_name = 'W_CDISTEFF_DISP';"); + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716093600.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716093600.java new file mode 100644 index 0000000000..31854eb94c --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240716093600.java @@ -0,0 +1,25 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomer; +import it.integry.ems.migration._base.IntegryCustomerDB; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240716093600 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + if(isCustomer(IntegryCustomer.Carelli)) { + updateSetupValue("W_CDISTEFF_DISP", "DATAWINDOW", "D_CDISTEFF_REP", "D_CDISTEFF_CARELLI_REP"); + } + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240717122430.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240717122430.java new file mode 100644 index 0000000000..b90a4ae705 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240717122430.java @@ -0,0 +1,23 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240717122430 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + executeStatement("ALTER TABLE mtb_grup\n" + + " ADD flag_attivo bit default 1", + "UPDATE mtb_grup SET flag_attivo = 1", + "ALTER TABLE mtb_grup ALTER COLUMN flag_attivo bit NOT NULL;"); + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240717124607.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240717124607.java new file mode 100644 index 0000000000..96f5c1920f --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240717124607.java @@ -0,0 +1,31 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; +import it.integry.ems_model.entity.StbActivityNotification; + +public class Migration_20240717124607 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + if (existsColumn(StbActivityNotification.ENTITY, "user_name")) + return; + + executeStatement( + "ALTER TABLE stb_activity_notification\n" + + " ADD user_name VARCHAR(40);", + "ALTER TABLE stb_activity_notification\n" + + " ADD CONSTRAINT stb_activity_notification_stb_user_user_name_fk\n" + + " FOREIGN KEY (user_name) REFERENCES stb_user;" + ); + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240718093241.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240718093241.java new file mode 100644 index 0000000000..b29a5d04d7 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240718093241.java @@ -0,0 +1,24 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240718093241 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + executeStatement("ALTER TABLE [dbo].[mtb_aart] WITH NOCHECK ADD CONSTRAINT [CHK_mtb_aart_rap_conv2] CHECK (([unt_mis2] is not null and [rap_conv2]<>(0))or [unt_mis2] is null )" , + "ALTER TABLE [dbo].[mtb_aart] CHECK CONSTRAINT [CHK_mtb_aart_rap_conv2]", + "ALTER TABLE [dbo].[mtb_aart] WITH NOCHECK ADD CONSTRAINT [CHK_mtb_aart_rap_conv3] CHECK (([unt_mis3] is not null and [rap_conv3]<>(0)or [unt_mis3] is null))", + "ALTER TABLE [dbo].[mtb_aart] CHECK CONSTRAINT [CHK_mtb_aart_rap_conv3]"); + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdUntMisRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdUntMisRules.java index 3497b3a03a..f2f2cb2251 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdUntMisRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdUntMisRules.java @@ -260,6 +260,9 @@ public class DocOrdUntMisRules extends QueryRules { private static HashMap calcQtaAlternative(MtbAart mtbAart, MtbPartitaMag mtbPartitaMag, MtbUntMis mtbUntMis, BigDecimal numCnf, BigDecimal qtaUM1, BigDecimal rapConvUM1, BigDecimal rapConvOld, BigDecimal pesoNetto) throws Exception { BigDecimal rapConvArt = getRapConvUM(mtbUntMis.getUntMis(), mtbAart, mtbPartitaMag); + if (UtilityBigDecimal.isNullOrZero(rapConvArt)) + throw new Exception(String.format("Rapporto di conversione 0 sull'articolo %s unità di misura %s ", mtbAart.getCodMart(), mtbUntMis.getUntMis())); + BigDecimal qtaCnfArt = mtbAart.getQtaCnf(); String flagDig = mtbUntMis.getFlagDig(); Integer cifreDec = mtbUntMis.getCifreDec().intValue(); @@ -280,14 +283,12 @@ public class DocOrdUntMisRules extends QueryRules { //VALUTARE COME GESTIRE LA VARIAZIONE DELLA QUANTITA SU UNA RIGA qta = (qtaUM1.multiply(rapConvUM1)).divide( UtilityBigDecimal.isNull(rapConvOld, rapConvArt), 5, RoundingMode.HALF_UP); - } if (qta != null) { qta = qta.setScale(cifreDec, RoundingMode.HALF_UP); } - HashMap datiQta = calcQta(mtbUntMis, numCnf, pesoNetto, qta); return datiQta; diff --git a/ems-core/src/main/java/it/integry/ems/schedule/new_cron_job/dto/operations/runners/ImportDirectoryOperationRunner.java b/ems-core/src/main/java/it/integry/ems/schedule/new_cron_job/dto/operations/runners/ImportDirectoryOperationRunner.java index 74eb26c3d5..e8986edf77 100644 --- a/ems-core/src/main/java/it/integry/ems/schedule/new_cron_job/dto/operations/runners/ImportDirectoryOperationRunner.java +++ b/ems-core/src/main/java/it/integry/ems/schedule/new_cron_job/dto/operations/runners/ImportDirectoryOperationRunner.java @@ -78,8 +78,11 @@ public class ImportDirectoryOperationRunner extends BaseDirectoryOperationRunner errorMessage = Stream.of(serviceRestResponse.getMessages()) .filter(x->x.getLevel() != null && x.getLevel()== MessageDTO.Level.ERROR).map(x->x.getText()).findFirst().orElse(null); } - logger.error(String.format("Operazione [ID:%s, Name:%s] - Eccezione", this.getDtoInstance().getId(), this.getDtoInstance().getName()), - new Exception(errorMessage)); + + if (!UtilityString.isNullOrEmpty(errorMessage)){ + logger.error(String.format("Operazione [ID:%s, Name:%s] - Eccezione", this.getDtoInstance().getId(), this.getDtoInstance().getName()), + new Exception(errorMessage)); + } } diff --git a/ems-core/src/main/java/it/integry/ems/user/service/UserService.java b/ems-core/src/main/java/it/integry/ems/user/service/UserService.java index 673ff71884..7fcab90acc 100644 --- a/ems-core/src/main/java/it/integry/ems/user/service/UserService.java +++ b/ems-core/src/main/java/it/integry/ems/user/service/UserService.java @@ -96,6 +96,14 @@ public class UserService { return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); } + public String retrieveFullName(String username) throws Exception { + String sql = Query.format("SELECT full_name\n" + + "FROM stb_user\n" + + "WHERE user_name = {}", username); + + return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); + } + public List retrieveAvailableProfiles(String username) { List profiles; diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/MtbGrup.java b/ems-core/src/main/java/it/integry/ems_model/entity/MtbGrup.java index ca49a72607..07c3743142 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/MtbGrup.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/MtbGrup.java @@ -38,6 +38,9 @@ public class MtbGrup extends EntityBase implements EquatableEntityInterface mtbSgrp; @@ -112,6 +115,14 @@ public class MtbGrup extends EntityBase implements EquatableEntityInterface modificheDistinta = new ArrayList<>(); + private String descrizionePartita; public LocalDate getDataOrd() { return dataOrd; @@ -116,4 +117,13 @@ public class CreaOrdineProdDTO { this.modificheDistinta = modificheDistinta; return this; } + + public String getDescrizionePartita() { + return descrizionePartita; + } + + public CreaOrdineProdDTO setDescrizionePartita(String descrizionePartita) { + this.descrizionePartita = descrizionePartita; + return this; + } } diff --git a/ems-engine/src/main/java/it/integry/ems/production/dto/OrdineLavorazioneDTO.java b/ems-engine/src/main/java/it/integry/ems/production/dto/OrdineLavorazioneDTO.java index 43cfe208b7..4373d819c5 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/dto/OrdineLavorazioneDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/production/dto/OrdineLavorazioneDTO.java @@ -366,6 +366,11 @@ public class OrdineLavorazioneDTO { @JsonSerialize private LocalDate dataLotto; + @SqlField(value = "peso_kg") + @JsonProperty("pesoKg") + @JsonSerialize + private BigDecimal pesoKg; + private List availableClassMerc; public Date getDataOrdProd() { @@ -927,6 +932,10 @@ public class OrdineLavorazioneDTO { return this; } + public BigDecimal getPesoKg() { + return pesoKg; + } + public BigDecimal getQtaLav() { return qtaLav; } diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java index e132df0350..abc9a99901 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java @@ -358,7 +358,8 @@ public class ProductionOrderDataHandlerService { " END AS stato," + " convert(int, SUM(ISNULL(mtb_colr.qta_col / (case when mtb_aart.unt_mis in ('PZ','NR') then 1 else " + " case when mtb_aart.unt_mis2 in ('PZ','NR') then mtb_aart.rap_conv2 " + - " else 1 end end), 0))) AS pz_trasferiti" + + " else 1 end end), 0))) AS pz_trasferiti," + + " mtb_aart.peso_kg" + " FROM (SELECT MAX(id_step) " + " OVER ( PARTITION BY gestione, data_ord, num_ord, num_fase, cod_jfas) AS max_step_by_num_fase, " + " * " + @@ -490,7 +491,7 @@ public class ProductionOrderDataHandlerService { " ORDER BY dtb_ordr.data_ord, dtb_ordr.num_ord, dtb_ordr.pos_riga, dtb_ordt.num_ord"; } - List ordiniLavorazioneList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class); + List ordiniLavorazioneList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class); if (ordiniLavorazioneList != null && !ordiniLavorazioneList.isEmpty()) { for (OrdineLavorazioneDTO ordineDTO : ordiniLavorazioneList) { diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionService.java b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionService.java index da78d4dc9c..ed4dae57de 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionService.java @@ -979,19 +979,9 @@ public class ProductionService { Date dataOrd = Date.from(creaOrdineProdDTO.getDataOrd().atStartOfDay(ZoneId.systemDefault()).toInstant()); - - String partitaMag = PartitaMagRules.suggestCodePartitaMag( - multiDBTransactionManager.getPrimaryConnection(), - new DatiPartitaMagDTO() - .setCodMart(creaOrdineProdDTO.getCodMart()) - .setPartitaMag(creaOrdineProdDTO.getPartitaMag()) - .setCodAnag(creaOrdineProdDTO.getCodAnag()) - .setDataOrd(dataOrd) - ); - DtbOrdr rigaOrdProd = new DtbOrdr() .setCodMart(creaOrdineProdDTO.getCodMart()) - .setPartitaMag(partitaMag) + .setPartitaMag(creaOrdineProdDTO.getPartitaMag()) .setValUnt(creaOrdineProdDTO.getValUnt()) .setNumCnf(creaOrdineProdDTO.getNumCnf()) .setColliPedana(creaOrdineProdDTO.getColliPedana()) diff --git a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPvService.java b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPvService.java index af10b7a889..dca2b17acd 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPvService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPvService.java @@ -1304,30 +1304,21 @@ public class VariazioniPvService { formatFile, Entity.json(variazioniPvInputDTO)); - boolean testError = false; + String emailForLog = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), exportType, formatFile, "EMAIL_FOR_LOG"); + int numVariazioni = variazioniPvInputDTO.getVariazioni().size(); + if (!UtilityString.isNullOrEmpty(emailForLog) && numVariazioni > 0) { + String oggetto = + "Esportazione " + + variazioniPvInputDTO.getTipoReportEnum().toString() + + " punto vendita " + + userName; - if (testError) - throw new Exception("TEST ERROR"); + String messaggio = oggetto + + " avvenuta con successo." + CommonConstants.A_CAPO + + " Sono stati esportati n. " + numVariazioni + " articoli"; - - -// -// String emailForLog = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), exportType, formatFile, "EMAIL_FOR_LOG"); -// int numVariazioni = variazioniPvInputDTO.getVariazioni().size(); -// if (!UtilityString.isNullOrEmpty(emailForLog) && numVariazioni > 0) { -// String oggetto = -// "Esportazione " + -// variazioniPvInputDTO.getTipoReportEnum().toString() + -// " punto vendita " + -// userName; -// -// String messaggio = oggetto + -// " avvenuta con successo." + CommonConstants.A_CAPO + -// " Sono stati esportati n. " + numVariazioni + " articoli"; -// -// -// mailService.sendMailPrimary(multiDBTransactionManager, null, null, emailForLog, null, null, oggetto, messaggio, false, false, null, null, null, false, null); -// } + mailService.sendMailPrimary(multiDBTransactionManager, null, null, emailForLog, null, null, oggetto, messaggio, false, false, null, null, null, false, null); + } } } } \ No newline at end of file diff --git a/ems-engine/src/main/java/it/integry/ems/retail/Scontrini/service/ReceiptsParser.java b/ems-engine/src/main/java/it/integry/ems/retail/Scontrini/service/ReceiptsParser.java index be6a518d83..08a96c029a 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/Scontrini/service/ReceiptsParser.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/Scontrini/service/ReceiptsParser.java @@ -10,10 +10,7 @@ import it.integry.ems_model.entity.NtbDocr; import it.integry.ems_model.entity.NtbDoct; import it.integry.ems_model.service.SetupGest; 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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -115,7 +112,7 @@ public class ReceiptsParser implements IReceiptsParser { if (head.length >= 35) { receipts.setDataDocRif(UtilityDate.StringToDate(head[32], CommonConstants.DATETIME_FORMAT_DMY_SLASHED)); receipts.setCodCassaRif(head[33]); - receipts.setNumDocRif(Integer.parseInt(head[34])); + receipts.setNumDocRif(UtilityInteger.stringToInteger(head[34])); } if (("EP").equals(flagTrans) || ("UP").equals(flagTrans)) { @@ -214,6 +211,10 @@ public class ReceiptsParser implements IReceiptsParser { receipts.setNtbDocr(new ArrayList()); NtbDocr row = new NtbDocr(); + if (head.length >= 36){ + row.setCausaleReso(head[35]); + } + String[] rawString = head; if (startLine == 0) { diff --git a/ems-engine/src/main/java/it/integry/ems/retail/Scontrini/service/ScontriniImportService.java b/ems-engine/src/main/java/it/integry/ems/retail/Scontrini/service/ScontriniImportService.java index 8a293c7481..405668e3c3 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/Scontrini/service/ScontriniImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/Scontrini/service/ScontriniImportService.java @@ -68,21 +68,23 @@ public class ScontriniImportService { UtilityFile.fileDelete(filePath); } - for (EntityBase entity : receipts) { - try { - if (entity instanceof NtbDoct) { - NtbDoct receipt = (NtbDoct) entity; - //salta gli scontrini vuoti generati da casi non previsti - if (UtilityString.isNullOrEmpty(receipt.getCodMdep()) && UtilityString.isNullOrEmpty(receipt.getCodCassa()) && - receipt.getDataDoc() == null) - continue; - } - entityProcessor.processEntity(entity, multiDBTransactionManager); + if (receipts != null){ + for (EntityBase entity : receipts) { + try { + if (entity instanceof NtbDoct) { + NtbDoct receipt = (NtbDoct) entity; + //salta gli scontrini vuoti generati da casi non previsti + if (UtilityString.isNullOrEmpty(receipt.getCodMdep()) && UtilityString.isNullOrEmpty(receipt.getCodCassa()) && + receipt.getDataDoc() == null) + continue; + } + entityProcessor.processEntity(entity, multiDBTransactionManager); - } catch (Exception e) { - anomalie.add(setAnomalia(e)); + } catch (Exception e) { + anomalie.add(setAnomalia(e)); + } + entitiesReturn.add(entity); } - entitiesReturn.add(entity); } return entitiesReturn; diff --git a/ems-engine/src/main/java/it/integry/ems/retail/export/service/VariazioniPvExportServices.java b/ems-engine/src/main/java/it/integry/ems/retail/export/service/VariazioniPvExportServices.java index 8e62f85cbf..b204bd163f 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/export/service/VariazioniPvExportServices.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/export/service/VariazioniPvExportServices.java @@ -81,7 +81,7 @@ public class VariazioniPvExportServices { } if (variazioniPvDTO != null && UtilityString.isNullOrEmpty(variazioniPvDTO.getFileXml())) { - boolean existJson = (variazioniPvDTO.getVariazioni() != null || variazioniPvDTO.getVariazioni().size() > 0); + boolean existJson = (variazioniPvDTO.getVariazioni() != null && variazioniPvDTO.getVariazioni().size() > 0); if (variazioniPvDTO.getDataValidita() == null) { variazioniPvDTO.setDataValidita( UtilityDate.RelativeDateTime(new Date(), 1)); } diff --git a/ems-engine/src/main/java/it/integry/ems/retail/service/GiacenzaService.java b/ems-engine/src/main/java/it/integry/ems/retail/service/GiacenzaService.java index 98bb8fb682..71f4756f4c 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/service/GiacenzaService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/service/GiacenzaService.java @@ -192,7 +192,7 @@ public class GiacenzaService { " INNER JOIN art ON movimenti.cod_mart = art.cod_mart\n" + " LEFT OUTER JOIN carelli_giacenza_prog giac ON giac.cod_mdep = movimenti.cod_mdep AND giac.cod_mart = art.cod_mart_mov\n" + "WHERE movimenti.data_reg >= CAST(ISNULL(giac.data_reg, GETDATE()) AS DATE) AND \n" + - " (giac.tipo_car is null OR giac.tipo_car <> 'C' OR (giac.tipo_car = 'C' AND movimenti.data_ins >= giac.data_reg)) \n" + + " (giac.tipo_car is null OR giac.tipo_car <> 'R' OR (giac.tipo_car = 'R' AND movimenti.data_ins >= giac.data_reg)) \n" + "GROUP BY movimenti.cod_mdep,\n " + " art.cod_mart_mov,\n"+ " giac.qta_iniz\n").replace("[COD_MDEP]", codMdep); diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/controller/ExchangeColliImportController.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/controller/ExchangeColliImportController.java index 72cf1f12f9..e6865cb99a 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/controller/ExchangeColliImportController.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/controller/ExchangeColliImportController.java @@ -39,8 +39,8 @@ public class ExchangeColliImportController { @RequestParam(CommonConstants.PROFILE_DB) String configuration, @RequestParam() String codAnag, @RequestParam() String dataCert, - @RequestParam() String codMart, - @RequestParam() String codVdes + @RequestParam(required = false) String codMart, + @RequestParam(required = false) String codVdes ) throws Exception { LocalDate dataCertificato = LocalDate.parse(dataCert); return ServiceRestResponse.createPositiveResponse(exchangeColliImportService.getCertificati(codAnag, diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/dto/CertificatiSinfoOneDTO.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/dto/CertificatiSinfoOneDTO.java index 2aa5d8b706..4bcf78a5b2 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/dto/CertificatiSinfoOneDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/dto/CertificatiSinfoOneDTO.java @@ -51,6 +51,10 @@ public class CertificatiSinfoOneDTO { private BigDecimal sconto8; @SqlField("scartoCq") private BigDecimal scartoCq; + @SqlField("cod_vvet") + private String codVvet; + @SqlField("vettore") + private String vettore; public String getCodAnag() { return codAnag; @@ -249,4 +253,22 @@ public class CertificatiSinfoOneDTO { this.scartoCq = scartoCq; return this; } + + public String getCodVvet() { + return codVvet; + } + + public CertificatiSinfoOneDTO setCodVvet(String codVvet) { + this.codVvet = codVvet; + return this; + } + + public String getVettore() { + return vettore; + } + + public CertificatiSinfoOneDTO setVettore(String vettore) { + this.vettore = vettore; + return this; + } } diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeColliImportService.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeColliImportService.java index 503465760e..1c279aa080 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeColliImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeColliImportService.java @@ -220,6 +220,8 @@ public class ExchangeColliImportService { " TRIM(tagliando_pesa) AS tagliandoPesa,\n" + " data_ora_lordo AS dataOraLordo,\n" + " CONVERT(NUMERIC(15, 3), sconto8) AS sconto8,\n" + + " cod_vettore AS cod_vvet,\n" + + " vettore AS vettore,\n" + " CONVERT(NUMERIC(15, 3), PMB_SCARTO_CQ) AS scartoCq\n " + "FROM s1_Certificati\n" + "WHERE cod_anag = {}\n" + 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 2ac73ef85c..a8788694be 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 @@ -12,10 +12,7 @@ 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 it.integry.ems_model.utility.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -116,9 +113,21 @@ public class SystemMigrationService { 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"); + } if (setup.getOperation() == OperationType.UPDATE) { + operation = formatSetup("updateSetupValue(%s, %s, %s, %s);", setup.getGestName(), setup.getSection(), setup.getKeySection(), setup.getValue()); + classBuilder.append("\t\t" + operation) .append("\r\n"); } else { + if (setup.getOperation() == OperationType.DELETE_THEN_INSERT) { + String keySection = UtilityHashMap.getValueIfExists(setup.getOldPk(), "key_section"); + operation = formatSetup("deleteSetup(%s, %s, %s);", setup.getGestName(), setup.getSection(), keySection); + + classBuilder.append("\t\t" + operation) + .append("\r\n"); + } if (!UtilityString.isNullOrEmpty(setup.getQueryDefault())){ operation = formatSetup(