diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240614170211.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240614170211.java new file mode 100644 index 0000000000..9c007846aa --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240614170211.java @@ -0,0 +1,162 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240614170211 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateFunction("getPromozioneVendita", "CREATE FUNCTION [dbo].[getPromozioneVendita] (@dataIniz datetime, @dataFine datetime, @codVlis varchar(5), @codPromo varchar(10), @codMart varchar(15)) RETURNS TABLE AS \n" + + " return \n" + + " SELECT vtb_list.cod_vlis, \n" + + " vtb_list.descrizione, \n" + + " vtb_list_data.data_iniz, \n" + + " vtb_list_data.data_fine,\n" + + " vtb_list_data.cod_promo,\n" + + " vtb_list_data.versione, \n" + + " vtb_list.cod_divi,\n" + + " vtb_list.flag_arr_prz_iva, \n" + + " vtb_list.arr_ric,\n" + + " vtb_list.flag_list_iva_inclusa,\n" + + " vtb_list.flag_lisv_margine, \n" + + " mtb_lisv_data.cod_mart as cod_mart, \n" + + " mtb_lisv_data.unt_mis_ven as unt_mis_ven,\n" + + " mtb_lisv_data.rap_conv as rap_conv, \n" + + " mtb_lisv_data.prz_base as prz_base, \n" + + " mtb_lisv_data.ricarica as ricarico,\n" + + " dbo.f_calcMargineEffettivo(mtb_lisv_data.prz_base, mtb_lisv_data.prz_vend, mtb_aart.perc_sfrido) as margine_eff,\n" + + " dbo.f_calcRicaricoEffettivo(mtb_lisv_data.prz_base, mtb_lisv_data.prz_vend, mtb_aart.perc_sfrido) as ricarico_eff, \n" + + " mtb_lisv_data.prz_vend as prz_vend, \n" + + " mtb_lisv_data.prz_vend_iva as prz_vend_iva, \n" + + " mtb_lisv_data.perc_sco1 as perc_sco1, \n" + + " mtb_lisv_data.perc_sco2 as perc_sco2, \n" + + " mtb_lisv_data.perc_sco3 as perc_sco3, \n" + + " mtb_lisv_data.perc_sco4 as perc_sco4, \n" + + " mtb_lisv_data.perc_prov as perc_prov, \n" + + " mtb_lisv_data.fisso_prov as fisso_prov, \n" + + " mtb_lisv_data.posizione as posizione, \n" + + " mtb_lisv_data.perc_gest as perc_gest, \n" + + " mtb_lisv_data.val_gest as val_gest, \n" + + " mtb_lisv_data.data_agg_prz as data_agg_prz, \n" + + " mtb_lisv_data.perc_ispe as perc_ispe, \n" + + " mtb_lisv_data.val_ispe as val_ispe, \n" + + " mtb_lisv_data.perc_promo as perc_promo, \n" + + " mtb_lisv_data.val_promo as val_promo, \n" + + " mtb_lisv_data.perc_oneri as perc_oneri, \n" + + " mtb_lisv_data.val_oneri as val_oneri, \n" + + " mtb_lisv_data.tipo_variazione as tipo_variazione, \n" + + " mtb_lisv_data.note as note,\n" + + " mtb_lisv_data.aggiornato_da as aggiornato_da,\n" + + " mtb_lisv_data.prz_vend * (1 - mtb_lisv_data.perc_sco1/100) * (1 - mtb_lisv_data.perc_sco2/100)* (1 - mtb_lisv_data.perc_sco3/100)* (1 - mtb_lisv_data.perc_sco4/100) as prz_vend_netto,\n" + + " vtb_promo.descrizione as 'descr_promo',\n" + + " vtb_promo.data_iniz_sell_out,\n" + + " vtb_promo.data_fine_sell_out,\n" + + " vtb_promo.flag_tipo_promo,\n" + + " mtb_lisv_data.sconto_cartoni,\n" + + " mtb_lisv_data.sconto_strato,\n" + + " mtb_lisv_data.sconto_pedane,\n" + + " mtb_lisv_data.giacenza,\n" + + " mtb_lisv_data.magg_prz_vend,\n" + + " vtb_promo.flag_sconto_contrattuale,\n" + + " vtb_promo.intercode_xml_variazioni,\n" + + " vtb_list_data.note as note_testata\n" + + " FROM vtb_list inner join vtb_list_data on vtb_list.cod_vlis = vtb_list_data.cod_vlis\n" + + " inner join mtb_lisv_data on vtb_list_data.cod_vlis = mtb_lisv_data.cod_vlis AND vtb_list_data.versione = mtb_lisv_data.versione\n" + + " inner join mtb_aart on mtb_lisv_data.cod_mart = mtb_aart.cod_mart\n" + + " inner join vtb_promo on vtb_list_data.cod_promo = vtb_promo.cod_promo \n" + + " outer apply (select count(*) as conta from vtb_list_data rif where vtb_list_data.cod_vlis = rif.cod_vlis_rif and vtb_list_data.versione = rif.versione ) list_rif\n" + + " WHERE (@codMart IS NULL OR mtb_lisv_data.cod_mart = @codMart)\n" + + " AND (@codvlis IS NULL OR vtb_list_data.cod_vlis = @codVlis) \n" + + " AND vtb_list.cod_vlis_rif IS NULL\n" + + " AND (@codPromo IS NULL OR vtb_list_data.cod_promo = @codPromo)\n" + + " AND (((@dataFine IS NULL OR ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) = @dataFine) AND \n" + + " ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine) OR \n" + + " (@dataFine IS NOT NULL AND ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) <> @dataFine AND \n" + + " (vtb_list_data.data_iniz BETWEEN ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) AND @dataFine OR \n" + + " vtb_list_data.data_fine BETWEEN ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) AND @dataFine OR \n" + + " ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine OR\n" + + " @dataFine BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine ))) AND\n" + + " (vtb_promo.flag_sconto_contrattuale = 'N' OR ( vtb_promo.flag_sconto_contrattuale = 'S' and list_rif.conta = 0 )) \n" + + " union\n" + + " SELECT vtb_list.cod_vlis, \n" + + " vtb_list.descrizione, \n" + + " vtb_list_data.data_iniz, \n" + + " vtb_list_data.data_fine,\n" + + " vtb_list_data.cod_promo,\n" + + " vtb_list_data.versione, \n" + + " vtb_list.cod_divi,\n" + + " vtb_list.flag_arr_prz_iva, \n" + + " vtb_list.arr_ric,\n" + + " vtb_list.flag_list_iva_inclusa,\n" + + " vtb_list.flag_lisv_margine, \n" + + " mtb_lisv_data.cod_mart as cod_mart, \n" + + " mtb_lisv_data.unt_mis_ven as unt_mis_ven,\n" + + " mtb_lisv_data.rap_conv as rap_conv, \n" + + " mtb_lisv_data.prz_base as prz_base, \n" + + " mtb_lisv_data.ricarica as ricarico,\n" + + " dbo.f_calcMargineEffettivo(mtb_lisv_data.prz_base, mtb_lisv_data.prz_vend, mtb_aart.perc_sfrido) as margine_eff,\n" + + " dbo.f_calcRicaricoEffettivo(mtb_lisv_data.prz_base, mtb_lisv_data.prz_vend, mtb_aart.perc_sfrido) as ricarico_eff, \n" + + " mtb_lisv_data.prz_vend as prz_vend, \n" + + " mtb_lisv_data.prz_vend_iva as prz_vend_iva, \n" + + " mtb_lisv_data.perc_sco1 as perc_sco1, \n" + + " mtb_lisv_data.perc_sco2 as perc_sco2, \n" + + " mtb_lisv_data.perc_sco3 as perc_sco3, \n" + + " mtb_lisv_data.perc_sco4 as perc_sco4, \n" + + " mtb_lisv_data.perc_prov as perc_prov, \n" + + " mtb_lisv_data.fisso_prov as fisso_prov, \n" + + " mtb_lisv_data.posizione as posizione, \n" + + " mtb_lisv_data.perc_gest as perc_gest, \n" + + " mtb_lisv_data.val_gest as val_gest, \n" + + " mtb_lisv_data.data_agg_prz as data_agg_prz, \n" + + " mtb_lisv_data.perc_ispe as perc_ispe, \n" + + " mtb_lisv_data.val_ispe as val_ispe, \n" + + " mtb_lisv_data.perc_promo as perc_promo, \n" + + " mtb_lisv_data.val_promo as val_promo, \n" + + " mtb_lisv_data.perc_oneri as perc_oneri, \n" + + " mtb_lisv_data.val_oneri as val_oneri, \n" + + " mtb_lisv_data.tipo_variazione as tipo_variazione, \n" + + " mtb_lisv_data.note as note,\n" + + " mtb_lisv_data.aggiornato_da as aggiornato_da,\n" + + " mtb_lisv_data.prz_vend * (1 - mtb_lisv_data.perc_sco1/100) * (1 - mtb_lisv_data.perc_sco2/100)* (1 - mtb_lisv_data.perc_sco3/100)* (1 - mtb_lisv_data.perc_sco4/100) as prz_vend_netto ,\n" + + " vtb_promo.descrizione as 'descr_promo',\n" + + " vtb_promo.data_iniz_sell_out,\n" + + " vtb_promo.data_fine_sell_out,\n" + + " vtb_promo.flag_tipo_promo,\n" + + " mtb_lisv_data.sconto_cartoni,\n" + + " mtb_lisv_data.sconto_strato,\n" + + " mtb_lisv_data.sconto_pedane,\n" + + " mtb_lisv_data.giacenza,\n" + + " mtb_lisv_data.magg_prz_vend,\n" + + " vtb_promo.flag_sconto_contrattuale,\n" + + " vtb_promo.intercode_xml_variazioni,\n" + + " vtb_list_data.note as note_testata\n" + + " FROM vtb_list inner join vtb_list_data on vtb_list.cod_vlis = vtb_list_data.cod_vlis \n" + + " inner join vtb_list_data vtb_list_data_rif on vtb_list_data.cod_vlis_rif = vtb_list_data_rif.cod_vlis and\n" + + " vtb_list_data.versione_rif = vtb_list_data_rif.versione \n" + + " inner join mtb_lisv_data on vtb_list_data_rif.cod_vlis = mtb_lisv_data.cod_vlis and\n" + + " vtb_list_data_rif.versione = mtb_lisv_data.versione \n" + + " inner join mtb_aart on mtb_lisv_data.cod_mart = mtb_aart.cod_mart \n" + + " inner join vtb_promo on vtb_list_data_rif.cod_promo = vtb_promo.cod_promo \n" + + " WHERE (@codMart is null or mtb_lisv_data.cod_mart = @codMart ) and\n" + + " (@codvlis is null or vtb_list_data.cod_vlis = @codVlis) and\n" + + " ( @codPromo is null or vtb_list_data.cod_promo = @codPromo ) and\n" + + " (((@dataFine IS NULL OR ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) = @dataFine) AND \n" + + " ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine) OR \n" + + " (@dataFine IS NOT NULL AND ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) <> @dataFine AND \n" + + " (vtb_list_data.data_iniz BETWEEN ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) AND @dataFine OR \n" + + " vtb_list_data.data_fine BETWEEN ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) AND @dataFine OR \n" + + " ISNULL(@dataIniz, dbo.f_convertDatetimeToDate(GETDATE())) BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine OR\n" + + " @dataFine BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine )))"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java b/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java index 3f0e1ae463..37d8c7d9f6 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java +++ b/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java @@ -27,6 +27,7 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.web.bind.annotation.RestController; @@ -469,8 +470,22 @@ public class ListiniVenditaServices { } } - listini.addAll(listiniDel); + List entities = new ArrayList<>(); + //fatta in due momenti diversi per far partire la cancellazione prima dell'inserimento + if (listiniDel != null && listiniDel.size() > 0 ){ + entities = getVtbListData(listiniDel); + } + entities.addAll(getVtbListData(listini)); + + entities = entityProcessor.processEntityList(entities, true); + + UtilityEntity.throwEntitiesException(entities); + + return entities; + } + + private static @NotNull List getVtbListData(List listini) { List>> elencoVariazioni = Stream.of(listini).groupBy(x -> { VtbListData vtbListData = new VtbListData() @@ -493,11 +508,6 @@ public class ListiniVenditaServices { vtbListData.setMtbLisvData(var.getValue()); entities.add(vtbListData); } - - entities = entityProcessor.processEntityList(entities, true); - - UtilityEntity.throwEntitiesException(entities); - return entities; }