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; 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 com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants; 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.VariazioniPvInputDTO;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniReportType;
import it.integry.ems.retail.ReportVariazioni.xml.*; import it.integry.ems.retail.ReportVariazioni.xml.*;
import it.integry.ems.retail.dto.GrigliaAcquistoDTO; import it.integry.ems.retail.dto.GrigliaAcquistoDTO;
import it.integry.ems.retail.service.GrigliaAcquistoHandlerService; 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.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDirs; import it.integry.ems.utility.UtilityDirs;
import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.TypeDbObject; import it.integry.ems_model.types.TypeDbObject;
import it.integry.ems_model.utility.*; import it.integry.ems_model.utility.*;
import kotlin.Triple;
import org.apache.commons.lang3.StringUtils; 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.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.ws.rs.client.Entity;
import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller; import javax.xml.bind.Marshaller;
import java.io.File; import java.io.File;
@@ -26,83 +37,149 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Service @Service
@Scope("request") @Scope("request")
public class VariazioniPvService { public class VariazioniPvService {
private final Logger logger = LogManager.getLogger();
private final String gestName = "w_vvariaz_prezzi_disp";
private final String section = "VARIAZIONI";
@Autowired @Autowired
private MultiDBTransactionManager multiDBTransactionManager; private MultiDBTransactionManager multiDBTransactionManager;
@Autowired @Autowired
private SetupGest setupGest; private SetupGest setupGest;
@Autowired @Autowired
private GrigliaAcquistoHandlerService grigliaAcquistoHandlerService; private GrigliaAcquistoHandlerService grigliaAcquistoHandlerService;
@Autowired
private HttpRestWrapper httpRestWrapper;
@Autowired
private MailService mailService;
private HashMap<String, String> listini = new HashMap<>(); private HashMap<String, String> listini = new HashMap<>();
private List<GrigliaAcquistoDTO> grigliaAcquisto = new ArrayList<>(); private List<GrigliaAcquistoDTO> grigliaAcquisto = new ArrayList<>();
public String variazionePrezzoPVXml(VariazioniPvInputDTO variazioniPvDTO) throws Exception { public String variazionePrezzoPVXml(VariazioniPvInputDTO variazioniPvDTO) throws Exception {
String xmlVariazioni = null;
ReportType fileVariazioniDTO = variazionePrezzoPV(variazioniPvDTO); ReportType fileVariazioniDTO = variazionePrezzoPV(variazioniPvDTO);
if (fileVariazioniDTO.getCodVlis() != null && fileVariazioniDTO.getCodVlis().size() > 0) { 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 {
throw new Exception("Non ci sono variazione nel periodo selezionato."); 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 { public List<VariazioniDettaglioDTO> calcVariazionePrezzoPV(VariazioniPvInputDTO variazioniPvDTO) throws Exception {
final String gestName = "w_vvariaz_prezzi_disp", section = "VARIAZIONI"; 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); 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 invioIngredienti = setup.get("INVIA_INGREDIENTI_OPZ");
String colNameDescrEstesa = "descrizione_estesa"; String colNameDescrEstesa = "descrizione_estesa";
String setupDescr = setup.get("DESCRIZIONE_ESTESA"); String setupDescr = setup.get("DESCRIZIONE_ESTESA");
if (!UtilityString.isNullOrEmpty(setupDescr)) {
if (setupDescr.equalsIgnoreCase("D"))
colNameDescrEstesa = "descr_art"; boolean existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
else if (setupDescr.equalsIgnoreCase("B")) List<VariazioniDTO> listini = getListini(variazioniPvInputDTO, existVariazioni);
colNameDescrEstesa = "descr_cassa";
}
ReportType fileVariazioniDTO = new ReportType(); ReportType fileVariazioniDTO = new ReportType();
for (HashMap<String, Object> datiLisv : listini) { Date startDate = new Date();
String codVlis = UtilityHashMap.getValueIfExists(datiLisv, "cod_vlis"); logger.debug(VariazioniPvService.class.getSimpleName() + " - inizio : Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
String descrLisv = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "descrizione")); for (VariazioniDTO datiLisv : listini) {
String flagListIvaInclusa = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "flag_list_iva_inclusa")); String codVlis = datiLisv.getCodVlis();
String codMdep = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "cod_mdep")); String codMdep = UtilityString.streNull(datiLisv.getCodMdep());
String elencoCasse = getElencoCasse(codMdep); String elencoCasse = getElencoCasse(multiDBTransactionManager, codMdep);
HashMap<String, String> getSetupSectionDepo = setupGest.getSetupSectionDepo(multiDBTransactionManager.getPrimaryConnection(), gestName, section, codMdep); HashMap<String, String> getSetupSectionDepo = setupGest.getSetupSectionDepo(multiDBTransactionManager.getPrimaryConnection(), gestName, section, codMdep);
ObjectFactory objectFactory = new ObjectFactory(); ObjectFactory objectFactory = new ObjectFactory();
CodVlisType listinoDTO = new CodVlisType(); CodVlisType listinoDTO = new CodVlisType();
@@ -112,39 +189,52 @@ public class VariazioniPvService {
} else { } else {
listinoDTO.getContent().add(codVlisVariazioni); listinoDTO.getContent().add(codVlisVariazioni);
} }
listinoDTO.setDescrizione(descrLisv); listinoDTO.setDescrizione(datiLisv.getDescrizione());
listinoDTO.setFlagListIvaInclusa(flagListIvaInclusa); listinoDTO.setFlagListIvaInclusa(datiLisv.getFlagListIvaInclusa());
listinoDTO.setDataVariazione(new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(variazioniPvDTO.getDataValidita())); listinoDTO.setDataVariazione(new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(variazioniPvInputDTO.getDataValidita()));
listinoDTO.setCodMdep(codMdep); listinoDTO.setCodMdep(codMdep);
listinoDTO.getContent().add(objectFactory.createCodVlisTypeElencoCasse(elencoCasse)); listinoDTO.getContent().add(objectFactory.createCodVlisTypeElencoCasse(elencoCasse));
fileVariazioniDTO.getCodVlis().add(listinoDTO); fileVariazioniDTO.getCodVlis().add(listinoDTO);
String query = getQueryVariazioni(variazioniPvDTO, setup, codVlis, getSetupSectionDepo.get("SELEZIONA_GRIGLIE")); List<VariazioniDettaglioDTO> elencoVar = null;
List<HashMap<String, Object>> elencoVar = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query); if (existVariazioni) {
elencoVar =
boolean getVariazioneGriglia = false; Stream.of(variazioniPvInputDTO.getVariazioni())
.filter(x -> x.getCodVlis().equalsIgnoreCase(datiLisv.getCodVlis()))
if ((variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.GRIGLIA || .toList();
variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.LISTINO) && } else {
getSetupSectionDepo.get("SELEZIONA_GRIGLIE") != null && String query = getQueryVariazioni(variazioniPvInputDTO, setup, codVlis, getSetupSectionDepo.get("SELEZIONA_GRIGLIE"));
getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) { elencoVar = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, VariazioniDettaglioDTO.class);
getVariazioneGriglia = true;
grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto();
grigliaAcquisto = Stream.of(grigliaAcquisto)
.filter(x -> x.getDataValidita().equals(variazioniPvDTO.getDataValidita()) &&
x.getCodMdep().equalsIgnoreCase(codMdep))
.toList();
} }
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) { if ((variazioniPvInputDTO.getTipoReportEnum() == VariazioniReportType.GRIGLIA ||
CodMartType codMart = fillArticoloData(objectFactory, variazioniPvInputDTO.getTipoReportEnum() == VariazioniReportType.LISTINO) &&
variazioni, variazioniPvDTO, invioIngredienti, getSetupSectionDepo, codMdep, colNameDescrEstesa, getSetupSectionDepo.get("SELEZIONA_GRIGLIE") != null &&
setup.get("LIBERO1"), getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) {
setup.get("LIBERO2"), getVariazioneGriglia);
listinoDTO.getContent().add(objectFactory.createCodVlisTypeCodMart(codMart)); 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) { if (fileVariazioniDTO.getCodVlis() != null && fileVariazioniDTO.getCodVlis().size() > 0) {
@@ -155,140 +245,155 @@ public class VariazioniPvService {
return fileVariazioniDTO; return fileVariazioniDTO;
} }
private CodMartType fillArticoloData(ObjectFactory objectFactory, HashMap<String, Object> var, private List<VariazioniDTO> getListini(VariazioniPvInputDTO variazioniPvDTO, boolean existVariazioni) throws Exception {
VariazioniPvInputDTO variazioniPvDTO, 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, String invioIngredientiSetup,
Map<String, String> setupDepo, Map<String, String> setupDepo,
String codMdep, String codMdep,
String colNameDescrEstesa, String setupDescr,
String valLibero1, String valLibero1,
String valLibero2, String valLibero2,
boolean getVariazioneGriglia) throws Exception { boolean getVariazioneGriglia) throws Exception {
CodMartType codMartType = objectFactory.createCodMartType(); CodMartType codMartType = objectFactory.createCodMartType();
String codMart = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_mart")); String codMart = var.getCodMart();
String flagTipoPromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_tipo_promo")); String flagTipoPromo = var.getFlagTipoPromo();
BigDecimal przPieno = UtilityHashMap.getValueIfExists(var, "prezzo_pieno"); BigDecimal przPieno = var.getPrezzoPieno();
BigDecimal przPienoIva = UtilityHashMap.getValueIfExists(var, "prz_pieno_iva"); BigDecimal przPienoIva = var.getPrzPienoIva();
BigDecimal przVend = UtilityHashMap.getValueIfExists(var, "prz_vend"); BigDecimal przVend = var.getPrzVend();
BigDecimal przVendIva = UtilityHashMap.getValueIfExists(var, "prz_vend_iva"); BigDecimal przVendIva = var.getPrzVendIva();
if ("P".equals(flagTipoPromo)) { if ("P".equals(flagTipoPromo)) {
przPienoIva = przVendIva; przPienoIva = przVendIva;
przPieno = przVend; przPieno = przVend;
} }
String dataFinePromoS = ""; String dataFinePromoS = convertDateToString(var.getDataFine());
Date dataFinePromo = UtilityHashMap.getValueIfExists(var, "data_fine"); String dataInizPromoS = convertDateToString(var.getDataInizPromo());
if (dataFinePromo != null) { String dataUltVarS = convertDateToString(var.getDataUltVar());
dataFinePromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataFinePromo); String dataAggPrzS = convertDateToString(var.getDataIniz());
}
String dataInizPromoS = "";
Date dataInizPromo = UtilityHashMap.getValueIfExists(var, "data_iniz_promo");
if (dataInizPromo != null) {
dataInizPromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataInizPromo);
}
String dataUltVarS = ""; String tipoVariazioneLisv = var.getTipoVariazioneLisv();
Date dataUltVar = UtilityHashMap.getValueIfExists(var, "data_ult_var"); String flagStato = var.getFlagStato();
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"));
if ("D".equalsIgnoreCase(tipoVariazioneLisv)) { if ("D".equalsIgnoreCase(tipoVariazioneLisv)) {
flagStato = "I"; flagStato = "I";
} }
codMartType.getContent().add(codMart); 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.createCodMartTypeDescrizione(UtilityString.streNull(var.getDescrArt())));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis")))); codMartType.getContent().add(objectFactory.createCodMartTypeUntMis2(UtilityString.streNull(var.getUntMis2())));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv2(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv2"), "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypeUntMis(UtilityString.streNull(var.getUntMis())));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis3(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis3")))); codMartType.getContent().add(objectFactory.createCodMartTypeRapConv2(UtilityString.bigDecimalToString(var.getRapConv2(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv3(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv3"), "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypeUntMis3(UtilityString.streNull(var.getUntMis3())));
CodMgrpType codMgrpType = objectFactory.createCodMgrpType(); codMartType.getContent().add(objectFactory.createCodMartTypeRapConv3(UtilityString.bigDecimalToString(var.getRapConv3(), "###0.00").replace(",", ".")));
codMgrpType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_mgrp"))); CodMgrpType codMgrpType = getCodMgrpType(objectFactory, var);
codMgrpType.setDescrGrup(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_grup")));
codMartType.getContent().add(objectFactory.createCodMartTypeCodMgrp(codMgrpType)); codMartType.getContent().add(objectFactory.createCodMartTypeCodMgrp(codMgrpType));
CodMsgrType codMsgrType = objectFactory.createCodMsgrType(); CodMsgrType codMsgrType = getCodMsgrType(objectFactory, var);
codMsgrType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_msgr")));
codMsgrType.setDescrSgrp(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_sgrp")));
codMartType.getContent().add(objectFactory.createCodMartTypeCodMsgr(codMsgrType)); codMartType.getContent().add(objectFactory.createCodMartTypeCodMsgr(codMsgrType));
CodMsfaType codMsfaType = objectFactory.createCodMsfaType(); CodMsfaType codMsfaType = getCodMsfaType(objectFactory, var);
codMsfaType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_msfa")));
codMsfaType.setDescrSfam(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_msfa")));
codMartType.getContent().add(objectFactory.createCodMartTypeCodMsfa(codMsfaType)); codMartType.getContent().add(objectFactory.createCodMartTypeCodMsfa(codMsfaType));
codMartType.getContent().add(objectFactory.createCodMartTypeRepartoCassa(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "reparto_cassa")))); codMartType.getContent().add(objectFactory.createCodMartTypeRepartoCassa(UtilityString.streNull(var.getRepartoCassa())));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "tipo_variazione")))); codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazione(UtilityString.streNull(var.getTipoVariazione())));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazioneLisv(tipoVariazioneLisv)); 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.createCodMartTypePrzVend(UtilityString.bigDecimalToString(przVend, "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrzVendIva(UtilityString.bigDecimalToString(przVendIva, "###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.createCodMartTypePosizione(UtilityString.streNull(var.getPosizione())));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMisVen(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis_ven")))); codMartType.getContent().add(objectFactory.createCodMartTypeUntMisVen(UtilityString.streNull(var.getUntMisVen())));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConvVen(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv"), "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypeRapConvVen(UtilityString.bigDecimalToString(var.getRapConv(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePesoKg(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "peso_kg"), "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypePesoKg(UtilityString.bigDecimalToString(var.getPesoKg(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagEsponiPrz(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_esponi_prz")))); codMartType.getContent().add(objectFactory.createCodMartTypeFlagEsponiPrz(UtilityString.streNull(var.getFlagEsponiPrz())));
codMartType.getContent().add(objectFactory.createCodMartTypePercSfrido(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sfrido"), "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypePercSfrido(UtilityString.bigDecimalToString(var.getPercSfrido(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarreImb(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_barre_imb")))); codMartType.getContent().add(objectFactory.createCodMartTypeCodBarreImb(UtilityString.streNull(var.getCodBarreImb())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrz(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_calc_prz")))); codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrz(UtilityString.streNull(var.getFlagCalcPrz())));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneCompAcq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "esposizione_comp_acq")))); codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneCompAcq(UtilityString.streNull(var.getEsposizioneCompAcq())));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneComp(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "esposizione_comp")))); codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneComp(UtilityString.streNull(var.getEsposizioneComp())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrzAcq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_calc_prz_acq")))); codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrzAcq(UtilityString.streNull(var.getFlagCalcPrzAcq())));
BigDecimal colliPedane = UtilityHashMap.getValueIfExists(var, "colli_pedana"); BigDecimal colliPedane = var.getColliPedana();
codMartType.getContent().add(objectFactory.createCodMartTypeColliPedane(UtilityString.bigDecimalToString(colliPedane == null ? BigDecimal.ZERO : colliPedane, "###0.00").replace(",", "."))); 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.createCodMartTypePercSco1(UtilityString.bigDecimalToString(var.getPercSco1(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco2(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco2"), "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypePercSco2(UtilityString.bigDecimalToString(var.getPercSco2(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco3(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco3"), "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypePercSco3(UtilityString.bigDecimalToString(var.getPercSco3(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco4(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco4"), "###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.createCodMartTypeDataUltVar(dataUltVarS));
codMartType.getContent().add(objectFactory.createCodMartTypeDataAggPrz(dataAggPrzS)); codMartType.getContent().add(objectFactory.createCodMartTypeDataAggPrz(dataAggPrzS));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarre(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_barre")))); codMartType.getContent().add(objectFactory.createCodMartTypeCodBarre(UtilityString.streNull(var.getCodBarre())));
codMartType.getContent().add(objectFactory.createCodMartTypePlu(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "plu")))); codMartType.getContent().add(objectFactory.createCodMartTypePlu(UtilityString.streNull(var.getPlu())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagStato(flagStato)); codMartType.getContent().add(objectFactory.createCodMartTypeFlagStato(flagStato));
codMartType.getContent().add(objectFactory.createCodMartTypeQtaCnf(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "qta_cnf"), "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypeQtaCnf(UtilityString.bigDecimalToString(var.getQtaCnf(), "###0.00").replace(",", ".")));
BigDecimal tara = UtilityHashMap.getValueIfExists(var, "tara_kg"); BigDecimal tara = var.getTaraKg();
if (tara.compareTo(BigDecimal.ZERO) != 0) { if (tara.compareTo(BigDecimal.ZERO) != 0) {
tara = (tara.multiply(new BigDecimal("1000"))).setScale(0, RoundingMode.HALF_UP); tara = (tara.multiply(new BigDecimal("1000"))).setScale(0, RoundingMode.HALF_UP);
} }
codMartType.getContent().add(objectFactory.createCodMartTypeTara(UtilityString.bigDecimalToString(tara, "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypeTara(UtilityString.bigDecimalToString(tara, "###0.00").replace(",", ".")));
String descrizioneEstesa = UtilityHashMap.getValueIfExists(var, colNameDescrEstesa); String descrizioneEstesa = var.getDescrizioneEstesa();
if (UtilityString.isNullOrEmpty(descrizioneEstesa)) if (!UtilityString.isNullOrEmpty(setupDescr)) {
descrizioneEstesa = UtilityHashMap.getValueIfExists(var, "descrizione_estesa"); if (setupDescr.equalsIgnoreCase("D"))
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizioneEstesa(UtilityString.streNull(descrizioneEstesa))); descrizioneEstesa = var.getDescrArt();
codMartType.getContent().add(objectFactory.createCodMartTypeAnnotazioniArt(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "annotazioni_art")))); else if (setupDescr.equalsIgnoreCase("B"))
codMartType.getContent().add(objectFactory.createCodMartTypeCodAliq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_aliq")))); descrizioneEstesa = var.getDescrCassa();
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.createCodMartTypeDescrizioneEstesa(descrizioneEstesa));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTracciabilita(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_tracciabilita")))); codMartType.getContent().add(objectFactory.createCodMartTypeAnnotazioniArt(UtilityString.streNull(var.getAnnotazioniArt())));
codMartType.getContent().add(objectFactory.createCodMartTypeGgScadPartita(String.valueOf(UtilityHashMap.<Integer>getValueIfExists(var, "gg_scad_partita")))); codMartType.getContent().add(objectFactory.createCodMartTypeCodAliq(UtilityString.streNull(var.getCodAliq())));
codMartType.getContent().add(objectFactory.createCodMartTypePercAliq(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_aliq"), "###0.00").replace(",", "."))); 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)) { if (!UtilityString.isNullOrEmpty(idArtEqui)) {
IdArtEquiType idArtEquiType = objectFactory.createIdArtEquiType(); IdArtEquiType idArtEquiType = getIdArtEquiType(objectFactory, var, idArtEqui);
idArtEquiType.setValue(idArtEqui);
idArtEquiType.setDescrizione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_art_equi")));
codMartType.getContent().add(objectFactory.createCodMartTypeIdArtEqui(idArtEquiType)); codMartType.getContent().add(objectFactory.createCodMartTypeIdArtEqui(idArtEquiType));
} }
codMartType.getContent().add(objectFactory.createCodMartTypePrezzoPieno(UtilityString.bigDecimalToString(przPieno, "###0.00###").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypePrezzoPieno(UtilityString.bigDecimalToString(przPieno, "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrezzoPienoIva(UtilityString.bigDecimalToString(przPienoIva, "###0.00").replace(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypePrezzoPienoIva(UtilityString.bigDecimalToString(przPienoIva, "###0.00").replace(",", ".")));
//PUNTI ARTICOLO //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(",", "."))); codMartType.getContent().add(objectFactory.createCodMartTypePuntiArticolo(UtilityString.bigDecimalToString(puntiArticolo, "###0.00").replace(",", ".")));
//PROMOZIONE MxN //PROMOZIONE MxN
HashMap<String, Object> datiPromo = new HashMap<>(); 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 finePromo = UtilityString.streNull(var.getFinePromo());
String codPromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_promo")); String codPromo = UtilityString.streNull(var.getCodPromo());
if (flagMxnType.getValue().equalsIgnoreCase("S") && finePromo.equalsIgnoreCase("S")) { if (flagMxnType.getValue().equalsIgnoreCase("S") && finePromo.equalsIgnoreCase("S")) {
codPromo = (String) datiPromo.get("cod_promo"); codPromo = (String) datiPromo.get("cod_promo");
dataInizPromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(datiPromo.get("data_iniz")); 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.createCodMartTypeCodPromo(codPromo));
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizionePromo(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_promo")))); codMartType.getContent().add(objectFactory.createCodMartTypeDescrizionePromo(UtilityString.streNull(var.getDescrPromo())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTipoPromo(flagTipoPromo)); codMartType.getContent().add(objectFactory.createCodMartTypeFlagTipoPromo(UtilityString.streNull(flagTipoPromo)));
codMartType.getContent().add(objectFactory.createCodMartTypeDataInizPromo(dataInizPromoS)); codMartType.getContent().add(objectFactory.createCodMartTypeDataInizPromo(dataInizPromoS));
codMartType.getContent().add(objectFactory.createCodMartTypeDataFinePromo(dataFinePromoS)); codMartType.getContent().add(objectFactory.createCodMartTypeDataFinePromo(dataFinePromoS));
codMartType.getContent().add(objectFactory.createCodMartTypeFinePromo(finePromo)); 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)); codMartType.getContent().add(objectFactory.createCodMartTypeFlagMxn(flagMxnType));
//INGREDIENTI //INGREDIENTI
String inviaIngrOpz = null; String inviaIngrOpz = variazioniPvInputDTO.getInviaIngredienti();
inviaIngrOpz = variazioniPvDTO.getInviaIngredienti();
if (UtilityString.isNullOrEmpty(inviaIngrOpz)) { if (UtilityString.isNullOrEmpty(inviaIngrOpz)) {
//PER CARELLI ABBIAMO RESO OPZIONALE L'INVIO DEGLI INGREDIENTI (SOLO SE VARIATI IN DISTINTA BASE) PER TUTTI GLI ALTRI //PER CARELLI ABBIAMO RESO OPZIONALE L'INVIO DEGLI INGREDIENTI (SOLO SE VARIATI IN DISTINTA BASE) PER TUTTI GLI ALTRI
//GLI INGREDIENTI VENGONO COMUNQUE INVIATI //GLI INGREDIENTI VENGONO COMUNQUE INVIATI
inviaIngrOpz = invioIngredientiSetup; inviaIngrOpz = invioIngredientiSetup;
} }
String ingredienti = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "ingredienti")); String ingredienti = UtilityString.streNull(var.getIngredienti());
IngredientiType ingredientiType = getIngredienti(objectFactory, codMart, variazioniPvDTO.getDataValidita(), variazioniPvDTO.getTipoReportEnum(), tipoVariazioneLisv, inviaIngrOpz, ingredienti); IngredientiType ingredientiType = getIngredienti(objectFactory, codMart, variazioniPvInputDTO.getDataValidita(), variazioniPvInputDTO.getTipoReportEnum(), tipoVariazioneLisv, inviaIngrOpz, ingredienti);
codMartType.getContent().add(objectFactory.createCodMartTypeIngredienti(ingredientiType)); codMartType.getContent().add(objectFactory.createCodMartTypeIngredienti(ingredientiType));
//COMPONENTI //COMPONENTI
@@ -321,7 +425,7 @@ public class VariazioniPvService {
codMartType.getContent().add(objectFactory.createCodMartTypeComponenti(componentiType)); codMartType.getContent().add(objectFactory.createCodMartTypeComponenti(componentiType));
//PREMI //PREMI
PremioType premioType = getPuntiPremi(objectFactory, codMart, variazioniPvDTO.getDataValidita()); PremioType premioType = getPuntiPremi(objectFactory, codMart, variazioniPvInputDTO.getDataValidita());
if (premioType != null) { if (premioType != null) {
codMartType.getContent().add(objectFactory.createCodMartTypePremio(premioType)); codMartType.getContent().add(objectFactory.createCodMartTypePremio(premioType));
} }
@@ -332,7 +436,7 @@ public class VariazioniPvService {
//DATI GRIGLIA DI ACQUISTO //DATI GRIGLIA DI ACQUISTO
if ("S".equalsIgnoreCase(setupDepo.get("SELEZIONA_GRIGLIE"))) { 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"))) { 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)))); codMartType.getContent().add(objectFactory.createCodMartTypeLibero2(UtilityString.streNull(getValueCampoLibero(valLibero2, var, codMdep, codMart))));
} }
return codMartType; 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 (UtilityString.isNullOrEmpty(tipoValore)) return "";
if (tipoValore.equalsIgnoreCase("M")) { if (tipoValore.equalsIgnoreCase("M")) {
String sql = String sql =
@@ -363,13 +468,49 @@ public class VariazioniPvService {
} }
return (valMedio == null ? "" : new DecimalFormat("#,##0.00").format(valMedio)); return (valMedio == null ? "" : new DecimalFormat("#,##0.00").format(valMedio));
} else if (tipoValore.equalsIgnoreCase("P")) { } else if (tipoValore.equalsIgnoreCase("P")) {
return UtilityHashMap.getValueIfExists(var, "posizione_art"); return var.getPosizioneArticolo();
} else if (tipoValore.equalsIgnoreCase("T")) { } else if (tipoValore.equalsIgnoreCase("T")) {
return UtilityHashMap.getValueIfExists(var, "intercode_xml_variazioni"); return var.getIntercodeXmlVariazioni();
} }
return null; 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, private String getQueryVariazioni(VariazioniPvInputDTO variazioniPvDTO,
HashMap<String, String> setup, HashMap<String, String> setup,
String codVlis, String codVlis,
@@ -494,7 +635,7 @@ public class VariazioniPvService {
" ON listino.cod_vlis = promozione.cod_vlis AND listino.cod_mart = promozione.cod_mart\n" + " 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" + " LEFT OUTER JOIN vtb_promo ON promozione.cod_promo = vtb_promo.cod_promo\n" +
"WHERE vtb_promo.cod_promo_intercode IS NULL\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') " + " AND ( (IsNull('[INVIA_DISATTIVAZIONI]', 'N') = 'S') " +
" OR (IsNull('[INVIA_DISATTIVAZIONI]', 'N') = 'N' AND listino.tipo_variazione <> 'D')) " : "") + " OR (IsNull('[INVIA_DISATTIVAZIONI]', 'N') = 'N' AND listino.tipo_variazione <> 'D')) " : "") +
"ORDER BY listino.cod_mart "; "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 = String sql =
"SELECT mtb_depo_casse.cod_cassa\n" + "SELECT mtb_depo_casse.cod_cassa\n" +
" FROM mtb_depo_casse\n" + " FROM mtb_depo_casse\n" +
" WHERE mtb_depo_casse.cod_mdep = " + UtilityDB.valueToString(codMdep); " 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, "|"); 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" + "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" + " AND vtb_list_data.cod_vlis = '[COD_VLIS]'\n" +
"UNION\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" + "SELECT lisv.cod_vlis\n" +
" , lisv.cod_mart\n" + " , lisv.cod_mart\n" +
" , tipo_variazione\n" + " , tipo_variazione\n" +
@@ -746,7 +875,7 @@ public class VariazioniPvService {
return flagMxnType; 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(); IngredientiType ingredientiType = objectFactory.createIngredientiType();
if (UtilityString.isNullOrEmpty(ingredientiArt)) { if (UtilityString.isNullOrEmpty(ingredientiArt)) {
String whereCond = ""; String whereCond = "";
@@ -759,7 +888,7 @@ public class VariazioniPvService {
" ORDER BY jtb_dist_mate.id_riga"; " ORDER BY jtb_dist_mate.id_riga";
if ("S".equalsIgnoreCase(invioIngOpz)) { if ("S".equalsIgnoreCase(invioIngOpz)) {
if (tipoReport.compareTo(VariazioniPvInputDTO.Type.LISTINO) != 0 && if (tipoReport.compareTo(VariazioniReportType.LISTINO) != 0 &&
!"I".equalsIgnoreCase(tipoVariazioneLisv)) { !"I".equalsIgnoreCase(tipoVariazioneLisv)) {
whereCond = "jtb_cicl.data_ult_var = " + UtilityDB.valueDateToString(dataVariazioni, CommonConstants.DATE_FORMAT_YMD); whereCond = "jtb_cicl.data_ult_var = " + UtilityDB.valueDateToString(dataVariazioni, CommonConstants.DATE_FORMAT_YMD);
query = UtilityDB.addwhereCond(query, whereCond, false); query = UtilityDB.addwhereCond(query, whereCond, false);
@@ -966,4 +1095,221 @@ public class VariazioniPvService {
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazioneGriglia(tipoVariazioneGriglia)); codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazioneGriglia(tipoVariazioneGriglia));
codMartType.getContent().add(objectFactory.createCodMartTypeCodAlis(codAlisType)); 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");
}
}
} }