mina: ottimizzazione getDatiProv
This commit is contained in:
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user