Merge branch 'develop' into feature/JDK11
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250806163114 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
|
||||
createOrUpdateProcedure("UpdProgOrdini", "CREATE PROCEDURE [dbo].[UpdProgOrdini](\n" +
|
||||
" @codAnag varchar(5),\n" +
|
||||
" @codDtip varchar(5),\n" +
|
||||
" @dataDoc dateTime,\n" +
|
||||
" @serDoc varchar(2),\n" +
|
||||
" @numDoc integer,\n" +
|
||||
" @segno integer,\n" +
|
||||
" @Operation varchar(1))\n" +
|
||||
" /***DESCRIZIONE: Questa storedProcedure aggiorna la quantitàevasa degli ordini e anche il \n" +
|
||||
" numero di pezzi, non contiene una serie di logiche particolarti tipo la \n" +
|
||||
" sostuzione dell'articolo nell'ordine\n" +
|
||||
" \n" +
|
||||
" */\n" +
|
||||
"AS\n" +
|
||||
"BEGIN\n" +
|
||||
" SET NOCOUNT ON;\n" +
|
||||
" \n" +
|
||||
"\n" +
|
||||
" UPDATE dtb_ordr\n" +
|
||||
" SET dtb_ordr.qta_evasa = CASE WHEN (SELECT application_name from azienda ) = 'WINGEST' THEN dtb_ordr.qta_evasa + CASE dtb_ordr.unt_ord\n" +
|
||||
" when doc.unt_doc then doc.qta_doc\n" +
|
||||
" when doc.unt_doc2 then doc.qta_doc2\n" +
|
||||
" when doc.unt_doc3 then doc.qta_doc3\n" +
|
||||
" else \n" +
|
||||
"Round((@segno * (doc.qta_doc_no_um / dtb_ordr.rap_conv)),mtb_unt_mis.cifre_dec) end \n" +
|
||||
" ELSE dtb_ordr.qta_evasa END, \n" +
|
||||
" dtb_ordr.num_cnf_evasa = dtb_ordr.num_cnf_evasa + (@segno * doc.num_cnf),\n" +
|
||||
" dtb_ordr.flag_evaso_forzato = CASE WHEN @Operation = 'D' THEN 'N' ELSE doc.flag_evaso_forzato END,\n" +
|
||||
" dtb_ordr.flag_evaso = CASE WHEN @Operation = 'D' THEN 'I'\n" +
|
||||
" WHEN doc.flag_evaso_forzato = 'S' THEN 'E' ELSE dtb_ordr.flag_evaso END \n" +
|
||||
" FROM dtb_ordr INNER JOIN mtb_unt_mis ON dtb_ordr.unt_ord = mtb_unt_mis.unt_mis\n" +
|
||||
" INNER JOIN \n" +
|
||||
" (SELECT dtb_doct.gestione,\n" +
|
||||
" dtb_docr.data_ord,\n" +
|
||||
" dtb_docr.num_ord,\n" +
|
||||
" dtb_docr.riga_ord,\n" +
|
||||
" sum(dtb_docr.qta_doc * dtb_docr.rap_conv) as qta_doc_no_um,\n" +
|
||||
" \n" +
|
||||
" dtb_docr.unt_doc,\n" +
|
||||
" sum(dtb_docr.qta_doc) as qta_doc,\n" +
|
||||
" \n" +
|
||||
" dtb_docr.unt_doc2,\n" +
|
||||
" sum(dtb_docr.qta_doc2) as qta_doc2,\n" +
|
||||
" \n" +
|
||||
" dtb_docr.unt_doc3,\n" +
|
||||
" sum(dtb_docr.qta_doc3) as qta_doc3,\n" +
|
||||
" sum(dtb_docr.num_cnf) as num_cnf,\n" +
|
||||
" max(dtb_docr.flag_evaso_forzato) as flag_evaso_forzato\n" +
|
||||
" FROM dtb_doct inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
|
||||
" inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
|
||||
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
|
||||
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
|
||||
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
|
||||
" dtb_doct.num_doc = dtb_docr.num_doc \n" +
|
||||
" WHERE dtb_doct.cod_dtip = @codDtip AND\n" +
|
||||
" dtb_doct.cod_anag = @codAnag AND\n" +
|
||||
" dtb_doct.data_doc = @dataDoc AND\n" +
|
||||
" dtb_doct.ser_doc = @serDoc AND\n" +
|
||||
" dtb_doct.num_doc = @numDoc AND\n" +
|
||||
" dtb_docr.data_ord is not null AND\n" +
|
||||
" ( dtb_doct.gestione <> 'L' AND (dtb_tipi.segno_qta_car = 1 OR dtb_tipi.segno_qta_scar = 1 ) OR \n" +
|
||||
" ( dtb_doct.gestione = 'L' AND dtb_tipi.segno_qta_scar = 1 ))\n" +
|
||||
" GROUP BY dtb_doct.gestione,\n" +
|
||||
" dtb_docr.data_ord,\n" +
|
||||
" dtb_docr.num_ord,\n" +
|
||||
" dtb_docr.riga_ord, \n" +
|
||||
" dtb_docr.unt_doc, \n" +
|
||||
" dtb_docr.unt_doc2, \n" +
|
||||
" dtb_docr.unt_doc3 \n" +
|
||||
" UNION ALL\n" +
|
||||
" SELECT dtb_ordt.gestione_rif,\n" +
|
||||
" dtb_ordt.data_ord_rif, \n" +
|
||||
" dtb_ordt.num_ord_rif, \n" +
|
||||
" dtb_ordt.riga_ord_rif,\n" +
|
||||
" sum(dtb_docr.qta_doc * dtb_docr.rap_conv) as qta_doc_no_um,\n" +
|
||||
" \n" +
|
||||
" dtb_docr.unt_doc,\n" +
|
||||
" sum(dtb_docr.qta_doc) as qta_doc,\n" +
|
||||
" \n" +
|
||||
" dtb_docr.unt_doc2,\n" +
|
||||
" sum(dtb_docr.qta_doc2) as qta_doc2,\n" +
|
||||
" \n" +
|
||||
" dtb_docr.unt_doc3,\n" +
|
||||
" sum(dtb_docr.qta_doc3) as qta_doc3,\n" +
|
||||
" sum(dtb_docr.num_cnf) as num_cnf,\n" +
|
||||
" max(dtb_docr.flag_evaso_forzato) as flag_evaso_forzato\n" +
|
||||
" FROM dtb_doct inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
|
||||
" inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
|
||||
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
|
||||
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
|
||||
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
|
||||
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
|
||||
" left outer join dtb_ordt ON dtb_tipi.gestione = dtb_ordt.gestione and\n" +
|
||||
" dtb_docr.data_ord = dtb_ordt.data_ord and\n" +
|
||||
" dtb_docr.num_ord = dtb_ordt.num_ord\n" +
|
||||
" WHERE dtb_doct.cod_dtip = @codDtip AND\n" +
|
||||
" dtb_doct.cod_anag = @codAnag AND\n" +
|
||||
" dtb_doct.data_doc = @dataDoc AND\n" +
|
||||
" dtb_doct.ser_doc = @serDoc AND\n" +
|
||||
" dtb_doct.num_doc = @numDoc AND\n" +
|
||||
" dtb_docr.data_ord is not null AND\n" +
|
||||
" dtb_doct.gestione = 'L' AND dtb_tipi.segno_qta_car = 1 AND\n" +
|
||||
" (SELECT application_name from azienda ) = 'WINGEST'\n" +
|
||||
" GROUP BY dtb_ordt.gestione_rif,\n" +
|
||||
" dtb_ordt.data_ord_rif,\n" +
|
||||
" dtb_ordt.num_ord_rif,\n" +
|
||||
" dtb_ordt.riga_ord_rif, \n" +
|
||||
" dtb_docr.unt_doc, \n" +
|
||||
" dtb_docr.unt_doc2, \n" +
|
||||
" dtb_docr.unt_doc3 ) doc ON\n" +
|
||||
" dtb_ordr.gestione = doc.gestione AND\n" +
|
||||
" dtb_ordr.data_ord = doc.data_ord AND\n" +
|
||||
" dtb_ordr.num_ord = doc.num_ord AND\n" +
|
||||
" dtb_ordr.riga_ord = doc.riga_ord;\n" +
|
||||
" \n" +
|
||||
" \n" +
|
||||
"END");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -18,6 +18,7 @@ public class Lisv4LisaDTO {
|
||||
private BigDecimal percMaggPrezzo;
|
||||
private BigDecimal percMaggPrezzoAcquisto;
|
||||
private Boolean aggArtCommerciali;
|
||||
private Boolean disattivaArticoliDisattivati;
|
||||
|
||||
public LocalDate getDataValidita() {
|
||||
return dataValidita;
|
||||
@@ -144,4 +145,13 @@ public class Lisv4LisaDTO {
|
||||
this.aggArtCommerciali = aggArtCommerciali;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Boolean getDisattivaArticoliDisattivati() {
|
||||
return disattivaArticoliDisattivati==null ? false : disattivaArticoliDisattivati;
|
||||
}
|
||||
|
||||
public Lisv4LisaDTO setDisattivaArticoliDisattivati(Boolean disattivaArticoliDisattivati) {
|
||||
this.disattivaArticoliDisattivati = disattivaArticoliDisattivati;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,7 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.db.ResultSetMapper;
|
||||
import it.integry.ems_model.entity.MtbLisvData;
|
||||
import it.integry.ems_model.entity.VtbArti;
|
||||
import it.integry.ems_model.entity.VtbArtiAcc;
|
||||
import it.integry.ems_model.entity.VtbListData;
|
||||
import it.integry.ems_model.entity.*;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.*;
|
||||
@@ -31,6 +28,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
@@ -70,8 +68,8 @@ public class Lisv4LisaService {
|
||||
if (versione == null)
|
||||
throw new Exception(String.format("Nondba sql ci sono variazione del listino %s in data %s", lisv4LisaDTO.getCodAlis(), today));
|
||||
|
||||
LocalDate dataValidita =null;
|
||||
if ( !UtilityString.isNullOrEmpty(setupSection.get("DATA_VALIDITA"))) {
|
||||
LocalDate dataValidita = null;
|
||||
if (!UtilityString.isNullOrEmpty(setupSection.get("DATA_VALIDITA"))) {
|
||||
List<Lisv4LisaDataValiditaDTO> setupDataValidita = Arrays.asList(new ObjectMapper().readValue(setupSection.get("DATA_VALIDITA"), Lisv4LisaDataValiditaDTO[].class));
|
||||
|
||||
DayOfWeek dayOfWeek = setupDataValidita.stream()
|
||||
@@ -89,7 +87,7 @@ public class Lisv4LisaService {
|
||||
int gg = Integer.parseInt(setupSection.get("GG_DA_AGGIUNGERE"));
|
||||
dataValidita = today.plus(gg, java.time.temporal.ChronoUnit.DAYS);
|
||||
}
|
||||
if (dataValidita == null) dataValidita= today;
|
||||
if (dataValidita == null) dataValidita = today;
|
||||
|
||||
lisv4LisaDTO
|
||||
.setVersione(versione)
|
||||
@@ -209,7 +207,8 @@ public class Lisv4LisaService {
|
||||
String whereCondLisv = UtilityString.replaceSubString(lisv4LisaDTO.getWhereCondLisv(), "vtb_list", "lisv");
|
||||
queryRigheLisv = UtilityDB.addwhereCond(queryRigheLisv, whereCondLisv, false);
|
||||
|
||||
List<MtbLisvData> mtbLisvDataList = getRigheLisv(setupSection, lisv4LisaDTO, queryRigheLisv, false);
|
||||
List<EntityBase> entityList = getRigheLisv(setupSection, lisv4LisaDTO, queryRigheLisv, false);
|
||||
|
||||
|
||||
//Aggiornamento promozione.
|
||||
String queryPromo =
|
||||
@@ -233,246 +232,287 @@ public class Lisv4LisaService {
|
||||
+ " null, null, null ) P "
|
||||
+ " WHERE p.flag_tipo_promo = 'A' ";
|
||||
|
||||
List<MtbLisvData> mtbLisvPromo = getRigheLisv(setupSection, lisv4LisaDTO, queryPromo, true);
|
||||
List<EntityBase> mtbLisvPromo = getRigheLisv(setupSection, lisv4LisaDTO, queryPromo, true);
|
||||
|
||||
if (mtbLisvDataList != null && !mtbLisvDataList.isEmpty()) {
|
||||
mtbLisvDataList.addAll(mtbLisvPromo);
|
||||
if (entityList != null && !entityList.isEmpty()) {
|
||||
entityList.addAll(mtbLisvPromo);
|
||||
}
|
||||
|
||||
if (mtbLisvDataList == null || mtbLisvDataList.isEmpty()) {
|
||||
if (entityList == null || entityList.isEmpty()) {
|
||||
throw new Exception("Nessuna variazione da salvare.");
|
||||
}
|
||||
|
||||
List<EntityBase> entityList = new ArrayList<EntityBase>();
|
||||
for (MtbLisvData mtbLisvData : mtbLisvDataList) {
|
||||
entityList.add(mtbLisvData);
|
||||
}
|
||||
|
||||
return entityList;
|
||||
}
|
||||
|
||||
private List<MtbLisvData> getRigheLisv(HashMap<String, String> setupSection, Lisv4LisaDTO lisv4LisaDTO, String queryRigheLisv, boolean isPromo) throws Exception {
|
||||
private List<EntityBase> getRigheLisv(HashMap<String, String> setupSection, Lisv4LisaDTO lisv4LisaDTO, String queryRigheLisv, boolean isPromo) throws Exception {
|
||||
|
||||
String whereCond = "";
|
||||
if (lisv4LisaDTO.getAggSoloArtLisv()) {
|
||||
whereCond = " AND lisv.cod_mart is not null";
|
||||
List<EntityBase> entityList = new ArrayList<>();
|
||||
if (!lisv4LisaDTO.getCalcPrzBase().equalsIgnoreCase("7")) {
|
||||
String whereCond = "";
|
||||
if (lisv4LisaDTO.getAggSoloArtLisv()) {
|
||||
whereCond = " AND lisv.cod_mart is not null";
|
||||
}
|
||||
|
||||
String maggiorazionePrzAcq = "";
|
||||
if (!UtilityBigDecimal.isNullOrZero(lisv4LisaDTO.getPercMaggPrezzoAcquisto())) {
|
||||
maggiorazionePrzAcq = " * ( 1 + CAST(" + lisv4LisaDTO.getPercMaggPrezzoAcquisto() + " as numeric(20,5))/100) ";
|
||||
}
|
||||
|
||||
String queryLisa =
|
||||
"SELECT atb_list_data.cod_promo,\n" +
|
||||
" atb_list_data.note AS descr_promo,\n" +
|
||||
" atb_list_data.data_iniz_sell_out,\n" +
|
||||
" atb_list_data.data_fine_sell_out,\n" +
|
||||
" mtb_lisa.cod_mart,\n" +
|
||||
" ROUND(ISNULL(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq) / mtb_lisa.rap_conv [MAGG_PRZ_ACQ], 5) AS prz_acq,\n" +
|
||||
" ROUND(dbo.f_calcprznettoacq(atb_list.cod_alis, atb_list.expression_costo,\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_1, mtb_lisa.perc_1),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_2, mtb_lisa.perc_2),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_3, mtb_lisa.perc_3),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_4, mtb_lisa.perc_4),\n" +
|
||||
" ISNULL(mtb_lisa_promo.perc_promo_1, 0), ISNULL(mtb_lisa_promo.perc_promo_2, 0),\n" +
|
||||
" ISNULL(mtb_lisa_promo.perc_promo_3, 0), ISNULL(mtb_lisa_promo.perc_promo_4, 0),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_promo, mtb_lisa.perc_promo),\n" +
|
||||
" ISNULL(mtb_lisa_data.val_promo, mtb_lisa.val_promo),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_oneri, mtb_lisa.perc_oneri),\n" +
|
||||
" ISNULL(mtb_lisa_data.val_oneri, mtb_lisa.val_oneri),\n" +
|
||||
" ISNULL(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq)) / mtb_lisa.rap_conv [MAGG_PRZ_ACQ], 5) AS prz_acq_netto,\n" +
|
||||
" ISNULL(mtb_lisa_data.prz_ven_sug, mtb_lisa.prz_ven_sug) AS prz_vend_sugg,\n" +
|
||||
" atb_list_data.cod_alis,\n" +
|
||||
" atb_list_data.versione\n" +
|
||||
"FROM mtb_lisa\n" +
|
||||
" INNER JOIN atb_list ON atb_list.cod_alis = mtb_lisa.cod_alis\n" +
|
||||
" INNER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_lisa_data ON mtb_lisa.cod_alis = mtb_lisa_data.cod_alis AND\n" +
|
||||
" mtb_lisa.cod_art_for = mtb_lisa_data.cod_art_for AND " +
|
||||
" mtb_lisa_data.versione = [VERSIONE]\n" +
|
||||
" LEFT OUTER JOIN mtb_lisa_promo ON mtb_lisa_data.cod_alis = mtb_lisa_promo.cod_alis AND\n" +
|
||||
" mtb_lisa_data.versione = mtb_lisa_promo.versione AND\n" +
|
||||
" mtb_lisa_data.cod_art_for = mtb_lisa_promo.cod_art_for\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" +
|
||||
"WHERE (mtb_lisa_data.tipo_variazione IS NULL OR mtb_lisa_data.tipo_variazione <> 'D')\n" +
|
||||
" AND mtb_lisa.cod_alis = [COD_ALIS]\n" +
|
||||
" AND (([VERSIONE] <> 0 AND mtb_lisa_data.versione IS NOT NULL) OR ([VERSIONE] = 0))\n" +
|
||||
" AND mtb_lisa.flag_attivo = 'S'\n " +
|
||||
" AND ISNULL(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq) > 0 ";
|
||||
|
||||
queryLisa = queryLisa
|
||||
.replace("[COD_ALIS]", UtilityDB.valueToString(lisv4LisaDTO.getCodAlis()))
|
||||
.replace("[VERSIONE]", UtilityDB.valueToString(lisv4LisaDTO.getVersione()))
|
||||
.replace("[MAGG_PRZ_ACQ]", maggiorazionePrzAcq);
|
||||
|
||||
String queryLisv =
|
||||
"SELECT vtb_list.cod_vlis, "
|
||||
+ " vtb_list.flag_lisv_margine, "
|
||||
+ " case " +
|
||||
" when " + UtilityDB.valueToString(lisv4LisaDTO.getCalcPrzBase()) + " = '4' AND IsNull("
|
||||
+ UtilityDB.valueToString(lisv4LisaDTO.getRicaricoTestataLisv()) + " , 0) <> 0 " +
|
||||
" THEN " + UtilityDB.valueToString(lisv4LisaDTO.getRicaricoTestataLisv()) +
|
||||
" ELSE IsNull("
|
||||
+ "(SELECT TOP 1 ricarica "
|
||||
+ " FROM vtb_list_data "
|
||||
+ " WHERE vtb_list_data.cod_vlis = vtb_list.cod_vlis AND "
|
||||
+ " vtb_list_data.cod_promo is null AND "
|
||||
+ " vtb_list_data.data_iniz <= " + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita())
|
||||
+ "ORDER BY vtb_list_data.data_iniz desc, vtb_list_data.versione desc), vtb_list.ricarica) END AS ricarico_testata, "
|
||||
+ " vtb_list.flag_list_iva_inclusa "
|
||||
+ " FROM vtb_list "
|
||||
+ "WHERE 1 = 1 ";
|
||||
|
||||
queryLisv = UtilityDB.addwhereCond(queryLisv, lisv4LisaDTO.getWhereCondLisv(), true);
|
||||
|
||||
|
||||
String queryGriglia =
|
||||
"SELECT STUFF( (SELECT ',''' + vtb_list.cod_vlis + '''' AS [text()] "
|
||||
+ " FROM mtb_depo cross apply "
|
||||
+ " dbo.getGrigliaAcquisto(" + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita()) + ","
|
||||
+ UtilityDB.valueToString(lisv4LisaDTO.getCodAlis()) + ", mtb_depo.cod_mdep, null, lisa.cod_mart) griglia, "
|
||||
+ " vtb_list "
|
||||
+ " WHERE mtb_depo.cod_vlis = vtb_list.cod_vlis and "
|
||||
+ "IsNull(vtb_list.cod_vlis_rif, vtb_list.cod_vlis) = lisv.cod_vlis and "
|
||||
+ "griglia.tipo_variazione <> 'D'FOR XML PATH('')), 1, 1, '' ) as elenco_lisv ";
|
||||
|
||||
String calcPrzVendIva = "dbo.f_calcPrzVendIva(tmp.cod_vlis, tmp.cod_mart, tmp.prz_vend) ";
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(lisv4LisaDTO.getTipoArrotondamento())) {
|
||||
calcPrzVendIva = "dbo.f_roundFromUnit( " + calcPrzVendIva + ", " + UtilityDB.valueToString(lisv4LisaDTO.getTipoArrotondamento()) + " , " + UtilityDB.valueToString(lisv4LisaDTO.getMultiplo()) + ") ";
|
||||
}
|
||||
|
||||
String queryAssortimento =
|
||||
"SELECT testata_lisv.cod_vlis, "
|
||||
+ " Convert(datetime, case when lisv.is_promo = 1 then lisv.data_iniz when lisa.cod_promo is null then " + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita()) + " else lisa.data_iniz_sell_out end) as data_iniz, "
|
||||
+ " case when lisv.is_promo = 1 then lisv.data_fine when lisa.cod_promo is null then null else lisa.data_fine_sell_out end as data_fine, "
|
||||
+ " case when lisv.is_promo = 1 then lisv.cod_promo else lisa.cod_promo end as cod_promo, "
|
||||
+ " case when lisv.is_promo = 1 then lisv.versione else null end as versione, "
|
||||
+ " lisa.descr_promo, "
|
||||
+ " lisa.cod_mart, "
|
||||
+ " IsNull(lisv.unt_mis_ven, mtb_aart.unt_mis) as unt_mis_ven, "
|
||||
+ " IsNull(lisv.rap_conv, 1) as rap_conv, "
|
||||
+ " lisa.prz_acq_netto * IsNull(lisv.rap_conv, 1) as prz_base, " //TO-DO Mina
|
||||
+ " case when lisv.cod_mart is null THEN "
|
||||
+ "CASE " + UtilityDB.valueToString(setupSection.get("RICARICO_ART_NUOVI"))
|
||||
+ " WHEN 'T' THEN testata_lisv.ricarico_testata "
|
||||
+ " ELSE 0 END "
|
||||
+ " ELSE lisv.ricarico END as ricarico, "
|
||||
+ " testata_lisv.flag_lisv_margine, "
|
||||
+ " lisv.prz_vend, "
|
||||
+ " mtb_aart.perc_sfrido, "
|
||||
+ " testata_lisv.ricarico_testata, "
|
||||
+ " lisv.magg_prz_vend, "
|
||||
+ " lisa.prz_acq * IsNull(lisv.rap_conv, 1) as prz_lisa_lordo, "
|
||||
+ " lisa.prz_vend_sugg as prz_vend_sugg_lisa_iva, "
|
||||
+ " lisa.prz_vend_sugg / (1+ gtb_aliq.perc_aliq/100) as prz_vend_sugg_lisa, "
|
||||
+ " CASE WHEN " + UtilityDB.valueToString(lisv4LisaDTO.getFiltraGriglia()) + " = 1 THEN griglie.elenco_lisv ELSE null END as elenco_lisv_rif, "
|
||||
+ " testata_lisv.flag_list_iva_inclusa, "
|
||||
+ " CASE " + UtilityDB.valueToString(setupSection.get("NOTE_LISV_4_LISA"))
|
||||
+ " WHEN 'A' THEN lisa.cod_alis + '_' + Cast( lisa.versione as varchar) "
|
||||
+ " ELSE NULL END AS note_lisv "
|
||||
+ " FROM (" + queryLisa + ") lisa "
|
||||
+ " CROSS APPLY ( " + queryLisv + " ) testata_lisv "
|
||||
+ " LEFT OUTER JOIN ( " + queryRigheLisv + ") lisv on lisa.cod_mart = lisv.cod_mart AND testata_lisv.cod_vlis = lisv.cod_vlis "
|
||||
+ " OUTER APPLY ( " + queryGriglia + " ) griglie "
|
||||
+ " INNER JOIN mtb_aart ON lisa.cod_mart = mtb_aart.cod_mart "
|
||||
+ " INNER JOIN gtb_aliq ON mtb_aart.cod_aliq = gtb_aliq.cod_aliq "
|
||||
+ " WHERE isnull(lisv.flag_prz_bloccato,'N') = 'N' AND "
|
||||
+ " ((" + UtilityDB.valueToString(lisv4LisaDTO.getFiltraGriglia()) + " = 0) OR "
|
||||
+ " (" + UtilityDB.valueToString(lisv4LisaDTO.getFiltraGriglia()) + " = 1 and griglie.elenco_lisv is not null)) AND "
|
||||
+ " ( (" + UtilityDB.valueToString(isPromo ? "S" : "N") + " = 'S' AND lisv.cod_mart is not null ) OR ( " + UtilityDB.valueToString(isPromo ? "S" : "N") + " = 'N' )) "
|
||||
+ whereCond;
|
||||
/*
|
||||
* NEL PREZZO DI VENDITA E' STATO INSERITO IL VALORE [NULL] PERCHE' IL PREZZO DI VENDITA DEVE ESSERE
|
||||
* RICALCOLATO E NON PRESO DAL DATABASE
|
||||
*/
|
||||
String query =
|
||||
"SELECT tmp.cod_vlis, "
|
||||
+ " tmp.data_iniz, "
|
||||
+ " tmp.data_fine, "
|
||||
+ " tmp.versione, "
|
||||
+ " tmp.cod_promo, "
|
||||
+ " tmp.descr_promo, "
|
||||
+ " tmp.cod_mart, "
|
||||
+ " tmp.unt_mis_ven, "
|
||||
+ " tmp.rap_conv, "
|
||||
+ " tmp.prz_base, "
|
||||
+ " CASE WHEN tmp.ricarica > 999.99 THEN 999.99 ELSE tmp.ricarica END as ricarica, "
|
||||
+ " tmp.magg_prz_vend, "
|
||||
+ " CASE WHEN tmp.flag_list_iva_inclusa = 'N' "
|
||||
+ " THEN dbo.f_roundFromUnit( tmp.prz_vend, " + UtilityDB.valueToString(lisv4LisaDTO.getTipoArrotondamento()) + " , " + UtilityDB.valueToString(lisv4LisaDTO.getMultiplo()) + ") "
|
||||
+ " ELSE null END as prz_vend, "
|
||||
+ " CASE WHEN tmp.flag_list_iva_inclusa = 'S' AND tmp.prz_vend_iva is null "
|
||||
+ " THEN " + calcPrzVendIva
|
||||
+ " ELSE tmp.prz_vend_iva END AS prz_vend_iva, "
|
||||
+ " tmp.elenco_lisv_rif, "
|
||||
+ UtilityDB.valueToString(requestDataDTO.getUsername()) + " + ' AGG. DA LISTINO DI ACQUISTO "
|
||||
+ lisv4LisaDTO.getCodAlis() + " VERSIONE " + lisv4LisaDTO.getVersione() + "' AS 'aggiornato_da' "
|
||||
+ " FROM ( "
|
||||
+ "SELECT dati.cod_vlis, "
|
||||
+ " dati.data_iniz, "
|
||||
+ " dati.data_fine, "
|
||||
+ " dati.cod_promo, "
|
||||
+ " dati.versione, "
|
||||
+ " dati.descr_promo, "
|
||||
+ " dati.cod_mart, "
|
||||
+ " dati.unt_mis_ven, "
|
||||
+ " dati.rap_conv, "
|
||||
+ " dati.prz_base, "
|
||||
+ " case " + UtilityDB.valueToString(lisv4LisaDTO.getCalcPrzBase())
|
||||
+ " when '1' then dati.ricarico "
|
||||
+ " when '2' then "
|
||||
+ "CASE WHEN dati.flag_lisv_margine = 'S' "
|
||||
+ " THEN dbo.f_calcMargineEffettivo(dati.prz_base, dati.prz_vend, dati.perc_sfrido) "
|
||||
+ " ELSE dbo.f_calcRicaricoEffettivo(dati.prz_base , dati.prz_vend, dati.perc_sfrido) END "
|
||||
+ " when '3' then dati.ricarico "
|
||||
+ " when '4' then dati.ricarico_testata "
|
||||
+ " when '5' then dati.ricarico "
|
||||
+ " when '6' then dati.ricarico end as ricarica, "
|
||||
+ " dati.magg_prz_vend, "
|
||||
+ " case " + UtilityDB.valueToString(lisv4LisaDTO.getCalcPrzBase())
|
||||
+ " when '1' then dbo.f_calcPrzVendNoRec(dati.cod_vlis, dati.cod_mart, dati.prz_base, dati.ricarico, dati.perc_sfrido, dati.magg_prz_vend) "
|
||||
+ " when '2' then dati.prz_vend "
|
||||
+ " when '3' then dati.prz_lisa_lordo "
|
||||
+ " when '4' then dbo.f_calcPrzVendNoRec(dati.cod_vlis, dati.cod_mart, dati.prz_base, dati.ricarico_testata, dati.perc_sfrido, dati.magg_prz_vend) "
|
||||
+ " when '5' then dati.prz_vend "
|
||||
+ " when '6' then dati.prz_vend_sugg_lisa end * "
|
||||
+ "( CASE "
|
||||
+ " WHEN " + UtilityDB.valueToString(lisv4LisaDTO.getPercMaggPrezzo()) + " IS NOT NULL AND "
|
||||
+ UtilityDB.valueToString(lisv4LisaDTO.getPercMaggPrezzo()) + " <> 0 THEN ( 1 + ( " + UtilityDB.valueToString(lisv4LisaDTO.getPercMaggPrezzo()) + " /100 )) ELSE 1 END ) as prz_vend, "
|
||||
+ " CASE WHEN " + UtilityDB.valueToString(lisv4LisaDTO.getCalcPrzBase()) + " = '6' THEN dati.prz_vend_sugg_lisa_iva else null END as prz_vend_iva, "
|
||||
+ " dati.elenco_lisv_rif, "
|
||||
+ " dati.flag_list_iva_inclusa, "
|
||||
+ " dati.note_lisv "
|
||||
+ " FROM ( " + queryAssortimento + " ) dati ) tmp "
|
||||
+ " ORDER BY tmp.cod_vlis, tmp.cod_mart ";
|
||||
|
||||
OperationType operationType = OperationType.INSERT_OR_UPDATE;
|
||||
if (isPromo) {
|
||||
operationType = OperationType.UPDATE;
|
||||
}
|
||||
List<MtbLisvData> mtbLisvDataList = new ResultSetMapper()
|
||||
.mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), query, MtbLisvData.class, operationType);
|
||||
if (mtbLisvDataList != null && !mtbLisvDataList.isEmpty()) {
|
||||
entityList.addAll(mtbLisvDataList);
|
||||
}
|
||||
}
|
||||
|
||||
String maggiorazionePrzAcq = "";
|
||||
if (!UtilityBigDecimal.isNullOrZero(lisv4LisaDTO.getPercMaggPrezzoAcquisto())) {
|
||||
maggiorazionePrzAcq = " * ( 1 + CAST(" + lisv4LisaDTO.getPercMaggPrezzoAcquisto() + " as numeric(20,5))/100) ";
|
||||
}
|
||||
|
||||
String queryLisa =
|
||||
"SELECT atb_list_data.cod_promo,\n" +
|
||||
" atb_list_data.note AS descr_promo,\n" +
|
||||
" atb_list_data.data_iniz_sell_out,\n" +
|
||||
" atb_list_data.data_fine_sell_out,\n" +
|
||||
" mtb_lisa.cod_mart,\n" +
|
||||
" ROUND(ISNULL(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq) / mtb_lisa.rap_conv [MAGG_PRZ_ACQ], 5) AS prz_acq,\n" +
|
||||
" ROUND(dbo.f_calcprznettoacq(atb_list.cod_alis, atb_list.expression_costo,\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_1, mtb_lisa.perc_1),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_2, mtb_lisa.perc_2),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_3, mtb_lisa.perc_3),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_4, mtb_lisa.perc_4),\n" +
|
||||
" ISNULL(mtb_lisa_promo.perc_promo_1, 0), ISNULL(mtb_lisa_promo.perc_promo_2, 0),\n" +
|
||||
" ISNULL(mtb_lisa_promo.perc_promo_3, 0), ISNULL(mtb_lisa_promo.perc_promo_4, 0),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_promo, mtb_lisa.perc_promo),\n" +
|
||||
" ISNULL(mtb_lisa_data.val_promo, mtb_lisa.val_promo),\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_oneri, mtb_lisa.perc_oneri),\n" +
|
||||
" ISNULL(mtb_lisa_data.val_oneri, mtb_lisa.val_oneri),\n" +
|
||||
" ISNULL(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq)) / mtb_lisa.rap_conv [MAGG_PRZ_ACQ], 5) AS prz_acq_netto,\n" +
|
||||
" ISNULL(mtb_lisa_data.prz_ven_sug, mtb_lisa.prz_ven_sug) AS prz_vend_sugg,\n" +
|
||||
" atb_list_data.cod_alis,\n" +
|
||||
" atb_list_data.versione\n" +
|
||||
"FROM mtb_lisa\n" +
|
||||
" INNER JOIN atb_list ON atb_list.cod_alis = mtb_lisa.cod_alis\n" +
|
||||
" INNER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_lisa_data ON mtb_lisa.cod_alis = mtb_lisa_data.cod_alis AND\n" +
|
||||
" mtb_lisa.cod_art_for = mtb_lisa_data.cod_art_for AND " +
|
||||
" mtb_lisa_data.versione = [VERSIONE]\n" +
|
||||
" LEFT OUTER JOIN mtb_lisa_promo ON mtb_lisa_data.cod_alis = mtb_lisa_promo.cod_alis AND\n" +
|
||||
" mtb_lisa_data.versione = mtb_lisa_promo.versione AND\n" +
|
||||
" mtb_lisa_data.cod_art_for = mtb_lisa_promo.cod_art_for\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" +
|
||||
"WHERE (mtb_lisa_data.tipo_variazione IS NULL OR mtb_lisa_data.tipo_variazione <> 'D')\n" +
|
||||
" AND mtb_lisa.cod_alis = [COD_ALIS]\n" +
|
||||
" AND (([VERSIONE] <> 0 AND mtb_lisa_data.versione IS NOT NULL) OR ([VERSIONE] = 0))\n" +
|
||||
" AND mtb_lisa.flag_attivo = 'S'\n "+
|
||||
" AND ISNULL(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq) > 0 ";
|
||||
|
||||
queryLisa = queryLisa
|
||||
.replace("[COD_ALIS]", UtilityDB.valueToString(lisv4LisaDTO.getCodAlis()))
|
||||
.replace("[VERSIONE]", UtilityDB.valueToString(lisv4LisaDTO.getVersione()))
|
||||
.replace("[MAGG_PRZ_ACQ]", maggiorazionePrzAcq);
|
||||
|
||||
String queryLisv =
|
||||
"SELECT vtb_list.cod_vlis, "
|
||||
+ " vtb_list.flag_lisv_margine, "
|
||||
+ " case " +
|
||||
" when " + UtilityDB.valueToString(lisv4LisaDTO.getCalcPrzBase()) + " = '4' AND IsNull("
|
||||
+ UtilityDB.valueToString(lisv4LisaDTO.getRicaricoTestataLisv()) + " , 0) <> 0 " +
|
||||
" THEN " + UtilityDB.valueToString(lisv4LisaDTO.getRicaricoTestataLisv()) +
|
||||
" ELSE IsNull("
|
||||
+ "(SELECT TOP 1 ricarica "
|
||||
+ " FROM vtb_list_data "
|
||||
+ " WHERE vtb_list_data.cod_vlis = vtb_list.cod_vlis AND "
|
||||
+ " vtb_list_data.cod_promo is null AND "
|
||||
+ " vtb_list_data.data_iniz <= " + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita())
|
||||
+ "ORDER BY vtb_list_data.data_iniz desc, vtb_list_data.versione desc), vtb_list.ricarica) END AS ricarico_testata, "
|
||||
+ " vtb_list.flag_list_iva_inclusa "
|
||||
+ " FROM vtb_list "
|
||||
+ "WHERE 1 = 1 ";
|
||||
|
||||
queryLisv = UtilityDB.addwhereCond(queryLisv, lisv4LisaDTO.getWhereCondLisv(), true);
|
||||
|
||||
|
||||
String queryGriglia =
|
||||
"SELECT STUFF( (SELECT ',''' + vtb_list.cod_vlis + '''' AS [text()] "
|
||||
+ " FROM mtb_depo cross apply "
|
||||
+ " dbo.getGrigliaAcquisto(" + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita()) + ","
|
||||
+ UtilityDB.valueToString(lisv4LisaDTO.getCodAlis()) + ", mtb_depo.cod_mdep, null, lisa.cod_mart) griglia, "
|
||||
+ " vtb_list "
|
||||
+ " WHERE mtb_depo.cod_vlis = vtb_list.cod_vlis and "
|
||||
+ "IsNull(vtb_list.cod_vlis_rif, vtb_list.cod_vlis) = lisv.cod_vlis and "
|
||||
+ "griglia.tipo_variazione <> 'D'FOR XML PATH('')), 1, 1, '' ) as elenco_lisv ";
|
||||
|
||||
String calcPrzVendIva = "dbo.f_calcPrzVendIva(tmp.cod_vlis, tmp.cod_mart, tmp.prz_vend) ";
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(lisv4LisaDTO.getTipoArrotondamento())) {
|
||||
calcPrzVendIva = "dbo.f_roundFromUnit( " + calcPrzVendIva + ", " + UtilityDB.valueToString(lisv4LisaDTO.getTipoArrotondamento()) + " , " + UtilityDB.valueToString(lisv4LisaDTO.getMultiplo()) + ") ";
|
||||
}
|
||||
|
||||
String queryAssortimento =
|
||||
"SELECT testata_lisv.cod_vlis, "
|
||||
+ " Convert(datetime, case when lisv.is_promo = 1 then lisv.data_iniz when lisa.cod_promo is null then " + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita()) + " else lisa.data_iniz_sell_out end) as data_iniz, "
|
||||
+ " case when lisv.is_promo = 1 then lisv.data_fine when lisa.cod_promo is null then null else lisa.data_fine_sell_out end as data_fine, "
|
||||
+ " case when lisv.is_promo = 1 then lisv.cod_promo else lisa.cod_promo end as cod_promo, "
|
||||
+ " case when lisv.is_promo = 1 then lisv.versione else null end as versione, "
|
||||
+ " lisa.descr_promo, "
|
||||
+ " lisa.cod_mart, "
|
||||
+ " IsNull(lisv.unt_mis_ven, mtb_aart.unt_mis) as unt_mis_ven, "
|
||||
+ " IsNull(lisv.rap_conv, 1) as rap_conv, "
|
||||
+ " lisa.prz_acq_netto * IsNull(lisv.rap_conv, 1) as prz_base, " //TO-DO Mina
|
||||
+ " case when lisv.cod_mart is null THEN "
|
||||
+ "CASE " + UtilityDB.valueToString(setupSection.get("RICARICO_ART_NUOVI"))
|
||||
+ " WHEN 'T' THEN testata_lisv.ricarico_testata "
|
||||
+ " ELSE 0 END "
|
||||
+ " ELSE lisv.ricarico END as ricarico, "
|
||||
+ " testata_lisv.flag_lisv_margine, "
|
||||
+ " lisv.prz_vend, "
|
||||
+ " mtb_aart.perc_sfrido, "
|
||||
+ " testata_lisv.ricarico_testata, "
|
||||
+ " lisv.magg_prz_vend, "
|
||||
+ " lisa.prz_acq * IsNull(lisv.rap_conv, 1) as prz_lisa_lordo, "
|
||||
+ " lisa.prz_vend_sugg as prz_vend_sugg_lisa_iva, "
|
||||
+ " lisa.prz_vend_sugg / (1+ gtb_aliq.perc_aliq/100) as prz_vend_sugg_lisa, "
|
||||
+ " CASE WHEN " + UtilityDB.valueToString(lisv4LisaDTO.getFiltraGriglia()) + " = 1 THEN griglie.elenco_lisv ELSE null END as elenco_lisv_rif, "
|
||||
+ " testata_lisv.flag_list_iva_inclusa, "
|
||||
+ " CASE " + UtilityDB.valueToString(setupSection.get("NOTE_LISV_4_LISA"))
|
||||
+ " WHEN 'A' THEN lisa.cod_alis + '_' + Cast( lisa.versione as varchar) "
|
||||
+ " ELSE NULL END AS note_lisv "
|
||||
+ " FROM (" + queryLisa + ") lisa "
|
||||
+ " CROSS APPLY ( " + queryLisv + " ) testata_lisv "
|
||||
+ " LEFT OUTER JOIN ( " + queryRigheLisv + ") lisv on lisa.cod_mart = lisv.cod_mart AND testata_lisv.cod_vlis = lisv.cod_vlis "
|
||||
+ " OUTER APPLY ( " + queryGriglia + " ) griglie "
|
||||
+ " INNER JOIN mtb_aart ON lisa.cod_mart = mtb_aart.cod_mart "
|
||||
+ " INNER JOIN gtb_aliq ON mtb_aart.cod_aliq = gtb_aliq.cod_aliq "
|
||||
+ " WHERE isnull(lisv.flag_prz_bloccato,'N') = 'N' AND "
|
||||
+ " ((" + UtilityDB.valueToString(lisv4LisaDTO.getFiltraGriglia()) + " = 0) OR "
|
||||
+ " (" + UtilityDB.valueToString(lisv4LisaDTO.getFiltraGriglia()) + " = 1 and griglie.elenco_lisv is not null)) AND "
|
||||
+ " ( (" + UtilityDB.valueToString(isPromo ? "S" : "N") + " = 'S' AND lisv.cod_mart is not null ) OR ( " + UtilityDB.valueToString(isPromo ? "S" : "N") + " = 'N' )) "
|
||||
+ whereCond;
|
||||
/*
|
||||
* NEL PREZZO DI VENDITA E' STATO INSERITO IL VALORE [NULL] PERCHE' IL PREZZO DI VENDITA DEVE ESSERE
|
||||
* RICALCOLATO E NON PRESO DAL DATABASE
|
||||
*/
|
||||
String query =
|
||||
"SELECT tmp.cod_vlis, "
|
||||
+ " tmp.data_iniz, "
|
||||
+ " tmp.data_fine, "
|
||||
+ " tmp.versione, "
|
||||
+ " tmp.cod_promo, "
|
||||
+ " tmp.descr_promo, "
|
||||
+ " tmp.cod_mart, "
|
||||
+ " tmp.unt_mis_ven, "
|
||||
+ " tmp.rap_conv, "
|
||||
+ " tmp.prz_base, "
|
||||
+ " CASE WHEN tmp.ricarica > 999.99 THEN 999.99 ELSE tmp.ricarica END as ricarica, "
|
||||
+ " tmp.magg_prz_vend, "
|
||||
+ " CASE WHEN tmp.flag_list_iva_inclusa = 'N' "
|
||||
+ " THEN dbo.f_roundFromUnit( tmp.prz_vend, " + UtilityDB.valueToString(lisv4LisaDTO.getTipoArrotondamento()) + " , " + UtilityDB.valueToString(lisv4LisaDTO.getMultiplo()) + ") "
|
||||
+ " ELSE null END as prz_vend, "
|
||||
+ " CASE WHEN tmp.flag_list_iva_inclusa = 'S' AND tmp.prz_vend_iva is null "
|
||||
+ " THEN " + calcPrzVendIva
|
||||
+ " ELSE tmp.prz_vend_iva END AS prz_vend_iva, "
|
||||
+ " tmp.elenco_lisv_rif, "
|
||||
+ UtilityDB.valueToString(requestDataDTO.getUsername()) + " + ' AGG. DA LISTINO DI ACQUISTO "
|
||||
+ lisv4LisaDTO.getCodAlis() + " VERSIONE " + lisv4LisaDTO.getVersione() + "' AS 'aggiornato_da' "
|
||||
+ " FROM ( "
|
||||
+ "SELECT dati.cod_vlis, "
|
||||
+ " dati.data_iniz, "
|
||||
+ " dati.data_fine, "
|
||||
+ " dati.cod_promo, "
|
||||
+ " dati.versione, "
|
||||
+ " dati.descr_promo, "
|
||||
+ " dati.cod_mart, "
|
||||
+ " dati.unt_mis_ven, "
|
||||
+ " dati.rap_conv, "
|
||||
+ " dati.prz_base, "
|
||||
+ " case " + UtilityDB.valueToString(lisv4LisaDTO.getCalcPrzBase())
|
||||
+ " when '1' then dati.ricarico "
|
||||
+ " when '2' then "
|
||||
+ "CASE WHEN dati.flag_lisv_margine = 'S' "
|
||||
+ " THEN dbo.f_calcMargineEffettivo(dati.prz_base, dati.prz_vend, dati.perc_sfrido) "
|
||||
+ " ELSE dbo.f_calcRicaricoEffettivo(dati.prz_base , dati.prz_vend, dati.perc_sfrido) END "
|
||||
+ " when '3' then dati.ricarico "
|
||||
+ " when '4' then dati.ricarico_testata "
|
||||
+ " when '5' then dati.ricarico "
|
||||
+ " when '6' then dati.ricarico end as ricarica, "
|
||||
+ " dati.magg_prz_vend, "
|
||||
+ " case " + UtilityDB.valueToString(lisv4LisaDTO.getCalcPrzBase())
|
||||
+ " when '1' then dbo.f_calcPrzVendNoRec(dati.cod_vlis, dati.cod_mart, dati.prz_base, dati.ricarico, dati.perc_sfrido, dati.magg_prz_vend) "
|
||||
+ " when '2' then dati.prz_vend "
|
||||
+ " when '3' then dati.prz_lisa_lordo "
|
||||
+ " when '4' then dbo.f_calcPrzVendNoRec(dati.cod_vlis, dati.cod_mart, dati.prz_base, dati.ricarico_testata, dati.perc_sfrido, dati.magg_prz_vend) "
|
||||
+ " when '5' then dati.prz_vend "
|
||||
+ " when '6' then dati.prz_vend_sugg_lisa end * "
|
||||
+ "( CASE "
|
||||
+ " WHEN " + UtilityDB.valueToString(lisv4LisaDTO.getPercMaggPrezzo()) + " IS NOT NULL AND "
|
||||
+ UtilityDB.valueToString(lisv4LisaDTO.getPercMaggPrezzo()) + " <> 0 THEN ( 1 + ( " + UtilityDB.valueToString(lisv4LisaDTO.getPercMaggPrezzo()) + " /100 )) ELSE 1 END ) as prz_vend, "
|
||||
+ " CASE WHEN " + UtilityDB.valueToString(lisv4LisaDTO.getCalcPrzBase()) + " = '6' THEN dati.prz_vend_sugg_lisa_iva else null END as prz_vend_iva, "
|
||||
+ " dati.elenco_lisv_rif, "
|
||||
+ " dati.flag_list_iva_inclusa, "
|
||||
+ " dati.note_lisv "
|
||||
+ " FROM ( " + queryAssortimento + " ) dati ) tmp "
|
||||
+ " ORDER BY tmp.cod_vlis, tmp.cod_mart ";
|
||||
|
||||
OperationType operationType = OperationType.INSERT_OR_UPDATE;
|
||||
if (isPromo) {
|
||||
operationType = OperationType.UPDATE;
|
||||
}
|
||||
List<MtbLisvData> mtbLisvDataList = new ResultSetMapper()
|
||||
.mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), query, MtbLisvData.class, operationType);
|
||||
|
||||
if (!isPromo && lisv4LisaDTO.getDisattivaLisv()) {
|
||||
query =
|
||||
"SELECT lisv.cod_vlis, "
|
||||
+ " lisv.cod_mart, "
|
||||
+ " Convert(datetime, " + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita()) + ") AS data_iniz, "
|
||||
+ " 'D' as tipo_variazione "
|
||||
+ " FROM ( " + queryRigheLisv + ") lisv left outer join ( " + queryLisa + ") lisa on lisv.cod_mart = lisa.cod_mart "
|
||||
+ " WHERE lisa.cod_mart is null ";
|
||||
if (!isPromo && lisv4LisaDTO.getDisattivaArticoliDisattivati()) {
|
||||
String query =
|
||||
Query.format(
|
||||
"SELECT lisv.cod_vlis, "
|
||||
+ " lisv.cod_mart, "
|
||||
+ " Convert(datetime, " + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita()) + ") AS data_iniz, "
|
||||
+ " 'D' as tipo_variazione "
|
||||
+ " FROM ( " + queryRigheLisv + ") lisv "
|
||||
+ "WHERE EXISTS(SELECT *\n"
|
||||
+ " FROM mtb_lisa\n"
|
||||
+ " INNER JOIN mtb_lisa_data\n"
|
||||
+ " ON mtb_lisa.cod_alis = mtb_lisa_data.cod_alis AND\n"
|
||||
+ " mtb_lisa.cod_art_for = mtb_lisa_data.cod_art_for\n"
|
||||
+ " WHERE mtb_lisa.cod_alis = %S\n"
|
||||
+ " AND mtb_lisa_data.versione = %S\n"
|
||||
+ " AND mtb_lisa_data.tipo_variazione = 'D'\n"
|
||||
+ " AND mtb_lisa.cod_mart = lisv.cod_mart)",
|
||||
lisv4LisaDTO.getCodAlis(), lisv4LisaDTO.getVersione());
|
||||
|
||||
List<MtbLisvData> mtbLisvDataListDel = new ResultSetMapper()
|
||||
.mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), query, MtbLisvData.class, OperationType.INSERT_OR_UPDATE);
|
||||
if (!mtbLisvDataListDel.isEmpty()) {
|
||||
mtbLisvDataList.addAll(mtbLisvDataListDel);
|
||||
entityList.addAll(mtbLisvDataListDel);
|
||||
|
||||
List<MtbAart> arts = mtbLisvDataListDel.stream().map(x -> {
|
||||
MtbAart mtbAart = new MtbAart()
|
||||
.setCodMart(x.getCodMart())
|
||||
.setFlagStato("I");
|
||||
mtbAart.setOperation(OperationType.UPDATE);
|
||||
return mtbAart;
|
||||
}).collect(Collectors.toList());
|
||||
if (!arts.isEmpty()) {
|
||||
entityList.addAll(arts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return mtbLisvDataList;
|
||||
if (!isPromo && lisv4LisaDTO.getDisattivaLisv()) {
|
||||
String query =
|
||||
Query.format(
|
||||
"SELECT lisv.cod_vlis, "
|
||||
+ " lisv.cod_mart, "
|
||||
+ " Convert(datetime, " + UtilityDB.valueToString(lisv4LisaDTO.getDataValidita()) + ") AS data_iniz, "
|
||||
+ " 'D' as tipo_variazione "
|
||||
+ " FROM ( " + queryRigheLisv + ") lisv "
|
||||
+ "WHERE NOT EXISTS(SELECT *\n"
|
||||
+ " FROM dbo.getListinoAcquisto(%s, %s, null, null 'N', null) lisa\n"
|
||||
+ " WHERE mtb_lisa.cod_mart = lisv.cod_mart AND (lisa.tipo_variazione is null OR lisa.tipo_variazione <> 'D')) ",
|
||||
lisv4LisaDTO.getDataValidita(), lisv4LisaDTO.getCodAlis());
|
||||
|
||||
List<MtbLisvData> mtbLisvDataListDel = new ResultSetMapper()
|
||||
.mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), query, MtbLisvData.class, OperationType.INSERT_OR_UPDATE);
|
||||
if (!mtbLisvDataListDel.isEmpty()) {
|
||||
entityList.addAll(mtbLisvDataListDel);
|
||||
}
|
||||
}
|
||||
|
||||
return entityList;
|
||||
}
|
||||
|
||||
private List<VtbArti> getVtbArti(List<VtbArtiAcc> entityList) {
|
||||
|
||||
Reference in New Issue
Block a user