diff --git a/ems-core/src/main/java/it/integry/ems/migration/_base/IntegryCustomer.java b/ems-core/src/main/java/it/integry/ems/migration/_base/IntegryCustomer.java index b896bf3325..70e7c81937 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/_base/IntegryCustomer.java +++ b/ems-core/src/main/java/it/integry/ems/migration/_base/IntegryCustomer.java @@ -8,7 +8,7 @@ public enum IntegryCustomer { IntegryCustomerDB.Agricoper_IlVisone, IntegryCustomerDB.Agricoper_Luva), - ATI(IntegryCustomerDB.ATI_Finpart), + ATI(IntegryCustomerDB.ATI, IntegryCustomerDB.ATI_Finpart), Auricchio(IntegryCustomerDB.Auricchio_Auricchio, IntegryCustomerDB.Auricchio_AuricchioMiki, IntegryCustomerDB.Auricchio_AuricchioSrl, diff --git a/ems-core/src/main/java/it/integry/ems/migration/_base/IntegryCustomerDB.java b/ems-core/src/main/java/it/integry/ems/migration/_base/IntegryCustomerDB.java index c6f62c9889..27bda341f7 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/_base/IntegryCustomerDB.java +++ b/ems-core/src/main/java/it/integry/ems/migration/_base/IntegryCustomerDB.java @@ -9,7 +9,9 @@ public enum IntegryCustomerDB { Agricoper_IlVisone("ilvisone"), Agricoper_Luva("luva"), + ATI("atisrl"), ATI_Finpart("Finpart"), + Auricchio_Auricchio("auricchio"), Auricchio_AuricchioMiki("auricchio_miki"), Auricchio_AuricchioSrl("auricchiosrl"), @@ -31,6 +33,7 @@ public enum IntegryCustomerDB { Carelli_Chiuso("chiuso"), Carelli_Format("format"), Carelli_Murgia("murgia"), + Carelli_MurgiaTest("murgia_test"), Carelli_Panimal("panimal"), Carelli_Winact("winact"), Carelli_Csgr("csgr"), diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251114150912.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251114150912.java new file mode 100644 index 0000000000..1615692ad9 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251114150912.java @@ -0,0 +1,19 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20251114150912 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + executeStatement("ALTER TABLE jtb_comt ADD data_mod DATETIME"); + } + + @Override + public void down() throws Exception { + } +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251114163222.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251114163222.java new file mode 100644 index 0000000000..fd6a5efcc8 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251114163222.java @@ -0,0 +1,21 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20251114163222 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + executeStatement("ALTER TABLE vtb_dest ADD data_mod DATETIME"); + executeStatement("ALTER TABLE ptb_pros ADD data_mod DATETIME"); + executeStatement("ALTER TABLE ptb_pros_rif ADD data_mod DATETIME"); + } + + @Override + public void down() throws Exception { + } +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251117142928.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251117142928.java new file mode 100644 index 0000000000..4119c91f78 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251117142928.java @@ -0,0 +1,29 @@ +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.IntegryCustomerDB; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20251117142928 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'"); + createSetup("W_jriep_presenze_dip_disp", "SETUP", "SET_DATA_FINE", "N", +"imposta data fine = fine mese", false, "SI_NO", false, false, +false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'"); + + if (isCustomer(IntegryCustomer.Integry)) + updateSetupValue("W_jriep_presenze_dip_disp", "SETUP", "SET_DATA_FINE", "S"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251117170957.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251117170957.java new file mode 100644 index 0000000000..9d8e9968dc --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20251117170957.java @@ -0,0 +1,33 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomerDB; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20251117170957 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm)) + return; + + executeStatement("update stb_gest_setup set value = 'S' where gest_name = 'DTB_ORDT' and key_section in ('NUOVA_PROCEDURA','DISABLE_TRIGGER_ORDL')"); + executeStatement("update stb_gest_sync set syncronize = 'R' where gest_name like 'lord%'"); + executeStatement("update stb_gest_sync set syncronize = 'R' where gest_name like 'pord%'"); + executeStatement("insert into stb_abil \n" + + "select case when gest_name = 'lordi' then 'LG081' else 'AG031' end , user_name, 'S', case when gest_name = 'lordi' then 'lordi_tab' else 'pordi_tab' end from stb_abil \n" + + "where gest_name in ('lordi','pordi') and case when gest_name = 'lordi' then 'LG081' else 'AG031' end + user_name not in (select cod_opz + user_name from stb_abil where cod_opz in ('LG081','AG031'))"); + executeStatement("update stb_abil set flag_abil = 'N' where gest_name in ('lordi','pordi')"); + + + + + } + + @Override + public void down() throws Exception { + } +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java b/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java index 00d7e7001b..fa5949d2bb 100644 --- a/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java +++ b/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java @@ -165,13 +165,13 @@ public class GeneraOrdLav { String activityID = dtbOrdt.getActivityId(); boolean existActivity = !UtilityString.isNullOrEmpty(activityID); - HashMap datiOrdine = null; + if (existOrd && row.getOperation() == OperationType.UPDATE) { - datiOrdine = checkOrdLav(conn, ordProdSetupDTO.isCheckLockProd(), row.getGestione(), row.getDataOrd(), row.getNumOrd(), row.getRigaOrd()); - activityID = UtilityHashMap.getValueIfExists(datiOrdine, "activity_id"); + datiOrdLav = checkOrdLav(conn, ordProdSetupDTO.isCheckLockProd(), row.getGestione(), row.getDataOrd(), row.getNumOrd(), row.getRigaOrd()); + activityID = UtilityHashMap.getValueIfExists(datiOrdLav, "activity_id"); // Verifica su รจ stato passato l'operatore dall'esterno if (codJflavLav == null) { - codJflavLav = UtilityHashMap.getValueIfExists(datiOrdine, "cod_jflav"); + codJflavLav = UtilityHashMap.getValueIfExists(datiOrdLav, "cod_jflav"); } } @@ -230,8 +230,8 @@ public class GeneraOrdLav { if (!existOrd) { numOrdLav = OrderRules.completeNumOrd(conn, gestioneLav, dataOrd, null); } else { - numOrdLav = UtilityHashMap.getValueIfExists(datiOrdine, "num_ord"); - dataOrd = UtilityHashMap.getValueIfExists(datiOrdine, "data_ord"); + numOrdLav = UtilityHashMap.getValueIfExists(datiOrdLav, "num_ord"); + dataOrd = UtilityHashMap.getValueIfExists(datiOrdLav, "data_ord"); } row.setNumOrdRif(numOrdLav); diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/JtbComt.java b/ems-core/src/main/java/it/integry/ems_model/entity/JtbComt.java index 82efb2be9d..9661ad580d 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/JtbComt.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/JtbComt.java @@ -6,6 +6,7 @@ import it.integry.ems_model.annotation.*; import it.integry.ems_model.base.EntityBase; import org.kie.api.definition.type.PropertyReactive; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; import java.util.ArrayList; @@ -132,6 +133,9 @@ public class JtbComt extends EntityBase { @SqlField(value = "rif_comm", maxLength = 255) private String rifComm; + @SqlField(value = "data_mod", defaultObjectValue = CommonConstants.TIMESTAMP) + private LocalDateTime dataMod; + @EntityChild private List jrlDisOrd = new ArrayList<>(); @@ -468,6 +472,15 @@ public class JtbComt extends EntityBase { this.rifComm = rifComm; } + public LocalDateTime getDataMod() { + return dataMod; + } + + public JtbComt setDataMod(LocalDateTime dataMod) { + this.dataMod = dataMod; + return this; + } + public List getJrlDisOrd() { return jrlDisOrd; } diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/PtbPros.java b/ems-core/src/main/java/it/integry/ems_model/entity/PtbPros.java index 2fa4e8dace..af649768a8 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/PtbPros.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/PtbPros.java @@ -6,6 +6,7 @@ import it.integry.ems_model.annotation.*; import it.integry.ems_model.base.EntityBase; import org.kie.api.definition.type.PropertyReactive; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; import java.util.ArrayList; @@ -153,6 +154,9 @@ public class PtbPros extends EntityBase { @SqlField(value = "flag_stato_pros", nullable = false, defaultObjectValue = "1") private Boolean flagStatoPros; + @SqlField(value = "data_mod", defaultObjectValue = CommonConstants.TIMESTAMP) + private LocalDateTime dataMod; + @EntityChild private List ptbProsRif = new ArrayList<>(); @@ -558,6 +562,15 @@ public class PtbPros extends EntityBase { this.flagStatoPros = flagStatoPros; } + public LocalDateTime getDataMod() { + return dataMod; + } + + public PtbPros setDataMod(LocalDateTime dataMod) { + this.dataMod = dataMod; + return this; + } + public List getPtbDest() { return ptbDest; } diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/PtbProsRif.java b/ems-core/src/main/java/it/integry/ems_model/entity/PtbProsRif.java index 3c051dd2ac..22f7bdeeb8 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/PtbProsRif.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/PtbProsRif.java @@ -1,6 +1,7 @@ package it.integry.ems_model.entity; import com.fasterxml.jackson.annotation.JsonTypeName; +import it.integry.common.var.CommonConstants; import it.integry.ems_model.annotation.PK; import it.integry.ems_model.annotation.SqlDetailId; import it.integry.ems_model.annotation.SqlField; @@ -10,6 +11,8 @@ import org.kie.api.definition.type.PropertyReactive; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.time.LocalDateTime; + @PropertyReactive @Table(PtbProsRif.ENTITY) @JsonTypeName(PtbProsRif.ENTITY) @@ -48,6 +51,9 @@ public class PtbProsRif extends EntityBase { @SqlField(value = "telefono", maxLength = 40) private String telefono; + @SqlField(value = "data_mod", defaultObjectValue = CommonConstants.TIMESTAMP) + private LocalDateTime dataMod; + public PtbProsRif() { super(logger); } @@ -123,4 +129,13 @@ public class PtbProsRif extends EntityBase { this.telefono = telefono; return this; } + + public LocalDateTime getDataMod() { + return dataMod; + } + + public PtbProsRif setDataMod(LocalDateTime dataMod) { + this.dataMod = dataMod; + return this; + } } diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/VtbDest.java b/ems-core/src/main/java/it/integry/ems_model/entity/VtbDest.java index f6fe17fb1c..1b5e9d98ad 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/VtbDest.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/VtbDest.java @@ -1,6 +1,7 @@ package it.integry.ems_model.entity; import com.fasterxml.jackson.annotation.JsonTypeName; +import it.integry.common.var.CommonConstants; import it.integry.ems_model.annotation.EntityChild; import it.integry.ems_model.annotation.PK; import it.integry.ems_model.annotation.SqlField; @@ -12,6 +13,7 @@ import org.apache.logging.log4j.Logger; import org.kie.api.definition.type.PropertyReactive; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -225,6 +227,9 @@ public class VtbDest extends EntityBase implements EquatableEntityInterface retrieveCommesse(LocalDate dateFilter) throws Exception { - if (dateFilter != null) return null; - - String sql = "SELECT * FROM jtb_comt"; + if (dateFilter == null) + return UtilityDB.executeSimpleQueryDTO( + multiDBTransactionManager.getPrimaryConnection(), + "SELECT * FROM jtb_comt", JtbComt.class); + String sql = "SELECT * FROM jtb_comt WHERE data_mod >= " + UtilityDB.valueToString(dateFilter); return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, JtbComt.class); } @@ -867,7 +869,11 @@ public class CrmService { String sql = "SELECT * FROM ptb_pros WHERE cod_anag IS NULL"; if (requestDTO.getFilterDate() != null) - sql = UtilityDB.addwhereCond(sql, "data_ins >= " + UtilityDB.valueToString(requestDTO.getFilterDate()), false); + sql = UtilityDB.addwhereCond( + sql, + "data_ins >= " + UtilityDB.valueToString(requestDTO.getFilterDate()) + " OR data_mod >= " + UtilityDB.valueToString(requestDTO.getFilterDate()), + true + ); if (requestDTO.getPartitaIva() != null) sql = UtilityDB.addwhereCond(sql, "part_iva = " + UtilityDB.valueToString(requestDTO.getPartitaIva()), false); @@ -880,19 +886,13 @@ public class CrmService { ); if (requestDTO.ReturnPersRif()) { - if (requestDTO.getFilterDate() == null) { - sql = "SELECT *\n" + - "FROM ptb_pros_rif\n" + - "WHERE EXISTS(SELECT * FROM ptb_pros WHERE ptb_pros.cod_anag IS NULL AND ptb_pros.cod_ppro = ptb_pros_rif.cod_ppro)"; - } else { - sql = Query.format( - "SELECT *\n" + - "FROM ptb_pros_rif\n" + - "WHERE EXISTS(SELECT * FROM ptb_pros WHERE ptb_pros.cod_anag IS NULL\n" + - " AND data_ins >= %s\n" + - " AND ptb_pros.cod_ppro = ptb_pros_rif.cod_ppro)", - requestDTO.getFilterDate() - ); + sql = "SELECT *\n" + + "FROM ptb_pros_rif\n" + + "WHERE EXISTS(SELECT * FROM ptb_pros WHERE ptb_pros.cod_anag IS NULL AND ptb_pros.cod_ppro = ptb_pros_rif.cod_ppro)"; + + if (requestDTO.getFilterDate() != null) { + sql = UtilityDB.addwhereCond( + sql, "data_mod >= " + UtilityDB.valueToString(requestDTO.getFilterDate()), false); } taskSyncResponse.setPtbProsRif( @@ -961,6 +961,11 @@ public class CrmService { "FROM vtb_dest\n" + "WHERE EXISTS(SELECT * FROM vtb_clie WHERE vtb_clie.cod_anag = vtb_dest.cod_anag)"; + if (requestDTO.getFilterDate() != null) { + sql = UtilityDB.addwhereCond( + sql, "data_mod >= " + UtilityDB.valueToString(requestDTO.getFilterDate()), false); + } + if (requestDTO.getCodAnag() != null) sql = UtilityDB.addwhereCond(sql, "cod_anag = " + UtilityDB.valueToString(requestDTO.getCodAnag()), false); @@ -972,6 +977,11 @@ public class CrmService { "FROM vtb_clie_pers_rif\n" + "WHERE EXISTS(SELECT * FROM vtb_clie WHERE vtb_clie.cod_anag = vtb_clie_pers_rif.cod_anag)"; + if (requestDTO.getFilterDate() != null) { + sql = UtilityDB.addwhereCond( + sql, "data_ult_agg >= " + UtilityDB.valueToString(requestDTO.getFilterDate()), false); + } + if (requestDTO.getCodAnag() != null) sql = UtilityDB.addwhereCond(sql, "cod_anag = " + UtilityDB.valueToString(requestDTO.getCodAnag()), false); diff --git a/ems-engine/src/main/java/it/integry/ems/order/service/OrdiniVSlim2kService.java b/ems-engine/src/main/java/it/integry/ems/order/service/OrdiniVSlim2kService.java index 5c55b1af9c..4cc4500279 100644 --- a/ems-engine/src/main/java/it/integry/ems/order/service/OrdiniVSlim2kService.java +++ b/ems-engine/src/main/java/it/integry/ems/order/service/OrdiniVSlim2kService.java @@ -34,12 +34,10 @@ public class OrdiniVSlim2kService { public List modificaQtaCnf(MultiDBTransactionManager multiDBTransactionManager, List ordini) throws Exception { List entities = new ArrayList<>(); Map> groupOrdini = ordini.stream() - .collect(Collectors.groupingBy(x -> { - return new DtbOrdt() - .setGestione(x.getGestione()) - .setDataOrd(x.getDataOrd()) - .setNumOrd(x.getNumOrd()); - } + .collect(Collectors.groupingBy(x -> new DtbOrdt() + .setGestione(x.getGestione()) + .setDataOrd(x.getDataOrd()) + .setNumOrd(x.getNumOrd()) )); List> articoli = new ArrayList<>(); @@ -47,12 +45,17 @@ public class OrdiniVSlim2kService { for(DtbOrdt ord : groupOrdini.keySet()) { for (DtbOrdr dtbOrdr : groupOrdini.get(ord)) { + String sql = + Query.format("SELECT * FROM dtb_ordt WHERE gestione = %s AND data_ord = %s AND num_ord = %s", + ord.getGestione(), ord.getDataOrd(), ord.getNumOrd()); + + ord = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class); BigDecimal qtaCnf; Optional> articolo = articoli.stream().filter(x -> ((String) x.get("cod_mart")).equalsIgnoreCase(dtbOrdr.getCodMart())).findFirst(); if (articolo.isPresent()) { qtaCnf = (BigDecimal) articolo.get().get("qta_cnf"); } else { - String sql = Query.format("SELECT cod_mart, qta_cnf FROM mtb_aart WHERE cod_mart = %s", dtbOrdr.getCodMart()); + sql = Query.format("SELECT cod_mart, qta_cnf FROM mtb_aart WHERE cod_mart = %s", dtbOrdr.getCodMart()); HashMap datiArt = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql); articoli.add(datiArt); qtaCnf = (BigDecimal) datiArt.get("qta_cnf"); @@ -64,13 +67,16 @@ public class OrdiniVSlim2kService { } else { dtbOrdr.setQtaOrd(dtbOrdr.getNumCnf().multiply(qtaCnf)); } + dtbOrdr.setOperation(OperationType.UPDATE); ord.getDtbOrdr().add(dtbOrdr); } - entityProcessor.processEntity(ord, multiDBTransactionManager); + entityProcessor.processEntity(ord, multiDBTransactionManager, false); - Optional> exportOpt = export.stream().filter(x -> ((String) x.get("cod_anag")).equalsIgnoreCase(ord.getCodAnag())).findFirst(); + DtbOrdt finalOrd = ord; + Optional> exportOpt = export.stream() + .filter(x -> ((String) x.get("cod_anag")).equalsIgnoreCase(finalOrd.getCodAnag())).findFirst(); HashMap datiExport; if ( exportOpt.isPresent() ) { datiExport = exportOpt.get(); diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java index bfdb3cbdd0..0a976e8f41 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java @@ -415,6 +415,7 @@ public class ProductionOrdersLifecycleService { .setGestioneRif(dtbOrdtP.getGestione()) .setDataOrdRif(dtbOrdtP.getDataOrd()) .setNumOrdRif(dtbOrdtP.getNumOrd()) + .setDataConsProd(dataOrd) .setRigaOrdRif(rigaOrdProd); if (!oldPk.isEmpty()) { dtbOrdl.setOldPk(oldPk); @@ -437,7 +438,7 @@ public class ProductionOrdersLifecycleService { DtbOrdSteps lastStep = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdSteps.class); lastStep.setFlagStepAttivo("N"); - lastStep.setOperation(OperationType.UPDATE); + lastStep.setOperation(OperationType.INSERT_OR_UPDATE); dtbOrdl.getDtbOrdSteps().add(lastStep); DtbOrdSteps dtbOrdSteps = (DtbOrdSteps) lastStep.deepClone();