modifiche per inserimento promo

This commit is contained in:
2025-05-08 12:08:14 +02:00
parent db52f7fc3e
commit 04c4052805
4 changed files with 243 additions and 162 deletions

View File

@@ -0,0 +1,15 @@
package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250507122848 extends BaseMigration implements MigrationModelInterface{
@Override
public void up()throws Exception {
if(isHistoryDB())
return;
}
@Override
public void down()throws Exception {
}
}

View File

@@ -217,416 +217,468 @@ public class MtbLisvData extends EntityBase {
return codMart;
}
public void setCodMart(String codMart) {
public MtbLisvData setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getCodVlis() {
return codVlis;
}
public void setCodVlis(String codVlis) {
public MtbLisvData setCodVlis(String codVlis) {
this.codVlis = codVlis;
return this;
}
public Integer getVersione() {
return versione;
}
public void setVersione(Integer versione) {
public MtbLisvData setVersione(Integer versione) {
this.versione = versione;
return this;
}
public String getUntMisVen() {
return untMisVen;
}
public void setUntMisVen(String untMisVen) {
public MtbLisvData setUntMisVen(String untMisVen) {
this.untMisVen = untMisVen;
return this;
}
public BigDecimal getRapConv() {
return rapConv;
}
public void setRapConv(BigDecimal rapConv) {
public MtbLisvData setRapConv(BigDecimal rapConv) {
this.rapConv = rapConv;
return this;
}
public BigDecimal getPrzBase() {
return przBase;
}
public void setPrzBase(BigDecimal przBase) {
public MtbLisvData setPrzBase(BigDecimal przBase) {
this.przBase = przBase;
return this;
}
public BigDecimal getRicarica() {
return ricarica;
}
public void setRicarica(BigDecimal ricarica) {
public MtbLisvData setRicarica(BigDecimal ricarica) {
this.ricarica = ricarica;
return this;
}
public BigDecimal getPrzVend() {
return przVend;
}
public void setPrzVend(BigDecimal przVend) {
public MtbLisvData setPrzVend(BigDecimal przVend) {
this.przVend = przVend;
return this;
}
public BigDecimal getPercSco1() {
return percSco1;
}
public void setPercSco1(BigDecimal percSco1) {
public MtbLisvData setPercSco1(BigDecimal percSco1) {
this.percSco1 = percSco1;
return this;
}
public BigDecimal getPercSco2() {
return percSco2;
}
public void setPercSco2(BigDecimal percSco2) {
public MtbLisvData setPercSco2(BigDecimal percSco2) {
this.percSco2 = percSco2;
return this;
}
public BigDecimal getPercSco3() {
return percSco3;
}
public void setPercSco3(BigDecimal percSco3) {
public MtbLisvData setPercSco3(BigDecimal percSco3) {
this.percSco3 = percSco3;
return this;
}
public BigDecimal getPercSco4() {
return percSco4;
}
public void setPercSco4(BigDecimal percSco4) {
public MtbLisvData setPercSco4(BigDecimal percSco4) {
this.percSco4 = percSco4;
return this;
}
public BigDecimal getPercProv() {
return percProv;
}
public void setPercProv(BigDecimal percProv) {
public MtbLisvData setPercProv(BigDecimal percProv) {
this.percProv = percProv;
return this;
}
public BigDecimal getFissoProv() {
return fissoProv;
}
public void setFissoProv(BigDecimal fissoProv) {
public MtbLisvData setFissoProv(BigDecimal fissoProv) {
this.fissoProv = fissoProv;
return this;
}
public String getPosizione() {
return posizione;
}
public void setPosizione(String posizione) {
public MtbLisvData setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public BigDecimal getPercGest() {
return percGest;
}
public void setPercGest(BigDecimal percGest) {
public MtbLisvData setPercGest(BigDecimal percGest) {
this.percGest = percGest;
return this;
}
public BigDecimal getValGest() {
return valGest;
}
public void setValGest(BigDecimal valGest) {
public MtbLisvData setValGest(BigDecimal valGest) {
this.valGest = valGest;
return this;
}
public BigDecimal getPrzVendIva() {
return przVendIva;
}
public void setPrzVendIva(BigDecimal przVendIva) {
public MtbLisvData setPrzVendIva(BigDecimal przVendIva) {
this.przVendIva = przVendIva;
return this;
}
public BigDecimal getPercIspe() {
return percIspe;
}
public void setPercIspe(BigDecimal percIspe) {
public MtbLisvData setPercIspe(BigDecimal percIspe) {
this.percIspe = percIspe;
return this;
}
public BigDecimal getValIspe() {
return valIspe;
}
public void setValIspe(BigDecimal valIspe) {
public MtbLisvData setValIspe(BigDecimal valIspe) {
this.valIspe = valIspe;
return this;
}
public BigDecimal getPercPromo() {
return percPromo;
}
public void setPercPromo(BigDecimal percPromo) {
public MtbLisvData setPercPromo(BigDecimal percPromo) {
this.percPromo = percPromo;
return this;
}
public BigDecimal getValPromo() {
return valPromo;
}
public void setValPromo(BigDecimal valPromo) {
public MtbLisvData setValPromo(BigDecimal valPromo) {
this.valPromo = valPromo;
return this;
}
public BigDecimal getPercOneri() {
return percOneri;
}
public void setPercOneri(BigDecimal percOneri) {
public MtbLisvData setPercOneri(BigDecimal percOneri) {
this.percOneri = percOneri;
return this;
}
public BigDecimal getValOneri() {
return valOneri;
}
public void setValOneri(BigDecimal valOneri) {
public MtbLisvData setValOneri(BigDecimal valOneri) {
this.valOneri = valOneri;
return this;
}
public Date getDataAggPrz() {
return dataAggPrz;
}
public void setDataAggPrz(Date dataAggPrz) {
public MtbLisvData setDataAggPrz(Date dataAggPrz) {
this.dataAggPrz = dataAggPrz;
return this;
}
public String getTipoVariazione() {
return tipoVariazione;
}
public void setTipoVariazione(String tipoVariazione) {
public MtbLisvData setTipoVariazione(String tipoVariazione) {
this.tipoVariazione = tipoVariazione;
return this;
}
public String getNote() {
return note;
}
public void setNote(String note) {
public MtbLisvData setNote(String note) {
this.note = note;
return this;
}
public String getAggiornatoDa() {
return aggiornatoDa;
}
public void setAggiornatoDa(String aggiornatoDa) {
public MtbLisvData setAggiornatoDa(String aggiornatoDa) {
this.aggiornatoDa = aggiornatoDa;
return this;
}
public BigDecimal getGiacenza() {
return giacenza;
}
public void setGiacenza(BigDecimal giacenza) {
public MtbLisvData setGiacenza(BigDecimal giacenza) {
this.giacenza = giacenza;
return this;
}
public String getCodTcolUi() {
return codTcolUi;
}
public void setCodTcolUi(String codTcolUi) {
public MtbLisvData setCodTcolUi(String codTcolUi) {
this.codTcolUi = codTcolUi;
return this;
}
public String getCodTcolUl() {
return codTcolUl;
}
public void setCodTcolUl(String codTcolUl) {
public MtbLisvData setCodTcolUl(String codTcolUl) {
this.codTcolUl = codTcolUl;
return this;
}
public BigDecimal getColliPedana() {
return colliPedana;
}
public void setColliPedana(BigDecimal colliPedana) {
public MtbLisvData setColliPedana(BigDecimal colliPedana) {
this.colliPedana = colliPedana;
return this;
}
public BigDecimal getMaggPrzVend() {
return maggPrzVend;
}
public void setMaggPrzVend(BigDecimal maggPrzVend) {
public MtbLisvData setMaggPrzVend(BigDecimal maggPrzVend) {
this.maggPrzVend = maggPrzVend;
return this;
}
public BigDecimal getPrzVendSug() {
return przVendSug;
}
public void setPrzVendSug(BigDecimal przVendSug) {
public MtbLisvData setPrzVendSug(BigDecimal przVendSug) {
this.przVendSug = przVendSug;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(BigDecimal qtaCnf) {
public MtbLisvData setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public BigDecimal getColliStrato() {
return colliStrato;
}
public void setColliStrato(BigDecimal colliStrato) {
public MtbLisvData setColliStrato(BigDecimal colliStrato) {
this.colliStrato = colliStrato;
return this;
}
public String getDescrizioneHtml() {
return descrizioneHtml;
}
public void setDescrizioneHtml(String descrizioneHtml) {
public MtbLisvData setDescrizioneHtml(String descrizioneHtml) {
this.descrizioneHtml = descrizioneHtml;
return this;
}
public BigDecimal getScontoCartoni() {
return scontoCartoni;
}
public void setScontoCartoni(BigDecimal scontoCartoni) {
public MtbLisvData setScontoCartoni(BigDecimal scontoCartoni) {
this.scontoCartoni = scontoCartoni;
return this;
}
public BigDecimal getScontoStrato() {
return scontoStrato;
}
public void setScontoStrato(BigDecimal scontoStrato) {
public MtbLisvData setScontoStrato(BigDecimal scontoStrato) {
this.scontoStrato = scontoStrato;
return this;
}
public BigDecimal getScontoPedane() {
return scontoPedane;
}
public void setScontoPedane(BigDecimal scontoPedana) {
this.scontoPedane = scontoPedana;
}
public String getTagliaMin() {
return tagliaMin;
}
public void setTagliaMin(String tagliaMin) {
this.tagliaMin = tagliaMin;
}
public String getTagliaMax() {
return tagliaMax;
}
public void setTagliaMax(String tagliaMax) {
this.tagliaMax = tagliaMax;
}
public Date getDataIniz() {
return dataIniz;
}
public void setDataIniz(Date dataIniz) {
this.dataIniz = dataIniz;
}
public Date getDataFine() {
return dataFine;
}
public void setDataFine(Date dataFine) {
this.dataFine = dataFine;
}
public String getCodPromo() {
return codPromo;
}
public void setCodPromo(String codPromo) {
this.codPromo = codPromo;
}
public String getDescrPromo() {
return descrPromo;
}
public void setDescrPromo(String descrPromo) {
this.descrPromo = descrPromo;
}
public String getNoteLisv() {
return noteLisv;
}
public void setNoteLisv(String noteLisv) {
this.noteLisv = noteLisv;
}
public String getCodAliq() {
return codAliq;
}
public void setCodAliq(String codAliq) {
this.codAliq = codAliq;
}
public String getElencoLisvRif() {
return elencoLisvRif;
}
public void setElencoLisvRif(String elencoLisvRif) {
this.elencoLisvRif = elencoLisvRif;
public MtbLisvData setScontoPedane(BigDecimal scontoPedane) {
this.scontoPedane = scontoPedane;
return this;
}
public String getSystemNote() {
return systemNote;
}
public void setSystemNote(String systemNote) {
public MtbLisvData setSystemNote(String systemNote) {
this.systemNote = systemNote;
return this;
}
public String getTagliaMin() {
return tagliaMin;
}
public MtbLisvData setTagliaMin(String tagliaMin) {
this.tagliaMin = tagliaMin;
return this;
}
public String getTagliaMax() {
return tagliaMax;
}
public MtbLisvData setTagliaMax(String tagliaMax) {
this.tagliaMax = tagliaMax;
return this;
}
public String getFlagListIvaInclusa() {
return flagListIvaInclusa;
}
public void setFlagListIvaInclusa(String flagListIvaInclusa) {
public MtbLisvData setFlagListIvaInclusa(String flagListIvaInclusa) {
this.flagListIvaInclusa = flagListIvaInclusa;
return this;
}
public String getIdArtEqui() {
return idArtEqui;
}
public void setIdArtEqui(String idArtEqui) {
public MtbLisvData setIdArtEqui(String idArtEqui) {
this.idArtEqui = idArtEqui;
return this;
}
public Date getDataIniz() {
return dataIniz;
}
public MtbLisvData setDataIniz(Date dataIniz) {
this.dataIniz = dataIniz;
return this;
}
public Date getDataFine() {
return dataFine;
}
public MtbLisvData setDataFine(Date dataFine) {
this.dataFine = dataFine;
return this;
}
public String getCodPromo() {
return codPromo;
}
public MtbLisvData setCodPromo(String codPromo) {
this.codPromo = codPromo;
return this;
}
public String getDescrPromo() {
return descrPromo;
}
public MtbLisvData setDescrPromo(String descrPromo) {
this.descrPromo = descrPromo;
return this;
}
public String getNoteLisv() {
return noteLisv;
}
public MtbLisvData setNoteLisv(String noteLisv) {
this.noteLisv = noteLisv;
return this;
}
public String getCodAliq() {
return codAliq;
}
public MtbLisvData setCodAliq(String codAliq) {
this.codAliq = codAliq;
return this;
}
public String getElencoLisvRif() {
return elencoLisvRif;
}
public MtbLisvData setElencoLisvRif(String elencoLisvRif) {
this.elencoLisvRif = elencoLisvRif;
return this;
}
public String getFlagEquiPrezzo() {

View File

@@ -73,7 +73,7 @@ public class ListiniVenditaController {
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestBody List<MtbLisvData> entityList) throws Exception {
return ServiceRestResponse.createEntityPositiveResponse(listiniVenditaServices.updateLisv(entityList));
return ServiceRestResponse.createEntityPositiveResponse(listiniVenditaServices.updateLisv(entityList, true));
}
@RequestMapping(value = "duplica", method = RequestMethod.POST)

View File

@@ -430,7 +430,7 @@ public class ListiniVenditaServices {
}
public List<EntityBase> updateLisv(List<MtbLisvData> listini) throws Exception {
public List<EntityBase> updateLisv(List<MtbLisvData> listini, boolean saveEntity) throws Exception {
//QUESTA PROCEDURA VIENE CHIAMATA DALLA GESTIONE A GRIGLIA PER SALVARE I LISTINI.
Integer versione;
@@ -516,9 +516,11 @@ public class ListiniVenditaServices {
}
entities.addAll(getVtbListData(listini));
entities = entityProcessor.processEntityList(entities, true);
if (saveEntity) {
entities = entityProcessor.processEntityList(entities, true);
UtilityEntity.throwEntitiesException(entities);
UtilityEntity.throwEntitiesException(entities);
}
return entities;
}
@@ -675,12 +677,14 @@ public class ListiniVenditaServices {
String sql = Query.format(
"SELECT cod_promo,\n" +
" descr_promo, \n" +
" cod_mart,\n" +
" cod_vlis,\n" +
" versione,\n" +
" data_iniz,\n" +
" data_fine,\n" +
" flag_volantino,\n" +
" note,\n" +
" inserito_da\n" +
"FROM getPromozioneVendita(%s, %s, NULL, NULL, NULL)\n" +
"WHERE cod_vlis IN (" + UtilityDB.listValueToString(insertPromoRequest.getListini()) + ")\n" +
@@ -699,10 +703,13 @@ public class ListiniVenditaServices {
String message =
String.format(
"Impossibile inserire più promozioni sullo stesso articolo (%s)." + CommonConstants.A_CAPO +
"Cod. Promozione: %s" + CommonConstants.A_CAPO +
"Cod. Promozione: %s - %s" + CommonConstants.A_CAPO +
"Data inizio: %s" + CommonConstants.A_CAPO +
"Data fine: %s",
x.get("cod_mart"), x.get("cod_promo"), x.get("data_iniz"), x.get("data_fine")
x.get("cod_mart"), x.get("cod_promo"),
x.get("descr_promo"),
UtilityDate.formatDate((Date) x.get("data_iniz"), CommonConstants.DATE_FORMAT_DMY),
UtilityDate.formatDate((Date) x.get("data_fine"), CommonConstants.DATE_FORMAT_DMY)
);
anomalie.add(AnomalieDTO.error(message));
}
@@ -757,62 +764,69 @@ public class ListiniVenditaServices {
return InsertPromoResponse;
}
List<MtbLisvData> mtbLisvDataList = new ArrayList<>();
List<EntityBase> entityToProcess = new ArrayList<>();
if (insertPromoRequest.isVolantino() || insertPromoRequest.isSovrascrivi()) {
LocalDate dataInizio = insertPromoRequest.getDataInizio();
LocalDate dataFine = insertPromoRequest.getDataFine();
for (HashMap<String, Object> x : promoAttive) {
LocalDate dataInizioPromo = UtilityLocalDate.localDateFromDate((Date) x.get("data_iniz"));
LocalDate dataFinePromo = UtilityLocalDate.localDateFromDate((Date) x.get("data_fine"));
dataInizioPromo = dataFine.isAfter(dataInizioPromo) ? dataInizioPromo : dataFine.plusDays(1);
dataFinePromo = dataInizio.isBefore(dataFinePromo) ? dataInizio.minusDays(1) : dataFinePromo;
MtbLisvData mtbLisvData = new MtbLisvData()
.setCodVlis((String) x.get("cod_vlis"))
.setVersione((Integer) x.get("versione"))
.setCodPromo((String) x.get("cod_promo"))
.setDataIniz(UtilityLocalDate.localDateToDate(dataInizioPromo))
.setDataFine(UtilityLocalDate.localDateToDate(dataFinePromo))
.setCodMart((String) x.get("cod_mart"))
.setNoteLisv((String) x.get("note_lisv"));
mtbLisvDataList.add(mtbLisvData);
}
entityToProcess = updateLisv(mtbLisvDataList, false);
Map<Object, List<HashMap<String, Object>>> promoGroupedByInseritoDa =
promoAttive.stream().collect(Collectors.groupingBy(x -> x.get("inserito_da")));
for (Map.Entry<Object, List<HashMap<String, Object>>> groupedPromo : promoGroupedByInseritoDa.entrySet()) {
String inseritoDa = groupedPromo.getKey().toString();
List<String> tempCodPromo = new ArrayList<>();
boolean isSinglePromo = false;
for (HashMap<String, Object> x : groupedPromo.getValue()) {
LocalDate dataInizioPromo = UtilityLocalDate.localDateFromDate((Date) x.get("data_iniz"));
LocalDate dataFinePromo = UtilityLocalDate.localDateFromDate((Date) x.get("data_fine"));
sql = Query.format(
"SELECT IIF(e_mail IS NULL, value, e_mail) AS email\n" +
"FROM stb_user\n" +
" LEFT OUTER JOIN stb_gest_setup\n" +
" ON gest_name = 'PVM' AND section = 'LISTINI_VENDITA' AND key_section = 'DEFAULT_EMAIL'\n" +
"WHERE user_name = %s",
inseritoDa
);
String email = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
dataInizioPromo = dataFine.isAfter(dataInizioPromo) ? dataInizioPromo : dataFine.plusDays(1);
dataFinePromo = dataInizio.isBefore(dataFinePromo) ? dataInizio.minusDays(1) : dataFinePromo;
String message, subject = "Chiusura promozion" + (isSinglePromo ? "e" : "i");
VtbListData vtbListData = new VtbListData()
.setCodVlis(x.get("cod_vlis").toString())
.setVersione((Integer) x.get("versione"))
.setDataIniz(UtilityLocalDate.localDateToDate(dataInizioPromo))
.setDataFine(UtilityLocalDate.localDateToDate(dataFinePromo));
if (isSinglePromo)
message = String.format("La promozione (%s) è stata chiusa", tempCodPromo.get(0));
else
message = String.format("Le promozioni (%s) sono state chiuse", String.join(", ", tempCodPromo));
vtbListData.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(vtbListData, multiDBTransactionManager);
if (UtilityDebug.isDebugExecution())
email = "m.ruggiero@integry.it";
tempCodPromo.add(x.get("cod_promo").toString());
}
if (!tempCodPromo.isEmpty()) {
boolean isSinglePromo = tempCodPromo.size() == 1;
sql = Query.format(
"SELECT IIF(e_mail IS NULL, value, e_mail) AS email\n" +
"FROM stb_user\n" +
" LEFT OUTER JOIN stb_gest_setup\n" +
" ON gest_name = 'PVM' AND section = 'LISTINI_VENDITA' AND key_section = 'DEFAULT_EMAIL'\n" +
"WHERE user_name = %s",
inseritoDa
);
String email = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
String message, subject = "Chiusura promozion" + (isSinglePromo ? "e" : "i");
if (isSinglePromo)
message = String.format("La promozione (%s) è stata chiusa", tempCodPromo.get(0));
else
message = String.format("Le promozioni (%s) sono state chiuse", String.join(", ", tempCodPromo));
mailService.sendMail(email, null, subject, message, true);
}
mailService.sendMail(email, null, subject, message, true);
}
}
List<EntityBase> entityToProcess = new ArrayList<>();
sql = Query.format(
"SELECT CAST(COUNT(*) AS BIT)\n" +
@@ -878,13 +892,13 @@ public class ListiniVenditaServices {
calls.add(callable);
}
try{
try {
List<EntityBase> entityRet = taskExecutorService.executeTasks(calls);
UtilityEntity.throwEntitiesException(entityRet);
InsertPromoResponse.setEntityBases(entityRet);
} catch (Exception e) {
multiDBTransactionManager.rollbackAll();
throw e;
}
return InsertPromoResponse;