diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250930151328.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250930151328.java new file mode 100644 index 0000000000..b0d779c638 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250930151328.java @@ -0,0 +1,84 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250930151328 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateFunction("[GetDatiProvv]", "CREATE FUNCTION [dbo].[GetDatiProvv](@codVlis varchar(5), \n" + + " @dataValidita datetime, \n" + + " @codAnag varchar(5), \n" + + " @codVdes varchar(5), \n" + + " @codVage varchar(5), \n" + + " @codMart varchar(15), \n" + + " @codDivi varchar(5), \n" + + " @cambio numeric(20,5))\n" + + " RETURNS TABLE AS\n" + + " RETURN(\n" + + "WITH lisv AS (SELECT lisv.cod_vlis,\n" + + " lisv.cod_mart,\n" + + " ISNULL(promo.perc_ispe, lisv.perc_ispe) AS perc_ispe,\n" + + " ISNULL(promo.val_ispe, lisv.val_ispe) AS val_ispe,\n" + + " ISNULL(promo.perc_prov, lisv.perc_prov) AS perc_prov,\n" + + " ISNULL(promo.fisso_prov, lisv.fisso_prov) AS fisso_prov,\n" + + " cambio\n" + + " FROM dbo.getlistinovendita(@datavalidita, @codvlis, @codmart) lisv\n" + + " LEFT OUTER JOIN dbo.getpromozionevendita(@datavalidita, @datavalidita, @codvlis, NULL,\n" + + " @codmart) promo ON lisv.cod_vlis = promo.cod_vlis AND\n" + + " lisv.cod_mart = promo.cod_mart)\n" + + "\n" + + " , scon AS (SELECT *\n" + + " FROM vtb_scon\n" + + " WHERE\n" + + " vtb_scon.cod_sco_art = (SELECT mtb_aart.cod_sco_art FROM mtb_aart WHERE mtb_aart.cod_mart = @codmart)\n" + + " AND vtb_scon.cod_sco_cli = (SELECT ISNULL(vtb_dest.cod_sco_cli, vtb_clie.cod_sco_cli)\n" + + " FROM vtb_clie\n" + + " LEFT OUTER JOIN vtb_dest\n" + + " ON vtb_clie.cod_anag = vtb_dest.cod_anag AND\n" + + " vtb_dest.cod_vdes = @codvdes\n" + + " WHERE vtb_clie.cod_anag = @codanag))\n" + + " , scon_age AS (SELECT *\n" + + " FROM vtb_agen_prov\n" + + " WHERE vtb_agen_prov.cod_sco_art =\n" + + " (SELECT mtb_aart.cod_sco_art FROM mtb_aart WHERE mtb_aart.cod_mart = @codmart)\n" + + " AND vtb_agen_prov.cod_sco_cli = (SELECT ISNULL(vtb_dest.cod_sco_cli, vtb_clie.cod_sco_cli)\n" + + " FROM vtb_clie\n" + + " LEFT OUTER JOIN vtb_dest ON vtb_clie.cod_anag =\n" + + " vtb_dest.cod_anag AND\n" + + " vtb_dest.cod_vdes = @codvdes\n" + + " WHERE vtb_clie.cod_anag = @codanag)\n" + + " AND vtb_agen_prov.cod_vage = @codvage)\n" + + "\n" + + "\n" + + "/*Acquisizione provvigioni agente e ispettore */\n" + + "/* @percProv = round(CASE WHEN vtb_agen_prov.cod_vage IS NULL THEN (CASE WHEN vtb_scon.cod_sco_cli IS NULL THEN (CASE WHEN mtb_lisv.cod_mart IS NULL THEN CASE WHEN vtb_clie.perc_prov = 0 THEN ISNULL(vtb_agen.perc_prov_age, 0) ELSE vtb_Clie.perc_prov END ELSE mtb_lisv.perc_prov END) ELSE vtb_scon.perc_prov END) ELSE vtb_agen_prov.perc_prov END, 5), */\n" + + "/* 6.2.2018 (FABIO): implementata nuovamente la logica della provvigione da cliente e agente se presente in anagrafica, ma senza provviggioni */\n" + + "/* 14/10/2021 (FABIO): abbiamo aggiunto il campo perc_prov_age nella VTB_AGEN in modo da non leggere da vtb_agen.perc_prov_age che invece è la provvigione dell'ispettore */\n" + + "SELECT ROUND(IIF(vtb_agen_prov.cod_vage IS NULL, (IIF(vtb_scon.cod_sco_cli IS NULL, (IIF(mtb_lisv.cod_mart IS NULL, IIF(vtb_clie.perc_prov = 0, ISNULL(vtb_agen.perc_prov_age, 0), vtb_clie.perc_prov), IIF(mtb_lisv.perc_prov = 0 OR mtb_lisv.perc_prov IS NULL, IIF(vtb_clie.perc_prov <> 0, vtb_clie.perc_prov, ISNULL(vtb_agen.perc_prov_age, 0)), mtb_lisv.perc_prov))), vtb_scon.perc_prov)), vtb_agen_prov.perc_prov), 5) AS perc_prov,\n" + + " ROUND(IIF(vtb_agen_prov.cod_vage IS NULL, (IIF(vtb_scon.cod_sco_cli IS NULL, (IIF(mtb_lisv.cod_mart IS NULL, 0, mtb_lisv.fisso_prov * @cambio / mtb_lisv.cambio)), vtb_scon.fisso_prov * @cambio / vtb_scon.cambio_divi_cont)), vtb_agen_prov.fisso_prov * @cambio / vtb_agen_prov.cambio_divi_cont), 5) AS val_prov,\n" + + " ROUND(IIF(vtb_agen_prov.cod_vage IS NULL, (IIF(vtb_scon.cod_sco_cli IS NULL, (IIF(mtb_lisv.cod_mart IS NULL, 0, mtb_lisv.perc_ispe)), vtb_scon.perc_ispe)), vtb_agen_prov.perc_ispe), 5) AS perc_ispe,\n" + + " ROUND(IIF(vtb_agen_prov.cod_vage IS NULL, (IIF(vtb_scon.cod_sco_cli IS NULL, (IIF(mtb_lisv.cod_mart IS NULL, 0, mtb_lisv.val_ispe * @cambio / mtb_lisv.cambio)), vtb_scon.val_ispe * @cambio / vtb_scon.cambio_divi_cont)), vtb_agen_prov.val_ispe * @cambio / vtb_agen_prov.cambio_divi_cont), 5) AS val_ispe,\n" + + " ISNULL(vtb_clie.perc_prov2, 0) AS perc_prov2\n" + + "\n" + + "FROM vtb_clie\n" + + " OUTER APPLY scon vtb_scon\n" + + " OUTER APPLY scon_age vtb_agen_prov\n" + + " OUTER APPLY (SELECT * FROM vtb_agen WHERE vtb_agen.cod_vage = @codvage) vtb_agen\n" + + " OUTER APPLY lisv mtb_lisv\n" + + "WHERE vtb_clie.cod_anag = @codanag\n" + + " \n" + + ")"); + } + + @Override + public void down() throws Exception { + + } + +}