diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416133543.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416133543.java new file mode 100644 index 0000000000..860a991185 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416133543.java @@ -0,0 +1,263 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240416133543 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateFunction("[getListinoAcquisto_old]", "CREATE FUNCTION [dbo].[getListinoAcquisto_old] (@dataValidita datetime, @codAlis varchar(5), @codArtFor varchar(25), @codMart varchar(15), @viewPromo varchar(1), @codMdep varchar(5)) RETURNS TABLE AS \n" + + "return \n" + + "select listino_base.cod_alis,\n" + + " listino_base.descrizione,\n" + + " IsNull(promozioni.versione, listino_base.versione) as versione,\n" + + " IsNull(promozioni.data_iniz, listino_base.data_iniz) as data_iniz,\n" + + " IsNull(promozioni.data_fine, listino_base.data_fine) as data_fine,\n" + + " IsNull(promozioni.cod_promo, listino_base.cod_promo) as cod_promo,\n" + + " IsNull(promozioni.note_listino, listino_base.note_listino) as note_listino,\n" + + " promozioni.flag_tipo_promo,\n" + + " listino_base.cod_divi_acq,\n" + + " listino_base.expression_costo,\n" + + " listino_base.cod_mart,\n" + + " listino_base.cod_art_for,\n" + + " listino_base.unt_mis_acq,\n" + + " listino_base.rap_conv,\n" + + " IsNull(promozioni.prz_acq, listino_base.prz_acq) as prz_acq,\n" + + " IsNull(promozioni.perc_1, listino_base.perc_1) as perc_1,\n" + + " IsNull(promozioni.perc_2, listino_base.perc_2) as perc_2,\n" + + " IsNull(promozioni.perc_3, listino_base.perc_3) as perc_3,\n" + + " IsNull(promozioni.perc_4, listino_base.perc_4) as perc_4,\n" + + " IsNull(promozioni.perc_promo_1,0) as perc_promo_1,\n" + + " IsNull(promozioni.perc_promo_2,0) as perc_promo_2,\n" + + " IsNull(promozioni.perc_promo_3,0) as perc_promo_3,\n" + + " IsNull(promozioni.perc_promo_4,0) as perc_promo_4,\n" + + " listino_base.data_agg_prz,\n" + + " listino_base.perc_oneri,\n" + + " listino_base.val_oneri,\n" + + " listino_base.perc_promo,\n" + + " listino_base.val_promo,\n" + + " listino_base.qta_min_ord,\n" + + " listino_base.data_ult_prezzo,\n" + + " listino_base.gg_approvig,\n" + + " listino_base.flag_forn_pref,\n" + + " listino_base.flag_qta_multipla,\n" + + " listino_base.tipo_azione,\n" + + " listino_base.descr_art_forn,\n" + + " listino_base.cod_barre,\n" + + " listino_base.cod_barre_imb,\n" + + " listino_base.qta_cnf,\n" + + " listino_base.colli_strato,\n" + + " listino_base.colli_pedana,\n" + + " listino_base.cod_aliq,\n" + + " listino_base.note,\n" + + " listino_base.prz_ven_sug,\n" + + " listino_base.famiglia,\n" + + " listino_base.flag_attivo,\n" + + " listino_base.tipo_variazione,\n" + + " listino_base.prz_acq_um,\n" + + " listino_base.data_ins,\n" + + " listino_base.inserito_da,\n" + + " listino_base.modificato_da,\n" + + " listino_base.sconto_cartoni,\n" + + " listino_base.sconto_pedane,\n" + + " listino_base.sconto_stato, \n" + + " listino_base.partita_mag,\n" + + " listino_base.flag_prz_base_lisv,\n" + + " STUFF(( SELECT ',' + atb_promo_depo.cod_mdep AS [text()]\n" + + " FROM atb_promo_depo\n" + + " WHERE atb_promo_depo.cod_alis = promozioni.cod_alis and\n" + + " atb_promo_depo.versione =promozioni.versione\n" + + " FOR XML PATH('')), 1, 1, '' ) as lista_depo, \n" + + " dbo.f_calcPrzNettoAcq( listino_base.cod_alis, \n" + + " listino_base.expression_costo, \n" + + " IsNull(promozioni.perc_1, listino_base.perc_1),\n" + + " IsNull(promozioni.perc_2, listino_base.perc_2),\n" + + " IsNull(promozioni.perc_3, listino_base.perc_3),\n" + + " IsNull(promozioni.perc_4, listino_base.perc_4),\n" + + " IsNull(promozioni.perc_promo_1,0) ,\n" + + " IsNull(promozioni.perc_promo_2,0) ,\n" + + " IsNull(promozioni.perc_promo_3,0) ,\n" + + " IsNull(promozioni.perc_promo_4,0) ,\n" + + " listino_base.perc_promo, \n" + + " listino_base.val_promo, \n" + + " listino_base.perc_oneri,\n" + + " listino_base.val_oneri,\n" + + " IsNull(promozioni.prz_acq, listino_base.prz_acq) ) as prz_acq_netto , \n" + + " dbo.f_calcPrzNettoAcq( listino_base.cod_alis, \n" + + " listino_base.expression_costo, \n" + + " IsNull(promozioni.perc_1, listino_base.perc_1),\n" + + " IsNull(promozioni.perc_2, listino_base.perc_2),\n" + + " IsNull(promozioni.perc_3, listino_base.perc_3),\n" + + " IsNull(promozioni.perc_4, listino_base.perc_4),\n" + + " IsNull(promozioni.perc_promo_1,0) ,\n" + + " IsNull(promozioni.perc_promo_2,0) ,\n" + + " IsNull(promozioni.perc_promo_3,0) ,\n" + + " IsNull(promozioni.perc_promo_4,0) ,\n" + + " listino_base.perc_promo, \n" + + " listino_base.val_promo, \n" + + " listino_base.perc_oneri,\n" + + " listino_base.val_oneri,\n" + + " IsNull(promozioni.prz_acq, listino_base.prz_acq_um) ) as prz_acq_netto_um,\n" + + " case when listino_base.flag_prz_base_lisv = 'C' OR (listino_base.flag_prz_base_lisv = 'P' AND prz_ven_sug = 0 )THEN \n" + + " dbo.f_calcPrzNettoAcq( listino_base.cod_alis, \n" + + " listino_base.expression_costo, \n" + + " IsNull(promozioni.perc_1, listino_base.perc_1),\n" + + " IsNull(promozioni.perc_2, listino_base.perc_2),\n" + + " IsNull(promozioni.perc_3, listino_base.perc_3),\n" + + " IsNull(promozioni.perc_4, listino_base.perc_4),\n" + + " IsNull(promozioni.perc_promo_1,0) ,\n" + + " IsNull(promozioni.perc_promo_2,0) ,\n" + + " IsNull(promozioni.perc_promo_3,0) ,\n" + + " IsNull(promozioni.perc_promo_4,0) ,\n" + + " listino_base.perc_promo, \n" + + " listino_base.val_promo, \n" + + " listino_base.perc_oneri,\n" + + " listino_base.val_oneri,\n" + + " IsNull(promozioni.prz_acq, listino_base.prz_acq) ) else prz_ven_sug end as prz_base_lisv,\n" + + " listino_base.shelf_life,\n" + + " atb_list_data.cod_vage,\n" + + " atb_list_data.cod_vvet,\n" + + " IsNull(promozioni.perc_prov, listino_base.perc_prov) as perc_prov,\n" + + " IsNull(promozioni.val_prov, listino_base.val_prov) as val_prov, \n" + + " IsNull(promozioni.qta_acq_contr, 0) as qta_acq_contr,\n" + + " IsNull(promozioni.costo_trasp, 0) as costo_trasp,\n" + + " listino_base.tipo_calc_prz,\n" + + " listino_base.note_commerciali\n" + + "from (SELECT atb_list.cod_alis,\n" + + " atb_list.descrizione,\n" + + " atb_list.tipo_calc_prz,\n" + + " mtb_lisa_data.versione as versione, \n" + + " atb_list_data.data_iniz as data_iniz, \n" + + " atb_list_data.data_fine as data_fine, \n" + + " atb_list_data.cod_promo as cod_promo, \n" + + " atb_list_data.note as note_listino,\n" + + " atb_list.cod_divi_acq, \n" + + " atb_list.expression_costo, \n" + + " mtb_lisa.cod_mart, \n" + + " mtb_lisa.cod_art_for, \n" + + " mtb_lisa.unt_mis_acq, \n" + + " IsNull(mtb_lisa.rap_conv, 1) as rap_conv, \n" + + " IsNull(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq) as 'prz_acq',\n" + + " IsNull(mtb_lisa_data.perc_1, mtb_lisa.perc_1) as 'perc_1',\n" + + " IsNull(mtb_lisa_data.perc_2, mtb_lisa.perc_2) as 'perc_2',\n" + + " IsNull(mtb_lisa_data.perc_3, mtb_lisa.perc_3) as 'perc_3',\n" + + " IsNull(mtb_lisa_data.perc_4, mtb_lisa.perc_4) as 'perc_4', \n" + + " IsNull(mtb_lisa_data.data_agg_prz, mtb_lisa.data_agg_prz) as 'data_agg_prz', \n" + + " IsNull(mtb_lisa_data.perc_oneri,mtb_lisa.perc_oneri) as 'perc_oneri',\n" + + " IsNull(mtb_lisa_data.val_oneri, mtb_lisa.val_oneri) as 'val_oneri', \n" + + " IsNull(mtb_lisa_data.perc_promo, mtb_lisa.perc_promo) as 'perc_promo',\n" + + " IsNull(mtb_lisa_data.val_promo, mtb_lisa.val_promo) as 'val_promo',\n" + + " mtb_lisa.qta_min_ord,\n" + + " mtb_lisa.data_ult_prezzo, \n" + + " mtb_lisa.gg_approvig, \n" + + " mtb_lisa.flag_forn_pref, \n" + + " mtb_lisa.flag_qta_multipla, \n" + + " mtb_lisa.tipo_azione, \n" + + " mtb_lisa.descr_art_forn, \n" + + " mtb_lisa.cod_barre, \n" + + " mtb_lisa.cod_barre_imb, \n" + + " case when mtb_lisa.qta_cnf is null or mtb_lisa.qta_cnf = 1 or mtb_lisa.qta_cnf = 0 then mtb_aart.qta_cnf else mtb_lisa.qta_cnf end as 'qta_cnf', \n" + + " mtb_lisa.colli_strato,\n" + + " mtb_lisa.colli_pedana, \n" + + " mtb_lisa.cod_aliq, \n" + + " mtb_lisa.note, \n" + + " IsNull(mtb_lisa_data.prz_ven_sug, mtb_lisa.prz_ven_sug) as prz_ven_sug, \n" + + " mtb_lisa.famiglia, \n" + + " CASE WHEN atb_list.flag_attivo = 'N' THEN 'N' ELSE mtb_lisa.flag_attivo END flag_attivo, \n" + + " mtb_lisa_data.tipo_variazione as tipo_variazione, \n" + + " Round(IsNull(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq)/mtb_lisa.rap_conv, 5) as prz_acq_um, \n" + + " atb_list_data.data_ins,\n" + + " atb_list_data.inserito_da,\n" + + " mtb_lisa_data.modificato_da,\n" + + " ISNULL(mtb_lisa_data.sconto_cartoni, 0) as sconto_cartoni,\n" + + " ISNULL(mtb_lisa_data.sconto_pedane, 0) as sconto_pedane,\n" + + " ISNULL(mtb_lisa_data.sconto_strato, 0) as sconto_stato ,\n" + + " atb_list_data.FLAG_TIPO_PROMO AS flag_tipo_promo,\n" + + " mtb_lisa_data.partita_mag,\n" + + " atb_list.flag_prz_base_lisv,\n" + + " mtb_lisa.shelf_life,\n" + + " mtb_lisa_data.perc_prov,\n" + + " mtb_lisa_data.val_prov,\n" + + " mtb_lisa_data.qta_acq_contr,\n" + + " mtb_lisa_data.note_commerciali\n" + + "FROM (select \n" + + "atb_list.cod_alis, \n" + + "mtb_lisa.cod_art_for,\n" + + " max((case when atb_list_data.versione is null then null else IsNull(atb_list_data.cod_promo+ '|', '') + Convert(varchar(10), atb_list_data.data_iniz, 111) + ' ' + replicate('0', 5 - len(atb_list_data.versione)) + Convert(varchar(5), atb_list_data.versione) end ) ) as max_lisa\n" + + "from atb_list \n" + + " inner join mtb_lisa on atb_list.cod_alis = mtb_lisa.cod_alis\n" + + " left outer join mtb_lisa_data on mtb_lisa.cod_alis = mtb_lisa_data.cod_alis and mtb_lisa.cod_art_for = mtb_lisa_data.cod_art_for\n" + + " left outer join atb_list_data on atb_list.cod_alis = atb_list_data.cod_alis and \n" + + " mtb_lisa_data.versione = atb_list_data.versione and \n" + + " atb_list_data.cod_promo is null and\n" + + " atb_list_data.data_iniz <= IsNull(@dataValidita, convert(datetime, convert(varchar(10), GetDate(), 121)))\n" + + "where (@codAlis is null or atb_list.cod_alis = @codAlis ) and \n" + + "(@codArtFor is null or mtb_lisa.cod_art_for = @codArtFor ) and\n" + + "(@codMart is null or mtb_lisa.cod_mart = @codMart ) \n" + + "group by atb_list.cod_alis, \n" + + "mtb_lisa.cod_art_for ) tmp_lisa inner join mtb_lisa on tmp_lisa.cod_art_for = mtb_lisa.cod_art_for and\n" + + " tmp_lisa.cod_alis= mtb_lisa.cod_alis \n" + + " inner join atb_list on mtb_lisa.cod_alis = atb_list.cod_alis \n" + + " inner join gtb_divi on atb_list.cod_divi_acq = gtb_divi.cod_divi \n" + + "left outer join mtb_lisa_data on tmp_lisa.cod_alis = mtb_lisa_data.cod_alis and \n" + + "tmp_lisa.cod_art_for = mtb_lisa_data.cod_art_for and \n" + + "Convert(int, right( tmp_lisa.max_lisa, 5)) = mtb_lisa_data.versione \n" + + "left outer join atb_list_data on mtb_lisa_data.cod_alis = atb_list_data.cod_alis and \n" + + "mtb_lisa_data.versione = atb_list_data.versione \n" + + "left outer join mtb_aart on mtb_lisa.cod_mart = mtb_aart.cod_mart) listino_base \n" + + " left outer join ( select atb_list_data.cod_alis, \n" + + " mtb_lisa_data.cod_art_for,\n" + + " Min(atb_list_data.data_iniz) as data_iniz,\n" + + " Min(atb_list_data.data_fine) as data_fine,\n" + + " Min(atb_list_data.versione ) as versione,\n" + + " Min(atb_list_data.cod_promo) as cod_promo,\n" + + " case when atb_list_data.flag_tipo_promo is null then atb_list_data.note else null end as note_listino,\n" + + " Min(atb_list_data.flag_tipo_promo) as flag_tipo_promo,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'T' THEN mtb_lisa_data.prz_acq else null end) as prz_acq,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'T' THEN Round(mtb_lisa_data.prz_acq /mtb_lisa.rap_conv, 5) else null end ) as prz_acq_um,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_1 else null end) as perc_1,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_2 else null end) as perc_2,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_3 else null end) as perc_3,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_4 else null end) as perc_4,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'E' THEN mtb_lisa_promo.perc_promo_1 else null end) as perc_promo_1,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'E' THEN mtb_lisa_promo.perc_promo_2 else null end) as perc_promo_2,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'E' THEN mtb_lisa_promo.perc_promo_3 else null end) as perc_promo_3,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'E' THEN mtb_lisa_promo.perc_promo_4 else null end) as perc_promo_4,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_prov ELSE null End ) as perc_prov,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.val_prov ELSE null End ) as val_prov, \n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.qta_acq_contr ELSE null End ) as qta_acq_contr,\n" + + " Max(atb_list_data.costo_trasp) as costo_trasp\n" + + " from atb_list_data inner join atb_promo_depo on atb_list_data.cod_alis = atb_promo_depo.cod_alis and\n" + + " atb_list_data.versione = atb_promo_depo.versione \n" + + " inner join mtb_lisa_data on atb_list_data.cod_alis = mtb_lisa_data.cod_alis and atb_list_data.versione = mtb_lisa_data.versione\n" + + " inner join mtb_lisa on mtb_lisa_data.cod_alis = mtb_lisa.cod_alis and mtb_lisa_data.cod_art_for = mtb_lisa.cod_art_for\n" + + " inner join mtb_lisa_promo on atb_list_data.cod_alis = mtb_lisa_promo.cod_alis and atb_list_data.versione = mtb_lisa_promo.versione and mtb_lisa.cod_art_for = mtb_lisa_promo.cod_art_for\n" + + " where atb_list_data.cod_promo is not null and\n" + + " atb_list_data.data_iniz <= IsNull(@dataValidita, convert(datetime, convert(varchar(10), GetDate(), 121))) \n" + + " and atb_list_data.data_fine >= IsNull(@dataValidita, convert(datetime, convert(varchar(10), GetDate(), 121))) \n" + + " and (@codMdep is null or atb_promo_depo.cod_mdep = @codMdep) \n" + + " and (@codAlis is null or atb_list_data.cod_alis = @codalis ) \n" + + " and (@codArtFor is null or mtb_lisa_data.cod_art_for = @codArtFor )\n" + + " and (@codMart is null or mtb_lisa.cod_mart = @codMart ) \n" + + " and @viewPromo = 'S'\n" + + " group by atb_list_data.cod_alis, \n" + + " mtb_lisa_data.cod_art_for,\n" + + " case when atb_list_data.flag_tipo_promo is null then atb_list_data.note else null end ) promozioni on listino_base.cod_alis = promozioni.cod_alis and \n" + + " listino_base.cod_art_for = promozioni.cod_art_for \n" + + " left outer join atb_list_data on atb_list_data.cod_alis = listino_base.cod_alis and isnull(promozioni.versione, listino_base.versione) = atb_list_data.versione\n" + + " \n" + + "/*select *\n" + + "from dbo.getListinoAcquisto_base(@datavalidita, @codAlis, @codArtfor, @codMart, @viewPromo, @codMdep, 1)*/"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416133906.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416133906.java new file mode 100644 index 0000000000..263c7f0841 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416133906.java @@ -0,0 +1,34 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomerDB; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240416133906 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createSetup("MTB_LISA", "SETUP", "IGNORE_QTA_CNF_UNO", "1", "Ignora = 1: se la qta_cnf presente nei listini di acquisto รจ = 1 prende quella presente in anagrafica articoli", false, null, false, false, false, false, false, null, false, null); + + if (!isCustomerDb( + IntegryCustomerDB.Carelli_Carelli, + IntegryCustomerDB.Carelli_GestFood, + IntegryCustomerDB.Carelli_Panimal, + IntegryCustomerDB.Carelli_Format, + IntegryCustomerDB.Carelli_Murgia) + ) + return; + + updateSetupValue("MTB_LISA", "SETUP", "IGNORE_QTA_CNF_UNO", "0"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416134927.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416134927.java new file mode 100644 index 0000000000..d17375e638 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416134927.java @@ -0,0 +1,33 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomerDB; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240416134927 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + if (!isCustomerDb( + IntegryCustomerDB.Carelli_Carelli, + IntegryCustomerDB.Carelli_GestFood, + IntegryCustomerDB.Carelli_Panimal, + IntegryCustomerDB.Carelli_Format, + IntegryCustomerDB.Carelli_Murgia) + ) + return; + + executeStatement("update mtb_lisa set mtb_lisa.qta_cnf = mtb_aart.qta_cnf\n" + + "from mtb_lisa inner join mtb_aart on mtb_lisa.cod_mart = mtb_aart.cod_mart\n" + + "where mtb_lisa.qta_cnf = 1 and mtb_aart.qta_cnf <> 1\n"); + } + + @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_20240416135010.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416135010.java new file mode 100644 index 0000000000..c2765beef1 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240416135010.java @@ -0,0 +1,341 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240416135010 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateFunction("getListinoAcquisto", "create FUNCTION [dbo].[getListinoAcquisto] (@dataValidita datetime, @codAlis varchar(5), @codArtFor varchar(25), @codMart varchar(15), @viewPromo varchar(1), @codMdep varchar(5)) \n" + + "RETURNS \n" + + "@lisa TABLE \n" + + "(\n" + + " [cod_alis] [varchar](5),\n" + + " [descrizione] [varchar](40),\n" + + " [versione] [int],\n" + + " [data_iniz] [datetime],\n" + + " [data_fine] [datetime],\n" + + " [cod_promo] [varchar](10),\n" + + " [note_listino] [varchar](255),\n" + + " [flag_tipo_promo] [varchar](1),\n" + + " [cod_divi_acq] [varchar](5),\n" + + " [expression_costo] [varchar](1024),\n" + + " [cod_mart] [varchar](15),\n" + + " [cod_art_for] [varchar](25),\n" + + " [unt_mis_acq] [varchar](3),\n" + + " [rap_conv] [numeric](15, 5),\n" + + " [prz_acq] [numeric](20, 5),\n" + + " [perc_1] [numeric](5, 2),\n" + + " [perc_2] [numeric](5, 2),\n" + + " [perc_3] [numeric](5, 2),\n" + + " [perc_4] [numeric](5, 2),\n" + + " [perc_promo_1] [decimal](5, 2),\n" + + " [perc_promo_2] [decimal](5, 2),\n" + + " [perc_promo_3] [decimal](5, 2),\n" + + " [perc_promo_4] [decimal](5, 2),\n" + + " [data_agg_prz] [datetime],\n" + + " [perc_oneri] [numeric](5, 2),\n" + + " [val_oneri] [numeric](20, 5),\n" + + " [perc_promo] [numeric](5, 3),\n" + + " [val_promo] [numeric](15, 5),\n" + + " [qta_min_ord] [numeric](15, 5),\n" + + " [data_ult_prezzo] [datetime],\n" + + " [gg_approvig] [numeric](5, 2),\n" + + " [flag_forn_pref] [varchar](1),\n" + + " [flag_qta_multipla] [varchar](1),\n" + + " [tipo_azione] [varchar](1),\n" + + " [descr_art_forn] [varchar](255),\n" + + " [cod_barre] [varchar](40),\n" + + " [cod_barre_imb] [varchar](40),\n" + + " [qta_cnf] [numeric](15, 5),\n" + + " [colli_strato] [numeric](20, 5),\n" + + " [colli_pedana] [numeric](15, 5),\n" + + " [cod_aliq] [varchar](5),\n" + + " [note] [varchar](255),\n" + + " [prz_ven_sug] [numeric](20, 5),\n" + + " [famiglia] [varchar](40),\n" + + " [flag_attivo] [varchar](1),\n" + + " [tipo_variazione] [varchar](1),\n" + + " [prz_acq_um] [numeric](38, 18),\n" + + " [data_ins] [datetime],\n" + + " [inserito_da] [varchar](40),\n" + + " [modificato_da] [varchar](40),\n" + + " [sconto_cartoni] [decimal](5, 2),\n" + + " [sconto_pedane] [decimal](5, 2),\n" + + " [sconto_stato] [decimal](5, 2),\n" + + " [partita_mag] [varchar](20),\n" + + " [flag_prz_base_lisv] [varchar](1),\n" + + " [lista_depo] [nvarchar](max),\n" + + " [prz_acq_netto] [decimal](20, 5),\n" + + " [prz_acq_netto_um] [decimal](20, 5),\n" + + " [prz_base_lisv] [decimal](20, 5),\n" + + " [shelf_life] [int],\n" + + " [cod_vage] [varchar](5),\n" + + " [cod_vvet] [varchar](5),\n" + + " [perc_prov] [decimal](5, 2),\n" + + " [val_prov] [decimal](20, 5),\n" + + " [qta_acq_contr] [numeric](20, 5),\n" + + " [costo_trasp] [numeric](20, 5),\n" + + " [tipo_calc_prz] [int],\n" + + " [note_commerciali] [varchar](1024)\n" + + ")\n" + + "AS\n" + + "BEGIN\n" + + "declare @ignore bit = 1\n" + + "\n" + + "SELECT @ignore = Cast(dbo.getGestSetupWithdefault('MTB_LISA', 'SETUP', 'IGNORE_QTA_CNF_UNO', '1') as int)\n" + + "\n" + + "insert into @lisa\n" + + "select listino_base.cod_alis,\n" + + " listino_base.descrizione,\n" + + " IsNull(promozioni.versione, listino_base.versione) as versione,\n" + + " IsNull(promozioni.data_iniz, listino_base.data_iniz) as data_iniz,\n" + + " IsNull(promozioni.data_fine, listino_base.data_fine) as data_fine,\n" + + " IsNull(promozioni.cod_promo, listino_base.cod_promo) as cod_promo,\n" + + " IsNull(promozioni.note_listino, listino_base.note_listino) as note_listino,\n" + + " promozioni.flag_tipo_promo,\n" + + " listino_base.cod_divi_acq,\n" + + " listino_base.expression_costo,\n" + + " listino_base.cod_mart,\n" + + " listino_base.cod_art_for,\n" + + " listino_base.unt_mis_acq,\n" + + " listino_base.rap_conv,\n" + + " IsNull(promozioni.prz_acq, listino_base.prz_acq) as prz_acq,\n" + + " IsNull(promozioni.perc_1, listino_base.perc_1) as perc_1,\n" + + " IsNull(promozioni.perc_2, listino_base.perc_2) as perc_2,\n" + + " IsNull(promozioni.perc_3, listino_base.perc_3) as perc_3,\n" + + " IsNull(promozioni.perc_4, listino_base.perc_4) as perc_4,\n" + + " IsNull(promozioni.perc_promo_1,0) as perc_promo_1,\n" + + " IsNull(promozioni.perc_promo_2,0) as perc_promo_2,\n" + + " IsNull(promozioni.perc_promo_3,0) as perc_promo_3,\n" + + " IsNull(promozioni.perc_promo_4,0) as perc_promo_4,\n" + + " listino_base.data_agg_prz,\n" + + " listino_base.perc_oneri,\n" + + " listino_base.val_oneri,\n" + + " listino_base.perc_promo,\n" + + " listino_base.val_promo,\n" + + " listino_base.qta_min_ord,\n" + + " listino_base.data_ult_prezzo,\n" + + " listino_base.gg_approvig,\n" + + " listino_base.flag_forn_pref,\n" + + " listino_base.flag_qta_multipla,\n" + + " listino_base.tipo_azione,\n" + + " listino_base.descr_art_forn,\n" + + " listino_base.cod_barre,\n" + + " listino_base.cod_barre_imb,\n" + + " listino_base.qta_cnf,\n" + + " listino_base.colli_strato,\n" + + " listino_base.colli_pedana,\n" + + " listino_base.cod_aliq,\n" + + " listino_base.note,\n" + + " listino_base.prz_ven_sug,\n" + + " listino_base.famiglia,\n" + + " listino_base.flag_attivo,\n" + + " listino_base.tipo_variazione,\n" + + " listino_base.prz_acq_um,\n" + + " listino_base.data_ins,\n" + + " listino_base.inserito_da,\n" + + " listino_base.modificato_da,\n" + + " listino_base.sconto_cartoni,\n" + + " listino_base.sconto_pedane,\n" + + " listino_base.sconto_stato, \n" + + " listino_base.partita_mag,\n" + + " listino_base.flag_prz_base_lisv,\n" + + " STUFF(( SELECT ',' + atb_promo_depo.cod_mdep AS [text()]\n" + + " FROM atb_promo_depo\n" + + " WHERE atb_promo_depo.cod_alis = promozioni.cod_alis and\n" + + " atb_promo_depo.versione =promozioni.versione\n" + + " FOR XML PATH('')), 1, 1, '' ) as lista_depo, \n" + + " dbo.f_calcPrzNettoAcq( listino_base.cod_alis, \n" + + " listino_base.expression_costo, \n" + + " IsNull(promozioni.perc_1, listino_base.perc_1),\n" + + " IsNull(promozioni.perc_2, listino_base.perc_2),\n" + + " IsNull(promozioni.perc_3, listino_base.perc_3),\n" + + " IsNull(promozioni.perc_4, listino_base.perc_4),\n" + + " IsNull(promozioni.perc_promo_1,0) ,\n" + + " IsNull(promozioni.perc_promo_2,0) ,\n" + + " IsNull(promozioni.perc_promo_3,0) ,\n" + + " IsNull(promozioni.perc_promo_4,0) ,\n" + + " listino_base.perc_promo, \n" + + " listino_base.val_promo, \n" + + " listino_base.perc_oneri,\n" + + " listino_base.val_oneri,\n" + + " IsNull(promozioni.prz_acq, listino_base.prz_acq) ) as prz_acq_netto , \n" + + " dbo.f_calcPrzNettoAcq( listino_base.cod_alis, \n" + + " listino_base.expression_costo, \n" + + " IsNull(promozioni.perc_1, listino_base.perc_1),\n" + + " IsNull(promozioni.perc_2, listino_base.perc_2),\n" + + " IsNull(promozioni.perc_3, listino_base.perc_3),\n" + + " IsNull(promozioni.perc_4, listino_base.perc_4),\n" + + " IsNull(promozioni.perc_promo_1,0) ,\n" + + " IsNull(promozioni.perc_promo_2,0) ,\n" + + " IsNull(promozioni.perc_promo_3,0) ,\n" + + " IsNull(promozioni.perc_promo_4,0) ,\n" + + " listino_base.perc_promo, \n" + + " listino_base.val_promo, \n" + + " listino_base.perc_oneri,\n" + + " listino_base.val_oneri,\n" + + " IsNull(promozioni.prz_acq, listino_base.prz_acq_um) ) as prz_acq_netto_um,\n" + + " case when listino_base.flag_prz_base_lisv = 'C' OR (listino_base.flag_prz_base_lisv = 'P' AND prz_ven_sug = 0 )THEN \n" + + " dbo.f_calcPrzNettoAcq( listino_base.cod_alis, \n" + + " listino_base.expression_costo, \n" + + " IsNull(promozioni.perc_1, listino_base.perc_1),\n" + + " IsNull(promozioni.perc_2, listino_base.perc_2),\n" + + " IsNull(promozioni.perc_3, listino_base.perc_3),\n" + + " IsNull(promozioni.perc_4, listino_base.perc_4),\n" + + " IsNull(promozioni.perc_promo_1,0) ,\n" + + " IsNull(promozioni.perc_promo_2,0) ,\n" + + " IsNull(promozioni.perc_promo_3,0) ,\n" + + " IsNull(promozioni.perc_promo_4,0) ,\n" + + " listino_base.perc_promo, \n" + + " listino_base.val_promo, \n" + + " listino_base.perc_oneri,\n" + + " listino_base.val_oneri,\n" + + " IsNull(promozioni.prz_acq, listino_base.prz_acq) ) else prz_ven_sug end as prz_base_lisv,\n" + + " listino_base.shelf_life,\n" + + " atb_list_data.cod_vage,\n" + + " atb_list_data.cod_vvet,\n" + + " IsNull(promozioni.perc_prov, listino_base.perc_prov) as perc_prov,\n" + + " IsNull(promozioni.val_prov, listino_base.val_prov) as val_prov, \n" + + " IsNull(promozioni.qta_acq_contr, 0) as qta_acq_contr,\n" + + " IsNull(promozioni.costo_trasp, 0) as costo_trasp,\n" + + " listino_base.tipo_calc_prz,\n" + + " listino_base.note_commerciali\n" + + "from (SELECT atb_list.cod_alis,\n" + + " atb_list.descrizione,\n" + + " atb_list.tipo_calc_prz,\n" + + " mtb_lisa_data.versione as versione, \n" + + " atb_list_data.data_iniz as data_iniz, \n" + + " atb_list_data.data_fine as data_fine, \n" + + " atb_list_data.cod_promo as cod_promo, \n" + + " atb_list_data.note as note_listino,\n" + + " atb_list.cod_divi_acq, \n" + + " atb_list.expression_costo, \n" + + " mtb_lisa.cod_mart, \n" + + " mtb_lisa.cod_art_for, \n" + + " mtb_lisa.unt_mis_acq, \n" + + " IsNull(mtb_lisa.rap_conv, 1) as rap_conv, \n" + + " IsNull(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq) as 'prz_acq',\n" + + " IsNull(mtb_lisa_data.perc_1, mtb_lisa.perc_1) as 'perc_1',\n" + + " IsNull(mtb_lisa_data.perc_2, mtb_lisa.perc_2) as 'perc_2',\n" + + " IsNull(mtb_lisa_data.perc_3, mtb_lisa.perc_3) as 'perc_3',\n" + + " IsNull(mtb_lisa_data.perc_4, mtb_lisa.perc_4) as 'perc_4', \n" + + " IsNull(mtb_lisa_data.data_agg_prz, mtb_lisa.data_agg_prz) as 'data_agg_prz', \n" + + " IsNull(mtb_lisa_data.perc_oneri,mtb_lisa.perc_oneri) as 'perc_oneri',\n" + + " IsNull(mtb_lisa_data.val_oneri, mtb_lisa.val_oneri) as 'val_oneri', \n" + + " IsNull(mtb_lisa_data.perc_promo, mtb_lisa.perc_promo) as 'perc_promo',\n" + + " IsNull(mtb_lisa_data.val_promo, mtb_lisa.val_promo) as 'val_promo',\n" + + " mtb_lisa.qta_min_ord,\n" + + " mtb_lisa.data_ult_prezzo, \n" + + " mtb_lisa.gg_approvig, \n" + + " mtb_lisa.flag_forn_pref, \n" + + " mtb_lisa.flag_qta_multipla, \n" + + " mtb_lisa.tipo_azione, \n" + + " mtb_lisa.descr_art_forn, \n" + + " mtb_lisa.cod_barre, \n" + + " mtb_lisa.cod_barre_imb, \n" + + " case when mtb_lisa.qta_cnf is null or (@ignore = 1 AND mtb_lisa.qta_cnf = 1) or mtb_lisa.qta_cnf = 0 then mtb_aart.qta_cnf else mtb_lisa.qta_cnf end as 'qta_cnf', \n" + + " mtb_lisa.colli_strato,\n" + + " mtb_lisa.colli_pedana, \n" + + " mtb_lisa.cod_aliq, \n" + + " mtb_lisa.note, \n" + + " IsNull(mtb_lisa_data.prz_ven_sug, mtb_lisa.prz_ven_sug) as prz_ven_sug, \n" + + " mtb_lisa.famiglia, \n" + + " CASE WHEN atb_list.flag_attivo = 'N' THEN 'N' ELSE mtb_lisa.flag_attivo END flag_attivo, \n" + + " mtb_lisa_data.tipo_variazione as tipo_variazione, \n" + + " Round(IsNull(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq)/mtb_lisa.rap_conv, 5) as prz_acq_um, \n" + + " atb_list_data.data_ins,\n" + + " atb_list_data.inserito_da,\n" + + " mtb_lisa_data.modificato_da,\n" + + " ISNULL(mtb_lisa_data.sconto_cartoni, 0) as sconto_cartoni,\n" + + " ISNULL(mtb_lisa_data.sconto_pedane, 0) as sconto_pedane,\n" + + " ISNULL(mtb_lisa_data.sconto_strato, 0) as sconto_stato ,\n" + + " atb_list_data.FLAG_TIPO_PROMO AS flag_tipo_promo,\n" + + " mtb_lisa_data.partita_mag,\n" + + " atb_list.flag_prz_base_lisv,\n" + + " mtb_lisa.shelf_life,\n" + + " mtb_lisa_data.perc_prov,\n" + + " mtb_lisa_data.val_prov,\n" + + " mtb_lisa_data.qta_acq_contr,\n" + + " mtb_lisa_data.note_commerciali\n" + + "FROM (select \n" + + "atb_list.cod_alis, \n" + + "mtb_lisa.cod_art_for,\n" + + " max((case when atb_list_data.versione is null then null else IsNull(atb_list_data.cod_promo+ '|', '') + Convert(varchar(10), atb_list_data.data_iniz, 111) + ' ' + replicate('0', 5 - len(atb_list_data.versione)) + Convert(varchar(5), atb_list_data.versione) end ) ) as max_lisa\n" + + "from atb_list \n" + + " inner join mtb_lisa on atb_list.cod_alis = mtb_lisa.cod_alis\n" + + " left outer join mtb_lisa_data on mtb_lisa.cod_alis = mtb_lisa_data.cod_alis and mtb_lisa.cod_art_for = mtb_lisa_data.cod_art_for\n" + + " left outer join atb_list_data on atb_list.cod_alis = atb_list_data.cod_alis and \n" + + " mtb_lisa_data.versione = atb_list_data.versione and \n" + + " atb_list_data.cod_promo is null and\n" + + " atb_list_data.data_iniz <= IsNull(@dataValidita, convert(datetime, convert(varchar(10), GetDate(), 121)))\n" + + "where (@codAlis is null or atb_list.cod_alis = @codAlis ) and \n" + + "(@codArtFor is null or mtb_lisa.cod_art_for = @codArtFor ) and\n" + + "(@codMart is null or mtb_lisa.cod_mart = @codMart ) \n" + + "group by atb_list.cod_alis, \n" + + "mtb_lisa.cod_art_for ) tmp_lisa inner join mtb_lisa on tmp_lisa.cod_art_for = mtb_lisa.cod_art_for and\n" + + " tmp_lisa.cod_alis= mtb_lisa.cod_alis \n" + + " inner join atb_list on mtb_lisa.cod_alis = atb_list.cod_alis \n" + + " inner join gtb_divi on atb_list.cod_divi_acq = gtb_divi.cod_divi \n" + + "left outer join mtb_lisa_data on tmp_lisa.cod_alis = mtb_lisa_data.cod_alis and \n" + + "tmp_lisa.cod_art_for = mtb_lisa_data.cod_art_for and \n" + + "Convert(int, right( tmp_lisa.max_lisa, 5)) = mtb_lisa_data.versione \n" + + "left outer join atb_list_data on mtb_lisa_data.cod_alis = atb_list_data.cod_alis and \n" + + "mtb_lisa_data.versione = atb_list_data.versione \n" + + "left outer join mtb_aart on mtb_lisa.cod_mart = mtb_aart.cod_mart) listino_base \n" + + " left outer join ( select atb_list_data.cod_alis, \n" + + " mtb_lisa_data.cod_art_for,\n" + + " Min(atb_list_data.data_iniz) as data_iniz,\n" + + " Min(atb_list_data.data_fine) as data_fine,\n" + + " Min(atb_list_data.versione ) as versione,\n" + + " Min(atb_list_data.cod_promo) as cod_promo,\n" + + " case when atb_list_data.flag_tipo_promo is null then atb_list_data.note else null end as note_listino,\n" + + " Min(atb_list_data.flag_tipo_promo) as flag_tipo_promo,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'T' THEN mtb_lisa_data.prz_acq else null end) as prz_acq,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'T' THEN Round(mtb_lisa_data.prz_acq /mtb_lisa.rap_conv, 5) else null end ) as prz_acq_um,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_1 else null end) as perc_1,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_2 else null end) as perc_2,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_3 else null end) as perc_3,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_4 else null end) as perc_4,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'E' THEN mtb_lisa_promo.perc_promo_1 else null end) as perc_promo_1,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'E' THEN mtb_lisa_promo.perc_promo_2 else null end) as perc_promo_2,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'E' THEN mtb_lisa_promo.perc_promo_3 else null end) as perc_promo_3,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'E' THEN mtb_lisa_promo.perc_promo_4 else null end) as perc_promo_4,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_prov ELSE null End ) as perc_prov,\n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.val_prov ELSE null End ) as val_prov, \n" + + " max(case when atb_list_data.flag_tipo_promo is null or atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.qta_acq_contr ELSE null End ) as qta_acq_contr,\n" + + " Max(atb_list_data.costo_trasp) as costo_trasp\n" + + " from atb_list_data inner join atb_promo_depo on atb_list_data.cod_alis = atb_promo_depo.cod_alis and\n" + + " atb_list_data.versione = atb_promo_depo.versione \n" + + " inner join mtb_lisa_data on atb_list_data.cod_alis = mtb_lisa_data.cod_alis and atb_list_data.versione = mtb_lisa_data.versione\n" + + " inner join mtb_lisa on mtb_lisa_data.cod_alis = mtb_lisa.cod_alis and mtb_lisa_data.cod_art_for = mtb_lisa.cod_art_for\n" + + " inner join mtb_lisa_promo on atb_list_data.cod_alis = mtb_lisa_promo.cod_alis and atb_list_data.versione = mtb_lisa_promo.versione and mtb_lisa.cod_art_for = mtb_lisa_promo.cod_art_for\n" + + " where atb_list_data.cod_promo is not null and\n" + + " atb_list_data.data_iniz <= IsNull(@dataValidita, convert(datetime, convert(varchar(10), GetDate(), 121))) \n" + + " and atb_list_data.data_fine >= IsNull(@dataValidita, convert(datetime, convert(varchar(10), GetDate(), 121))) \n" + + " and (@codMdep is null or atb_promo_depo.cod_mdep = @codMdep) \n" + + " and (@codAlis is null or atb_list_data.cod_alis = @codalis ) \n" + + " and (@codArtFor is null or mtb_lisa_data.cod_art_for = @codArtFor )\n" + + " and (@codMart is null or mtb_lisa.cod_mart = @codMart ) \n" + + " and @viewPromo = 'S'\n" + + " group by atb_list_data.cod_alis, \n" + + " mtb_lisa_data.cod_art_for,\n" + + " case when atb_list_data.flag_tipo_promo is null then atb_list_data.note else null end ) promozioni on listino_base.cod_alis = promozioni.cod_alis and \n" + + " listino_base.cod_art_for = promozioni.cod_art_for \n" + + " left outer join atb_list_data on atb_list_data.cod_alis = listino_base.cod_alis and isnull(promozioni.versione, listino_base.versione) = atb_list_data.versione\n" + + " \n" + + " RETURN \n" + + "END"); + } + + @Override + public void down() throws Exception { + + } + +} 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 ff47402e12..3497b3a03a 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 @@ -184,8 +184,8 @@ public class DocOrdUntMisRules extends QueryRules { if (UtilityBigDecimal.isNullOrZero(qtaCnf) && UtilityString.equalsIgnoreCase(gestione, "A") && !UtilityString.isNullOrEmpty(listino)) { sql = - Query.format("SELECT qta_cnf FROM mtb_lisa WHERE cod_alis = %s AND cod_mart = %s AND ( %s is null OR cod_art_for = %s) ORDER BY flag_attivo", - listino, codMart, codArtFor, codArtFor); + Query.format("SELECT qta_cnf FROM dbo.getListinoAcquisto(null, %s, %s, %s, 'N', null) lisa ORDER BY flag_attivo", + listino, codArtFor, codMart); qtaCnf = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql); }