diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20241106145413.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20241106145413.java new file mode 100644 index 0000000000..9c93d6b31f --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20241106145413.java @@ -0,0 +1,29 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20241106145413 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + executeStatement("ALTER TABLE jtb_cicl_cq ADD tipo_valore TINYINT DEFAULT 0 NOT NULL\n" + + "CHECK ([tipo_valore] = 0 OR [tipo_valore] = 1 OR [tipo_valore] = 2 OR [tipo_valore] = 3 OR [tipo_valore] = 4 OR [tipo_valore] = 5 OR [tipo_valore] = 6);", + "EXEC sp_addextendedproperty 'MS_Description', 'Valori possibili: 0 -> Testo, 1 -> Boolean, 2 -> Intero, 3 -> Decimale, 4 -> Date, 5 -> Datetime, 6 -> Time',\n" + + "'SCHEMA', 'dbo', 'TABLE', 'jtb_cicl_cq', 'COLUMN', 'tipo_valore'"); + + executeStatement("ALTER TABLE dtb_ord_cq ADD tipo_valore TINYINT DEFAULT 0 NOT NULL\n" + + "CHECK ([tipo_valore] = 0 OR [tipo_valore] = 1 OR [tipo_valore] = 2 OR [tipo_valore] = 3 OR [tipo_valore] = 4 OR [tipo_valore] = 5 OR [tipo_valore] = 6);", + "EXEC sp_addextendedproperty 'MS_Description', 'Valori possibili: 0 -> Testo, 1 -> Boolean, 2 -> Intero, 3 -> Decimale, 4 -> Date, 5 -> Datetime, 6 -> Time',\n" + + " 'SCHEMA', 'dbo', 'TABLE', 'dtb_ord_cq', 'COLUMN', 'tipo_valore'"); + } + + @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_20241107142940.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20241107142940.java new file mode 100644 index 0000000000..a732161398 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20241107142940.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_20241107142940 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + executeStatement("alter table mtb_colr add cod_art_for varchar(25)"); + } + + @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_20241108132034.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20241108132034.java new file mode 100644 index 0000000000..8dfa5e9a05 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20241108132034.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_20241108132034 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + dropFunction("getListinoVendita_new"); + dropFunction("getListinoVendita_old"); + dropFunction("getPromozioneVendita_new"); + + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/AccountingRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/AccountingRules.java index e5a7ea30db..221e3121b9 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/AccountingRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/AccountingRules.java @@ -620,15 +620,15 @@ public class AccountingRules extends QueryRules { } else { String sql = Query.format( - "SELECT cast(count(*) as bit)" + - " FROM ctb_parr " + - " WHERE cod_anag = %s AND " + - "tipo_anag = %s AND " + - "anno_part = %s AND " + - "ser_doc = %s AND " + - "num_doc = %s AND " + - "id_riga = %s ", - ctbMovr.getCodAnag(), ctbMovr.getTipoAnag(), ctbMovr.getAnnoPart(), ctbMovr.getSerDoc(), ctbMovr.getNumDoc(), ctbMovr.getIdRiga()); + "SELECT cast(case when count(*) > 1 THEN 1 ELSE 0 eND as bit) " + + " FROM ctb_parr " + + " WHERE cod_anag = %s AND " + + "tipo_anag = %s AND " + + "anno_part = %s AND " + + "ser_doc = %s AND " + + "num_doc = %s AND " + + "id_riga = %s ", + ctbMovr.getCodAnag(), ctbMovr.getTipoAnag(), ctbMovr.getAnnoPart(), ctbMovr.getSerDoc(), ctbMovr.getNumDoc(), ctbMovr.getIdRiga()); boolean existRow = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/DtbOrdCq.java b/ems-core/src/main/java/it/integry/ems_model/entity/DtbOrdCq.java index a5e193e277..7e03655611 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/DtbOrdCq.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/DtbOrdCq.java @@ -6,6 +6,7 @@ import it.integry.ems_model.base.EntityBase; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.kie.api.definition.type.PropertyReactive; +import it.integry.ems_model.entity._enum.TipoValore; import java.util.ArrayList; import java.util.Date; @@ -63,6 +64,9 @@ public class DtbOrdCq extends EntityBase { @SqlField(value = "note", maxLength = 1024) private String note; + @SqlField(value = "tipo_valore", nullable = false, defaultObjectValue = "0") + private TipoValore tipoValore; + @EntityChild private List dtbOrdCqr = new ArrayList<>(); @@ -187,6 +191,15 @@ public class DtbOrdCq extends EntityBase { return this; } + public TipoValore getTipoValore() { + return tipoValore; + } + + public DtbOrdCq setTipoValore(TipoValore tipoValore) { + this.tipoValore = tipoValore; + return this; + } + @Override public void checkPreSave() throws Exception { for (DtbOrdCqr dtbOrdCqr : getDtbOrdCqr()) { diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/JtbCiclCq.java b/ems-core/src/main/java/it/integry/ems_model/entity/JtbCiclCq.java index 32ee87aae0..5e7161f1d1 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/JtbCiclCq.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/JtbCiclCq.java @@ -9,6 +9,7 @@ import it.integry.ems_model.base.EntityBase; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.kie.api.definition.type.PropertyReactive; +import it.integry.ems_model.entity._enum.TipoValore; @PropertyReactive @Table(JtbCiclCq.ENTITY) @@ -46,6 +47,9 @@ public class JtbCiclCq extends EntityBase { @SqlField(value = "num_rip", defaultObjectValue = "0") private Integer numRip; + @SqlField(value = "tipo_valore", nullable = false, defaultObjectValue = "0") + private TipoValore tipoValore; + public JtbCiclCq() { super(logger); } @@ -105,4 +109,13 @@ public class JtbCiclCq extends EntityBase { public void setNumRip(Integer numRip) { this.numRip = numRip; } + + public TipoValore getTipoValore() { + return tipoValore; + } + + public JtbCiclCq setTipoValore(TipoValore tipoValore) { + this.tipoValore = tipoValore; + return this; + } } diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/MtbColr.java b/ems-core/src/main/java/it/integry/ems_model/entity/MtbColr.java index 84350d58a2..9b47ac3978 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/MtbColr.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/MtbColr.java @@ -148,6 +148,9 @@ public class MtbColr extends EntityBase implements EquatableEntityInterface { + TESTO((short) 0), + BOOLEAN((short) 1), + INTERO((short) 2), + DECIMALE((short) 3), + DATE((short) 4), + DATETIME((short) 5), + TIME((short) 6); + + private final short value; + + TipoValore(final short value) { + this.value = value; + } + + public static TipoValore from(Object value) { + short castValue = (short) value; + + for (TipoValore b : TipoValore.values()) { + if (b.value == castValue) + return b; + } + + return null; + } + + @JsonValue + public Short getValue() { + return this.value; + } + + @Override + public Object get() { + return this.value; + } + + @Override + public TipoValore fromInternal(Object val) { + return from(val); + } + + @Override + public String toString() { + return String.valueOf(value); + } +} \ No newline at end of file diff --git a/ems-engine/src/main/java/it/integry/ems/document/Telematizzazione/service/TeleService.java b/ems-engine/src/main/java/it/integry/ems/document/Telematizzazione/service/TeleService.java index ff81a4f834..42e8ec029d 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/Telematizzazione/service/TeleService.java +++ b/ems-engine/src/main/java/it/integry/ems/document/Telematizzazione/service/TeleService.java @@ -193,36 +193,36 @@ public class TeleService { if(tipoInvio.compareTo("G")==0){ sql = "SELECT mtb_acc_recc.data_doc as data_doc, "+ - " mtb_acc_recc.tipo_file as tipo_file, "+ - " mtb_acc_recc.cod_acc as cod_acc, "+ - " mtb_acc_recc.data_rif as data_rif, "+ - " mtb_acc_recc.tipo_rec as tipo_rec, "+ - " mtb_acc_recc.tipo_ric as tipo_ric, " + - " mtb_acc_recc.tipo_reg as tipo_reg, "+ - " mtb_acc_recc.cod_uff as cod_uff, "+ - " mtb_acc_recc.anno_prot as anno_prot, "+ - " mtb_acc_recc.num_prot as num_prot," + - " mtb_acc_recc.cod_prod as cod_prod," + - " sum(mtb_acc_recc.lit_anid) as lit_anid, " + - " sum(mtb_acc_recc.lit_idr) as lit_idr, " + - " mtb_acc_recc.tipo_stoc as tipo_stoc, "+ - " mtb_acc_recc.vol_cnf as vol_cnf, "+ - " sum(mtb_acc_recc.num_cnf) as num_cnf," + - " mtb_acc_recc.tipo_doc as tipo_doc, " + - " mtb_acc_recc.num_doc_acc as num_doc_acc, " + - " mtb_acc_recc.tipo_movi as tipo_movi, "+ - " mtb_acc_recc.causale as causale, "+ - " mtb_acc_recc.pos_fisc as pos_fisc, "+ - " case when mtb_acc_recc.causale = " + UtilityDB.valueToString(causaleDistr) + " then 0 else sum(mtb_acc_recc.accisa) end as accisa, " + - " mtb_acc_recc.progr_riga as progr_riga," + - " mtb_acc_recc.nazione as nazione," + - " mtb_acc_recc.mitt_dest as mitt_dest," + - " ctb_nc_intraceer.sezione as sezione," + - " sum(mtb_acc_recc.peso_kg) as peso_kg," + - " sum(mtb_acc_recc.qta_scar) as qta_scar," + - " mtb_acc_recc.num_progr_arc, " + - " mtb_acc_recc.arc, " + - " mtb_acc_recc.dett_arc " + + " mtb_acc_recc.tipo_file as tipo_file, "+ + " mtb_acc_recc.cod_acc as cod_acc, "+ + " mtb_acc_recc.data_rif as data_rif, "+ + " mtb_acc_recc.tipo_rec as tipo_rec, "+ + " mtb_acc_recc.tipo_ric as tipo_ric, " + + " mtb_acc_recc.tipo_reg as tipo_reg, "+ + " mtb_acc_recc.cod_uff as cod_uff, "+ + " mtb_acc_recc.anno_prot as anno_prot, "+ + " mtb_acc_recc.num_prot as num_prot," + + " mtb_acc_recc.cod_prod as cod_prod," + + " sum(mtb_acc_recc.lit_anid) as lit_anid, " + + " sum(mtb_acc_recc.lit_idr) as lit_idr, " + + " mtb_acc_recc.tipo_stoc as tipo_stoc, "+ + " mtb_acc_recc.vol_cnf as vol_cnf, "+ + " sum(mtb_acc_recc.num_cnf) as num_cnf," + + " mtb_acc_recc.tipo_doc as tipo_doc, " + + " mtb_acc_recc.num_doc_acc as num_doc_acc, " + + " mtb_acc_recc.tipo_movi as tipo_movi, "+ + " mtb_acc_recc.causale as causale, "+ + " mtb_acc_recc.pos_fisc as pos_fisc, "+ + " case when mtb_acc_recc.causale = " + UtilityDB.valueToString(causaleDistr) + " then 0 else sum(mtb_acc_recc.accisa) end as accisa, " + + " mtb_acc_recc.progr_riga as progr_riga," + + " mtb_acc_recc.nazione as nazione," + + " mtb_acc_recc.mitt_dest as mitt_dest," + + " ctb_nc_intraceer.sezione as sezione," + + " sum(mtb_acc_recc.peso_kg) as peso_kg," + + " sum(mtb_acc_recc.qta_scar) as qta_scar," + + " mtb_acc_recc.num_progr_arc, " + + " mtb_acc_recc.arc, " + + " mtb_acc_recc.dett_arc " + " FROM mtb_acc_recc, ctb_nc_intraceer, mtb_aart " + " WHERE (mtb_acc_recc.data_reg BETWEEN " + UtilityDB.valueDateToString(dataIniz, CommonConstants.DATE_FORMAT_YMD) +" AND "+UtilityDB.valueDateToString(dataFine, CommonConstants.DATE_FORMAT_YMD)+") AND " + " mtb_aart.cod_nc_intracee = ctb_nc_intraceer.cod_nc_intracee AND "+ @@ -329,7 +329,7 @@ public class TeleService { " mtb_acc_recc.tipo_movi as tipo_movi, "+ " Convert(varchar(1),'')as causale," + " mtb_acc_recc.pos_fisc as pos_fisc," + - " case when mtb_acc_recc.causale = " + UtilityDB.valueToString(causaleDistr) + " then 0 else sum(mtb_acc_recc.accisa) end as accisa, " + + " sum(mtb_acc_recc.accisa) as accisa, " + " mtb_acc_recc.progr_riga as progr_riga," + " Convert(varchar(2),'') as nazione," + " Convert(varchar(20),'') as mitt_dest," + @@ -361,36 +361,36 @@ public class TeleService { " mtb_acc_recc.causale " + " UNION ALL " + "SELECT mtb_acc_recc.data_doc as data_doc, "+ - " mtb_acc_recc.tipo_file as tipo_file, "+ - " mtb_acc_recc.cod_acc as cod_acc, "+ - " mtb_acc_recc.data_rif as data_rif, "+ - " mtb_acc_recc.tipo_rec as tipo_rec, "+ - " mtb_acc_recc.tipo_ric as tipo_ric, " + - " mtb_acc_recc.tipo_reg as tipo_reg, "+ - " mtb_acc_recc.cod_uff as cod_uff, "+ - " mtb_acc_recc.anno_prot as anno_prot, "+ - " mtb_acc_recc.num_prot as num_prot," + - " mtb_acc_recc.cod_prod as cod_prod," + - " sum(mtb_acc_recc.lit_anid) as lit_anid, " + - " sum(mtb_acc_recc.lit_idr) as lit_idr, " + - " mtb_acc_recc.tipo_stoc as tipo_stoc, "+ - " mtb_acc_recc.vol_cnf as vol_cnf, "+ - " sum(mtb_acc_recc.num_cnf) as num_cnf," + - " mtb_acc_recc.tipo_doc as tipo_doc, " + - " mtb_acc_recc.num_doc_acc as num_doc_acc, " + - " mtb_acc_recc.tipo_movi as tipo_movi, "+ - " mtb_acc_recc.causale as causale, "+ - " mtb_acc_recc.pos_fisc as pos_fisc, "+ - " sum(mtb_acc_recc.accisa) as accisa, " + - " mtb_acc_recc.progr_riga as progr_riga," + - " mtb_acc_recc.nazione as nazione," + - " mtb_acc_recc.mitt_dest as mitt_dest," + - " ctb_nc_intraceer.sezione as sezione," + - " sum(mtb_acc_recc.peso_kg) as peso_kg," + - " sum(mtb_acc_recc.qta_scar) as qta_scar," + - " mtb_acc_recc.num_progr_arc, " + - " mtb_acc_recc.arc, " + - " mtb_acc_recc.dett_arc " + + " mtb_acc_recc.tipo_file as tipo_file, "+ + " mtb_acc_recc.cod_acc as cod_acc, "+ + " mtb_acc_recc.data_rif as data_rif, "+ + " mtb_acc_recc.tipo_rec as tipo_rec, "+ + " mtb_acc_recc.tipo_ric as tipo_ric, " + + " mtb_acc_recc.tipo_reg as tipo_reg, "+ + " mtb_acc_recc.cod_uff as cod_uff, "+ + " mtb_acc_recc.anno_prot as anno_prot, "+ + " mtb_acc_recc.num_prot as num_prot," + + " mtb_acc_recc.cod_prod as cod_prod," + + " sum(mtb_acc_recc.lit_anid) as lit_anid, " + + " sum(mtb_acc_recc.lit_idr) as lit_idr, " + + " mtb_acc_recc.tipo_stoc as tipo_stoc, "+ + " mtb_acc_recc.vol_cnf as vol_cnf, "+ + " sum(mtb_acc_recc.num_cnf) as num_cnf," + + " mtb_acc_recc.tipo_doc as tipo_doc, " + + " mtb_acc_recc.num_doc_acc as num_doc_acc, " + + " mtb_acc_recc.tipo_movi as tipo_movi, "+ + " mtb_acc_recc.causale as causale, "+ + " mtb_acc_recc.pos_fisc as pos_fisc, "+ + " case when mtb_acc_recc.causale = " + UtilityDB.valueToString(causaleDistr) + " then 0 else sum(mtb_acc_recc.accisa) end as accisa, " + + " mtb_acc_recc.progr_riga as progr_riga," + + " mtb_acc_recc.nazione as nazione," + + " mtb_acc_recc.mitt_dest as mitt_dest," + + " ctb_nc_intraceer.sezione as sezione," + + " sum(mtb_acc_recc.peso_kg) as peso_kg," + + " sum(mtb_acc_recc.qta_scar) as qta_scar," + + " mtb_acc_recc.num_progr_arc, " + + " mtb_acc_recc.arc, " + + " mtb_acc_recc.dett_arc " + " FROM mtb_acc_recc, ctb_nc_intraceer, mtb_aart " + " WHERE (mtb_acc_recc.data_reg BETWEEN " + UtilityDB.valueDateToString(dataIniz, CommonConstants.DATE_FORMAT_YMD)+" AND "+UtilityDB.valueDateToString(dataFine, CommonConstants.DATE_FORMAT_YMD)+") AND " + " mtb_aart.cod_nc_intracee = ctb_nc_intraceer.cod_nc_intracee AND "+ diff --git a/ems-engine/src/main/java/it/integry/ems/document/dto/CaricoProdFinLavDTO.java b/ems-engine/src/main/java/it/integry/ems/document/dto/CaricoProdFinLavDTO.java index 482eb74224..bef1d4d7da 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/dto/CaricoProdFinLavDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/document/dto/CaricoProdFinLavDTO.java @@ -44,6 +44,7 @@ public class CaricoProdFinLavDTO { private String terminaLavorazioneLinea; private String activityID; private Integer idLotto; + private boolean escludiArticoliGestitiDaWmsInScarico; public String getCodJfas() { return codJfas; @@ -207,6 +208,10 @@ public class CaricoProdFinLavDTO { return terminaLavorazione; } + public boolean isTerminaLavorazione() { + return "S".equalsIgnoreCase(terminaLavorazione); + } + @XmlElement(name = "TERMINA_LAVORAZIONE") public void setTerminaLavorazione(String terminaLavorazione) { this.terminaLavorazione = terminaLavorazione; @@ -361,6 +366,15 @@ public class CaricoProdFinLavDTO { return this; } + public boolean isEscludiArticoliGestitiDaWmsInScarico() { + return escludiArticoliGestitiDaWmsInScarico; + } + + public CaricoProdFinLavDTO setEscludiArticoliGestitiDaWmsInScarico(boolean escludiArticoliGestitiDaWmsInScarico) { + this.escludiArticoliGestitiDaWmsInScarico = escludiArticoliGestitiDaWmsInScarico; + return this; + } + public String getGenerateJson() { return generateJson; } diff --git a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java index 0e8637e514..f50379464a 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java +++ b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java @@ -825,7 +825,7 @@ public class DocumentProdService { docT.getDtbDocr().add(docR); // Chiusura forzata ordine - if ("S".equals(carico.getTerminaLavorazione())) { + if (carico.isTerminaLavorazione()) { DtbOrdt ordT = new DtbOrdt(); ordT.setOperation(OperationType.UPDATE); ordT.setGestione(gestione); @@ -1027,21 +1027,19 @@ public class DocumentProdService { " data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + " AND " + " num_ord = " + UtilityDB.valueToString(numOrd); HashMap datiOrd = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql); - if (datiOrd != null && datiOrd.size() > 0) { + if (datiOrd != null && !datiOrd.isEmpty()) { codProd = (String) datiOrd.get("cod_prod"); partitaMag = (String) datiOrd.get("partita_mag"); } - if (carico.getTerminaLavorazione().compareTo("N") == 0) { + if (carico.isTerminaLavorazione()) { if (codJfas != null) { condFase = "mtb_colt.cod_jfas = " + UtilityDB.valueToString(codJfas); } } - String flagCaricoImmediato = setupGest.getSetupDepo(multiDBTransactionManager.getPrimaryConnection(), "CARICO_SCARICO_PF", "SETUP", "GENERA_CARICO_SCARICO_IMMEDIATO", carico.getCodMdep()); - if (UtilityString.isNullOrEmpty(flagCaricoImmediato)) { - flagCaricoImmediato = "N"; - } + boolean flagCaricoImmediato = setupGest.getSetupDepoBoolean(multiDBTransactionManager.getPrimaryConnection(), "CARICO_SCARICO_PF", "SETUP", "GENERA_CARICO_SCARICO_IMMEDIATO", carico.getCodMdep()); + /*Se la data del documento non è stata passata da fuori allora la data documento dovrà essere quella del collo */ List results = new ArrayList<>(); @@ -1066,7 +1064,7 @@ public class DocumentProdService { sql = UtilityDB.addwhereCond(sql, condFase, false); results = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DataDocFromCollo.class); - if ((results == null || results.size() == 0) && "S".equals(carico.getTerminaLavorazione()) && flagCaricoImmediato.compareTo("N") == 0) { + if ((results == null || results.isEmpty()) && "S".equals(carico.getTerminaLavorazione()) && !flagCaricoImmediato) { throw new Exception("Non ci sono colli di produzione generati per la produzione in corso"); } } else { @@ -1120,7 +1118,7 @@ public class DocumentProdService { loadColli.setColli(colli); - if (loadColli.getColli() != null && loadColli.getColli().size() > 0) { + if (loadColli.getColli() != null && !loadColli.getColli().isEmpty()) { DtbDoct docT = null; docT = loadColliService.createDocFromColli(multiDBTransactionManager, loadColli); docT @@ -1136,7 +1134,7 @@ public class DocumentProdService { } // Chiusura forzata ordine - if ("S".equals(carico.getTerminaLavorazione())) { + if (carico.isTerminaLavorazione()) { DtbOrdt ordT = new DtbOrdt() .setGestione(gestione) .setDataOrd(dataOrd) @@ -1664,50 +1662,28 @@ public class DocumentProdService { Connection conn = multiDBTransactionManager.getPrimaryConnection(); // Acquisizione dati configurazione e passati dall'esterno - String scaricoUnico = setupGest.getSetup(conn, "CARICO_SCARICO_PF", "SETUP", "SCARICO_UNICO"); //todo Creare query su STB_GEST_SEUP - String generateLotto = setupGest.getSetup(conn, "W_PORDI_RC", "GENERA_LOTTO_PROD", "GENERA_LOTTO"); - if (UtilityString.isNullOrEmpty(generateLotto)) { - generateLotto = "N"; - } + boolean scaricoUnico = setupGest.getSetupBoolean(conn, "CARICO_SCARICO_PF", "SETUP", "SCARICO_UNICO"); //todo Creare query su STB_GEST_SEUP + boolean generateLotto = setupGest.getSetupBoolean(conn, "W_PORDI_RC", "GENERA_LOTTO_PROD", "GENERA_LOTTO"); + String gestione = carico.getGestione(); Integer numOrd = carico.getNumOrd(); Date dataOrd = carico.getDataOrd(); Date dataProd = carico.getDataProd(); - String effettuaScaricoMateriali = carico.getEffettuaScaricoMateriali(); - String effettuaCaricoProdotto = carico.getEffettuaCaricoProdotto(); Date dataDoc = carico.getDataDoc(); String codAnag = carico.getCodAnag(); String codMdep = carico.getCodMdep(); String codMdepScar = carico.getCodMdepScar(); String codDtipScar = carico.getCodDtipScar(); - String terminaLavorazione = carico.getTerminaLavorazione(); String serDoc = carico.getSerDoc(); Date dataVersamento = carico.getDataVersamento(); - String creaColloVersaDaColloCarico = carico.getCreaColloVersDaColloCarico(); - String creaScaricoDaCollo = carico.getCreaScaricoDaCollo(); // Impostazione default - if (UtilityString.isNullOrEmpty(creaScaricoDaCollo)) { - creaScaricoDaCollo = "N"; - } - if (UtilityString.isNullOrEmpty(effettuaScaricoMateriali)) { - effettuaScaricoMateriali = "S"; - } - if (UtilityString.isNullOrEmpty(effettuaCaricoProdotto)) { - effettuaCaricoProdotto = "S"; - } if (UtilityString.isNullOrEmpty(codMdepScar)) { codMdepScar = codMdep; } - if (UtilityString.isNullOrEmpty(terminaLavorazione)) { - terminaLavorazione = "N"; - } if (UtilityString.isNullOrEmpty(serDoc)) { serDoc = null; } - if (UtilityString.isNullOrEmpty(scaricoUnico)) { - scaricoUnico = "N"; - } String order = setupGest.getSetupDepo(conn, "CARICO_SCARICO_PF", "SETUP", "ORDINAMENTO_PARTITA", codMdep); if (order == null) { @@ -1734,7 +1710,7 @@ public class DocumentProdService { " isnull(ordL.cod_jfas, jtb_cicl.cod_jfas) as cod_jfas, " + " ordL.cod_jcom, " + " jtb_lotr.id_lotto, " + - " jtb_lotr.cod_jfas, " + + " jtb_lotr.cod_jfas AS cod_jfas_lotto, " + " dtb_ordr.num_cnf " + " FROM dtb_ordt ordL LEFT OUTER JOIN jtb_lotr ON ordL.gestione = jtb_lotr.gestione AND " + " ordL.data_ord = jtb_lotr.data_ord AND " + @@ -1751,30 +1727,24 @@ public class DocumentProdService { " ordL.data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + " AND " + " ordL.num_ord = " + UtilityDB.valueToString(numOrd); - info = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); - res = info.executeQuery(); - Integer rows = UtilityDB.countRow(res); - if (rows == 0) { - throw new Exception("L'ordine di lavorazione n." + UtilityDB.valueToString(numOrd) + " del " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + " e/o la distinta corrispondente presentano delle anomalie."); - } - while (res.next()) { - codProd = res.getString(1); - untMisProd = res.getString(2); - rapConvProd = res.getBigDecimal(3); - partitaMagProd = res.getString(4); - codJfas = res.getString(5); - codJcom = res.getString(6); - idLotto = res.getInt(7); - codJfasLotto = res.getString(8); - numCnfProd = res.getBigDecimal(9); - } - res.close(); - info.close(); + final HashMap resultOrd = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql); + + codProd = UtilityHashMap.getValueIfExists(resultOrd, "cod_prod"); + untMisProd = UtilityHashMap.getValueIfExists(resultOrd, "unt_mis_prod"); + rapConvProd = UtilityHashMap.getValueIfExists(resultOrd, "rap_conv_prod"); + partitaMagProd = UtilityHashMap.getValueIfExists(resultOrd, "partita_mag"); + codJfas = UtilityHashMap.getValueIfExists(resultOrd, "cod_jfas"); + codJcom = UtilityHashMap.getValueIfExists(resultOrd, "cod_jcom"); + idLotto = UtilityHashMap.getValueIfExists(resultOrd, "id_lotto"); + codJfasLotto = UtilityHashMap.getValueIfExists(resultOrd, "cod_jfas_lotto"); + numCnfProd = UtilityHashMap.getValueIfExists(resultOrd, "num_cnf"); + // Acquisizione dati prodotto dall'estetno BigDecimal qtaProdUMMag = carico.getProdotti().getRow().get(0).getQtaProdAna(); BigDecimal numConf = carico.getProdotti().getRow().get(0).getNumCart(); BigDecimal qtaProd = qtaProdUMMag.divide(rapConvProd, 5, RoundingMode.HALF_UP); + if (numConf == null) { numConf = BigDecimal.ZERO; } @@ -1787,7 +1757,7 @@ public class DocumentProdService { // Se è attiva l'opzione scarico unico allora lo scarico degli imnballaggi e delle materie prime deve essere // fatto sempre sullo stesso documento nella giornata BigDecimal qtaProdScaricoPrec = BigDecimal.ZERO; - if (scaricoUnico.compareTo("S") == 0) { + if (scaricoUnico) { sql = " SELECT dtb_doct.num_doc, " + " dtb_doct.ser_doc, " + @@ -1799,17 +1769,12 @@ public class DocumentProdService { " dtb_doct.data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + " AND " + " dtb_doct.num_ord = " + UtilityDB.valueToString(numOrd); - info = conn.prepareStatement(sql); - res = info.executeQuery(); + final HashMap resultDtbDoct = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql); + existScar = resultDtbDoct != null && !resultDtbDoct.isEmpty(); - while (res.next()) { - existScar = true; - numDoc = res.getInt(1); - serDoc = res.getString(2); - qtaProdScaricoPrec = res.getBigDecimal(3); - } - res.close(); - info.close(); + numDoc = UtilityHashMap.getValueIfExists(resultDtbDoct, "num_doc"); + serDoc = UtilityHashMap.getValueIfExists(resultDtbDoct, "ser_doc"); + qtaProdScaricoPrec = UtilityHashMap.getValueIfExists(resultDtbDoct, "qta_prod"); } // Creazione testata documento di scarico (Imballaggi e materiali se presenti) @@ -1841,7 +1806,7 @@ public class DocumentProdService { arrayEntity.add(docT); // Creazione riga commento - if (scaricoUnico.compareTo("S") == 0) { + if (scaricoUnico) { DtbDocr docR = new DtbDocr(); docR.setOperation(OperationType.INSERT); docR.setDescrizione("PRODUZIONE DELLE " + new SimpleDateFormat(CommonConstants.DATETIME_FORMAT_DMY).format(new Date())); @@ -1850,7 +1815,7 @@ public class DocumentProdService { // Aggancio condizione che esclude eventuali materiali già presenti in colli di versamento String tableMPScarDaCollo = "", condMPScarDaCollo = ""; - if ("S".compareTo(creaScaricoDaCollo) == 0) { + if (carico.isCreaScaricoDaCollo()) { condMPScarDaCollo = "righeOrdScar.num_ord is null"; tableMPScarDaCollo = "LEFT OUTER JOIN ( select distinct mtb_colt.gestione, mtb_colr.data_ord, mtb_colr.num_ord, mtb_colr.riga_ord " + " from mtb_colt, mtb_colr " + @@ -1885,15 +1850,14 @@ public class DocumentProdService { " dtb_ordr.num_fase, " + " round(dtb_ordt.qta_evasa_prod * dtb_ordt.rap_conv_prod, 5), " + " dbo.f_getTipoGruppoMP(dtb_ordr.cod_mart) as gruppo_conto_mp " + - " FROM dtb_ordt, " + - " mtb_aart, " + - " dtb_ordr " + + " FROM dtb_ordt " + + " INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione " + + " AND dtb_ordt.data_ord = dtb_ordr.data_ord " + + " AND dtb_ordt.num_ord = dtb_ordr.num_ord " + + " INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart " + + (carico.isEscludiArticoliGestitiDaWmsInScarico() ? " INNER JOIN dbo.mvw_articoli_esclusi_wms mdaew ON mtb_aart.cod_mart = mdaew.cod_mart " : "") + tableMPScarDaCollo + - " WHERE dtb_ordr.cod_mart = mtb_aart.cod_mart AND " + - " dtb_ordt.gestione = dtb_ordr.gestione AND " + - " dtb_ordt.data_ord = dtb_ordr.data_ord AND " + - " dtb_ordt.num_ord = dtb_ordr.num_ord AND " + - " dtb_ordr.flag_evaso_forzato = 'N' AND " + + " WHERE dtb_ordr.flag_evaso_forzato = 'N' AND " + " dtb_ordr.gestione = " + UtilityDB.valueToString(gestione) + " AND " + " dtb_ordr.data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + " AND " + " dtb_ordr.num_ord = " + UtilityDB.valueToString(numOrd); @@ -2014,7 +1978,7 @@ public class DocumentProdService { infoDati = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); resDati = infoDati.executeQuery(); - rows = UtilityDB.countRow(resDati); + int rows = UtilityDB.countRow(resDati); while (resDati.next()) { Integer rigaOrdMate = resDati.getInt(1); BigDecimal qtaDaScaricareOrd = resDati.getBigDecimal(2); @@ -2197,7 +2161,7 @@ public class DocumentProdService { // Verifica chiusura lotto di produzione se tutti gli ordini ad esso associati sono evasi Integer ordInevasi = null; - if ("S".equals(terminaLavorazione) && "S".equals(generateLotto)) { + if (carico.isTerminaLavorazione() && generateLotto) { sql = " SELECT ISNULL(sum(CASE WHEN flag_evaso_prod = 'I' THEN 1 ELSE 0 END), 0) as ordini_inevasi " + " FROM jtb_lotr, " + @@ -2225,7 +2189,7 @@ public class DocumentProdService { lotT.setIdLotto(idLotto); lotT.setCodJfas(codJfasLotto); lotT.setDataChiusura(dataDoc); - lotT.setFlagComp(terminaLavorazione); + lotT.setFlagComp(carico.isTerminaLavorazione() ? "S" : "N"); arrayEntity.add(lotT); } }