diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250122192402.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250122192402.java new file mode 100644 index 0000000000..68202e2a13 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250122192402.java @@ -0,0 +1,47 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250122192402 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateFunction("f_suggestEAN13","CREATE FUNCTION [dbo].[f_suggestEAN13](@precode VARCHAR(12))\n" + + " RETURNS VARCHAR(13)\n" + + "AS\n" + + "BEGIN\n" + + "\n" + + " DECLARE @ean13 VARCHAR(13);\n" + + "\n" + + " IF LEN(@precode) = 12\n" + + " BEGIN\n" + + " SELECT @ean13 = CONCAT(@precode, dbo.getCheckDigitEan13(@precode))\n" + + " END;\n" + + " ELSE\n" + + " BEGIN\n" + + " WITH ean AS (SELECT MAX(CAST(RIGHT(cod_barre, LEN(cod_barre) - LEN(@precode)) as numeric)) AS maxValue\n" + + "\n" + + " FROM mvw_barcode\n" + + " WHERE cod_barre LIKE @precode + '%'\n" + + " AND ISNUMERIC(RIGHT(cod_barre, LEN(cod_barre) - LEN(@precode))) = 1\n" + + " )\n" + + " SELECT @ean13 = CONCAT(@precode, RIGHT(FORMAT(ISNULL(maxValue,1), REPLICATE('0', 12)), 12 - LEN(@precode)))\n" + + " FROM ean;\n" + + "\n" + + " SELECT @ean13 = CONCAT(@ean13, dbo.getCheckDigitEan13(@ean13))\n" + + "\n" + + "\n" + + " END\n" + + " RETURN @ean13;\n" + + "END\n"); + } + + @Override + public void down() throws Exception { + } +} \ No newline at end of file diff --git a/ems-engine/src/main/java/it/integry/ems/document/dto/UlVenditaDTO.java b/ems-engine/src/main/java/it/integry/ems/document/dto/UlVenditaDTO.java new file mode 100644 index 0000000000..e9f583a858 --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/document/dto/UlVenditaDTO.java @@ -0,0 +1,127 @@ +package it.integry.ems.document.dto; + +import it.integry.ems_model.annotation.SqlField; + +import java.math.BigDecimal; +import java.time.LocalDate; + +public class UlVenditaDTO { + @SqlField("data_collo") + private LocalDate dataCollo; + @SqlField("ser_collo") + private String serCollo; + @SqlField("gestione") + private String gestione; + @SqlField("num_collo") + private Integer numCollo; + @SqlField("cod_mdep") + private String codMdep; + @SqlField("cod_mart") + private String codMart; + @SqlField("partita_mag") + private String partitaMag; + @SqlField("qta_col") + private BigDecimal qtaCol; + @SqlField("num_cnf") + private BigDecimal numCnf; + @SqlField("cod_tcol") + private String codTcol; + + + public ArticoloPartitaDTO getArticoloPartita() { + ArticoloPartitaDTO dto = new ArticoloPartitaDTO(); + dto.setCodMart(codMart) + .setPartitaMag(partitaMag); + return dto; + } + + public LocalDate getDataCollo() { + return dataCollo; + } + + public UlVenditaDTO setDataCollo(LocalDate dataCollo) { + this.dataCollo = dataCollo; + return this; + } + + public String getSerCollo() { + return serCollo; + } + + public UlVenditaDTO setSerCollo(String serCollo) { + this.serCollo = serCollo; + return this; + } + + public String getGestione() { + return gestione; + } + + public UlVenditaDTO setGestione(String gestione) { + this.gestione = gestione; + return this; + } + + public Integer getNumCollo() { + return numCollo; + } + + public UlVenditaDTO setNumCollo(Integer numCollo) { + this.numCollo = numCollo; + return this; + } + + public String getCodMdep() { + return codMdep; + } + + public UlVenditaDTO setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } + + public String getCodMart() { + return codMart; + } + + public UlVenditaDTO setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getPartitaMag() { + return partitaMag; + } + + public UlVenditaDTO setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + public BigDecimal getQtaCol() { + return qtaCol; + } + + public UlVenditaDTO setQtaCol(BigDecimal qtaCol) { + this.qtaCol = qtaCol; + return this; + } + + public BigDecimal getNumCnf() { + return numCnf; + } + + public UlVenditaDTO setNumCnf(BigDecimal numCnf) { + this.numCnf = numCnf; + return this; + } + + public String getCodTcol() { + return codTcol; + } + + public UlVenditaDTO setCodTcol(String codTcol) { + this.codTcol = codTcol; + return this; + } +} 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 76518f8349..3a10f6a70f 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 @@ -2,8 +2,8 @@ package it.integry.ems.document.service; import it.integry.common.var.CommonConstants; import it.integry.ems.document.dto.ArticoloPartitaDTO; +import it.integry.ems.document.dto.UlVenditaDTO; import it.integry.ems.javabeans.RequestDataDTO; -import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO; import it.integry.ems.rules.businessLogic.enums.TipoEmissione; import it.integry.ems.rules.completing.ConfigActivityRules; import it.integry.ems.service.EntityProcessor; @@ -127,7 +127,7 @@ public class DocumentiDirettiService { throw new RuntimeException(e); } }).collect(Collectors.toList()), " OR "); - List artsToTransfer = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), Query.format("WITH uds AS (SELECT *\n" + + List artsToTransfer = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), Query.format("WITH uds AS (SELECT *\n" + " FROM mtb_colt\n" + " WHERE cod_mdep <> {}\n" + " AND (" + whereCondColli + "))\n" + @@ -139,13 +139,14 @@ public class DocumentiDirettiService { " cod_mdep,\n" + " cod_mart,\n" + " partita_mag,\n" + + " mtb_colt.cod_tcol,\n" + " SUM(qta_col) AS qta_col,\n" + " SUM(num_cnf) AS num_cnf\n" + "FROM uds mtb_colt\n" + " INNER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione AND mtb_colt.data_collo = mtb_colr.data_collo AND\n" + " mtb_colt.ser_collo = mtb_colr.ser_collo AND mtb_colt.num_collo = mtb_colr.num_collo\n" + "GROUP BY mtb_colt.data_collo, mtb_colt.ser_collo, mtb_colt.gestione, mtb_colt.num_collo, cod_mdep, partita_mag,cod_mart\n", dtbDoct.getCodMdep(), whereCondColli) - , MvwSitArtUdcDetInventarioDTO.class); + , UlVenditaDTO.class); //controllo che ci sia qualcosa da trasferire @@ -190,7 +191,7 @@ public class DocumentiDirettiService { dtbDoct.setActivityId(activityId); } // - List depositiPartenza = artsToTransfer.stream().map(MvwSitArtUdcDetInventarioDTO::getCodMdep).distinct().collect(Collectors.toList()); + List depositiPartenza = artsToTransfer.stream().map(UlVenditaDTO::getCodMdep).distinct().collect(Collectors.toList()); for (String codMdep : depositiPartenza) { // DtbDoct docTrasf = null; @@ -219,9 +220,9 @@ public class DocumentiDirettiService { } // // - Map> ulToTransf = artsToTransfer.stream() + Map> ulToTransf = artsToTransfer.stream() .filter(ul -> ul.getCodMdep().equalsIgnoreCase(codMdep)) - .collect(groupingBy(MvwSitArtUdcDetInventarioDTO::getArticoloPartita)); + .collect(groupingBy(UlVenditaDTO::getArticoloPartita)); // // @@ -238,10 +239,30 @@ public class DocumentiDirettiService { } row - .setQtaDoc(ulToTransf.get(articoloPartitaDTO).stream().map(MvwSitArtUdcDetInventarioDTO::getQtaCol).reduce(BigDecimal.ZERO, BigDecimal::add)) - .setNumCnf(ulToTransf.get(articoloPartitaDTO).stream().map(MvwSitArtUdcDetInventarioDTO::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add)); + .setQtaDoc(ulToTransf.get(articoloPartitaDTO).stream().map(UlVenditaDTO::getQtaCol).reduce(BigDecimal.ZERO, BigDecimal::add)) + .setNumCnf(ulToTransf.get(articoloPartitaDTO).stream().map(UlVenditaDTO::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add)); } + // + Map> ulForCodTcol = artsToTransfer.stream().filter(x -> !UtilityString.isNullOrEmpty(x.getCodTcol())).collect(groupingBy(UlVenditaDTO::getCodTcol)); + for (String codTcol : ulForCodTcol.keySet()) { + MtbAart mtbAart = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), Query.format("SELECT * from mtb_tcol where cod_tcol = {}", codTcol), MtbAart.class); + if (mtbAart == null || UtilityString.isNullOrEmpty(mtbAart.getCodMart())) + continue; + DtbDocr row = docTrasf.getDtbDocr().stream().filter(docR -> docR.getCodMart().equalsIgnoreCase(mtbAart.getCodMart())).findFirst().orElse(null); + if (row == null) { + row = new DtbDocr(); + row.setCodMart(mtbAart.getCodMart()) + .setQtaDoc(BigDecimal.ZERO) + .setQtaCnf(mtbAart.getQtaCnf()) + .setOperation(OperationType.INSERT); + docTrasf.getDtbDocr().add(row); + } + row.setQtaDoc(BigDecimal.valueOf(ulForCodTcol.get(codTcol).size())); + } + + // + // // @@ -257,7 +278,7 @@ public class DocumentiDirettiService { } - return null; + return dtbDoct; } private HashMap getOldPkDoc(DtbDoct dtbDoct) throws IOException { @@ -396,7 +417,7 @@ public class DocumentiDirettiService { final String keySectionTipoDocResi = "TIPO_DOC_RESI"; - String codDtipPedResi = setupSection.get(keySectionTipoDocResi); + 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)); @@ -488,7 +509,7 @@ public class DocumentiDirettiService { } } - if ( dtbDoctPed == null) { + if (dtbDoctPed == null) { sql = Query.format( "SELECT cod_anag, cod_dtip, data_doc, ser_doc, num_doc\n" + "FROM dtb_doct\n" + @@ -502,7 +523,7 @@ public class DocumentiDirettiService { dtbDoctPed = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class); } - if ( dtbDoctPed == null) { + if (dtbDoctPed == null) { dtbDoctPed = new DtbDoct() .setCodDtip(codDtipPed) @@ -578,7 +599,7 @@ public class DocumentiDirettiService { if (!UtilityString.isNullOrEmpty(activityId)) { List docAgganciati = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), Query.format("SELECT * from dtb_doct where activity_id = {} AND NOT(" + dtbDoct.getPkWhereCond() + ")", activityId), DtbDoct.class); if (!UtilityList.isNullOrEmpty(docAgganciati)) { - docAgganciati = docAgganciati.stream().peek(ul->ul.setOperation(OperationType.DELETE)).collect(Collectors.toList()); + docAgganciati = docAgganciati.stream().peek(ul -> ul.setOperation(OperationType.DELETE)).collect(Collectors.toList()); UtilityEntity.throwEntitiesException(entityProcessor.processEntityList(docAgganciati, multiDBTransactionManager, true)); } } diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java index 4ae0806754..1b63ab14c1 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java @@ -205,7 +205,7 @@ public class ProductionOrderDataHandlerService { try { ggMassimiOrd = Integer.parseInt(setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "MES", "SETUP", "GG_MASSIMI_ORD")); } catch (Exception e) { - logger.error("Setup giorni massimi non configurata!", e); + logger.debug("Setup giorni massimi non configurata!", e); ggMassimiOrd = 14; }