Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20240611095629 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
|
||||
createOrUpdateFunction("getListinoVendita", "CREATE FUNCTION [dbo].[getListinoVendita](@datavalidita DATETIME, @codvlis VARCHAR(5), @codmart VARCHAR(15))\n" +
|
||||
" RETURNS TABLE AS\n" +
|
||||
" RETURN\n" +
|
||||
" SELECT vtb_list.cod_vlis,\n" +
|
||||
" vtb_list.descrizione,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN tmp_list.max_lisv IS NULL THEN NULL\n" +
|
||||
" ELSE CONVERT(DATETIME, LEFT(tmp_list.max_lisv, 10)) END AS data_iniz,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN tmp_list.max_lisv IS NULL THEN NULL\n" +
|
||||
" ELSE CONVERT(INT, RIGHT(tmp_list.max_lisv, 4)) END AS versione,\n" +
|
||||
" vtb_list.cod_divi,\n" +
|
||||
" vtb_list.cambio,\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" +
|
||||
" vtb_list.flag_add_trasp,\n" +
|
||||
" tmp_list.cod_mart AS 'cod_mart',\n" +
|
||||
" mtb_lisv_data.unt_mis_ven AS unt_mis_ven,\n" +
|
||||
" ISNULL(mtb_lisv_data.rap_conv, 1) AS rap_conv,\n" +
|
||||
" ISNULL(mtb_lisv_data.prz_base, 0) AS prz_base,\n" +
|
||||
" ISNULL(mtb_lisv_data.ricarica, 0) AS ricarico,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN mtb_lisv_data.prz_vend IS NOT NULL AND mtb_lisv_data.prz_vend <> 0 THEN\n" +
|
||||
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
|
||||
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
|
||||
" ISNULL(mtb_lisv_data.prz_vend, 0) * 100, 2)\n" +
|
||||
" ELSE 0 END AS margine_eff,\n" +
|
||||
" --dbo.f_calcMargineEffettivo(IsNull(mtb_lisv_data.prz_base, 0), IsNull(mtb_lisv_data.prz_vend, 0), mtb_aart.perc_sfrido) as margine_eff,\n" +
|
||||
" --dbo.f_calcRicaricoEffettivo(IsNull(mtb_lisv_data.prz_base, 0), IsNull(mtb_lisv_data.prz_vend, 0), mtb_aart.perc_sfrido) ricarico_eff, \n" +
|
||||
" CASE\n" +
|
||||
" WHEN mtb_lisv_data.prz_base IS NOT NULL AND mtb_lisv_data.prz_base <> 0 THEN\n" +
|
||||
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
|
||||
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
|
||||
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100)) * 100, 2)\n" +
|
||||
" ELSE 0 END AS ricarico_eff,\n" +
|
||||
"\n" +
|
||||
" ISNULL(mtb_lisv_data.magg_prz_vend, 0) AS magg_prz_vend,\n" +
|
||||
" ISNULL(mtb_lisv_data.prz_vend, 0) AS prz_vend,\n" +
|
||||
" ISNULL(mtb_lisv_data.prz_vend_iva, 0) AS prz_vend_iva,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_sco1, 0) AS perc_sco1,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_sco2, 0) AS perc_sco2,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_sco3, 0) AS perc_sco3,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_sco4, 0) AS perc_sco4,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_prov, 0) AS perc_prov,\n" +
|
||||
" ISNULL(mtb_lisv_data.fisso_prov, 0) AS fisso_prov,\n" +
|
||||
" ISNULL(mtb_lisv_data.posizione, '') AS posizione,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_gest, 0) AS perc_gest,\n" +
|
||||
" ISNULL(mtb_lisv_data.val_gest, 0) AS val_gest,\n" +
|
||||
" mtb_lisv_data.data_agg_prz AS data_agg_prz,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_ispe, 0) AS perc_ispe,\n" +
|
||||
" ISNULL(mtb_lisv_data.val_ispe, 0) AS val_ispe,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_promo, 0) AS perc_promo,\n" +
|
||||
" ISNULL(mtb_lisv_data.val_promo, 0) AS val_promo,\n" +
|
||||
" ISNULL(mtb_lisv_data.perc_oneri, 0) AS perc_oneri,\n" +
|
||||
" ISNULL(mtb_lisv_data.val_oneri, 0) 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) *\n" +
|
||||
" (1 - mtb_lisv_data.perc_sco3 / 100) *\n" +
|
||||
" (1 - mtb_lisv_data.perc_sco4 / 100) AS prz_vend_netto,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN ISNULL(mtb_lisv_data.colli_pedana, 0) <> 0 THEN mtb_lisv_data.colli_pedana\n" +
|
||||
" ELSE mtb_aart.colli_pedana END AS colli_pedana,\n" +
|
||||
" mtb_lisv_data.cod_tcol_ul AS cod_tcol_ul,\n" +
|
||||
" mtb_lisv_data.cod_tcol_ui AS cod_tcol_ui,\n" +
|
||||
" ISNULL(mtb_lisv_data.prz_vend_sug, 0) AS prz_vend_sug,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN ISNULL(mtb_lisv_data.qta_cnf, 0) <> 0\n" +
|
||||
" AND dbo.getGestSetup('VTB_LIST', 'SETUP', 'QTA_CNF_LISTINO') = 'S' \n" +
|
||||
" THEN mtb_lisv_data.qta_cnf\n" +
|
||||
" ELSE mtb_aart.qta_cnf END AS qta_cnf,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN ISNULL(mtb_lisv_data.colli_strato, 0) <> 0 THEN mtb_lisv_data.colli_strato\n" +
|
||||
" ELSE mtb_aart.colli_strato END AS colli_strato,\n" +
|
||||
" mtb_lisv_data.descrizione_html AS descrizione_html,\n" +
|
||||
" mtb_lisv_data.colli_pedana AS colli_pedana_lisv,\n" +
|
||||
" mtb_lisv_data.qta_cnf AS qta_cnf_lisv,\n" +
|
||||
" mtb_lisv_data.colli_strato AS colli_strato_lisv,\n" +
|
||||
" mtb_lisv_data.sconto_cartoni,\n" +
|
||||
" mtb_lisv_data.sconto_strato,\n" +
|
||||
" mtb_lisv_data.sconto_pedane,\n" +
|
||||
" vtb_list.flag_attivo,\n" +
|
||||
" vtb_list_data.note AS note_testata,\n" +
|
||||
" ISNULL(mtb_lisv_data.flag_prz_bloccato, 'N') AS flag_prz_bloccato,\n" +
|
||||
" vtb_list_data.porto AS porto,\n" +
|
||||
" mtb_lisv_data.system_note,\n" +
|
||||
" mtb_lisv.add_val_spese,\n" +
|
||||
" mtb_lisv.add_ric_spese,\n" +
|
||||
" mtb_lisv.add_sco_spese,\n" +
|
||||
" mtb_aart.flag_incl_listino\n" +
|
||||
" FROM (SELECT vtb_list.cod_vlis AS cod_vlis,\n" +
|
||||
" mtb_lisv_data.cod_mart,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN vtb_list_data.versione IS NULL THEN NULL\n" +
|
||||
" ELSE CONVERT(VARCHAR(10), vtb_list_data.data_iniz, 111) + ' ' +\n" +
|
||||
" REPLICATE('0', 5 - LEN(vtb_list_data.versione)) +\n" +
|
||||
" CONVERT(VARCHAR(5), vtb_list_data.versione) END) AS max_lisv,\n" +
|
||||
" vtb_list.cod_vlis AS 'cod_vlis_rif'\n" +
|
||||
" FROM vtb_list\n" +
|
||||
" INNER JOIN mtb_lisv_data ON vtb_list.cod_vlis = mtb_lisv_data.cod_vlis\n" +
|
||||
" LEFT OUTER JOIN vtb_list_data ON mtb_lisv_data.cod_vlis = vtb_list_data.cod_vlis AND\n" +
|
||||
" mtb_lisv_data.versione = vtb_list_data.versione AND\n" +
|
||||
" vtb_list_data.cod_promo IS NULL AND\n" +
|
||||
" vtb_list_data.data_iniz <= ISNULL(@datavalidita, GETDATE())\n" +
|
||||
" WHERE vtb_list.cod_vlis_rif IS NULL\n" +
|
||||
" GROUP BY vtb_list.cod_vlis,\n" +
|
||||
" mtb_lisv_data.cod_mart\n" +
|
||||
" UNION\n" +
|
||||
" SELECT vtb_list.cod_vlis AS cod_vlis,\n" +
|
||||
" mtb_lisv_data.cod_mart,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN vtb_list_data.versione IS NULL THEN NULL\n" +
|
||||
" ELSE CONVERT(VARCHAR(10), vtb_list_data.data_iniz, 111) + ' ' +\n" +
|
||||
" REPLICATE('0', 5 - LEN(vtb_list_data.versione_rif)) +\n" +
|
||||
" CONVERT(VARCHAR(5), vtb_list_data.versione_rif) END) AS max_lisv,\n" +
|
||||
" vtb_list.cod_vlis_rif AS 'cod_vlis_rif'\n" +
|
||||
" FROM vtb_list\n" +
|
||||
" 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\n" +
|
||||
" ON vtb_list_data.versione_rif = vtb_list_data_rif.versione AND\n" +
|
||||
" vtb_list_data.cod_vlis_rif = vtb_list_data_rif.cod_vlis\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" +
|
||||
"\n" +
|
||||
" WHERE vtb_list_data.data_iniz <= ISNULL(@datavalidita, GETDATE())\n" +
|
||||
" AND vtb_list.cod_vlis_rif IS NOT NULL\n" +
|
||||
" GROUP BY vtb_list.cod_vlis,\n" +
|
||||
" mtb_lisv_data.cod_mart,\n" +
|
||||
" vtb_list.cod_vlis_rif) tmp_list\n" +
|
||||
" INNER JOIN vtb_list ON vtb_list.cod_vlis = tmp_list.cod_vlis\n" +
|
||||
" INNER JOIN mtb_lisv\n" +
|
||||
" ON tmp_list.cod_vlis_rif = mtb_lisv.cod_vlis AND tmp_list.cod_mart = mtb_lisv.cod_mart\n" +
|
||||
" INNER JOIN mtb_aart ON tmp_list.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" LEFT OUTER JOIN mtb_lisv_data ON tmp_list.cod_vlis_rif = mtb_lisv_data.cod_vlis AND\n" +
|
||||
" tmp_list.cod_mart = mtb_lisv_data.cod_mart AND\n" +
|
||||
" CONVERT(INT, RIGHT(tmp_list.max_lisv, 5)) = mtb_lisv_data.versione\n" +
|
||||
" LEFT OUTER JOIN vtb_list_data ON tmp_list.cod_vlis = vtb_list_data.cod_vlis AND\n" +
|
||||
" CONVERT(INT, RIGHT(tmp_list.max_lisv, 5)) = vtb_list_data.versione\n" +
|
||||
"\n" +
|
||||
" WHERE (@codmart IS NULL OR tmp_list.cod_mart = @codmart)\n" +
|
||||
" AND (@codvlis IS NULL OR tmp_list.cod_vlis = @codvlis)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.ems.product.service;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import io.swagger.models.auth.In;
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.exception.MissingDataException;
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
@@ -393,26 +394,10 @@ public class ListiniVenditaServices {
|
||||
public List<EntityBase> updateLisv(List<MtbLisvData> listini) throws Exception {
|
||||
//QUESTA PROCEDURA VIENE CHIAMATA DALLA GESTIONE A GRIGLIA PER SALVARE I LISTINI.
|
||||
|
||||
List<Map.Entry<VtbListData, List<MtbLisvData>>> elencoVariazioni = Stream.of(listini).groupBy(x -> {
|
||||
VtbListData vtbListData =
|
||||
new VtbListData()
|
||||
.setCodVlis(x.getCodVlis())
|
||||
.setCodPromo(x.getCodPromo())
|
||||
.setDataIniz(x.getDataIniz())
|
||||
.setDataFine(x.getDataFine())
|
||||
.setDescrPromo(x.getDescrPromo())
|
||||
.setNote(x.getNoteLisv());
|
||||
return vtbListData;
|
||||
}
|
||||
).toList();
|
||||
|
||||
List<EntityBase> entities = new ArrayList<>();
|
||||
for (Map.Entry<VtbListData, List<MtbLisvData>> var : elencoVariazioni) {
|
||||
VtbListData vtbListData = var.getKey();
|
||||
vtbListData.setCheckDataIniz(false);//In questo caso inibiamo il controllo sulla data inizio
|
||||
Integer versione = null;
|
||||
for (MtbLisvData mtbLisvData : var.getValue()) {
|
||||
if (!UtilityString.isNullOrEmpty(vtbListData.getCodPromo())) {
|
||||
Integer versione;
|
||||
List<MtbLisvData> listiniDel = new ArrayList<>();
|
||||
for (MtbLisvData mtbLisvData : listini) {
|
||||
if (!UtilityString.isNullOrEmpty(mtbLisvData.getCodPromo())) {
|
||||
String sql =
|
||||
Query.format(
|
||||
"SELECT vtb_list_data.versione, vtb_list_data.data_fine " +
|
||||
@@ -423,10 +408,10 @@ public class ListiniVenditaServices {
|
||||
"vtb_list_data.data_iniz = %s AND " +
|
||||
"mtb_lisv_data.cod_mart = %s AND " +
|
||||
"vtb_list_data.cod_promo = %s ",
|
||||
vtbListData.getCodVlis(),
|
||||
vtbListData.getDataIniz(),
|
||||
mtbLisvData.getCodVlis(),
|
||||
mtbLisvData.getDataIniz(),
|
||||
mtbLisvData.getCodMart(),
|
||||
vtbListData.getCodPromo());
|
||||
mtbLisvData.getCodPromo());
|
||||
|
||||
HashMap<String, Object> datiPromo = UtilityDB.executeSimpleQueryOnlyFirstRow(
|
||||
multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
@@ -460,7 +445,7 @@ public class ListiniVenditaServices {
|
||||
" WHERE cod_vlis = %s AND " +
|
||||
" versione = %s AND " +
|
||||
" cod_mart <> %s",
|
||||
vtbListData.getCodVlis(),
|
||||
mtbLisvData.getCodVlis(),
|
||||
versione,
|
||||
mtbLisvData.getCodMart());
|
||||
|
||||
@@ -468,44 +453,44 @@ public class ListiniVenditaServices {
|
||||
|
||||
if (countArt > 0) {
|
||||
//Cancelliamo l'articolo dalla vecchia promozione
|
||||
VtbListData finalVtbListData = vtbListData;
|
||||
com.annimon.stream.Optional<EntityBase> firstLisv = Stream.of(entities)
|
||||
.filter(x -> x instanceof VtbListData &&
|
||||
((VtbListData) x).getCodVlis().equalsIgnoreCase(finalVtbListData.getCodVlis()) &&
|
||||
((VtbListData) x).getCodPromo().equalsIgnoreCase(finalVtbListData.getCodPromo()) &&
|
||||
UtilityString.equalsIgnoreCase(((VtbListData) x).getNote(), finalVtbListData.getNote()) &&
|
||||
Objects.equals(((VtbListData) x).getDataIniz(), finalVtbListData.getDataIniz()) &&
|
||||
Objects.equals(((VtbListData) x).getDataFine(), dataFine)
|
||||
).findFirst();
|
||||
|
||||
VtbListData vtbListDataOld = null;
|
||||
if (firstLisv.isPresent()) {
|
||||
vtbListDataOld = (VtbListData) firstLisv.get();
|
||||
} else {
|
||||
vtbListDataOld = (VtbListData) vtbListData.clone();
|
||||
vtbListDataOld.setMtbLisvData(new ArrayList<>());
|
||||
vtbListDataOld.setDataFine(dataFine)
|
||||
.setVersione(versione);
|
||||
vtbListDataOld.setOperation(OperationType.UPDATE);
|
||||
entities.add(vtbListDataOld);
|
||||
}
|
||||
MtbLisvData mtbLisvDataDeleted = (MtbLisvData) mtbLisvData.clone();
|
||||
mtbLisvDataDeleted.setOperation(OperationType.DELETE);
|
||||
vtbListDataOld.getMtbLisvData().add(mtbLisvDataDeleted);
|
||||
mtbLisvDataDeleted.setDataFine(dataFine);
|
||||
mtbLisvDataDeleted.setVersione(versione);
|
||||
listiniDel.add(mtbLisvDataDeleted);
|
||||
versione = null;
|
||||
}
|
||||
}
|
||||
mtbLisvData.setVersione(versione);
|
||||
if (versione != null)
|
||||
mtbLisvData.setOperation(OperationType.UPDATE);
|
||||
else
|
||||
mtbLisvData.setOperation(OperationType.INSERT);
|
||||
}
|
||||
vtbListData.getMtbLisvData().add(mtbLisvData);
|
||||
}
|
||||
if (versione != null) {
|
||||
vtbListData.setVersione(versione);
|
||||
vtbListData.setOperation(OperationType.UPDATE);
|
||||
} else {
|
||||
vtbListData.setOperation(OperationType.INSERT);
|
||||
vtbListData.setVersione(null);
|
||||
}
|
||||
|
||||
listini.addAll(listiniDel);
|
||||
|
||||
List<Map.Entry<VtbListData, List<MtbLisvData>>> elencoVariazioni = Stream.of(listini).groupBy(x -> {
|
||||
VtbListData vtbListData =
|
||||
new VtbListData()
|
||||
.setCodVlis(x.getCodVlis())
|
||||
.setCodPromo(x.getCodPromo())
|
||||
.setDataIniz(x.getDataIniz())
|
||||
.setDataFine(x.getDataFine())
|
||||
.setVersione(x.getVersione())
|
||||
.setDescrPromo(x.getDescrPromo())
|
||||
.setNote(x.getNoteLisv());
|
||||
return vtbListData;
|
||||
}
|
||||
).toList();
|
||||
|
||||
List<EntityBase> entities = new ArrayList<>();
|
||||
for (Map.Entry<VtbListData, List<MtbLisvData>> var : elencoVariazioni) {
|
||||
VtbListData vtbListData = var.getKey();
|
||||
vtbListData.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
vtbListData.setCheckDataIniz(false);//In questo caso inibiamo il controllo sulla data inizio
|
||||
vtbListData.setMtbLisvData(var.getValue());
|
||||
entities.add(vtbListData);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user