|
|
|
|
@@ -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<String, Object> 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<DataDocFromCollo> 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<String, Object> 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<String, Object> 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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|