diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250507122848.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250507122848.java new file mode 100644 index 0000000000..7211b0aa7d --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250507122848.java @@ -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 { + } +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/MtbLisvData.java b/ems-core/src/main/java/it/integry/ems_model/entity/MtbLisvData.java index 7982629f2e..e859cc3434 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/MtbLisvData.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/MtbLisvData.java @@ -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() { diff --git a/ems-engine/src/main/java/it/integry/ems/product/controller/ListiniVenditaController.java b/ems-engine/src/main/java/it/integry/ems/product/controller/ListiniVenditaController.java index 12a065915d..7fe5d88f24 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/controller/ListiniVenditaController.java +++ b/ems-engine/src/main/java/it/integry/ems/product/controller/ListiniVenditaController.java @@ -73,7 +73,7 @@ public class ListiniVenditaController { @RequestParam(CommonConstants.PROFILE_DB) String configuration, @RequestBody List entityList) throws Exception { - return ServiceRestResponse.createEntityPositiveResponse(listiniVenditaServices.updateLisv(entityList)); + return ServiceRestResponse.createEntityPositiveResponse(listiniVenditaServices.updateLisv(entityList, true)); } @RequestMapping(value = "duplica", method = RequestMethod.POST) diff --git a/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java b/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java index f22313d1e7..ecbf4b89f7 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java +++ b/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java @@ -430,7 +430,7 @@ public class ListiniVenditaServices { } - public List updateLisv(List listini) throws Exception { + public List updateLisv(List 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 mtbLisvDataList = new ArrayList<>(); + List entityToProcess = new ArrayList<>(); + + if (insertPromoRequest.isVolantino() || insertPromoRequest.isSovrascrivi()) { LocalDate dataInizio = insertPromoRequest.getDataInizio(); LocalDate dataFine = insertPromoRequest.getDataFine(); + for (HashMap 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>> promoGroupedByInseritoDa = promoAttive.stream().collect(Collectors.groupingBy(x -> x.get("inserito_da"))); for (Map.Entry>> groupedPromo : promoGroupedByInseritoDa.entrySet()) { String inseritoDa = groupedPromo.getKey().toString(); List tempCodPromo = new ArrayList<>(); + boolean isSinglePromo = false; - for (HashMap 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 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 entityRet = taskExecutorService.executeTasks(calls); - UtilityEntity.throwEntitiesException(entityRet); InsertPromoResponse.setEntityBases(entityRet); } catch (Exception e) { multiDBTransactionManager.rollbackAll(); + throw e; } return InsertPromoResponse;