Sistemato invio variazioni

This commit is contained in:
2024-07-03 09:37:43 +02:00
parent 62a1e49e7c
commit b435488b7d
2 changed files with 561 additions and 189 deletions

View File

@@ -124,4 +124,30 @@ public class VariazioniPvInputDTO {
return this;
}
public enum Type {
VARIAZIONI("V"),
PROMOZIONI("P"),
GRIGLIA("G"),
LISTINO("L");
private String text;
Type(String text) {
this.text = text;
}
public static Type fromString(String text) {
for (Type b : Type.values()) {
if (b.text.equalsIgnoreCase(text)) return b;
}
return null;
}
public String getText() {
return this.text;
}
}
}

View File

@@ -2,20 +2,31 @@ package it.integry.ems.retail.ReportVariazioni.service;
import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants;
import it.integry.ems.dto.Result;
import it.integry.ems.expansion.RunnableArgsThrowable;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniDTO;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniDettaglioDTO;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniPvInputDTO;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniReportType;
import it.integry.ems.retail.ReportVariazioni.xml.*;
import it.integry.ems.retail.dto.GrigliaAcquistoDTO;
import it.integry.ems.retail.service.GrigliaAcquistoHandlerService;
import it.integry.ems.service.HttpRestWrapper;
import it.integry.ems.service.MailService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDirs;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.TypeDbObject;
import it.integry.ems_model.utility.*;
import kotlin.Triple;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import javax.ws.rs.client.Entity;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.File;
@@ -26,83 +37,149 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Scope("request")
public class VariazioniPvService {
private final Logger logger = LogManager.getLogger();
private final String gestName = "w_vvariaz_prezzi_disp";
private final String section = "VARIAZIONI";
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private SetupGest setupGest;
@Autowired
private GrigliaAcquistoHandlerService grigliaAcquistoHandlerService;
@Autowired
private HttpRestWrapper httpRestWrapper;
@Autowired
private MailService mailService;
private HashMap<String, String> listini = new HashMap<>();
private List<GrigliaAcquistoDTO> grigliaAcquisto = new ArrayList<>();
public String variazionePrezzoPVXml(VariazioniPvInputDTO variazioniPvDTO) throws Exception {
String xmlVariazioni = null;
ReportType fileVariazioniDTO = variazionePrezzoPV(variazioniPvDTO);
if (fileVariazioniDTO.getCodVlis() != null && fileVariazioniDTO.getCodVlis().size() > 0) {
JAXBContext jaxbContext = JAXBContext.newInstance(ReportType.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
String pathFile = UtilityDirs.getDirectoryExport(multiDBTransactionManager.getPrimaryDatasource().getDbName(), "VARIAZIONI_PV", "XML_DIALOGO").getAbsolutePath();
if (!UtilityString.isNullOrEmpty(pathFile)) {
File tempFile = new File(pathFile + "//" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + ".xml");
marshaller.marshal(fileVariazioniDTO, tempFile);
}
StringWriter fileXml = new StringWriter();
marshaller.marshal(fileVariazioniDTO, fileXml);
xmlVariazioni = fileXml.toString();
} else {
if (fileVariazioniDTO.getCodVlis() == null || fileVariazioniDTO.getCodVlis().size() == 0)
throw new Exception("Non ci sono variazione nel periodo selezionato.");
}
return xmlVariazioni;
JAXBContext jaxbContext = JAXBContext.newInstance(ReportType.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
String pathFile = UtilityDirs.getDirectoryExport(multiDBTransactionManager.getPrimaryDatasource().getDbName(), "VARIAZIONI_PV", "XML_DIALOGO").getAbsolutePath();
if (!UtilityString.isNullOrEmpty(pathFile)) {
File tempFile = new File(pathFile + "//" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + ".xml");
marshaller.marshal(fileVariazioniDTO, tempFile);
}
StringWriter fileXml = new StringWriter();
marshaller.marshal(fileVariazioniDTO, fileXml);
return fileXml.toString();
}
public ReportType variazionePrezzoPV(VariazioniPvInputDTO variazioniPvDTO) throws Exception {
final String gestName = "w_vvariaz_prezzi_disp", section = "VARIAZIONI";
public List<VariazioniDettaglioDTO> calcVariazionePrezzoPV(VariazioniPvInputDTO variazioniPvDTO) throws Exception {
return calcVariazionePrezzoPV(multiDBTransactionManager, variazioniPvDTO);
}
public List<VariazioniDettaglioDTO> calcVariazionePrezzoPV(MultiDBTransactionManager mdb, VariazioniPvInputDTO variazioniPvDTO) throws Exception {
LocalDateTime startTracingTime = UtilityLocalDate.getNowTime();
// logger.trace("Calcolo variazioni: Start");
HashMap<String, String> setup = setupGest.getSetupSection(mdb.getPrimaryConnection(), gestName, section);
boolean existVariazioni = (variazioniPvDTO.getVariazioni() != null && !variazioniPvDTO.getVariazioni().isEmpty());
List<VariazioniDTO> listini = getListini(mdb, variazioniPvDTO, existVariazioni);
logger.trace("Calcolo variazioni: GetListini []");
List<VariazioniDettaglioDTO> variazioni = new ArrayList<>();
for (VariazioniDTO datiLisv : listini) {
String codMdep = UtilityString.streNull(datiLisv.getCodMdep());
HashMap<String, String> getSetupSectionDepo =
setupGest.getSetupSectionDepo(mdb.getPrimaryConnection(), gestName, section, codMdep);
String codVlisVariazioni = UtilityHashMap.getValueIfExists(getSetupSectionDepo, "COD_VLIS_VARIAZIONI");
datiLisv.setCodVlis(UtilityString.isNull(codVlisVariazioni, datiLisv.getCodVlis()));
datiLisv.setDataVariazione(variazioniPvDTO.getDataValidita());
datiLisv.setElencoCasse(getElencoCasse(mdb, codMdep));
List<VariazioniDettaglioDTO> variazioniLisv = null;
if (existVariazioni) {
variazioniLisv =
variazioniPvDTO.getVariazioni().stream()
.filter(x -> x.getCodVlis().equalsIgnoreCase(datiLisv.getCodVlis()))
.collect(Collectors.toList());
} else {
String query = getQueryVariazioni(variazioniPvDTO, setup, datiLisv.getCodVlis(), UtilityHashMap.getValueIfExists(getSetupSectionDepo, "SELEZIONA_GRIGLIE"));
variazioniLisv = UtilityDB.executeSimpleQueryDTO(mdb.getPrimaryConnection(), query, VariazioniDettaglioDTO.class);
if (variazioniLisv != null) {
variazioniLisv
.forEach(
variazioniDettaglioDTO ->
variazioniDettaglioDTO.setCodVlis(datiLisv.getCodVlis())
.setCodMdep(datiLisv.getCodMdep())
.setDataVariazione(variazioniPvDTO.getDataValidita())
.setElencoCasse(datiLisv.getElencoCasse())
);
}
}
if (variazioniLisv != null && !variazioniLisv.isEmpty())
variazioni.addAll(variazioniLisv);
logger.debug(VariazioniPvService.class.getSimpleName() +
" - getElencoArticoli Listino " + datiLisv.getCodVlis() +
": Timing " + ChronoUnit.SECONDS.between(startTracingTime, UtilityLocalDate.getNowTime()) + " secs");
}
logger.debug(VariazioniPvService.class.getSimpleName() +
" - Fine: Timing " + ChronoUnit.SECONDS.between(startTracingTime, UtilityLocalDate.getNowTime()) + " secs");
return variazioni;
}
public ReportType variazionePrezzoPV(VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
HashMap<String, String> setup = setupGest.getSetupSection(multiDBTransactionManager.getPrimaryConnection(), gestName, section);
String sql =
"SELECT vtb_list.cod_vlis, vtb_list.descrizione, vtb_list.flag_list_iva_inclusa, mtb_depo.cod_mdep " +
" FROM vtb_list INNER JOIN mtb_depo ON mtb_depo.cod_vlis = vtb_list.cod_vlis " +
" WHERE vtb_list.flag_attivo = 'S' " +
"ORDER BY vtb_list.cod_vlis ";
sql = UtilityDB.addwhereCond(sql, variazioniPvDTO.getWhereCondLisv(), false);
List<HashMap<String, Object>> listini = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
String invioIngredienti = setup.get("INVIA_INGREDIENTI_OPZ");
String colNameDescrEstesa = "descrizione_estesa";
String setupDescr = setup.get("DESCRIZIONE_ESTESA");
if (!UtilityString.isNullOrEmpty(setupDescr)) {
if (setupDescr.equalsIgnoreCase("D"))
colNameDescrEstesa = "descr_art";
else if (setupDescr.equalsIgnoreCase("B"))
colNameDescrEstesa = "descr_cassa";
}
boolean existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
List<VariazioniDTO> listini = getListini(variazioniPvInputDTO, existVariazioni);
ReportType fileVariazioniDTO = new ReportType();
for (HashMap<String, Object> datiLisv : listini) {
String codVlis = UtilityHashMap.getValueIfExists(datiLisv, "cod_vlis");
String descrLisv = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "descrizione"));
String flagListIvaInclusa = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "flag_list_iva_inclusa"));
String codMdep = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "cod_mdep"));
String elencoCasse = getElencoCasse(codMdep);
Date startDate = new Date();
logger.debug(VariazioniPvService.class.getSimpleName() + " - inizio : Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
for (VariazioniDTO datiLisv : listini) {
String codVlis = datiLisv.getCodVlis();
String codMdep = UtilityString.streNull(datiLisv.getCodMdep());
String elencoCasse = getElencoCasse(multiDBTransactionManager, codMdep);
HashMap<String, String> getSetupSectionDepo = setupGest.getSetupSectionDepo(multiDBTransactionManager.getPrimaryConnection(), gestName, section, codMdep);
ObjectFactory objectFactory = new ObjectFactory();
CodVlisType listinoDTO = new CodVlisType();
@@ -112,39 +189,52 @@ public class VariazioniPvService {
} else {
listinoDTO.getContent().add(codVlisVariazioni);
}
listinoDTO.setDescrizione(descrLisv);
listinoDTO.setFlagListIvaInclusa(flagListIvaInclusa);
listinoDTO.setDataVariazione(new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(variazioniPvDTO.getDataValidita()));
listinoDTO.setDescrizione(datiLisv.getDescrizione());
listinoDTO.setFlagListIvaInclusa(datiLisv.getFlagListIvaInclusa());
listinoDTO.setDataVariazione(new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(variazioniPvInputDTO.getDataValidita()));
listinoDTO.setCodMdep(codMdep);
listinoDTO.getContent().add(objectFactory.createCodVlisTypeElencoCasse(elencoCasse));
fileVariazioniDTO.getCodVlis().add(listinoDTO);
String query = getQueryVariazioni(variazioniPvDTO, setup, codVlis, getSetupSectionDepo.get("SELEZIONA_GRIGLIE"));
List<HashMap<String, Object>> elencoVar = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
boolean getVariazioneGriglia = false;
if ((variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.GRIGLIA ||
variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.LISTINO) &&
getSetupSectionDepo.get("SELEZIONA_GRIGLIE") != null &&
getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) {
getVariazioneGriglia = true;
grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto();
grigliaAcquisto = Stream.of(grigliaAcquisto)
.filter(x -> x.getDataValidita().equals(variazioniPvDTO.getDataValidita()) &&
x.getCodMdep().equalsIgnoreCase(codMdep))
.toList();
List<VariazioniDettaglioDTO> elencoVar = null;
if (existVariazioni) {
elencoVar =
Stream.of(variazioniPvInputDTO.getVariazioni())
.filter(x -> x.getCodVlis().equalsIgnoreCase(datiLisv.getCodVlis()))
.toList();
} else {
String query = getQueryVariazioni(variazioniPvInputDTO, setup, codVlis, getSetupSectionDepo.get("SELEZIONA_GRIGLIE"));
elencoVar = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, VariazioniDettaglioDTO.class);
}
logger.trace(VariazioniPvService.class.getSimpleName() + " - getElencoArticoli Listino " + codVlis + ": Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
if (elencoVar != null) {
boolean getVariazioneGriglia = false;
for (HashMap<String, Object> variazioni : elencoVar) {
CodMartType codMart = fillArticoloData(objectFactory,
variazioni, variazioniPvDTO, invioIngredienti, getSetupSectionDepo, codMdep, colNameDescrEstesa,
setup.get("LIBERO1"),
setup.get("LIBERO2"), getVariazioneGriglia);
listinoDTO.getContent().add(objectFactory.createCodVlisTypeCodMart(codMart));
if ((variazioniPvInputDTO.getTipoReportEnum() == VariazioniReportType.GRIGLIA ||
variazioniPvInputDTO.getTipoReportEnum() == VariazioniReportType.LISTINO) &&
getSetupSectionDepo.get("SELEZIONA_GRIGLIE") != null &&
getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) {
getVariazioneGriglia = true;
grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto();
grigliaAcquisto = Stream.of(grigliaAcquisto)
.filter(x -> x.getDataValidita().equals(variazioniPvInputDTO.getDataValidita()) &&
x.getCodMdep().equalsIgnoreCase(codMdep))
.toList();
}
int i = 1;
for (VariazioniDettaglioDTO variazioni : elencoVar) {
CodMartType codMart = fillArticoloData(objectFactory, variazioni, variazioniPvInputDTO, invioIngredienti, getSetupSectionDepo, codMdep, setupDescr,
setup.get("LIBERO1"),
setup.get("LIBERO2"), getVariazioneGriglia);
listinoDTO.getContent().add(objectFactory.createCodVlisTypeCodMart(codMart));
i++;
}
}
logger.trace(VariazioniPvService.class.getSimpleName() + " - creazione xml Listino " + codVlis + ": Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
}
logger.trace(VariazioniPvService.class.getSimpleName() + " - fine : Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
if (fileVariazioniDTO.getCodVlis() != null && fileVariazioniDTO.getCodVlis().size() > 0) {
@@ -155,140 +245,155 @@ public class VariazioniPvService {
return fileVariazioniDTO;
}
private CodMartType fillArticoloData(ObjectFactory objectFactory, HashMap<String, Object> var,
VariazioniPvInputDTO variazioniPvDTO,
private List<VariazioniDTO> getListini(VariazioniPvInputDTO variazioniPvDTO, boolean existVariazioni) throws Exception {
return getListini(multiDBTransactionManager, variazioniPvDTO, existVariazioni);
}
private List<VariazioniDTO> getListini(MultiDBTransactionManager mdb, VariazioniPvInputDTO variazioniPvDTO, boolean existVariazioni) throws Exception {
List<VariazioniDTO> listini;
if (existVariazioni) {
listini = variazioniPvDTO.getVariazioni().stream()
.map(x -> new VariazioniDTO()
.setCodVlis(x.getCodVlis())
.setCodMdep(x.getCodMdep())
.setDescrizione(x.getDescrizione())
.setFlagListIvaInclusa(x.getFlagListIvaInclusa()))
.distinct()
.collect(Collectors.toList());
} else {
String sql =
"SELECT vtb_list.cod_vlis, vtb_list.descrizione, vtb_list.flag_list_iva_inclusa, mtb_depo.cod_mdep " +
" FROM vtb_list INNER JOIN mtb_depo ON mtb_depo.cod_vlis = vtb_list.cod_vlis " +
" WHERE vtb_list.flag_attivo = 'S' " +
"ORDER BY vtb_list.cod_vlis ";
if (variazioniPvDTO != null) {
if (!UtilityString.isNullOrEmpty(variazioniPvDTO.getCodVlis()))
sql = UtilityDB.addwhereCond(sql, String.format("vtb_list.cod_vlis = '%s'", variazioniPvDTO.getCodVlis()), false);
sql = UtilityDB.addwhereCond(sql, variazioniPvDTO.getWhereCondLisv(), false);
}
listini = UtilityDB.executeSimpleQueryDTO(mdb.getPrimaryConnection(), sql, VariazioniDTO.class);
}
return listini;
}
private CodMartType fillArticoloData(ObjectFactory objectFactory,
VariazioniDettaglioDTO var,
VariazioniPvInputDTO variazioniPvInputDTO,
String invioIngredientiSetup,
Map<String, String> setupDepo,
String codMdep,
String colNameDescrEstesa,
String setupDescr,
String valLibero1,
String valLibero2,
boolean getVariazioneGriglia) throws Exception {
CodMartType codMartType = objectFactory.createCodMartType();
String codMart = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_mart"));
String flagTipoPromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_tipo_promo"));
BigDecimal przPieno = UtilityHashMap.getValueIfExists(var, "prezzo_pieno");
BigDecimal przPienoIva = UtilityHashMap.getValueIfExists(var, "prz_pieno_iva");
BigDecimal przVend = UtilityHashMap.getValueIfExists(var, "prz_vend");
BigDecimal przVendIva = UtilityHashMap.getValueIfExists(var, "prz_vend_iva");
String codMart = var.getCodMart();
String flagTipoPromo = var.getFlagTipoPromo();
BigDecimal przPieno = var.getPrezzoPieno();
BigDecimal przPienoIva = var.getPrzPienoIva();
BigDecimal przVend = var.getPrzVend();
BigDecimal przVendIva = var.getPrzVendIva();
if ("P".equals(flagTipoPromo)) {
przPienoIva = przVendIva;
przPieno = przVend;
}
String dataFinePromoS = "";
Date dataFinePromo = UtilityHashMap.getValueIfExists(var, "data_fine");
if (dataFinePromo != null) {
dataFinePromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataFinePromo);
}
String dataInizPromoS = "";
Date dataInizPromo = UtilityHashMap.getValueIfExists(var, "data_iniz_promo");
if (dataInizPromo != null) {
dataInizPromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataInizPromo);
}
String dataFinePromoS = convertDateToString(var.getDataFine());
String dataInizPromoS = convertDateToString(var.getDataInizPromo());
String dataUltVarS = convertDateToString(var.getDataUltVar());
String dataAggPrzS = convertDateToString(var.getDataIniz());
String dataUltVarS = "";
Date dataUltVar = UtilityHashMap.getValueIfExists(var, "data_ult_var");
if (dataUltVar != null) {
dataUltVarS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataUltVar);
}
String dataAggPrzS = "";
Date dataAggPrz = UtilityHashMap.getValueIfExists(var, "data_iniz");
if (dataAggPrz != null) {
dataAggPrzS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataAggPrz);
}
String tipoVariazioneLisv = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "tipo_variazione_lisv"));
String flagStato = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_stato"));
String tipoVariazioneLisv = var.getTipoVariazioneLisv();
String flagStato = var.getFlagStato();
if ("D".equalsIgnoreCase(tipoVariazioneLisv)) {
flagStato = "I";
}
codMartType.getContent().add(codMart);
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_art"))));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis2(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis2"))));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis"))));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv2(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv2"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis3(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis3"))));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv3(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv3"), "###0.00").replace(",", ".")));
CodMgrpType codMgrpType = objectFactory.createCodMgrpType();
codMgrpType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_mgrp")));
codMgrpType.setDescrGrup(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_grup")));
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizione(UtilityString.streNull(var.getDescrArt())));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis2(UtilityString.streNull(var.getUntMis2())));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis(UtilityString.streNull(var.getUntMis())));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv2(UtilityString.bigDecimalToString(var.getRapConv2(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis3(UtilityString.streNull(var.getUntMis3())));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv3(UtilityString.bigDecimalToString(var.getRapConv3(), "###0.00").replace(",", ".")));
CodMgrpType codMgrpType = getCodMgrpType(objectFactory, var);
codMartType.getContent().add(objectFactory.createCodMartTypeCodMgrp(codMgrpType));
CodMsgrType codMsgrType = objectFactory.createCodMsgrType();
codMsgrType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_msgr")));
codMsgrType.setDescrSgrp(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_sgrp")));
CodMsgrType codMsgrType = getCodMsgrType(objectFactory, var);
codMartType.getContent().add(objectFactory.createCodMartTypeCodMsgr(codMsgrType));
CodMsfaType codMsfaType = objectFactory.createCodMsfaType();
codMsfaType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_msfa")));
codMsfaType.setDescrSfam(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_msfa")));
CodMsfaType codMsfaType = getCodMsfaType(objectFactory, var);
codMartType.getContent().add(objectFactory.createCodMartTypeCodMsfa(codMsfaType));
codMartType.getContent().add(objectFactory.createCodMartTypeRepartoCassa(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "reparto_cassa"))));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "tipo_variazione"))));
codMartType.getContent().add(objectFactory.createCodMartTypeRepartoCassa(UtilityString.streNull(var.getRepartoCassa())));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazione(UtilityString.streNull(var.getTipoVariazione())));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazioneLisv(tipoVariazioneLisv));
codMartType.getContent().add(objectFactory.createCodMartTypePrzBase(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "prz_base"), "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrzBase(UtilityString.bigDecimalToString(var.getPrzBase(), "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrzVend(UtilityString.bigDecimalToString(przVend, "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrzVendIva(UtilityString.bigDecimalToString(przVendIva, "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePosizione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "posizione"))));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMisVen(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis_ven"))));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConvVen(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePesoKg(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "peso_kg"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagEsponiPrz(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_esponi_prz"))));
codMartType.getContent().add(objectFactory.createCodMartTypePercSfrido(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sfrido"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarreImb(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_barre_imb"))));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrz(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_calc_prz"))));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneCompAcq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "esposizione_comp_acq"))));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneComp(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "esposizione_comp"))));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrzAcq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_calc_prz_acq"))));
BigDecimal colliPedane = UtilityHashMap.getValueIfExists(var, "colli_pedana");
codMartType.getContent().add(objectFactory.createCodMartTypePosizione(UtilityString.streNull(var.getPosizione())));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMisVen(UtilityString.streNull(var.getUntMisVen())));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConvVen(UtilityString.bigDecimalToString(var.getRapConv(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePesoKg(UtilityString.bigDecimalToString(var.getPesoKg(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagEsponiPrz(UtilityString.streNull(var.getFlagEsponiPrz())));
codMartType.getContent().add(objectFactory.createCodMartTypePercSfrido(UtilityString.bigDecimalToString(var.getPercSfrido(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarreImb(UtilityString.streNull(var.getCodBarreImb())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrz(UtilityString.streNull(var.getFlagCalcPrz())));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneCompAcq(UtilityString.streNull(var.getEsposizioneCompAcq())));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneComp(UtilityString.streNull(var.getEsposizioneComp())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrzAcq(UtilityString.streNull(var.getFlagCalcPrzAcq())));
BigDecimal colliPedane = var.getColliPedana();
codMartType.getContent().add(objectFactory.createCodMartTypeColliPedane(UtilityString.bigDecimalToString(colliPedane == null ? BigDecimal.ZERO : colliPedane, "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco1(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco1"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco2(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco2"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco3(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco3"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco4(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco4"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco1(UtilityString.bigDecimalToString(var.getPercSco1(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco2(UtilityString.bigDecimalToString(var.getPercSco2(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco3(UtilityString.bigDecimalToString(var.getPercSco3(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco4(UtilityString.bigDecimalToString(var.getPercSco4(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeDataUltVar(dataUltVarS));
codMartType.getContent().add(objectFactory.createCodMartTypeDataAggPrz(dataAggPrzS));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarre(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_barre"))));
codMartType.getContent().add(objectFactory.createCodMartTypePlu(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "plu"))));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarre(UtilityString.streNull(var.getCodBarre())));
codMartType.getContent().add(objectFactory.createCodMartTypePlu(UtilityString.streNull(var.getPlu())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagStato(flagStato));
codMartType.getContent().add(objectFactory.createCodMartTypeQtaCnf(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "qta_cnf"), "###0.00").replace(",", ".")));
BigDecimal tara = UtilityHashMap.getValueIfExists(var, "tara_kg");
codMartType.getContent().add(objectFactory.createCodMartTypeQtaCnf(UtilityString.bigDecimalToString(var.getQtaCnf(), "###0.00").replace(",", ".")));
BigDecimal tara = var.getTaraKg();
if (tara.compareTo(BigDecimal.ZERO) != 0) {
tara = (tara.multiply(new BigDecimal("1000"))).setScale(0, RoundingMode.HALF_UP);
}
codMartType.getContent().add(objectFactory.createCodMartTypeTara(UtilityString.bigDecimalToString(tara, "###0.00").replace(",", ".")));
String descrizioneEstesa = UtilityHashMap.getValueIfExists(var, colNameDescrEstesa);
if (UtilityString.isNullOrEmpty(descrizioneEstesa))
descrizioneEstesa = UtilityHashMap.getValueIfExists(var, "descrizione_estesa");
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizioneEstesa(UtilityString.streNull(descrizioneEstesa)));
codMartType.getContent().add(objectFactory.createCodMartTypeAnnotazioniArt(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "annotazioni_art"))));
codMartType.getContent().add(objectFactory.createCodMartTypeCodAliq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_aliq"))));
codMartType.getContent().add(objectFactory.createCodMartTypeArticoloComposto(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "articolo_composto"))));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoEan(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "tipo_codice"))));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTracciabilita(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_tracciabilita"))));
codMartType.getContent().add(objectFactory.createCodMartTypeGgScadPartita(String.valueOf(UtilityHashMap.<Integer>getValueIfExists(var, "gg_scad_partita"))));
codMartType.getContent().add(objectFactory.createCodMartTypePercAliq(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_aliq"), "###0.00").replace(",", ".")));
String descrizioneEstesa = var.getDescrizioneEstesa();
if (!UtilityString.isNullOrEmpty(setupDescr)) {
if (setupDescr.equalsIgnoreCase("D"))
descrizioneEstesa = var.getDescrArt();
else if (setupDescr.equalsIgnoreCase("B"))
descrizioneEstesa = var.getDescrCassa();
}
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizioneEstesa(descrizioneEstesa));
codMartType.getContent().add(objectFactory.createCodMartTypeAnnotazioniArt(UtilityString.streNull(var.getAnnotazioniArt())));
codMartType.getContent().add(objectFactory.createCodMartTypeCodAliq(UtilityString.streNull(var.getCodAliq())));
codMartType.getContent().add(objectFactory.createCodMartTypeArticoloComposto(UtilityString.streNull(var.getArticoloComposto())));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoEan(UtilityString.streNull(var.getTipoCodice())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTracciabilita(UtilityString.streNull(var.getFlagTracciabilita())));
codMartType.getContent().add(objectFactory.createCodMartTypeGgScadPartita(String.valueOf(var.getGgScadPartita())));
codMartType.getContent().add(objectFactory.createCodMartTypePercAliq(UtilityString.bigDecimalToString(var.getPercAliq(), "###0.00").replace(",", ".")));
String idArtEqui = UtilityHashMap.getValueIfExists(var, "id_art_equi");
String idArtEqui = var.getIdArtEqui();
if (!UtilityString.isNullOrEmpty(idArtEqui)) {
IdArtEquiType idArtEquiType = objectFactory.createIdArtEquiType();
idArtEquiType.setValue(idArtEqui);
idArtEquiType.setDescrizione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_art_equi")));
IdArtEquiType idArtEquiType = getIdArtEquiType(objectFactory, var, idArtEqui);
codMartType.getContent().add(objectFactory.createCodMartTypeIdArtEqui(idArtEquiType));
}
codMartType.getContent().add(objectFactory.createCodMartTypePrezzoPieno(UtilityString.bigDecimalToString(przPieno, "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrezzoPienoIva(UtilityString.bigDecimalToString(przPienoIva, "###0.00").replace(",", ".")));
//PUNTI ARTICOLO
BigDecimal puntiArticolo = getPuntiArt(codMart, variazioniPvDTO.getDataValidita());
BigDecimal puntiArticolo = getPuntiArt(codMart, variazioniPvInputDTO.getDataValidita());
codMartType.getContent().add(objectFactory.createCodMartTypePuntiArticolo(UtilityString.bigDecimalToString(puntiArticolo, "###0.00").replace(",", ".")));
//PROMOZIONE MxN
HashMap<String, Object> datiPromo = new HashMap<>();
FlagMxnType flagMxnType = getScontoMerce(objectFactory, codMart, variazioniPvDTO.getDataValidita(), datiPromo);
FlagMxnType flagMxnType = getScontoMerce(objectFactory, codMart, variazioniPvInputDTO.getDataValidita(), datiPromo);
String finePromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "fine_promo"));
String codPromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_promo"));
String finePromo = UtilityString.streNull(var.getFinePromo());
String codPromo = UtilityString.streNull(var.getCodPromo());
if (flagMxnType.getValue().equalsIgnoreCase("S") && finePromo.equalsIgnoreCase("S")) {
codPromo = (String) datiPromo.get("cod_promo");
dataInizPromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(datiPromo.get("data_iniz"));
@@ -296,24 +401,23 @@ public class VariazioniPvService {
}
codMartType.getContent().add(objectFactory.createCodMartTypeCodPromo(codPromo));
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizionePromo(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_promo"))));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTipoPromo(flagTipoPromo));
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizionePromo(UtilityString.streNull(var.getDescrPromo())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTipoPromo(UtilityString.streNull(flagTipoPromo)));
codMartType.getContent().add(objectFactory.createCodMartTypeDataInizPromo(dataInizPromoS));
codMartType.getContent().add(objectFactory.createCodMartTypeDataFinePromo(dataFinePromoS));
codMartType.getContent().add(objectFactory.createCodMartTypeFinePromo(finePromo));
codMartType.getContent().add(objectFactory.createCodMartTypeIdPromo(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "id_promo"))));
codMartType.getContent().add(objectFactory.createCodMartTypeIdPromo(UtilityString.streNull(var.getIdPromo())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagMxn(flagMxnType));
//INGREDIENTI
String inviaIngrOpz = null;
inviaIngrOpz = variazioniPvDTO.getInviaIngredienti();
String inviaIngrOpz = variazioniPvInputDTO.getInviaIngredienti();
if (UtilityString.isNullOrEmpty(inviaIngrOpz)) {
//PER CARELLI ABBIAMO RESO OPZIONALE L'INVIO DEGLI INGREDIENTI (SOLO SE VARIATI IN DISTINTA BASE) PER TUTTI GLI ALTRI
//GLI INGREDIENTI VENGONO COMUNQUE INVIATI
inviaIngrOpz = invioIngredientiSetup;
}
String ingredienti = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "ingredienti"));
IngredientiType ingredientiType = getIngredienti(objectFactory, codMart, variazioniPvDTO.getDataValidita(), variazioniPvDTO.getTipoReportEnum(), tipoVariazioneLisv, inviaIngrOpz, ingredienti);
String ingredienti = UtilityString.streNull(var.getIngredienti());
IngredientiType ingredientiType = getIngredienti(objectFactory, codMart, variazioniPvInputDTO.getDataValidita(), variazioniPvInputDTO.getTipoReportEnum(), tipoVariazioneLisv, inviaIngrOpz, ingredienti);
codMartType.getContent().add(objectFactory.createCodMartTypeIngredienti(ingredientiType));
//COMPONENTI
@@ -321,7 +425,7 @@ public class VariazioniPvService {
codMartType.getContent().add(objectFactory.createCodMartTypeComponenti(componentiType));
//PREMI
PremioType premioType = getPuntiPremi(objectFactory, codMart, variazioniPvDTO.getDataValidita());
PremioType premioType = getPuntiPremi(objectFactory, codMart, variazioniPvInputDTO.getDataValidita());
if (premioType != null) {
codMartType.getContent().add(objectFactory.createCodMartTypePremio(premioType));
}
@@ -332,7 +436,7 @@ public class VariazioniPvService {
//DATI GRIGLIA DI ACQUISTO
if ("S".equalsIgnoreCase(setupDepo.get("SELEZIONA_GRIGLIE"))) {
getDatiGriglia(objectFactory, codMart, codMdep, variazioniPvDTO.getDataValidita(), codMartType, getVariazioneGriglia);
getDatiGriglia(objectFactory, codMart, codMdep, variazioniPvInputDTO.getDataValidita(), codMartType, getVariazioneGriglia);
}
if ("S".equalsIgnoreCase(setupDepo.get("ABILITA_CAMPI_LIBERI"))) {
@@ -340,10 +444,11 @@ public class VariazioniPvService {
codMartType.getContent().add(objectFactory.createCodMartTypeLibero2(UtilityString.streNull(getValueCampoLibero(valLibero2, var, codMdep, codMart))));
}
return codMartType;
}
private String getValueCampoLibero(String tipoValore, HashMap<String, Object> var, String codMdep, String codMart) throws Exception {
private String getValueCampoLibero(String tipoValore, VariazioniDettaglioDTO var, String codMdep, String codMart) throws Exception {
if (UtilityString.isNullOrEmpty(tipoValore)) return "";
if (tipoValore.equalsIgnoreCase("M")) {
String sql =
@@ -363,13 +468,49 @@ public class VariazioniPvService {
}
return (valMedio == null ? "" : new DecimalFormat("#,##0.00").format(valMedio));
} else if (tipoValore.equalsIgnoreCase("P")) {
return UtilityHashMap.getValueIfExists(var, "posizione_art");
return var.getPosizioneArticolo();
} else if (tipoValore.equalsIgnoreCase("T")) {
return UtilityHashMap.getValueIfExists(var, "intercode_xml_variazioni");
return var.getIntercodeXmlVariazioni();
}
return null;
}
private static String convertDateToString(Date data) {
String dataString = "";
if (data != null) {
dataString = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(data);
}
return dataString;
}
private static IdArtEquiType getIdArtEquiType(ObjectFactory objectFactory, VariazioniDettaglioDTO var, String idArtEqui) {
IdArtEquiType idArtEquiType = objectFactory.createIdArtEquiType();
idArtEquiType.setValue(idArtEqui);
idArtEquiType.setDescrizione(UtilityString.streNull(var.getDescrArtEqui()));
return idArtEquiType;
}
private static CodMsfaType getCodMsfaType(ObjectFactory objectFactory, VariazioniDettaglioDTO var) {
CodMsfaType codMsfaType = objectFactory.createCodMsfaType();
codMsfaType.setValue(UtilityString.streNull(var.getCodMsfa()));
codMsfaType.setDescrSfam(UtilityString.streNull(var.getDescrMsfa()));
return codMsfaType;
}
private static CodMsgrType getCodMsgrType(ObjectFactory objectFactory, VariazioniDettaglioDTO var) {
CodMsgrType codMsgrType = objectFactory.createCodMsgrType();
codMsgrType.setValue(UtilityString.streNull(var.getCodMsgr()));
codMsgrType.setDescrSgrp(UtilityString.streNull(var.getDescrSgrp()));
return codMsgrType;
}
private static CodMgrpType getCodMgrpType(ObjectFactory objectFactory, VariazioniDettaglioDTO var) {
CodMgrpType codMgrpType = objectFactory.createCodMgrpType();
codMgrpType.setValue(UtilityString.streNull(var.getCodMgrp()));
codMgrpType.setDescrGrup(UtilityString.streNull(var.getDescrGrup()));
return codMgrpType;
}
private String getQueryVariazioni(VariazioniPvInputDTO variazioniPvDTO,
HashMap<String, String> setup,
String codVlis,
@@ -494,7 +635,7 @@ public class VariazioniPvService {
" ON listino.cod_vlis = promozione.cod_vlis AND listino.cod_mart = promozione.cod_mart\n" +
" LEFT OUTER JOIN vtb_promo ON promozione.cod_promo = vtb_promo.cod_promo\n" +
"WHERE vtb_promo.cod_promo_intercode IS NULL\n" +
((variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.LISTINO) ?
((variazioniPvDTO.getTipoReportEnum() == VariazioniReportType.LISTINO) ?
" AND ( (IsNull('[INVIA_DISATTIVAZIONI]', 'N') = 'S') " +
" OR (IsNull('[INVIA_DISATTIVAZIONI]', 'N') = 'N' AND listino.tipo_variazione <> 'D')) " : "") +
"ORDER BY listino.cod_mart ";
@@ -509,14 +650,13 @@ public class VariazioniPvService {
}
private String getElencoCasse(String codMdep) throws Exception {
private String getElencoCasse(MultiDBTransactionManager mdb, String codMdep) throws Exception {
String sql =
"SELECT mtb_depo_casse.cod_cassa\n" +
" FROM mtb_depo_casse\n" +
" WHERE mtb_depo_casse.cod_mdep = " + UtilityDB.valueToString(codMdep);
List<Object> casse = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
List<String> casse = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), sql);
return StringUtils.join(casse, "|");
}
@@ -577,17 +717,6 @@ public class VariazioniPvService {
"WHERE '[DATA_VALIDITA]' BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine\n" +
" AND vtb_list_data.cod_vlis = '[COD_VLIS]'\n" +
"UNION\n" +
"SELECT mtb_depo.cod_vlis,\n" +
" atb_griglie_art.cod_mart,\n" +
" 'G' AS tipo_variazione,\n" +
" CONVERT(VARCHAR(15), NULL) AS cod_mart_new,\n" +
" 'N' AS 'fine_promo'\n" +
"FROM atb_griglie_art\n" +
" INNER JOIN mtb_depo ON atb_griglie_art.cod_mdep = mtb_depo.cod_mdep\n" +
"WHERE atb_griglie_art.data_validita BETWEEN DateAdd(day, -1, '[DATA_VALIDITA]') AND '[DATA_VALIDITA]'\n" +
" AND mtb_depo.cod_vlis = '[COD_VLIS]'\n" +
" AND " + UtilityDB.valueToString(selezionaGriglia) + " = 'S'\n" +
"UNION\n" +
"SELECT lisv.cod_vlis\n" +
" , lisv.cod_mart\n" +
" , tipo_variazione\n" +
@@ -746,7 +875,7 @@ public class VariazioniPvService {
return flagMxnType;
}
private IngredientiType getIngredienti(ObjectFactory objectFactory, String codMart, Date dataVariazioni, VariazioniPvInputDTO.Type tipoReport, String tipoVariazioneLisv, String invioIngOpz, String ingredientiArt) throws Exception {
private IngredientiType getIngredienti(ObjectFactory objectFactory, String codMart, Date dataVariazioni, VariazioniReportType tipoReport, String tipoVariazioneLisv, String invioIngOpz, String ingredientiArt) throws Exception {
IngredientiType ingredientiType = objectFactory.createIngredientiType();
if (UtilityString.isNullOrEmpty(ingredientiArt)) {
String whereCond = "";
@@ -759,7 +888,7 @@ public class VariazioniPvService {
" ORDER BY jtb_dist_mate.id_riga";
if ("S".equalsIgnoreCase(invioIngOpz)) {
if (tipoReport.compareTo(VariazioniPvInputDTO.Type.LISTINO) != 0 &&
if (tipoReport.compareTo(VariazioniReportType.LISTINO) != 0 &&
!"I".equalsIgnoreCase(tipoVariazioneLisv)) {
whereCond = "jtb_cicl.data_ult_var = " + UtilityDB.valueDateToString(dataVariazioni, CommonConstants.DATE_FORMAT_YMD);
query = UtilityDB.addwhereCond(query, whereCond, false);
@@ -966,4 +1095,221 @@ public class VariazioniPvService {
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazioneGriglia(tipoVariazioneGriglia));
codMartType.getContent().add(objectFactory.createCodMartTypeCodAlis(codAlisType));
}
public void exportByTipoReport(String tipoReport, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
List<String> tipiReport = new ArrayList<>();
if (!UtilityString.isNullOrEmpty(tipoReport))
tipiReport.add(tipoReport);
else {
tipiReport.add("V"); //Variazioni
tipiReport.add("P"); //Promozioni
tipiReport.add("G"); //Griglie
}
boolean existVariazioni = false;
if (variazioniPvInputDTO != null)
existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
Date dataValidita = variazioniPvInputDTO.getDataValidita();
if (dataValidita == null)
dataValidita = UtilityDate.RelativeDateTime(new Date(), 1);
List<VariazioniDTO> listini = getListini(variazioniPvInputDTO, existVariazioni);
List<RunnableArgsThrowable<Triple<String, String, List<VariazioniDettaglioDTO>>>> calls = new ArrayList<>();
for (VariazioniDTO pv : listini) {
for (String report : tipiReport) {
final Date finalDataValidita = dataValidita;
final String finalProfileDb = multiDBTransactionManager.getPrimaryDatasource().getProfile();
calls.add(() -> {
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(finalProfileDb)) {
String codVlis = pv.getCodVlis();
logger.debug(
String.format("Variazioni: Export [CodListino: %s, TipoReport: %s, Validità: %s]",
codVlis,
report,
new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(finalDataValidita)));
return new Triple<>(codVlis, report, exportVariazioni(mdb, codVlis, finalDataValidita, report, variazioniPvInputDTO));
}
});
}
}
final ArrayList<Result<Triple<String, String, List<VariazioniDettaglioDTO>>>> results = UtilityThread.executeParallel(calls, 6);
final List<Triple<String, String, List<VariazioniDettaglioDTO>>> completedExports = results.stream()
.filter(x -> x instanceof Result.Success)
.map(x -> ((Result.Success<Triple<String, String, List<VariazioniDettaglioDTO>>>) x).getData())
.collect(Collectors.toList());
final List<Exception> generatedErrors = results.stream()
.filter(x -> x instanceof Result.Error)
.map(x -> ((Result.Error<?>) x).getError())
.collect(Collectors.toList());
String emailForLog = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), "VARIAZIONE PV", "XML_DIALOGO", "EMAIL_FOR_LOG");
emailForLog = "g.scorrano@integry.it";
if (!UtilityString.isNullOrEmpty(emailForLog)) {
StringBuilder sb = new StringBuilder();
for (Triple<String, String, List<VariazioniDettaglioDTO>> completedExport : completedExports) {
if(completedExport.getThird().isEmpty())
continue;
sb.append("Esportazione ")
.append(completedExport.getSecond())
.append(" punto vendita ")
.append(completedExport.getFirst())
.append(" (").append(completedExport.getThird().size()).append(" variazioni)")
.append(" avvenuta con successo\n\r");
}
if(!generatedErrors.isEmpty())
sb.append("\n\r\n\rErrori\n\r");
for (Exception generatedError : generatedErrors) {
sb.append("Messaggio errore: ")
.append(generatedError.getMessage())
.append("\n\r");
}
mailService.sendMailPrimary(multiDBTransactionManager,
null, null,
emailForLog, null, null,
"Esportazione variazioni", sb.toString(), false, false,
null, null, null,
false, null);
}
}
private List<VariazioniDettaglioDTO> exportVariazioni(MultiDBTransactionManager multiDBTransactionManager, String codVlis, Date dataValidita, String tipoReport, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
VariazioniPvInputDTO v =
new VariazioniPvInputDTO()
.setCodVlis(codVlis)
.setTipoReport(tipoReport)
.setDataValidita(dataValidita)
.setWhereCondArt(variazioniPvInputDTO != null ? variazioniPvInputDTO.getWhereCondArt() : null)
.setWhereCondLisv(variazioniPvInputDTO != null ? variazioniPvInputDTO.getWhereCondLisv() : null)
.setWhereCondDoc(variazioniPvInputDTO != null ? variazioniPvInputDTO.getWhereCondDoc() : null)
.setInviaIngredienti(variazioniPvInputDTO != null ? variazioniPvInputDTO.getInviaIngredienti() : "S")
.setFileXml(variazioniPvInputDTO != null ? variazioniPvInputDTO.getFileXml() : null)
.setInviaDisattivazioni(variazioniPvInputDTO != null ? variazioniPvInputDTO.getInviaDisattivazioni() : "N")
.setUserName(variazioniPvInputDTO != null ? variazioniPvInputDTO.getUserName() : null)
.setVariazioni(variazioniPvInputDTO != null ? variazioniPvInputDTO.getVariazioni() : new ArrayList<>());
return exportVariazioni(multiDBTransactionManager, codVlis, v);
}
public void exportByCodVlis(String codVlis, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
exportVariazioni(multiDBTransactionManager, codVlis, variazioniPvInputDTO);
}
public List<VariazioniDettaglioDTO> exportVariazioni(MultiDBTransactionManager multiDBTransactionManager, String codVlis, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
boolean existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
if (!existVariazioni) {
variazioniPvInputDTO.setCodVlis(codVlis);
List<VariazioniDettaglioDTO> variazioniDettaglioList = calcVariazionePrezzoPV(multiDBTransactionManager, variazioniPvInputDTO);
variazioniPvInputDTO.setVariazioni(variazioniDettaglioList);
existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
}
if (existVariazioni) {
final String exportType = "VARIAZIONE PV";
String sql =
Query.format(
"SELECT value\n" +
"FROM mtb_depo\n" +
" LEFT OUTER JOIN stb_gest_setup_depo ON mtb_depo.cod_mdep = stb_gest_setup_depo.cod_mdep\n" +
" AND stb_gest_setup_depo.gest_name = 'DATI_AZIENDA' AND\n" +
" stb_gest_setup_depo.section = 'DATI_DEPOSITO' AND\n" +
" stb_gest_setup_depo.key_section = 'PROFILE_DB'\n" +
"WHERE mtb_depo.cod_vlis = %s", codVlis);
String profileDb = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
if (UtilityString.isNullOrEmpty(profileDb)) {
profileDb = multiDBTransactionManager.getPrimaryDatasource().getProfile();
}
try (MultiDBTransactionManager multiDBPv = new MultiDBTransactionManager(profileDb)) {
runExportOnRemote(multiDBPv, variazioniPvInputDTO, codVlis, exportType);
}
}
return variazioniPvInputDTO.getVariazioni();
}
private void runExportOnRemote(MultiDBTransactionManager multiDBPv, VariazioniPvInputDTO variazioniPvInputDTO, String codVlis, String exportType) throws Exception {
String sql = Query.format("SELECT cod_mdep, descrizione FROM mtb_depo WHERE cod_vlis = %s and flag_movimentabile = 'S' ", codVlis);
HashMap<String, Object> datiDepo = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBPv.getPrimaryConnection(), sql);
if (!UtilityHashMap.isPresent(datiDepo))
throw new Exception(String.format("Nessun deposito agganciato al listino %s", codVlis));
String codMdep = UtilityHashMap.getValueIfExists(datiDepo, "cod_mdep");
String descrizione = UtilityHashMap.getValueIfExists(datiDepo, "descrizione");
sql =
Query.format(
"SELECT wtb_depo.cod_mdep,\n" +
" wui.format_file,\n" +
" stb_user.user_name,\n" +
" stb_user.password,\n" +
" wui.priority\n" +
"FROM wtb_depo\n" +
" INNER JOIN stb_user ON wtb_depo.user_name = stb_user.user_name AND stb_user.key_group = '10'\n" +
" INNER JOIN wtb_users_info wui ON stb_user.user_name = wui.user_name AND\n" +
" wui.export_type = %s AND\n" +
" wui.flag_state = 'S' AND\n" +
" IsNull(wui.priority, '0') <> '0'\n" +
"WHERE wtb_depo.cod_mdep = %s",
exportType, codMdep);
List<HashMap<String, Object>> listExport = UtilityDB.executeSimpleQuery(multiDBPv.getPrimaryConnection(), sql);
boolean existFormatFile = listExport.stream()
.anyMatch(x -> !UtilityString.isNullOrEmpty(UtilityHashMap.getValueIfExists(x, "format_file")));
if (!existFormatFile)
throw new Exception(String.format("Nessuna tipologia di esportazione configurata per il punto vendita %s - %s", codMdep, descrizione));
for (HashMap<String, Object> export : listExport) {
String userName = UtilityHashMap.getValueIfExists(export, "user_name");
String formatFile = UtilityHashMap.getValueIfExists(export, "format_file");
httpRestWrapper.callInternalExport(multiDBPv.getDistributoreDatasource().getProfile(),
userName,
exportType,
formatFile,
Entity.json(variazioniPvInputDTO));
boolean testError = false;
if (testError)
throw new Exception("TEST ERROR");
}
}
}