sistemata chiusura tagli prezzo, aggiunte note_testata in promozioni

This commit is contained in:
2024-06-14 17:49:26 +02:00
parent cd72eed0cc
commit 7b842ca014
2 changed files with 178 additions and 6 deletions

View File

@@ -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 {
}
}

View File

@@ -27,6 +27,7 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -469,8 +470,22 @@ public class ListiniVenditaServices {
} }
} }
listini.addAll(listiniDel); List<EntityBase> 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<EntityBase> getVtbListData(List<MtbLisvData> listini) {
List<Map.Entry<VtbListData, List<MtbLisvData>>> elencoVariazioni = Stream.of(listini).groupBy(x -> { List<Map.Entry<VtbListData, List<MtbLisvData>>> elencoVariazioni = Stream.of(listini).groupBy(x -> {
VtbListData vtbListData = VtbListData vtbListData =
new VtbListData() new VtbListData()
@@ -493,11 +508,6 @@ public class ListiniVenditaServices {
vtbListData.setMtbLisvData(var.getValue()); vtbListData.setMtbLisvData(var.getValue());
entities.add(vtbListData); entities.add(vtbListData);
} }
entities = entityProcessor.processEntityList(entities, true);
UtilityEntity.throwEntitiesException(entities);
return entities; return entities;
} }