diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250113100955.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250113100955.java new file mode 100644 index 0000000000..df42fde3f1 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250113100955.java @@ -0,0 +1,24 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250113100955 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + createSetupQuery("COD_VLIS", "COD_VLIS", "SELECT COD_VLIS FROM VTB_LIST WHERE FLAG_ATTIVO = 'S'"); + createSetup("DTB_DOCT", "FATTURA_PEDANE", "LISTINO", null, +"codice listino da assegnare al documento di consegna\resto delle pedane", false, "COD_VLIS", false, false, +false, false, false, null, false, "SELECT COD_VLIS FROM VTB_LIST WHERE FLAG_ATTIVO = 'S'"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250113112138.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250113112138.java new file mode 100644 index 0000000000..417de58ca0 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250113112138.java @@ -0,0 +1,81 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomer; +import it.integry.ems.migration._base.MigrationModelInterface; +import it.integry.ems.rules.businessLogic.enums.TipoEmissione; +import it.integry.ems_model.entity.DtbTipi; +import it.integry.ems_model.types.OperationType; + +public class Migration_20250113112138 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + if (!isCustomer(IntegryCustomer.RossoGargano)) return; + + DtbTipi dtbTipi = new DtbTipi() + .setCodDtip("DDTP+") + .setDescrizione("Documento di consegna Pedane") + .setSegnoQtaScar(1) + .setSegnoValScar(1) + .setSegnoQtaCar(0) + .setSegnoValCar(0) + .setTipoEmissione(TipoEmissione.DIRETTA) + .setTipoNumeraz(DtbTipi.TipoNumerazione.AUTOMATICA) + .setCodIreg("DDT") + .setNumIreg(1) + .setSerie("P") + .setTipoAnag("C") + .setPrevistaFat("S") + .setGestione("V") + .setAggiornaList("N") + .setFlagContAnalit("S") + .setFlagAnalisiCostiCom("S") + .setFlagGiornaleMag("S") + .setFlagPrzIva("N") + .setFlagVisualPrz("S") + .setFlagInclStat("S") + .setFlagDocTd("N") + .setFlagCalcPesoIntra("N"); + dtbTipi.setOperation(OperationType.INSERT); + dtbTipi.manageWithParentConnection(advancedDataSource.getConnection()); + + dtbTipi = new DtbTipi() + .setCodDtip("DDTP-") + .setDescrizione("Documento di reso Pedane") + .setSegnoQtaScar(-1) + .setSegnoValScar(-1) + .setSegnoQtaCar(0) + .setSegnoValCar(0) + .setTipoEmissione(TipoEmissione.DIRETTA) + .setTipoNumeraz(DtbTipi.TipoNumerazione.AUTOMATICA) + .setCodIreg("DDT") + .setNumIreg(1) + .setSerie("P") + .setTipoAnag("C") + .setPrevistaFat("S") + .setGestione("V") + .setAggiornaList("N") + .setFlagContAnalit("S") + .setFlagAnalisiCostiCom("S") + .setFlagGiornaleMag("S") + .setFlagPrzIva("N") + .setFlagVisualPrz("S") + .setFlagInclStat("S") + .setFlagDocTd("N") + .setFlagCalcPesoIntra("N"); + dtbTipi.setOperation(OperationType.INSERT); + dtbTipi.manageWithParentConnection(advancedDataSource.getConnection()); + + updateSetupValue("DTB_DOCT", "FATTURA_PEDANE", "TIPO_DOC_CONS", "DDTP+"); + updateSetupValue("DTB_DOCT", "FATTURA_PEDANE", "TIPO_DOC_RESI", "DDTP-"); + + } + + @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/DtbTipi.java b/ems-core/src/main/java/it/integry/ems_model/entity/DtbTipi.java index df6b317d3e..5967330d46 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/DtbTipi.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/DtbTipi.java @@ -99,7 +99,7 @@ public class DtbTipi extends EntityBase { @SqlField(value = "prevista_fat", maxLength = 1, nullable = false) private String previstaFat; - @SqlField(value = "aggiorna_list", maxLength = 1, nullable = false) + @SqlField(value = "aggiorna_list", maxLength = 1, nullable = false, defaultObjectValue = "N") private String aggiornaList; @SqlField(value = "flag_cont_analit", maxLength = 1, nullable = false) @@ -230,154 +230,186 @@ public class DtbTipi extends EntityBase { return codDtip; } - public void setCodDtip(String codDtip) { + public DtbTipi setCodDtip(String codDtip) { this.codDtip = codDtip; + return this; } public String getDescrizione() { return descrizione; } - public void setDescrizione(String descrizione) { + public DtbTipi setDescrizione(String descrizione) { this.descrizione = descrizione; + return this; } public String getGestione() { return gestione; } - public void setGestione(String gestione) { + public DtbTipi setGestione(String gestione) { this.gestione = gestione; + return this; } public String getTipoAnag() { return tipoAnag; } - public void setTipoAnag(String tipoAnag) { + public DtbTipi setTipoAnag(String tipoAnag) { this.tipoAnag = tipoAnag; + return this; } public String getModStamp() { return modStamp; } - public void setModStamp(String modStamp) { + public DtbTipi setModStamp(String modStamp) { this.modStamp = modStamp; + return this; } public String getDesSuMod() { return desSuMod; } - - public void setDesSuMod(String desSuMod) { + public DtbTipi setDesSuMod(String desSuMod) { this.desSuMod = desSuMod; + return this; } public String getDareAvere() { return dareAvere; } - public void setDareAvere(String dareAvere) { + public DtbTipi setDareAvere(String dareAvere) { this.dareAvere = dareAvere; + return this; } public Integer getNumIreg() { return numIreg; } - public void setNumIreg(Integer numIreg) { + public DtbTipi setNumIreg(Integer numIreg) { this.numIreg = numIreg; + return this; } public String getTipoNumeraz() { return tipoNumeraz; } - public void setTipoNumeraz(String tipoNumeraz) { + public DtbTipi setTipoNumeraz(String tipoNumeraz) { this.tipoNumeraz = tipoNumeraz; + return this; + } + + public DtbTipi setTipoNumeraz(TipoNumerazione tipoNumerazione ) { + this.tipoNumeraz = tipoNumerazione.toString(); + return this; + } + + @JsonIgnore + public TipoNumerazione getTipoNumerazEnum() { + return UtilityString.isNullOrEmpty(tipoNumeraz) ? null : TipoNumerazione.fromValue(getTipoNumeraz()); } public String getTipoRiep() { return tipoRiep; } - public void setTipoRiep(String tipoRiep) { + public DtbTipi setTipoRiep(String tipoRiep) { this.tipoRiep = tipoRiep; + return this; } public String getCausaleTrasp() { return causaleTrasp; } - public void setCausaleTrasp(String causaleTrasp) { + public DtbTipi setCausaleTrasp(String causaleTrasp) { this.causaleTrasp = causaleTrasp; + return this; } public String getCodCcau() { return codCcau; } - public void setCodCcau(String codCcau) { + public DtbTipi setCodCcau(String codCcau) { this.codCcau = codCcau; + return this; } public String getCodCcauAnt() { return codCcauAnt; } - public void setCodCcauAnt(String codCcauAnt) { + public DtbTipi setCodCcauAnt(String codCcauAnt) { this.codCcauAnt = codCcauAnt; + return this; } public String getCodCconAnt() { return codCconAnt; } - public void setCodCconAnt(String codCconAnt) { + public DtbTipi setCodCconAnt(String codCconAnt) { this.codCconAnt = codCconAnt; + return this; } public String getCodCconCassa() { return codCconCassa; } - public void setCodCconCassa(String codCconCassa) { + public DtbTipi setCodCconCassa(String codCconCassa) { this.codCconCassa = codCconCassa; + return this; } public String getCodIreg() { return codIreg; } - public void setCodIreg(String codIreg) { + public DtbTipi setCodIreg(String codIreg) { this.codIreg = codIreg; + return this; } public String getContropDefault() { return contropDefault; } - public void setContropDefault(String contropDefault) { + public DtbTipi setContropDefault(String contropDefault) { this.contropDefault = contropDefault; + return this; } public String getAspettoBeni() { return aspettoBeni; } - public void setAspettoBeni(String aspettoBeni) { + public DtbTipi setAspettoBeni(String aspettoBeni) { this.aspettoBeni = aspettoBeni; + return this; } public String getTipoEmissione() { return tipoEmissione; } - public void setTipoEmissione(String tipoEmissione) { + public DtbTipi setTipoEmissione(String tipoEmissione) { this.tipoEmissione = tipoEmissione; + return this; } + public DtbTipi setTipoEmissione(TipoEmissione tipoEmissione ) { + this.tipoEmissione = tipoEmissione.toString(); + return this; + } @JsonIgnore public TipoEmissione getTipoEmissioneEnum() { @@ -388,279 +420,306 @@ public class DtbTipi extends EntityBase { return segnoQtaCar; } - public void setSegnoQtaCar(Integer segnoQtaCar) { + public DtbTipi setSegnoQtaCar(Integer segnoQtaCar) { this.segnoQtaCar = segnoQtaCar; + return this; } public Integer getSegnoValCar() { return segnoValCar; } - public void setSegnoValCar(Integer segnoValCar) { + public DtbTipi setSegnoValCar(Integer segnoValCar) { this.segnoValCar = segnoValCar; + return this; } public Integer getSegnoQtaScar() { return segnoQtaScar; } - public void setSegnoQtaScar(Integer segnoQtaScar) { + public DtbTipi setSegnoQtaScar(Integer segnoQtaScar) { this.segnoQtaScar = segnoQtaScar; + return this; } public Integer getSegnoValScar() { return segnoValScar; } - public void setSegnoValScar(Integer segnoValScar) { + public DtbTipi setSegnoValScar(Integer segnoValScar) { this.segnoValScar = segnoValScar; + return this; } public String getPrevistaFat() { return previstaFat; } - public void setPrevistaFat(String previstaFat) { + public DtbTipi setPrevistaFat(String previstaFat) { this.previstaFat = previstaFat; + return this; } public String getAggiornaList() { return aggiornaList; } - public void setAggiornaList(String aggiornaList) { + public DtbTipi setAggiornaList(String aggiornaList) { this.aggiornaList = aggiornaList; + return this; } public String getFlagContAnalit() { return flagContAnalit; } - public void setFlagContAnalit(String flagContAnalit) { + public DtbTipi setFlagContAnalit(String flagContAnalit) { this.flagContAnalit = flagContAnalit; + return this; } public String getFlagAnalisiCostiCom() { return flagAnalisiCostiCom; } - public void setFlagAnalisiCostiCom(String flagAnalisiCostiCom) { + public DtbTipi setFlagAnalisiCostiCom(String flagAnalisiCostiCom) { this.flagAnalisiCostiCom = flagAnalisiCostiCom; + return this; } public String getFlagGiornaleMag() { return flagGiornaleMag; } - public void setFlagGiornaleMag(String flagGiornaleMag) { + public DtbTipi setFlagGiornaleMag(String flagGiornaleMag) { this.flagGiornaleMag = flagGiornaleMag; + return this; } public String getFlagPrzIva() { return flagPrzIva; } - public void setFlagPrzIva(String flagPrzIva) { + public DtbTipi setFlagPrzIva(String flagPrzIva) { this.flagPrzIva = flagPrzIva; + return this; } public String getFlagVisualPrz() { return flagVisualPrz; } - public void setFlagVisualPrz(String flagVisualPrz) { + public DtbTipi setFlagVisualPrz(String flagVisualPrz) { this.flagVisualPrz = flagVisualPrz; + return this; } public String getFlagInclStat() { return flagInclStat; } - public void setFlagInclStat(String flagInclStat) { + public DtbTipi setFlagInclStat(String flagInclStat) { this.flagInclStat = flagInclStat; + return this; } public String getFlagTipoReso() { return flagTipoReso; } - public void setFlagTipoReso(String flagTipoReso) { + public DtbTipi setFlagTipoReso(String flagTipoReso) { this.flagTipoReso = flagTipoReso; + return this; } public String getFlagSfrido() { return flagSfrido; } - public void setFlagSfrido(String flagSfrido) { + public DtbTipi setFlagSfrido(String flagSfrido) { this.flagSfrido = flagSfrido; + return this; } public String getFlagDocTd() { return flagDocTd; } - public void setFlagDocTd(String flagDocTd) { + public DtbTipi setFlagDocTd(String flagDocTd) { this.flagDocTd = flagDocTd; + return this; } public String getFlagCosto() { return flagCosto; } - public void setFlagCosto(String flagCosto) { + public DtbTipi setFlagCosto(String flagCosto) { this.flagCosto = flagCosto; + return this; } public String getFlagChkArtNeg() { return flagChkArtNeg; } - public void setFlagChkArtNeg(String flagChkArtNeg) { + public DtbTipi setFlagChkArtNeg(String flagChkArtNeg) { this.flagChkArtNeg = flagChkArtNeg; + return this; } - /*public AccontoDa getFlagAcconto() { - return flagAcconto; - } - - public void setFlagAcconto(AccontoDa flagAcconto) { - this.flagAcconto = flagAcconto; - }*/ public String getFlagAcconto() { return flagAcconto; } - public void setFlagAcconto(String flagAcconto) { + public DtbTipi setFlagAcconto(String flagAcconto) { this.flagAcconto = flagAcconto; + return this; } public String getFlagAttivo() { return flagAttivo; } - public void setFlagAttivo(String flagAttivo) { + public DtbTipi setFlagAttivo(String flagAttivo) { this.flagAttivo = flagAttivo; + return this; } public String getSerie() { return serie; } - public void setSerie(String serie) { + public DtbTipi setSerie(String serie) { this.serie = serie; + return this; } public String getFlagSerDepo() { return flagSerDepo; } - public void setFlagSerDepo(String flagSerDepo) { + public DtbTipi setFlagSerDepo(String flagSerDepo) { this.flagSerDepo = flagSerDepo; + return this; } public Integer getGgUtili() { return ggUtili; } - public void setGgUtili(Integer ggUtili) { + public DtbTipi setGgUtili(Integer ggUtili) { this.ggUtili = ggUtili; + return this; } public String getDesSuModEstero() { return desSuModEstero; } - public void setDesSuModEstero(String desSuModEstero) { + public DtbTipi setDesSuModEstero(String desSuModEstero) { this.desSuModEstero = desSuModEstero; + return this; } public String getFlagTrasf() { return flagTrasf; } - public void setFlagTrasf(String flagTrasf) { + public DtbTipi setFlagTrasf(String flagTrasf) { this.flagTrasf = flagTrasf; + return this; } public Integer getNumCopie() { return numCopie; } - public void setNumCopie(Integer numCopie) { + public DtbTipi setNumCopie(Integer numCopie) { this.numCopie = numCopie; + return this; } public String getFlagCheckPeso() { return flagCheckPeso; } - public void setFlagCheckPeso(String flagCheckPeso) { + public DtbTipi setFlagCheckPeso(String flagCheckPeso) { this.flagCheckPeso = flagCheckPeso; + return this; } public String getOggettoMail() { return oggettoMail; } - public void setOggettoMail(String oggettoMail) { + public DtbTipi setOggettoMail(String oggettoMail) { this.oggettoMail = oggettoMail; + return this; } public String getTestoMail() { return testoMail; } - public void setTestoMail(String testoMail) { + public DtbTipi setTestoMail(String testoMail) { this.testoMail = testoMail; + return this; } public String getCodCcauDocAp() { return codCcauDocAp; } - public void setCodCcauDocAp(String codCcauDocAp) { + public DtbTipi setCodCcauDocAp(String codCcauDocAp) { this.codCcauDocAp = codCcauDocAp; + return this; } public String getCodCconDocAp() { return codCconDocAp; } - public void setCodCconDocAp(String codCconDocAp) { + public DtbTipi setCodCconDocAp(String codCconDocAp) { this.codCconDocAp = codCconDocAp; + return this; } public String getFlagSendSdi() { return flagSendSdi; } - public void setFlagSendSdi(String flagSendSdi) { + public DtbTipi setFlagSendSdi(String flagSendSdi) { this.flagSendSdi = flagSendSdi; + return this; } public String getFlagContoVendita() { return flagContoVendita; } - public void setFlagContoVendita(String flagContoVendita) { + public DtbTipi setFlagContoVendita(String flagContoVendita) { this.flagContoVendita = flagContoVendita; + return this; } public Boolean getFlagGestioneSpeciale() { return flagGestioneSpeciale; } - public void setFlagGestioneSpeciale(Boolean flagGestioneSpeciale) { + public DtbTipi setFlagGestioneSpeciale(Boolean flagGestioneSpeciale) { this.flagGestioneSpeciale = flagGestioneSpeciale; + return this; } public Boolean getFlagArchiviaPdf() { return flagArchiviaPdf; } - public void setFlagArchiviaPdf(Boolean flagArchiviaPdf) { + public DtbTipi setFlagArchiviaPdf(Boolean flagArchiviaPdf) { this.flagArchiviaPdf = flagArchiviaPdf; + return this; } public String getPathBanner() { @@ -792,4 +851,26 @@ public class DtbTipi extends EntityBase { return null; } } + + public enum TipoNumerazione { + AUTOMATICA("AUTOMATICA"), + MANUALE("MANUALE"), + PROPOSTA("PROPOSTA"); + + private String text; + + TipoNumerazione(String text) { + this.text = text; + } + + public static TipoNumerazione fromValue(String text) { + for (TipoNumerazione tipoNumerazione : TipoNumerazione.values()) { + if (tipoNumerazione.text.equalsIgnoreCase(text)) { + return tipoNumerazione; + } + } + return null; + } + } + } diff --git a/ems-core/src/main/resources/rules/documenti.drl b/ems-core/src/main/resources/rules/documenti.drl index 68a28d1829..e60d910888 100644 --- a/ems-core/src/main/resources/rules/documenti.drl +++ b/ems-core/src/main/resources/rules/documenti.drl @@ -502,6 +502,23 @@ then modify ( $dTip ) { setFlagGiornaleMag("N") } end + +//TIPI DOCUMENTO +rule "completeSegnoDoc" +no-loop +when + eval(completeRulesEnabled) + $dTip : DtbTipi(operation == OperationType.INSERT) +then + modify ( $dTip ) { + setSegnoQtaCar($dTip.getSegnoQtaCar()==null && $dTip.getSegnoQtaScar() !=0?0:$dTip.getSegnoQtaCar()), + setSegnoValCar($dTip.getSegnoValCar()==null && $dTip.getSegnoValScar() !=0?0:$dTip.getSegnoValCar()), + setSegnoQtaScar($dTip.getSegnoQtaScar()==null && $dTip.getSegnoQtaCar() !=0?0:$dTip.getSegnoQtaScar()), + setSegnoValScar($dTip.getSegnoValScar()==null && $dTip.getSegnoValCar() !=0?0:$dTip.getSegnoValScar()) + } +end + + rule "completeAggioraListDtbTipi" when eval(completeRulesEnabled) diff --git a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentiDirettiService.java b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentiDirettiService.java index 461c700e08..ffdd74b9ff 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentiDirettiService.java +++ b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentiDirettiService.java @@ -25,6 +25,8 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import static java.util.stream.Collectors.groupingBy; + @Service @Scope("request") public class DocumentiDirettiService { @@ -175,7 +177,7 @@ public class DocumentiDirettiService { // Map> ulToTransf = artsToTransfer.stream() .filter(ul -> ul.getCodMdep().equalsIgnoreCase(codMdep)) - .collect(Collectors.groupingBy(MvwSitArtUdcDetInventarioDTO::getArticoloPartita)); + .collect(groupingBy(MvwSitArtUdcDetInventarioDTO::getArticoloPartita)); // // @@ -237,6 +239,7 @@ public class DocumentiDirettiService { } String idAttivita = null; + List dtbDocrPedOld = Collections.emptyList(); DtbDoct dtbDoctPedOld = null; if (!isInsert) { sql = Query.format("SELECT activity_id FROM dtb_doct WHERE cod_anag = %s AND cod_dtip = %s AND data_doc = %s AND ser_doc = %s AND num_doc = %s", @@ -249,15 +252,23 @@ public class DocumentiDirettiService { idAttivita = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); if (!UtilityString.isNullOrEmpty(idAttivita)) { - sql = Query.format("SELECT cod_anag, cod_dtip, data_doc, ser_doc, num_doc FROM dtb_doct WHERE activity_id = %s AND NOT(cod_anag = %s AND cod_dtip = %s AND data_doc = %s AND ser_doc = %s AND num_doc = %s)", + sql = Query.format( + "SELECT cod_anag,\n" + + " cod_dtip,\n" + + " data_doc,\n" + + " ser_doc,\n" + + " num_doc,\n" + + " id_riga\n" + + "FROM dtb_docr\n" + + "WHERE activity_id_row = %s\n" + + " AND NOT (cod_anag = %s AND cod_dtip = %s AND data_doc = %s AND ser_doc = %s AND num_doc = %s)", idAttivita, codAnag, codDtip, dataDoc, serDoc, numDoc); - - dtbDoctPedOld = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class); + dtbDocrPedOld = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDocr.class); } } @@ -282,19 +293,25 @@ public class DocumentiDirettiService { ) { final String gestName = "DTB_DOCT"; final String section = "FATTURA_PEDANE"; - final String keySectionTipoDoc = "TIPO_DOC_RESI"; + final String keySectionTipoDoc = "TIPO_DOC_CONS"; + final String keySectionListino = "COD_VLIS"; HashMap setupSection = setupGest.getSetupSection(multiDBTransactionManager.getPrimaryConnection(), gestName, section); - String codDtipPed = setupSection.get(keySectionTipoDoc); - if (UtilityString.isNullOrEmpty(codDtipPed)) - throw new Exception(String.format("Tipo Documento per la creazione della fattura delle pedane non configurato %s -> %s -> %s", gestName, section, keySectionTipoDoc)); + String codDtipPedCons = setupSection.get(keySectionTipoDoc); + if (UtilityString.isNullOrEmpty(codDtipPedCons)) + throw new Exception(String.format("Tipo Documento per la creazione delle bolle di consegna delle pedane non configurato %s -> %s -> %s", gestName, section, keySectionTipoDoc)); + + final String keySectionTipoDocResi = "TIPO_DOC_RESI"; + + String codDtipPedResi = setupSection.get(keySectionTipoDocResi); + if (UtilityString.isNullOrEmpty(codDtipPedResi)) + throw new Exception(String.format("Tipo Documento per la creazione delle di reso delle pedane non configurato %s -> %s -> %s", gestName, section, keySectionTipoDocResi)); if (UtilityString.isNullOrEmpty(idAttivita)) { final String sectionVendita = "VENDITA"; final String keySectionTipoAttivita = "TIPO_ATTIVITA"; String activityTypeId = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), gestName, sectionVendita, keySectionTipoAttivita); -// setupSection.get(keySectionTipoAttivita); if (UtilityString.isNullOrEmpty(activityTypeId)) throw new Exception(String.format("Tipo attività non configurato %s -> %s -> %s", gestName, sectionVendita, keySectionTipoAttivita)); @@ -304,57 +321,104 @@ public class DocumentiDirettiService { dtbDoct.setActivityId(idAttivita); } - String codAnagPed; + String codAnagPed, listino = null; if (fatturaVettore) { if (UtilityString.isNullOrEmpty(dtbDoct.getCodFornTrasp())) throw new Exception("Codice fornitore del trasporto non presente sul documento"); codAnagPed = dtbDoct.getCodFornTrasp(); + sql = Query.format("SELECT cod_vlis FROM vtb_clie WHERE cod_anag = %s", codAnagPed); + listino = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); + if (UtilityString.isNullOrEmpty(listino)) { + listino = setupSection.get(keySectionListino); + if (UtilityString.isNullOrEmpty(listino)) + throw new Exception(String.format("Listino per la creazione delle bolle di consegna delle pedane non configurato %s -> %s -> %s", gestName, section, keySectionListino)); + } } else { codAnagPed = dtbDoct.getCodAnag(); + listino = dtbDoct.getListino(); + } + if (dtbDocrPedOld != null && !dtbDocrPedOld.isEmpty()) { + Map> collect = dtbDocrPedOld.stream() + .collect(groupingBy(x -> + new DtbDoct() + .setCodAnag(x.getCodAnag()) + .setCodDtip(x.getCodDtip()) + .setDataDoc(x.getDataDoc()) + .setSerDoc(x.getSerDoc()) + .setNumDoc(x.getNumDoc()))); + + for (Map.Entry> entry : collect.entrySet()) { + DtbDoct bolla = entry.getKey(); + entry.getValue().stream().forEach(x->x.setOperation(OperationType.DELETE)); + bolla.setDtbDocr(entry.getValue()); + bolla.setOperation(OperationType.UPDATE); + dtbDoctPedOld = bolla; + } } - HashMap oldPkDoc = new HashMap<>(); - Integer numDocPed = null; - Date dataDocPed = null; - String serDocPed = null; - if (dtbDoctPedOld != null) { - dataDocPed = dtbDoctPedOld.getDataDoc(); - oldPkDoc = new HashMap<>(); - oldPkDoc.put("codDtip", dtbDoctPedOld.getCodDtip()); - oldPkDoc.put("codAnag", dtbDoctPedOld.getCodAnag()); - oldPkDoc.put("dataDoc", dtbDoctPedOld.getDataDoc()); - oldPkDoc.put("serDoc", dtbDoctPedOld.getSerDoc()); - oldPkDoc.put("numDoc", dtbDoctPedOld.getNumDoc()); - } +// HashMap oldPkDoc = new HashMap<>(); +// Integer numDocPed = null; +// Date dataDocPed = null; +// String serDocPed = null; +// DtbDoct dtbDoctPedOld; +// if (dtbDocrPedOld != null && !dtbDocrPedOld.isEmpty()) { +// dataDocPed = dtbDocrPedOld.get(0).getDataDoc(); +// oldPkDoc = new HashMap<>(); +// oldPkDoc.put("codDtip", dtbDocrPedOld.get(0).getCodDtip()); +// oldPkDoc.put("codAnag", dtbDocrPedOld.get(0).getCodAnag()); +// oldPkDoc.put("dataDoc", dtbDocrPedOld.get(0).getDataDoc()); +// oldPkDoc.put("serDoc", dtbDocrPedOld.get(0).getSerDoc()); +// oldPkDoc.put("numDoc", dtbDocrPedOld.get(0).getNumDoc()); +// } List imballi = dtbDoct.getDtbDocImb().stream().filter(x -> x.getTipoReso() != 2).collect(Collectors.toList()); - Map> gruppoImballi = imballi.stream().collect(Collectors.groupingBy(x -> x.getNumImbCons() > x.getNumImbResi())); + Map> gruppoImballi = imballi.stream().collect(groupingBy(x -> x.getNumImbCons() > x.getNumImbResi())); for (Map.Entry> item : gruppoImballi.entrySet()) { + String codDtipPed; if (item.getKey()) - codDtipPed = dtbDoct.getCodDtip(); + codDtipPed = codDtipPedCons; + else + codDtipPed = codDtipPedResi; - if (dtbDoctPedOld != null && !codDtipPed.equalsIgnoreCase(dtbDoctPedOld.getCodDtip())) { - serDocPed = DocumentRules.getSerDoc(multiDBTransactionManager.getPrimaryConnection(), codDtipPed, dtbDoct.getCodMdep(), dataDocPed); - numDocPed = 0; + DtbDoct dtbDoctPed = null; + if (dtbDoctPedOld != null) { + if (dtbDoctPedOld.getCodAnag().equalsIgnoreCase(codAnagPed) && + dtbDoctPedOld.getCodDtip().equalsIgnoreCase(codDtipPed) && + dtbDoctPedOld.getDataDoc().equals(dtbDoct.getDataDoc())) { + dtbDoctPed = dtbDoctPedOld; + } else { + entityList.add(dtbDoctPed); + } } - DtbDoct dtbDoctPed = - new DtbDoct() - .setCodDtip(codDtipPed) - .setCodAnag(codAnagPed) - .setDataDoc(dataDocPed == null ? dtbDoct.getDataDoc() : dataDocPed) - .setSerDoc(serDocPed) - .setNumDoc(numDocPed) - .setCodMdep(dtbDoct.getCodMdep()) - .setActivityId(idAttivita) - .setListino(dtbDoct.getListino()); - if (!oldPkDoc.isEmpty()) { - dtbDoctPed.setOldPk(oldPkDoc); + if ( dtbDoctPed == null) { + sql = Query.format( + "SELECT cod_anag, cod_dtip, data_doc, ser_doc, num_doc\n" + + "FROM dtb_doct\n" + + "WHERE cod_dtip = %s \n" + + " AND cod_anag = %s \n" + + " AND data_doc = %s", + codDtipPed, + codAnagPed, + dtbDoct.getDataDoc()); + + dtbDoctPed = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class); + + } + if ( dtbDoctPed == null) { + dtbDoctPed = + new DtbDoct() + .setCodDtip(codDtipPed) + .setCodAnag(codAnagPed) + .setDataDoc(dtbDoct.getDataDoc()) + .setCodMdep(dtbDoct.getCodMdep()) + .setListino(listino); + dtbDoctPed.setOperation(OperationType.INSERT); + } else { + dtbDoctPed.setOperation(OperationType.UPDATE); } - dtbDoctPed.setOperation(OperationType.DELETE_THEN_INSERT); entityList.add(dtbDoctPed); - for (DtbDocImb docImb : item.getValue()) { String codTcol = docImb.getCodTcol(); int qta = docImb.getNumImbCons() - docImb.getNumImbResi(); @@ -376,43 +440,44 @@ public class DocumentiDirettiService { DtbDocr dtbDocr = new DtbDocr() .setCodMart(codMart) - .setQtaDoc(new BigDecimal(qta).abs()); + .setQtaDoc(new BigDecimal(qta).abs()) + .setActivityIdRow(idAttivita); dtbDocr.setOperation(OperationType.INSERT); dtbDoctPed.getDtbDocr().add(dtbDocr); - String descrizione = descrizioneTipoCollo + ": "; - if (docImb.getNumImbCons() > 0) { - descrizione += - String.format("CARICATE/I %s", docImb.getNumImbCons()); - } - if (docImb.getNumImbResi() > 0) { - if (descrizione != null && descrizione.length() > 0) - descrizione += ", "; - descrizione += - String.format("RESE/I %s", docImb.getNumImbResi()); - } - dtbDocr = new DtbDocr() - .setDescrizione(UtilityString.left(descrizione, 40)) - .setDescrizioneEstesa(descrizione); - dtbDocr.setOperation(OperationType.INSERT); - dtbDoctPed.getDtbDocr().add(dtbDocr); +// String descrizione = descrizioneTipoCollo + ": "; +// if (docImb.getNumImbCons() > 0) { +// descrizione += +// String.format("CARICATE/I %s", docImb.getNumImbCons()); +// } +// if (docImb.getNumImbResi() > 0) { +// if (descrizione != null && descrizione.length() > 0) +// descrizione += ", "; +// descrizione += +// String.format("RESE/I %s", docImb.getNumImbResi()); +// } +// dtbDocr = new DtbDocr() +// .setDescrizione(UtilityString.left(descrizione, 40)) +// .setDescrizioneEstesa(descrizione); +// dtbDocr.setOperation(OperationType.INSERT); +// dtbDoctPed.getDtbDocr().add(dtbDocr); } if (!imballi.isEmpty()) { String descrizione = - String.format("NS. RIF. %S DEL %S N. %S/%S", + String.format("NS. BOLLA DI CONSEGNA %S DEL %S N. %S/%S", dtbDoct.getCodDtip(), new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(dtbDoct.getDataDoc()), dtbDoct.getSerDoc(), dtbDoct.getNumDoc()); DtbDocr dtbDocr = new DtbDocr() .setDescrizione(UtilityString.left(descrizione, 40)) - .setDescrizioneEstesa(descrizione); + .setDescrizioneEstesa(descrizione) + .setActivityIdRow(idAttivita); dtbDocr.setOperation(OperationType.INSERT); dtbDoctPed.getDtbDocr().add(dtbDocr); } } } else if (dtbDoctPedOld != null) { - dtbDoctPedOld.setOperation(OperationType.DELETE); entityList.add(dtbDoctPedOld); } }