From a9cbbed8e28ac7461538f94c5e37aa14f496992f Mon Sep 17 00:00:00 2001 From: MinaR Date: Tue, 29 Jul 2025 15:32:34 +0200 Subject: [PATCH] sistemato controllo per documenti imballo --- .../service/DocumentiDirettiService.java | 129 +++++++++--------- 1 file changed, 63 insertions(+), 66 deletions(-) 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 f78b44e57a..a72c6204d5 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 @@ -5,6 +5,7 @@ import it.integry.ems.document.dto.ArticoloPartitaDTO; import it.integry.ems.document.dto.CreateULFromDocumentsDTO; import it.integry.ems.document.dto.ULRowDTO; import it.integry.ems.document.dto.UlVenditaDTO; +import it.integry.ems.exception.PrimaryDatabaseNotPresentException; import it.integry.ems.javabeans.RequestDataDTO; import it.integry.ems.menu.dto.StbMenuDTO; import it.integry.ems.retail.wms.accettazione.service.WMSAccettazioneService; @@ -19,6 +20,7 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.utility.UtilityEntity; import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.entity.*; +import it.integry.ems_model.exception.DataConverterNotFoundException; import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.types.OperationType; import it.integry.ems_model.utility.*; @@ -30,6 +32,7 @@ import org.springframework.stereotype.Service; import java.io.IOException; import java.math.BigDecimal; +import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -539,7 +542,7 @@ public class DocumentiDirettiService { } List imballi = dtbDoct.getDtbDocImb().stream().filter(x -> x.getOperation() != OperationType.DELETE && x.getTipoReso() != 2).collect(Collectors.toList()); - int qtaDoc = 0; + for (DtbDocImb docImb : imballi) { sql = Query.format( @@ -558,9 +561,8 @@ public class DocumentiDirettiService { String descrizioneArticolo = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); - String codDtipPed; + if ((fatturaVettore || fatturaPedaneCliente) && docImb.getNumImbCons() != 0) { - codDtipPed = codDtipPedCons; String descrizione = String.format("NS. BOLLA DI CONSEGNA %S DEL %S N. %S/%S", dtbDoct.getCodDtip(), @@ -569,70 +571,10 @@ public class DocumentiDirettiService { dtbDoct.getNumDoc()); descrizioneArticolo = descrizioneArticolo + CommonConstants.A_CAPO + descrizione; - - qtaDoc = docImb.getNumImbCons(); - - - } else if (!fatturaVettore && docImb.getNumImbResi() != 0) { - codDtipPed = codDtipPedResi; - qtaDoc = docImb.getNumImbResi(); - } else { - codDtipPed = null; + getDtbDoctImballi(dtbDoct, entityList, codDtipPedCons, codAnagPed, codMdep, listino, codMart, docImb.getNumImbCons(), descrizioneArticolo, idAttivita); } - - if (codDtipPed != null) { - DtbDoct dtbDoctPed = (DtbDoct) entityList - .stream() - .filter(x -> x instanceof DtbDoct && ((DtbDoct) x).getCodDtip().equalsIgnoreCase(codDtipPed)).findFirst().orElse(null); - - 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 \n" - , - codDtipPed, - codAnagPed, - dtbDoct.getDataDoc()); - - if (UtilityString.isNullOrEmpty(dtbDoct.getIdViaggio())) - sql += " AND id_viaggio IS NULL "; - else - sql += " AND id_viaggio = " + UtilityDB.valueToString(dtbDoct.getIdViaggio()); - - dtbDoctPed = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class); - if (dtbDoctPed != null) { - dtbDoctPed.setOperation(OperationType.UPDATE); - entityList.add(dtbDoctPed); - } - - } else { - dtbDoctPed.setOperation(OperationType.UPDATE); - } - if (dtbDoctPed == null) { - dtbDoctPed = - new DtbDoct() - .setCodDtip(codDtipPed) - .setCodAnag(codAnagPed) - .setDataDoc(dtbDoct.getDataDoc()) - .setCodMdep(codMdep) - .setCodFornTrasp(dtbDoct.getCodFornTrasp()) - .setListino(listino) - .setIdViaggio(dtbDoct.getIdViaggio()); - dtbDoctPed.setOperation(OperationType.INSERT); - entityList.add(dtbDoctPed); - } - - DtbDocr dtbDocr = new DtbDocr() - .setCodMart(codMart) - .setQtaDoc(new BigDecimal(qtaDoc).abs()) - .setDescrizioneEstesa(descrizioneArticolo) - .setActivityIdRow(idAttivita); - dtbDocr.setOperation(OperationType.INSERT); - dtbDoctPed.getDtbDocr().add(dtbDocr); - + if (!fatturaVettore && docImb.getNumImbResi() != 0) { + getDtbDoctImballi(dtbDoct, entityList, codDtipPedResi, codAnagPed, codMdep, listino, codMart, docImb.getNumImbResi(), descrizioneArticolo, idAttivita); } } } @@ -643,6 +585,61 @@ public class DocumentiDirettiService { } + private void getDtbDoctImballi(DtbDoct dtbDoct, List entityList, String codDtipPed, String codAnagPed, String codMdep, String listino, String codMart, int qtaDoc, String descrizioneArticolo, String idAttivita) throws DataConverterNotFoundException, SQLException, InstantiationException, IllegalAccessException, PrimaryDatabaseNotPresentException, IOException { + String sql; + DtbDoct dtbDoctPed = (DtbDoct) entityList + .stream() + .filter(x -> x instanceof DtbDoct && ((DtbDoct) x).getCodDtip().equalsIgnoreCase(codDtipPed)).findFirst().orElse(null); + + 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 \n" + , + codDtipPed, + codAnagPed, + dtbDoct.getDataDoc()); + + if (UtilityString.isNullOrEmpty(dtbDoct.getIdViaggio())) + sql += " AND id_viaggio IS NULL "; + else + sql += " AND id_viaggio = " + UtilityDB.valueToString(dtbDoct.getIdViaggio()); + + dtbDoctPed = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class); + if (dtbDoctPed != null) { + dtbDoctPed.setOperation(OperationType.UPDATE); + entityList.add(dtbDoctPed); + } + + } else { + dtbDoctPed.setOperation(OperationType.UPDATE); + } + if (dtbDoctPed == null) { + dtbDoctPed = + new DtbDoct() + .setCodDtip(codDtipPed) + .setCodAnag(codAnagPed) + .setDataDoc(dtbDoct.getDataDoc()) + .setCodMdep(codMdep) + .setCodFornTrasp(dtbDoct.getCodFornTrasp()) + .setListino(listino) + .setIdViaggio(dtbDoct.getIdViaggio()); + dtbDoctPed.setOperation(OperationType.INSERT); + entityList.add(dtbDoctPed); + } + + DtbDocr dtbDocr = new DtbDocr() + .setCodMart(codMart) + .setQtaDoc(new BigDecimal(qtaDoc).abs()) + .setDescrizioneEstesa(descrizioneArticolo) + .setActivityIdRow(idAttivita); + dtbDocr.setOperation(OperationType.INSERT); + dtbDoctPed.getDtbDocr().add(dtbDocr); + } + private StbActivity createStbActivity(String activityTypeId) throws Exception { String idAttivita = ConfigActivityRules.completeActivityId(multiDBTransactionManager.getPrimaryConnection());