Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -99,6 +99,7 @@ public class EntityHierarchy {
|
||||
private java.lang.reflect.Field field;
|
||||
private Identity identity;
|
||||
private SqlField sqlField;
|
||||
private ImportFromParent importFromParent;
|
||||
private ObjectStorage objectStorage;
|
||||
private Blob blob;
|
||||
private Clob clob;
|
||||
@@ -116,6 +117,10 @@ public class EntityHierarchy {
|
||||
return sqlField != null;
|
||||
}
|
||||
|
||||
public boolean isImportFromParent() {
|
||||
return importFromParent != null;
|
||||
}
|
||||
|
||||
public boolean isObjectStorage() {
|
||||
return objectStorage != null;
|
||||
}
|
||||
@@ -150,6 +155,15 @@ public class EntityHierarchy {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ImportFromParent getImportFromParent() {
|
||||
return importFromParent;
|
||||
}
|
||||
|
||||
public Field setImportFromParent(ImportFromParent importFromParent) {
|
||||
this.importFromParent = importFromParent;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ObjectStorage getObjectStorage() {
|
||||
return objectStorage;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20240913102433 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("PICKING", "PICKING_LIBERO", "FLAG_ASK_COMMESSA_LAV", "N",
|
||||
"Se 'S' allora all'apertura del Picking Libero di lavorazione verrà chiesta la commessa", false, "SI_NO", false, false,
|
||||
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
|
||||
|
||||
createSetup("PICKING", "PRODUZIONE", "FLAG_GENERA_DOC_CAR", "N",
|
||||
"Se 'S' abilita la generazione dei documenti di carico lavorazione. Il codice documento è letto dalla setup W_PORDI_RC > SETUP_DOCUMENTI > COD_DTIP_CAR.", false, "SI_NO", false, false,
|
||||
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
|
||||
|
||||
createSetup("PICKING", "PRODUZIONE", "FLAG_GENERA_DOC_SCAR", "N",
|
||||
"Se 'S' abilita la generazione dei documenti di scarico lavorazione. Il codice documento è letto dalla setup W_PORDI_RC > SETUP_DOCUMENTI > COD_DTIP_SCAR.", false, "SI_NO", false, false,
|
||||
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
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.MigrationModelInterface;
|
||||
|
||||
public class Migration_20241023183023 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if (isCustomer(IntegryCustomer.Maggio)) {
|
||||
updateSetupValue("COLLI", "COLLI_DA_PRODUZIONE", "AUTO_START", "S");
|
||||
updateSetupValue("COLLI", "COLLI_DA_PRODUZIONE", "AUTO_STOP", "S");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,342 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20241024090337 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
executeStatement("alter table mtb_lisa_data add qta_cnf numeric (15,5)");
|
||||
|
||||
createOrUpdateFunction("getListinoAcquisto",
|
||||
"CREATE FUNCTION [dbo].[getListinoAcquisto] (@datavalidita DATETIME, @codalis VARCHAR(5), @codartfor VARCHAR(25), @codmart VARCHAR(15), @viewpromo VARCHAR(1), @codmdep VARCHAR(5))\n" +
|
||||
" RETURNS TABLE AS\n" +
|
||||
" RETURN\n" +
|
||||
" SELECT listino_base.cod_alis,\n" +
|
||||
" listino_base.descrizione,\n" +
|
||||
" ISNULL(promozioni.versione, listino_base.versione) AS versione,\n" +
|
||||
" ISNULL(promozioni.data_iniz, listino_base.data_iniz) AS data_iniz,\n" +
|
||||
" ISNULL(promozioni.data_fine, listino_base.data_fine) AS data_fine,\n" +
|
||||
" ISNULL(promozioni.cod_promo, listino_base.cod_promo) AS cod_promo,\n" +
|
||||
" ISNULL(promozioni.note_listino, listino_base.note_listino) AS note_listino,\n" +
|
||||
" promozioni.flag_tipo_promo,\n" +
|
||||
" listino_base.cod_divi_acq,\n" +
|
||||
" listino_base.expression_costo,\n" +
|
||||
" listino_base.cod_mart,\n" +
|
||||
" listino_base.cod_art_for,\n" +
|
||||
" listino_base.unt_mis_acq,\n" +
|
||||
" listino_base.rap_conv,\n" +
|
||||
" ISNULL(promozioni.prz_acq, listino_base.prz_acq) AS prz_acq,\n" +
|
||||
" ISNULL(promozioni.perc_1, listino_base.perc_1) AS perc_1,\n" +
|
||||
" ISNULL(promozioni.perc_2, listino_base.perc_2) AS perc_2,\n" +
|
||||
" ISNULL(promozioni.perc_3, listino_base.perc_3) AS perc_3,\n" +
|
||||
" ISNULL(promozioni.perc_4, listino_base.perc_4) AS perc_4,\n" +
|
||||
" ISNULL(promozioni.perc_promo_1, 0) AS perc_promo_1,\n" +
|
||||
" ISNULL(promozioni.perc_promo_2, 0) AS perc_promo_2,\n" +
|
||||
" ISNULL(promozioni.perc_promo_3, 0) AS perc_promo_3,\n" +
|
||||
" ISNULL(promozioni.perc_promo_4, 0) AS perc_promo_4,\n" +
|
||||
" listino_base.data_agg_prz,\n" +
|
||||
" listino_base.perc_oneri,\n" +
|
||||
" listino_base.val_oneri,\n" +
|
||||
" listino_base.perc_promo,\n" +
|
||||
" listino_base.val_promo,\n" +
|
||||
" listino_base.qta_min_ord,\n" +
|
||||
" listino_base.data_ult_prezzo,\n" +
|
||||
" listino_base.gg_approvig,\n" +
|
||||
" listino_base.flag_forn_pref,\n" +
|
||||
" listino_base.flag_qta_multipla,\n" +
|
||||
" listino_base.tipo_azione,\n" +
|
||||
" listino_base.descr_art_forn,\n" +
|
||||
" listino_base.cod_barre,\n" +
|
||||
" listino_base.cod_barre_imb,\n" +
|
||||
" listino_base.qta_cnf,\n" +
|
||||
" listino_base.colli_strato,\n" +
|
||||
" listino_base.colli_pedana,\n" +
|
||||
" listino_base.cod_aliq,\n" +
|
||||
" listino_base.note,\n" +
|
||||
" listino_base.prz_ven_sug,\n" +
|
||||
" listino_base.famiglia,\n" +
|
||||
" listino_base.flag_attivo,\n" +
|
||||
" listino_base.tipo_variazione,\n" +
|
||||
" listino_base.prz_acq_um,\n" +
|
||||
" listino_base.data_ins,\n" +
|
||||
" listino_base.inserito_da,\n" +
|
||||
" listino_base.modificato_da,\n" +
|
||||
" listino_base.sconto_cartoni,\n" +
|
||||
" listino_base.sconto_pedane,\n" +
|
||||
" listino_base.sconto_stato,\n" +
|
||||
" listino_base.partita_mag,\n" +
|
||||
" listino_base.flag_prz_base_lisv,\n" +
|
||||
" STUFF((SELECT ',' + atb_promo_depo.cod_mdep AS [text()]\n" +
|
||||
" FROM atb_promo_depo\n" +
|
||||
" WHERE atb_promo_depo.cod_alis = promozioni.cod_alis\n" +
|
||||
" AND atb_promo_depo.versione = promozioni.versione\n" +
|
||||
" FOR XML PATH('')), 1, 1, '') AS lista_depo,\n" +
|
||||
" dbo.f_calcprznettoacq(listino_base.cod_alis,\n" +
|
||||
" listino_base.expression_costo,\n" +
|
||||
" ISNULL(promozioni.perc_1, listino_base.perc_1),\n" +
|
||||
" ISNULL(promozioni.perc_2, listino_base.perc_2),\n" +
|
||||
" ISNULL(promozioni.perc_3, listino_base.perc_3),\n" +
|
||||
" ISNULL(promozioni.perc_4, listino_base.perc_4),\n" +
|
||||
" ISNULL(promozioni.perc_promo_1, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_2, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_3, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_4, 0),\n" +
|
||||
" listino_base.perc_promo,\n" +
|
||||
" listino_base.val_promo,\n" +
|
||||
" listino_base.perc_oneri,\n" +
|
||||
" listino_base.val_oneri,\n" +
|
||||
" ISNULL(promozioni.prz_acq, listino_base.prz_acq)) AS prz_acq_netto,\n" +
|
||||
" dbo.f_calcprznettoacq(listino_base.cod_alis,\n" +
|
||||
" listino_base.expression_costo,\n" +
|
||||
" ISNULL(promozioni.perc_1, listino_base.perc_1),\n" +
|
||||
" ISNULL(promozioni.perc_2, listino_base.perc_2),\n" +
|
||||
" ISNULL(promozioni.perc_3, listino_base.perc_3),\n" +
|
||||
" ISNULL(promozioni.perc_4, listino_base.perc_4),\n" +
|
||||
" ISNULL(promozioni.perc_promo_1, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_2, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_3, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_4, 0),\n" +
|
||||
" listino_base.perc_promo,\n" +
|
||||
" listino_base.val_promo,\n" +
|
||||
" listino_base.perc_oneri,\n" +
|
||||
" listino_base.val_oneri,\n" +
|
||||
" ISNULL(promozioni.prz_acq, listino_base.prz_acq_um)) AS prz_acq_netto_um,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN listino_base.flag_prz_base_lisv = 'C' OR\n" +
|
||||
" (listino_base.flag_prz_base_lisv = 'P' AND prz_ven_sug = 0) THEN\n" +
|
||||
" dbo.f_calcprznettoacq(listino_base.cod_alis,\n" +
|
||||
" listino_base.expression_costo,\n" +
|
||||
" ISNULL(promozioni.perc_1, listino_base.perc_1),\n" +
|
||||
" ISNULL(promozioni.perc_2, listino_base.perc_2),\n" +
|
||||
" ISNULL(promozioni.perc_3, listino_base.perc_3),\n" +
|
||||
" ISNULL(promozioni.perc_4, listino_base.perc_4),\n" +
|
||||
" ISNULL(promozioni.perc_promo_1, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_2, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_3, 0),\n" +
|
||||
" ISNULL(promozioni.perc_promo_4, 0),\n" +
|
||||
" listino_base.perc_promo,\n" +
|
||||
" listino_base.val_promo,\n" +
|
||||
" listino_base.perc_oneri,\n" +
|
||||
" listino_base.val_oneri,\n" +
|
||||
" ISNULL(promozioni.prz_acq, listino_base.prz_acq))\n" +
|
||||
" ELSE prz_ven_sug END AS prz_base_lisv,\n" +
|
||||
" listino_base.shelf_life,\n" +
|
||||
" atb_list_data.cod_vage,\n" +
|
||||
" atb_list_data.cod_vvet,\n" +
|
||||
" ISNULL(promozioni.perc_prov, listino_base.perc_prov) AS perc_prov,\n" +
|
||||
" ISNULL(promozioni.val_prov, listino_base.val_prov) AS val_prov,\n" +
|
||||
" ISNULL(promozioni.qta_acq_contr, 0) AS qta_acq_contr,\n" +
|
||||
" ISNULL(promozioni.costo_trasp, 0) AS costo_trasp,\n" +
|
||||
" listino_base.tipo_calc_prz,\n" +
|
||||
" listino_base.note_commerciali\n" +
|
||||
" FROM (SELECT atb_list.cod_alis,\n" +
|
||||
" atb_list.descrizione,\n" +
|
||||
" atb_list.tipo_calc_prz,\n" +
|
||||
" mtb_lisa_data.versione AS versione,\n" +
|
||||
" atb_list_data.data_iniz AS data_iniz,\n" +
|
||||
" atb_list_data.data_fine AS data_fine,\n" +
|
||||
" atb_list_data.cod_promo AS cod_promo,\n" +
|
||||
" atb_list_data.note AS note_listino,\n" +
|
||||
" atb_list.cod_divi_acq,\n" +
|
||||
" atb_list.expression_costo,\n" +
|
||||
" mtb_lisa.cod_mart,\n" +
|
||||
" mtb_lisa.cod_art_for,\n" +
|
||||
" mtb_lisa.unt_mis_acq,\n" +
|
||||
" ISNULL(mtb_lisa.rap_conv, 1) AS rap_conv,\n" +
|
||||
" ISNULL(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq) AS 'prz_acq',\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_1, mtb_lisa.perc_1) AS 'perc_1',\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_2, mtb_lisa.perc_2) AS 'perc_2',\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_3, mtb_lisa.perc_3) AS 'perc_3',\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_4, mtb_lisa.perc_4) AS 'perc_4',\n" +
|
||||
" ISNULL(mtb_lisa_data.data_agg_prz, mtb_lisa.data_agg_prz) AS 'data_agg_prz',\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_oneri, mtb_lisa.perc_oneri) AS 'perc_oneri',\n" +
|
||||
" ISNULL(mtb_lisa_data.val_oneri, mtb_lisa.val_oneri) AS 'val_oneri',\n" +
|
||||
" ISNULL(mtb_lisa_data.perc_promo, mtb_lisa.perc_promo) AS 'perc_promo',\n" +
|
||||
" ISNULL(mtb_lisa_data.val_promo, mtb_lisa.val_promo) AS 'val_promo',\n" +
|
||||
" mtb_lisa.qta_min_ord,\n" +
|
||||
" mtb_lisa.data_ult_prezzo,\n" +
|
||||
" mtb_lisa.gg_approvig,\n" +
|
||||
" mtb_lisa.flag_forn_pref,\n" +
|
||||
" mtb_lisa.flag_qta_multipla,\n" +
|
||||
" mtb_lisa.tipo_azione,\n" +
|
||||
" mtb_lisa.descr_art_forn,\n" +
|
||||
" mtb_lisa.cod_barre,\n" +
|
||||
" mtb_lisa.cod_barre_imb,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN ISNULL(mtb_lisa_data.qta_cnf, mtb_lisa.qta_cnf) IS NULL\n" +
|
||||
" OR (CAST(dbo.getgestsetupwithdefault('MTB_LISA', 'SETUP', 'IGNORE_QTA_CNF_UNO',\n" +
|
||||
" '1') AS INT) = 1 AND\n" +
|
||||
" ISNULL(mtb_lisa_data.qta_cnf, mtb_lisa.qta_cnf) = 1) OR\n" +
|
||||
" ISNULL(mtb_lisa_data.qta_cnf, mtb_lisa.qta_cnf) = 0 THEN mtb_aart.qta_cnf\n" +
|
||||
" ELSE ISNULL(mtb_lisa_data.qta_cnf, mtb_lisa.qta_cnf) END AS 'qta_cnf',\n" +
|
||||
" mtb_lisa.colli_strato,\n" +
|
||||
" mtb_lisa.colli_pedana,\n" +
|
||||
" mtb_lisa.cod_aliq,\n" +
|
||||
" mtb_lisa.note,\n" +
|
||||
" ISNULL(mtb_lisa_data.prz_ven_sug, mtb_lisa.prz_ven_sug) AS prz_ven_sug,\n" +
|
||||
" mtb_lisa.famiglia,\n" +
|
||||
" CASE WHEN atb_list.flag_attivo = 'N' THEN 'N' ELSE mtb_lisa.flag_attivo END flag_attivo,\n" +
|
||||
" mtb_lisa_data.tipo_variazione AS tipo_variazione,\n" +
|
||||
" ROUND(ISNULL(mtb_lisa_data.prz_acq, mtb_lisa.prz_acq) / mtb_lisa.rap_conv, 5) AS prz_acq_um,\n" +
|
||||
" atb_list_data.data_ins,\n" +
|
||||
" atb_list_data.inserito_da,\n" +
|
||||
" mtb_lisa_data.modificato_da,\n" +
|
||||
" ISNULL(mtb_lisa_data.sconto_cartoni, 0) AS sconto_cartoni,\n" +
|
||||
" ISNULL(mtb_lisa_data.sconto_pedane, 0) AS sconto_pedane,\n" +
|
||||
" ISNULL(mtb_lisa_data.sconto_strato, 0) AS sconto_stato,\n" +
|
||||
" atb_list_data.flag_tipo_promo AS flag_tipo_promo,\n" +
|
||||
" mtb_lisa_data.partita_mag,\n" +
|
||||
" atb_list.flag_prz_base_lisv,\n" +
|
||||
" mtb_lisa.shelf_life,\n" +
|
||||
" mtb_lisa_data.perc_prov,\n" +
|
||||
" mtb_lisa_data.val_prov,\n" +
|
||||
" mtb_lisa_data.qta_acq_contr,\n" +
|
||||
" mtb_lisa_data.note_commerciali\n" +
|
||||
" FROM (SELECT atb_list.cod_alis,\n" +
|
||||
" mtb_lisa.cod_art_for,\n" +
|
||||
" MAX((CASE\n" +
|
||||
" WHEN atb_list_data.versione IS NULL THEN NULL\n" +
|
||||
" ELSE ISNULL(atb_list_data.cod_promo + '|', '') +\n" +
|
||||
" CONVERT(VARCHAR(10), atb_list_data.data_iniz, 111) + ' ' +\n" +
|
||||
" REPLICATE('0', 5 - LEN(atb_list_data.versione)) +\n" +
|
||||
" CONVERT(VARCHAR(5), atb_list_data.versione) END)) AS max_lisa\n" +
|
||||
" FROM atb_list\n" +
|
||||
" INNER JOIN mtb_lisa ON atb_list.cod_alis = mtb_lisa.cod_alis\n" +
|
||||
" LEFT OUTER JOIN mtb_lisa_data ON mtb_lisa.cod_alis = mtb_lisa_data.cod_alis AND\n" +
|
||||
" mtb_lisa.cod_art_for = mtb_lisa_data.cod_art_for\n" +
|
||||
" LEFT OUTER JOIN atb_list_data ON atb_list.cod_alis = atb_list_data.cod_alis AND\n" +
|
||||
" mtb_lisa_data.versione = atb_list_data.versione AND\n" +
|
||||
" atb_list_data.cod_promo IS NULL AND\n" +
|
||||
" atb_list_data.data_iniz <= ISNULL(@datavalidita,\n" +
|
||||
" CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 121)))\n" +
|
||||
" WHERE (@codalis IS NULL OR atb_list.cod_alis = @codalis)\n" +
|
||||
" AND (@codartfor IS NULL OR mtb_lisa.cod_art_for = @codartfor)\n" +
|
||||
" AND (@codmart IS NULL OR mtb_lisa.cod_mart = @codmart)\n" +
|
||||
" GROUP BY atb_list.cod_alis,\n" +
|
||||
" mtb_lisa.cod_art_for) tmp_lisa\n" +
|
||||
" INNER JOIN mtb_lisa ON tmp_lisa.cod_art_for = mtb_lisa.cod_art_for AND\n" +
|
||||
" tmp_lisa.cod_alis = mtb_lisa.cod_alis\n" +
|
||||
" INNER JOIN atb_list ON mtb_lisa.cod_alis = atb_list.cod_alis\n" +
|
||||
" INNER JOIN gtb_divi ON atb_list.cod_divi_acq = gtb_divi.cod_divi\n" +
|
||||
" LEFT OUTER JOIN mtb_lisa_data ON tmp_lisa.cod_alis = mtb_lisa_data.cod_alis AND\n" +
|
||||
" tmp_lisa.cod_art_for = mtb_lisa_data.cod_art_for AND\n" +
|
||||
" CONVERT(INT, RIGHT(tmp_lisa.max_lisa, 5)) =\n" +
|
||||
" mtb_lisa_data.versione\n" +
|
||||
" LEFT OUTER JOIN atb_list_data ON mtb_lisa_data.cod_alis = atb_list_data.cod_alis AND\n" +
|
||||
" mtb_lisa_data.versione = atb_list_data.versione\n" +
|
||||
" LEFT OUTER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart) listino_base\n" +
|
||||
" LEFT OUTER JOIN (SELECT atb_list_data.cod_alis,\n" +
|
||||
" mtb_lisa_data.cod_art_for,\n" +
|
||||
" MIN(atb_list_data.data_iniz) AS data_iniz,\n" +
|
||||
" MIN(atb_list_data.data_fine) AS data_fine,\n" +
|
||||
" MIN(atb_list_data.versione) AS versione,\n" +
|
||||
" MIN(atb_list_data.cod_promo) AS cod_promo,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL THEN atb_list_data.note\n" +
|
||||
" ELSE NULL END AS note_listino,\n" +
|
||||
" MIN(atb_list_data.flag_tipo_promo) AS flag_tipo_promo,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'T' THEN mtb_lisa_data.prz_acq\n" +
|
||||
" ELSE NULL END) AS prz_acq,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'T'\n" +
|
||||
" THEN ROUND(mtb_lisa_data.prz_acq / mtb_lisa.rap_conv, 5)\n" +
|
||||
" ELSE NULL END) AS prz_acq_um,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_1\n" +
|
||||
" ELSE NULL END) AS perc_1,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_2\n" +
|
||||
" ELSE NULL END) AS perc_2,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_3\n" +
|
||||
" ELSE NULL END) AS perc_3,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_4\n" +
|
||||
" ELSE NULL END) AS perc_4,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'E'\n" +
|
||||
" THEN mtb_lisa_promo.perc_promo_1\n" +
|
||||
" ELSE NULL END) AS perc_promo_1,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'E'\n" +
|
||||
" THEN mtb_lisa_promo.perc_promo_2\n" +
|
||||
" ELSE NULL END) AS perc_promo_2,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'E'\n" +
|
||||
" THEN mtb_lisa_promo.perc_promo_3\n" +
|
||||
" ELSE NULL END) AS perc_promo_3,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'E'\n" +
|
||||
" THEN mtb_lisa_promo.perc_promo_4\n" +
|
||||
" ELSE NULL END) AS perc_promo_4,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.perc_prov\n" +
|
||||
" ELSE NULL END) AS perc_prov,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'C' THEN mtb_lisa_data.val_prov\n" +
|
||||
" ELSE NULL END) AS val_prov,\n" +
|
||||
" MAX(CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL OR\n" +
|
||||
" atb_list_data.flag_tipo_promo = 'C'\n" +
|
||||
" THEN mtb_lisa_data.qta_acq_contr\n" +
|
||||
" ELSE NULL END) AS qta_acq_contr,\n" +
|
||||
" MAX(atb_list_data.costo_trasp) AS costo_trasp\n" +
|
||||
" FROM atb_list_data\n" +
|
||||
" INNER JOIN atb_promo_depo\n" +
|
||||
" ON atb_list_data.cod_alis = atb_promo_depo.cod_alis AND\n" +
|
||||
" atb_list_data.versione = atb_promo_depo.versione\n" +
|
||||
" INNER JOIN mtb_lisa_data\n" +
|
||||
" ON atb_list_data.cod_alis = mtb_lisa_data.cod_alis AND\n" +
|
||||
" atb_list_data.versione = mtb_lisa_data.versione\n" +
|
||||
" INNER JOIN mtb_lisa ON mtb_lisa_data.cod_alis = mtb_lisa.cod_alis AND\n" +
|
||||
" mtb_lisa_data.cod_art_for = mtb_lisa.cod_art_for\n" +
|
||||
" INNER JOIN mtb_lisa_promo\n" +
|
||||
" ON atb_list_data.cod_alis = mtb_lisa_promo.cod_alis AND\n" +
|
||||
" atb_list_data.versione = mtb_lisa_promo.versione AND\n" +
|
||||
" mtb_lisa.cod_art_for = mtb_lisa_promo.cod_art_for\n" +
|
||||
" WHERE atb_list_data.cod_promo IS NOT NULL\n" +
|
||||
" AND atb_list_data.data_iniz <=\n" +
|
||||
" ISNULL(@datavalidita, CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 121)))\n" +
|
||||
" AND atb_list_data.data_fine >=\n" +
|
||||
" ISNULL(@datavalidita, CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 121)))\n" +
|
||||
" AND (@codmdep IS NULL OR atb_promo_depo.cod_mdep = @codmdep)\n" +
|
||||
" AND (@codalis IS NULL OR atb_list_data.cod_alis = @codalis)\n" +
|
||||
" AND (@codartfor IS NULL OR mtb_lisa_data.cod_art_for = @codartfor)\n" +
|
||||
" AND (@codmart IS NULL OR mtb_lisa.cod_mart = @codmart)\n" +
|
||||
" AND @viewpromo = 'S'\n" +
|
||||
" GROUP BY atb_list_data.cod_alis,\n" +
|
||||
" mtb_lisa_data.cod_art_for,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN atb_list_data.flag_tipo_promo IS NULL THEN atb_list_data.note\n" +
|
||||
" ELSE NULL END) promozioni\n" +
|
||||
" ON listino_base.cod_alis = promozioni.cod_alis AND\n" +
|
||||
" listino_base.cod_art_for = promozioni.cod_art_for\n" +
|
||||
" LEFT OUTER JOIN atb_list_data ON atb_list_data.cod_alis = listino_base.cod_alis AND\n" +
|
||||
" ISNULL(promozioni.versione, listino_base.versione) =\n" +
|
||||
" atb_list_data.versione");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,609 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20241024131609 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
createOrUpdateFunction("MES_GetWorkOrders",
|
||||
"CREATE FUNCTION [dbo].[MES_GetWorkOrders](@codJfas VARCHAR(50), @dateStart DATE, @dateEnd DATE, @flagEvaso VARCHAR(1),\n" +
|
||||
" @codAnag VARCHAR(5))\n" +
|
||||
" RETURNS @val TABLE\n" +
|
||||
" (\n" +
|
||||
" [sort] [int] NULL,\n" +
|
||||
" [cod_jcom] [varchar](10) NULL,\n" +
|
||||
" [data_ord_prod] [datetime] NULL,\n" +
|
||||
" [num_ord_prod] [int] NULL,\n" +
|
||||
" [riga_ord_prod] [int] NULL,\n" +
|
||||
" [flag_avviabile] [varchar](1) NULL,\n" +
|
||||
" [flag_tracciabilita] [varchar](1) NULL,\n" +
|
||||
" [unt_ord] [varchar](3) NULL,\n" +
|
||||
" [rap_conv] [numeric](20, 10) NULL,\n" +
|
||||
" [unt_ord2] [varchar](3) NULL,\n" +
|
||||
" [rap_conv2] [numeric](20, 5) NULL,\n" +
|
||||
" [unt_ord3] [varchar](3) NULL,\n" +
|
||||
" [rap_conv3] [numeric](20, 5) NULL,\n" +
|
||||
" [descrizione_prod] [varchar](255) NULL,\n" +
|
||||
" [num_pezzi] [numeric](38, 6) NULL,\n" +
|
||||
" [num_cnf] [numeric](20, 5) NULL,\n" +
|
||||
" [gg_scad_partita] [int] NULL,\n" +
|
||||
" [qta_cnf] [numeric](15, 5) NULL,\n" +
|
||||
" [colli_pedana] [numeric](20, 5) NULL,\n" +
|
||||
" [num_pedane] [numeric](38, 18) NULL,\n" +
|
||||
" [pos_riga] [int] NULL,\n" +
|
||||
" [flag_evaso_prod] [varchar](1) NULL,\n" +
|
||||
" [flag_evaso_forzato] [varchar](1) NOT NULL,\n" +
|
||||
" [flag_ordine_evaso] [varchar](1) NULL,\n" +
|
||||
" [gestione] [varchar](1) NOT NULL,\n" +
|
||||
" [data_ord] [datetime] NOT NULL,\n" +
|
||||
" [cod_tcol_UL] [varchar](5) NULL,\n" +
|
||||
" [descrizione_tcol] [varchar](40) NULL,\n" +
|
||||
" [cod_anag] [varchar](5) NOT NULL,\n" +
|
||||
" [rag_soc_anag] [varchar](40) NULL,\n" +
|
||||
" [part_iva] [varchar](20) NULL,\n" +
|
||||
" [rif_ord] [varchar](40) NULL,\n" +
|
||||
" [cod_vdes] [varchar](5) NULL,\n" +
|
||||
" [cod_mdep] [varchar](5) NOT NULL,\n" +
|
||||
" [cod_mdep_prod] [varchar](5) NOT NULL,\n" +
|
||||
" [num_ord] [int] NOT NULL,\n" +
|
||||
" [cod_jfas] [varchar](5) NOT NULL,\n" +
|
||||
" [cod_jfas_lav] [varchar](5) NOT NULL,\n" +
|
||||
" [partita_mag] [varchar](20) NULL,\n" +
|
||||
" [note_lav] [varchar](255) NULL,\n" +
|
||||
" [data_scad] [datetime] NULL,\n" +
|
||||
" [cod_prod] [varchar](15) NULL,\n" +
|
||||
" [descrizione_commessa] [varchar](40) NULL,\n" +
|
||||
" [data_iniz_prod] [datetime] NULL,\n" +
|
||||
" [max_step] [int] NULL,\n" +
|
||||
" [unt_mis_prod] [varchar](5) NULL,\n" +
|
||||
" [qta_batch_prod] [numeric](15, 5) NULL,\n" +
|
||||
" [rap_conv_prod] [numeric](20, 10) NULL,\n" +
|
||||
" [data_iniz] [datetime] NULL,\n" +
|
||||
" [data_fine] [datetime] NULL,\n" +
|
||||
" [qta_prod] [decimal](20, 5) NULL,\n" +
|
||||
" [qta_lav] [decimal](20, 5) NULL,\n" +
|
||||
" [max_fase] [int] NULL,\n" +
|
||||
" [num_fase] [int] NULL,\n" +
|
||||
" [hr_num] [int] NOT NULL,\n" +
|
||||
" [descrizione_attivita] [varchar](1024) NULL,\n" +
|
||||
" [prod_std] [numeric](38, 21) NULL,\n" +
|
||||
" [elapsed_time] [int] NULL,\n" +
|
||||
" [qta_trasferite] [numeric](38, 5) NULL,\n" +
|
||||
" [udc_trasferiti] [int] NULL,\n" +
|
||||
" [stato] [varchar](11) NOT NULL,\n" +
|
||||
" [pz_trasferiti] [int] NULL,\n" +
|
||||
" [run_time_sec] [numeric](38, 6) NULL,\n" +
|
||||
" [cumulative_run_time_sec] [numeric](38, 6) NULL,\n" +
|
||||
" [run_time_hour] [int] NULL,\n" +
|
||||
" [run_time_min] [numeric](38, 6) NULL,\n" +
|
||||
" [run_time_end] [datetime] NULL,\n" +
|
||||
" [id_lotto] [int] NULL,\n" +
|
||||
" [data_lotto] [datetime] NULL,\n" +
|
||||
" [peso_kg] [numeric](20, 5) NULL,\n" +
|
||||
" [data_cons_prod_max] [datetime] NULL\n" +
|
||||
" ) AS\n" +
|
||||
"BEGIN\n" +
|
||||
"\n" +
|
||||
" -- DECLARE @codJfas VARCHAR(5) = 'L1'\n" +
|
||||
"-- DECLARE @dateStart DATE = DATEADD(MONTH, -1, GETDATE())\n" +
|
||||
"-- DECLARE @dateEnd DATE = DATEADD(MONTH, 1, GETDATE())\n" +
|
||||
"-- DECLARE @flagEvaso VARCHAR(1) = 'I'\n" +
|
||||
"-- DECLARE @codAnag VARCHAR(5) = null;\n" +
|
||||
"\n" +
|
||||
" SET @dateStart = ISNULL(@dateStart, DATEADD(DAY, -14, GETDATE()));\n" +
|
||||
" SET @dateEND = ISNULL(@dateEnd, GETDATE());\n" +
|
||||
" SET @flagEvaso = ISNULL(@flagEvaso, 'I');\n" +
|
||||
"\n" +
|
||||
"--Funzione per calcolare la sequenza di ordini su una linea e il RunTimeEND\n" +
|
||||
" WITH setup AS (SELECT @dateStart AS date_start,\n" +
|
||||
" @dateEnd AS date_end,\n" +
|
||||
" @flagEvaso AS flag_evaso,\n" +
|
||||
" @codJfas AS cod_jfas,\n" +
|
||||
" @codAnag AS cod_anag),\n" +
|
||||
" setup_jfas AS (SELECT value_string AS cod_jfas\n" +
|
||||
" FROM dbo.ParseStringIntoArray(@codJfas, '|')),\n" +
|
||||
" setup_depo AS (SELECT cod_mdep, value AS flag_carico_scarico_immediato\n" +
|
||||
" FROM stb_gest_setup_depo\n" +
|
||||
" WHERE gest_name = 'CARICO_SCARICO_PF'\n" +
|
||||
" AND section = 'SETUP'\n" +
|
||||
" AND key_section = 'GENERA_CARICO_SCARICO_IMMEDIATO'),\n" +
|
||||
" setup_run_time\n" +
|
||||
" AS (SELECT dbo.getGestSetup('PVM', 'MONITORAGGIO_LINEE_V2', 'RESTART_RUN_TIME_END') AS flag_restart),\n" +
|
||||
" mtb_colr_sum AS (SELECT mtb_colr.gestione,\n" +
|
||||
" mtb_colr.data_collo,\n" +
|
||||
" mtb_colr.num_collo,\n" +
|
||||
" mtb_colr.cod_mart,\n" +
|
||||
" mtb_colr.data_ord,\n" +
|
||||
" mtb_colr.num_ord,\n" +
|
||||
" SUM(mtb_colr.qta_col) AS qta_col,\n" +
|
||||
" SUM(mtb_colr.num_cnf) AS num_cnf\n" +
|
||||
" FROM mtb_colr\n" +
|
||||
" WHERE mtb_colr.gestione_rif IS NULL\n" +
|
||||
" AND mtb_colr.data_collo_rif IS NULL\n" +
|
||||
" AND mtb_colr.ser_collo_rif IS NULL\n" +
|
||||
" AND mtb_colr.num_collo_rif IS NULL\n" +
|
||||
" AND EXISTS(SELECT *\n" +
|
||||
" FROM mtb_colt\n" +
|
||||
" WHERE mtb_colr.gestione = mtb_colt.gestione\n" +
|
||||
" AND mtb_colr.data_collo = mtb_colt.data_collo\n" +
|
||||
" AND mtb_colr.ser_collo = mtb_colt.ser_collo\n" +
|
||||
" AND mtb_colr.num_collo = mtb_colt.num_collo\n" +
|
||||
" AND mtb_colt.segno = 1)\n" +
|
||||
" GROUP BY mtb_colr.gestione,\n" +
|
||||
" mtb_colr.data_collo,\n" +
|
||||
" mtb_colr.num_collo,\n" +
|
||||
" mtb_colr.cod_mart,\n" +
|
||||
" mtb_colr.data_ord,\n" +
|
||||
" mtb_colr.num_ord),\n" +
|
||||
" in_production_machines AS (SELECT DISTINCT dtb_ord_macc.gestione,\n" +
|
||||
" dtb_ord_macc.data_ord,\n" +
|
||||
" dtb_ord_macc.num_ord,\n" +
|
||||
" MAX(dtb_ord_macc.data_mov) AS max_data_mov\n" +
|
||||
" FROM dtb_ord_macc\n" +
|
||||
" INNER JOIN (SELECT gestione, data_ord, num_ord, cod_cmac, MAX(data_mov) AS data_mov\n" +
|
||||
" FROM dtb_ord_macc\n" +
|
||||
" GROUP BY gestione, data_ord, num_ord, cod_cmac) last_event\n" +
|
||||
" ON dtb_ord_macc.data_ord = last_event.data_ord AND\n" +
|
||||
" dtb_ord_macc.num_ord = last_event.num_ord AND\n" +
|
||||
" dtb_ord_macc.gestione = last_event.gestione AND\n" +
|
||||
" dtb_ord_macc.cod_cmac = last_event.cod_cmac AND\n" +
|
||||
" dtb_ord_macc.data_mov = last_event.data_mov\n" +
|
||||
" INNER JOIN (SELECT evento, IIF(tipologia = 'ENTRATA', 1, -1) AS value\n" +
|
||||
" FROM dtb_ord_macc_eventi) dtb_ord_macc_eventi\n" +
|
||||
" ON dtb_ord_macc.evento = dtb_ord_macc_eventi.evento\n" +
|
||||
" WHERE value = 1\n" +
|
||||
" GROUP BY dtb_ord_macc.num_ord, dtb_ord_macc.data_ord, dtb_ord_macc.gestione),\n" +
|
||||
" dtb_ord_max_step AS (SELECT gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" num_ord,\n" +
|
||||
" MAX(id_step) AS max_step,\n" +
|
||||
" num_fase,\n" +
|
||||
" MAX(num_fase) OVER (PARTITION BY gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" num_ord) AS max_fase,\n" +
|
||||
" dtb_ord_steps.cod_jfas,\n" +
|
||||
" SUM(CAST(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE())) AS BIGINT)) AS elapsed_time\n" +
|
||||
" FROM dtb_ord_steps\n" +
|
||||
" CROSS APPLY setup\n" +
|
||||
" WHERE data_ord BETWEEN setup.date_start AND setup.date_end\n" +
|
||||
" GROUP BY gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" num_ord,\n" +
|
||||
" num_fase,\n" +
|
||||
" dtb_ord_steps.cod_jfas),\n" +
|
||||
" dtb_ordr_prod_with_art AS (SELECT dtb_ordr.data_ord AS data_ord_prod,\n" +
|
||||
" dtb_ordr.num_ord AS num_ord_prod,\n" +
|
||||
" dtb_ordr.riga_ord AS riga_ord_prod,\n" +
|
||||
" dtb_ordr.gestione AS gestione_ord_prod,\n" +
|
||||
" IIF(CONVERT(DATE, dtb_ordr.data_ord) >= CONVERT(DATE, GETDATE()), 'S',\n" +
|
||||
" 'N') AS flag_avviabile,\n" +
|
||||
" mtb_aart_prod.flag_tracciabilita,\n" +
|
||||
" dtb_ordr.unt_ord,\n" +
|
||||
" dtb_ordr.rap_conv,\n" +
|
||||
" dtb_ordr.unt_ord2,\n" +
|
||||
" CAST(ROUND(dtb_ordr.qta_ord2 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" +
|
||||
" 5) AS NUMERIC(20, 5)) AS rap_conv2,\n" +
|
||||
" dtb_ordr.unt_ord3,\n" +
|
||||
" CAST(ROUND(dtb_ordr.qta_ord3 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" +
|
||||
" 5) AS NUMERIC(20, 5)) AS rap_conv3,\n" +
|
||||
" dtb_ordr.qta_ord,\n" +
|
||||
" dtb_ordr.qta_ord2,\n" +
|
||||
" dtb_ordr.qta_ord3,\n" +
|
||||
" dtb_ordr.num_cnf,\n" +
|
||||
" IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf,\n" +
|
||||
" IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf /\n" +
|
||||
" ISNULL(NULLIF(mtb_aart_prod.rap_conv2, 0), 1),\n" +
|
||||
" mtb_aart_prod.qta_cnf)) AS cal_qta_cnf,\n" +
|
||||
" IIF(dtb_ordr.colli_pedana = 0 OR dtb_ordr.colli_pedana = 1,\n" +
|
||||
" IIF(mtb_aart_prod.colli_pedana = 0, 1, mtb_aart_prod.colli_pedana),\n" +
|
||||
" dtb_ordr.colli_pedana)\n" +
|
||||
" AS colli_pedana,\n" +
|
||||
" dtb_ordr.pos_riga,\n" +
|
||||
" dtb_ordt.cod_mdep,\n" +
|
||||
"\n" +
|
||||
" IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), 1,\n" +
|
||||
" IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR') AND\n" +
|
||||
" NULLIF(mtb_aart_prod.rap_conv2, 0) IS NOT NULL,\n" +
|
||||
" mtb_aart_prod.rap_conv2,\n" +
|
||||
" 1)) AS calc_rap_conv,\n" +
|
||||
" mtb_aart_prod.gg_scad_partita,\n" +
|
||||
" mtb_aart_prod.qta_cnf\n" +
|
||||
" FROM dtb_ordr\n" +
|
||||
" INNER JOIN dtb_ordt ON dtb_ordr.gestione = dtb_ordt.gestione AND\n" +
|
||||
" dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" +
|
||||
" dtb_ordr.num_ord = dtb_ordt.num_ord\n" +
|
||||
" INNER JOIN mtb_aart mtb_aart_prod ON mtb_aart_prod.cod_mart = dtb_ordr.cod_mart),\n" +
|
||||
" ord_lav AS (SELECT dtb_ordt.cod_jcom,\n" +
|
||||
" dtb_ordr_prod_with_art.data_ord_prod,\n" +
|
||||
" dtb_ordr_prod_with_art.num_ord_prod,\n" +
|
||||
" dtb_ordr_prod_with_art.riga_ord_prod,\n" +
|
||||
" dtb_ordr_prod_with_art.flag_avviabile,\n" +
|
||||
" dtb_ordr_prod_with_art.flag_tracciabilita,\n" +
|
||||
" dtb_ordr_prod_with_art.unt_ord,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv\n" +
|
||||
" ELSE CASE\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis THEN\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis2 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis3 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
|
||||
" END\n" +
|
||||
" END\n" +
|
||||
" AS rap_conv,\n" +
|
||||
" dtb_ordr_prod_with_art.unt_ord2,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv2\n" +
|
||||
" ELSE CASE\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis THEN\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv2\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis2 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis3 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
|
||||
" END\n" +
|
||||
" END\n" +
|
||||
" AS rap_conv2,\n" +
|
||||
" dtb_ordr_prod_with_art.unt_ord3,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv3\n" +
|
||||
" ELSE CASE\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis THEN\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv3\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis2 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
|
||||
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis3 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
|
||||
" END\n" +
|
||||
" END\n" +
|
||||
" AS rap_conv3,\n" +
|
||||
" ISNULL(dtb_ordt.descr_estesa_prod, dtb_ordt.descrizione_prod) AS descrizione_prod,\n" +
|
||||
" dtb_ordr_prod_with_art.num_cnf * dtb_ordr_prod_with_art.cal_qta_cnf AS num_pezzi,\n" +
|
||||
" dtb_ordr_prod_with_art.num_cnf,\n" +
|
||||
" dtb_ordr_prod_with_art.gg_scad_partita,\n" +
|
||||
" dtb_ordr_prod_with_art.qta_cnf,\n" +
|
||||
" dtb_ordr_prod_with_art.colli_pedana,\n" +
|
||||
" dtb_ordr_prod_with_art.num_cnf / dtb_ordr_prod_with_art.colli_pedana AS num_pedane,\n" +
|
||||
" dtb_ordr_prod_with_art.pos_riga,\n" +
|
||||
" dtb_ordt.flag_evaso_prod,\n" +
|
||||
" dtb_ordt.flag_evaso_forzato,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN (dtb_ordt.flag_evaso_prod = 'I' OR\n" +
|
||||
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' AND\n" +
|
||||
" flag_evaso_prod = 'E'))\n" +
|
||||
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
|
||||
" THEN 'I'\n" +
|
||||
" WHEN flag_evaso_prod <> 'I' AND dtb_ordt.flag_evaso_forzato = 'S'\n" +
|
||||
" THEN flag_evaso_prod\n" +
|
||||
" END AS flag_ordine_evaso,\n" +
|
||||
" dtb_ordt.gestione,\n" +
|
||||
" dtb_ordt.data_ord,\n" +
|
||||
" dtb_ordt.cod_tcol_UL,\n" +
|
||||
" mtb_tcol.descrizione AS descrizione_tcol,\n" +
|
||||
" dtb_ordt.cod_anag,\n" +
|
||||
" gtb_anag.rag_soc AS rag_soc_anag,\n" +
|
||||
" gtb_anag.part_iva,\n" +
|
||||
" dtb_ordt.rif_ord,\n" +
|
||||
" dtb_ordt.cod_vdes,\n" +
|
||||
" dtb_ordt.cod_mdep,\n" +
|
||||
" ISNULL(dtb_ordr_prod_with_art.cod_mdep, dtb_ordt.cod_mdep) AS cod_mdep_prod,\n" +
|
||||
" dtb_ordt.num_ord,\n" +
|
||||
" dtb_ord_steps.cod_jfas,\n" +
|
||||
" dtb_ordt.cod_jfas AS cod_jfas_lav,\n" +
|
||||
" mtb_partita_mag.partita_mag,\n" +
|
||||
" dtb_ordt.note AS note_lav,\n" +
|
||||
" mtb_partita_mag.data_scad,\n" +
|
||||
" dtb_ordt.cod_prod,\n" +
|
||||
" jtb_comt.descrizione AS descrizione_commessa,\n" +
|
||||
" dtb_ordt.data_iniz_prod,\n" +
|
||||
" q.max_step,\n" +
|
||||
" q.max_fase,\n" +
|
||||
" q.num_fase,\n" +
|
||||
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
|
||||
" (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1), 'Colli',\n" +
|
||||
" jtb_cicl.unt_mis_prod)\n" +
|
||||
" AS unt_mis_prod,\n" +
|
||||
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
|
||||
" (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1),\n" +
|
||||
" dtb_ordr_prod_with_art.colli_pedana, jtb_cicl.qta_prod)\n" +
|
||||
" AS qta_batch_prod,\n" +
|
||||
" IIF(mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1, mtb_aart.qta_cnf,\n" +
|
||||
" jtb_cicl.rap_conv_prod) AS rap_conv_prod,\n" +
|
||||
" dtb_ord_steps.data_iniz,\n" +
|
||||
" dtb_ord_steps.data_fine,\n" +
|
||||
" dtb_ord_steps.qta_lav AS qta_lav,\n" +
|
||||
" IIF(dtb_ord_steps.qta_prod <> 0, dtb_ord_steps.qta_prod,\n" +
|
||||
" dtb_ordt.qta_prod) AS qta_prod,\n" +
|
||||
" dtb_ord_steps.hr_num,\n" +
|
||||
" dtb_ord_steps.descrizione_attivita,\n" +
|
||||
" 3600 / (ISNULL(NULLIF(jtb_dist_clav_dir.duration, 0), 1) /\n" +
|
||||
" ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) AS prod_std,\n" +
|
||||
" q.elapsed_time,\n" +
|
||||
" SUM(ISNULL(mtb_colr.qta_col, 0)) AS qta_trasferite,\n" +
|
||||
" COUNT(mtb_colr.num_collo) AS udc_trasferiti,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN (in_production_machines.max_data_mov IS NOT NULL AND (q.max_step = 0 OR\n" +
|
||||
" (q.max_step > 0 AND\n" +
|
||||
" dtb_ord_steps.data_fine IS NOT NULL AND\n" +
|
||||
" DATEDIFF(MINUTE,\n" +
|
||||
" dtb_ord_steps.data_fine,\n" +
|
||||
" in_production_machines.max_data_mov) >\n" +
|
||||
" 5)))\n" +
|
||||
" THEN 'IN AVVIO'\n" +
|
||||
" WHEN q.max_step = 0\n" +
|
||||
" THEN 'PROGRAMMATO'\n" +
|
||||
" WHEN data_fine IS NULL\n" +
|
||||
" THEN 'IN CORSO'\n" +
|
||||
" ELSE 'IN PAUSA'\n" +
|
||||
" END\n" +
|
||||
" AS stato,\n" +
|
||||
" CONVERT(INT, SUM(ISNULL(mtb_colr.qta_col / dtb_ordr_prod_with_art.calc_rap_conv, 0))) AS pz_trasferiti,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN (jtb_dist_clav_dir.duration / ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" +
|
||||
" (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" +
|
||||
" SUM(ISNULL(mtb_colr.qta_col, 0))) > 0\n" +
|
||||
" THEN\n" +
|
||||
" (jtb_dist_clav_dir.duration /\n" +
|
||||
" ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" +
|
||||
" (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" +
|
||||
" SUM(ISNULL(mtb_colr.qta_col, 0)))\n" +
|
||||
" ELSE 0 END AS run_time_sec,\n" +
|
||||
" jl.id_lotto,\n" +
|
||||
" jlt.data_lotto,\n" +
|
||||
" mtb_aart.peso_kg,\n" +
|
||||
" dtb_ordt.data_cons_prod_max\n" +
|
||||
" FROM dtb_ord_steps\n" +
|
||||
" INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" +
|
||||
" AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" +
|
||||
" AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" +
|
||||
" LEFT OUTER JOIN setup_depo setupCaricoImmediato\n" +
|
||||
" ON dtb_ordt.cod_mdep = setupCaricoImmediato.cod_mdep\n" +
|
||||
" LEFT OUTER JOIN jtb_dist_clav_dir\n" +
|
||||
" ON dtb_ordt.cod_prod = jtb_dist_clav_dir.cod_prod AND\n" +
|
||||
" dtb_ordt.cod_jfas = jtb_dist_clav_dir.cod_jfas\n" +
|
||||
" LEFT OUTER JOIN mtb_partita_mag\n" +
|
||||
" ON dtb_ordt.partita_mag = mtb_partita_mag.partita_mag AND\n" +
|
||||
" dtb_ordt.cod_prod = mtb_partita_mag.cod_mart AND\n" +
|
||||
" mtb_partita_mag.flag_stato = 'A'\n" +
|
||||
" LEFT OUTER JOIN mtb_colr_sum mtb_colr ON dtb_ordt.data_ord = mtb_colr.data_ord AND\n" +
|
||||
" dtb_ordt.gestione = mtb_colr.gestione AND\n" +
|
||||
" dtb_ordt.num_ord = mtb_colr.num_ord AND\n" +
|
||||
" dtb_ordt.cod_prod = mtb_colr.cod_mart\n" +
|
||||
" LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom\n" +
|
||||
" INNER JOIN dtb_ord_max_step q ON dtb_ord_steps.gestione = q.gestione AND\n" +
|
||||
" dtb_ord_steps.data_ord = q.data_ord AND\n" +
|
||||
" dtb_ord_steps.num_ord = q.num_ord AND\n" +
|
||||
" dtb_ord_steps.id_step = q.max_step AND\n" +
|
||||
" dtb_ord_steps.cod_jfas = q.cod_jfas\n" +
|
||||
" LEFT OUTER JOIN dtb_ordr_prod_with_art\n" +
|
||||
" ON dtb_ordr_prod_with_art.gestione_ord_prod =\n" +
|
||||
" dtb_ordt.gestione_rif AND\n" +
|
||||
" dtb_ordr_prod_with_art.data_ord_prod = dtb_ordt.data_ord_rif AND\n" +
|
||||
" dtb_ordr_prod_with_art.num_ord_prod = dtb_ordt.num_ord_rif AND\n" +
|
||||
" dtb_ordr_prod_with_art.riga_ord_prod = dtb_ordt.riga_ord_rif\n" +
|
||||
" LEFT OUTER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordt.cod_prod\n" +
|
||||
" LEFT OUTER JOIN mtb_aart ON mtb_aart.cod_mart = dtb_ordt.cod_prod\n" +
|
||||
" LEFT OUTER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
|
||||
" LEFT OUTER JOIN mtb_tcol ON dtb_ordt.cod_tcol_UL = mtb_tcol.cod_tcol\n" +
|
||||
" LEFT OUTER JOIN in_production_machines\n" +
|
||||
" ON dtb_ord_steps.data_ord = in_production_machines.data_ord\n" +
|
||||
" AND dtb_ord_steps.num_ord = in_production_machines.num_ord\n" +
|
||||
" AND dtb_ord_steps.gestione = in_production_machines.gestione\n" +
|
||||
" LEFT OUTER JOIN jtb_lotr jl\n" +
|
||||
" ON dtb_ord_steps.cod_jfas = jl.cod_jfas AND\n" +
|
||||
" dtb_ordt.gestione = jl.gestione AND\n" +
|
||||
" dtb_ordt.data_ord = jl.data_ord AND\n" +
|
||||
" dtb_ordt.num_ord = jl.num_ord\n" +
|
||||
" LEFT OUTER JOIN jtb_lott jlt\n" +
|
||||
" ON jl.cod_jfas = jlt.cod_jfas AND jl.id_lotto = jlt.id_lotto\n" +
|
||||
"\n" +
|
||||
" CROSS APPLY setup\n" +
|
||||
" WHERE dtb_ordt.flag_annulla = 'N'\n" +
|
||||
" AND (setup.flag_evaso IS NULL\n" +
|
||||
" OR (\n" +
|
||||
" (setup.flag_evaso = 'I'\n" +
|
||||
" AND\n" +
|
||||
" dtb_ord_steps.flag_step_attivo = 'S'\n" +
|
||||
" AND (flag_evaso_prod = 'I'\n" +
|
||||
" OR\n" +
|
||||
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S'\n" +
|
||||
" AND\n" +
|
||||
" flag_evaso_prod = 'E'))\n" +
|
||||
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
|
||||
" )\n" +
|
||||
" OR (setup.flag_evaso = 'E '\n" +
|
||||
" AND (flag_evaso_prod = 'E' OR jlt.data_chiusura IS NOT NULL))\n" +
|
||||
" )\n" +
|
||||
" )\n" +
|
||||
" AND (setup.cod_jfas IS NULL\n" +
|
||||
" OR dtb_ord_steps.cod_jfas IN (SELECT cod_jfas FROM setup_jfas))\n" +
|
||||
" AND (setup.cod_anag IS NULL\n" +
|
||||
" OR dtb_ordt.cod_anag = setup.cod_anag)\n" +
|
||||
" GROUP BY dtb_ordr_prod_with_art.data_ord_prod,\n" +
|
||||
" dtb_ordr_prod_with_art.num_ord_prod,\n" +
|
||||
" dtb_ordr_prod_with_art.riga_ord_prod,\n" +
|
||||
" dtb_ordr_prod_with_art.flag_avviabile,\n" +
|
||||
" dtb_ordr_prod_with_art.flag_tracciabilita,\n" +
|
||||
" dtb_ordr_prod_with_art.unt_ord,\n" +
|
||||
" mtb_partita_mag.rap_conv2,\n" +
|
||||
" mtb_partita_mag.rap_conv3,\n" +
|
||||
" dtb_ordt.note,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv,\n" +
|
||||
" dtb_ordt.descrizione_prod,\n" +
|
||||
" dtb_ordt.descr_estesa_prod,\n" +
|
||||
" dtb_ordr_prod_with_art.num_cnf,\n" +
|
||||
" mtb_aart.qta_cnf,\n" +
|
||||
" mtb_aart.gg_scad_partita,\n" +
|
||||
" mtb_aart.flag_qta_cnf_fissa,\n" +
|
||||
" dtb_ordr_prod_with_art.pos_riga,\n" +
|
||||
" dtb_ordt.flag_evaso_prod,\n" +
|
||||
" dtb_ordt.flag_evaso_forzato,\n" +
|
||||
" dtb_ordt.gestione,\n" +
|
||||
" dtb_ordt.data_ord,\n" +
|
||||
" dtb_ordt.num_ord,\n" +
|
||||
" dtb_ord_steps.cod_jfas,\n" +
|
||||
" dtb_ordt.cod_jfas,\n" +
|
||||
" dtb_ordt.cod_jcom,\n" +
|
||||
" mtb_partita_mag.partita_mag,\n" +
|
||||
" mtb_partita_mag.data_scad,\n" +
|
||||
" dtb_ordt.cod_prod,\n" +
|
||||
" dtb_ordt.data_iniz_prod,\n" +
|
||||
" q.max_step,\n" +
|
||||
" dtb_ord_steps.data_iniz,\n" +
|
||||
" dtb_ord_steps.data_fine,\n" +
|
||||
" dtb_ordt.cod_tcol_UL,\n" +
|
||||
" dtb_ordt.cod_anag,\n" +
|
||||
" gtb_anag.rag_soc,\n" +
|
||||
" gtb_anag.part_iva,\n" +
|
||||
" dtb_ordt.rif_ord,\n" +
|
||||
" dtb_ordt.cod_vdes,\n" +
|
||||
" dtb_ordt.cod_mdep,\n" +
|
||||
" dtb_ordr_prod_with_art.cod_mdep,\n" +
|
||||
" mtb_aart.colli_pedana,\n" +
|
||||
" dtb_ord_steps.qta_prod,\n" +
|
||||
" dtb_ordt.qta_prod,\n" +
|
||||
" jtb_dist_clav_dir.duration,\n" +
|
||||
" jtb_comt.descrizione,\n" +
|
||||
" q.elapsed_time,\n" +
|
||||
" dtb_ordr_prod_with_art.colli_pedana,\n" +
|
||||
" dtb_ord_steps.hr_num,\n" +
|
||||
" mtb_aart.unt_mis,\n" +
|
||||
" mtb_aart.unt_mis2,\n" +
|
||||
" mtb_aart.rap_conv2,\n" +
|
||||
" mtb_aart.unt_mis3,\n" +
|
||||
" mtb_aart.rap_conv3,\n" +
|
||||
" dtb_ordr_prod_with_art.unt_ord2,\n" +
|
||||
" dtb_ordr_prod_with_art.unt_ord3,\n" +
|
||||
" dtb_ordr_prod_with_art.qta_ord,\n" +
|
||||
" dtb_ordr_prod_with_art.qta_ord2,\n" +
|
||||
" dtb_ordr_prod_with_art.qta_ord3,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv2,\n" +
|
||||
" dtb_ordr_prod_with_art.rap_conv3,\n" +
|
||||
" dtb_ordr_prod_with_art.qta_cnf,\n" +
|
||||
" dtb_ordr_prod_with_art.cal_qta_cnf,\n" +
|
||||
" dtb_ordr_prod_with_art.gg_scad_partita,\n" +
|
||||
" jtb_cicl.qta_prod,\n" +
|
||||
" jtb_cicl.rap_conv_prod,\n" +
|
||||
" dtb_ord_steps.descrizione_attivita,\n" +
|
||||
" jtb_cicl.unt_mis_prod,\n" +
|
||||
" mtb_tcol.descrizione,\n" +
|
||||
" dtb_ordt.qta_prod,\n" +
|
||||
" dtb_ordt.rap_conv_prod,\n" +
|
||||
" setupCaricoImmediato.flag_carico_scarico_immediato,\n" +
|
||||
" in_production_machines.max_data_mov, q.num_fase, dtb_ord_steps.qta_lav, q.max_fase,\n" +
|
||||
" jl.id_lotto, jlt.data_lotto, mtb_aart.peso_kg, dtb_ordt.data_cons_prod_max)\n" +
|
||||
" INSERT\n" +
|
||||
" INTO @val\n" +
|
||||
" SELECT ROW_NUMBER() OVER (ORDER BY data_ord, num_ord_prod, pos_riga, num_ord) AS sort,\n" +
|
||||
" cod_jcom,\n" +
|
||||
" data_ord_prod,\n" +
|
||||
" num_ord_prod,\n" +
|
||||
" riga_ord_prod,\n" +
|
||||
" flag_avviabile,\n" +
|
||||
" flag_tracciabilita,\n" +
|
||||
" unt_ord,\n" +
|
||||
" rap_conv,\n" +
|
||||
" unt_ord2,\n" +
|
||||
" rap_conv2,\n" +
|
||||
" unt_ord3,\n" +
|
||||
" rap_conv3,\n" +
|
||||
" descrizione_prod,\n" +
|
||||
" num_pezzi,\n" +
|
||||
" num_cnf,\n" +
|
||||
" gg_scad_partita,\n" +
|
||||
" qta_cnf,\n" +
|
||||
" colli_pedana,\n" +
|
||||
" num_pedane,\n" +
|
||||
" pos_riga,\n" +
|
||||
" flag_evaso_prod,\n" +
|
||||
" flag_evaso_forzato,\n" +
|
||||
" flag_ordine_evaso,\n" +
|
||||
" gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" cod_tcol_UL,\n" +
|
||||
" descrizione_tcol,\n" +
|
||||
" cod_anag,\n" +
|
||||
" rag_soc_anag,\n" +
|
||||
" part_iva,\n" +
|
||||
" rif_ord,\n" +
|
||||
" cod_vdes,\n" +
|
||||
" cod_mdep,\n" +
|
||||
" cod_mdep_prod,\n" +
|
||||
" num_ord,\n" +
|
||||
" cod_jfas,\n" +
|
||||
" cod_jfas_lav,\n" +
|
||||
" partita_mag,\n" +
|
||||
" note_lav,\n" +
|
||||
" data_scad,\n" +
|
||||
" cod_prod,\n" +
|
||||
" descrizione_commessa,\n" +
|
||||
" data_iniz_prod,\n" +
|
||||
" max_step,\n" +
|
||||
" unt_mis_prod,\n" +
|
||||
" qta_batch_prod,\n" +
|
||||
" rap_conv_prod,\n" +
|
||||
" data_iniz,\n" +
|
||||
" data_fine,\n" +
|
||||
" qta_prod,\n" +
|
||||
" qta_lav,\n" +
|
||||
" max_fase,\n" +
|
||||
" num_fase,\n" +
|
||||
" hr_num,\n" +
|
||||
" descrizione_attivita,\n" +
|
||||
" prod_std,\n" +
|
||||
" elapsed_time,\n" +
|
||||
" qta_trasferite,\n" +
|
||||
" udc_trasferiti,\n" +
|
||||
" stato,\n" +
|
||||
" pz_trasferiti,\n" +
|
||||
" run_time_sec,\n" +
|
||||
" SUM(run_time_sec) OVER (PARTITION BY cod_jfas, data_ord_prod) AS cumulative_run_time_sec,\n" +
|
||||
" CONVERT(INT, run_time_sec / 3600) AS run_time_hour,\n" +
|
||||
" ROUND((run_time_sec / 3600 - CONVERT(INT, run_time_sec / 3600)) * 60, 0) AS run_time_min,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN setup_run_time.flag_restart = 'S' THEN\n" +
|
||||
" DATEADD(SECOND, SUM(run_time_sec)\n" +
|
||||
" OVER (PARTITION BY cod_jfas, data_ord_prod ORDER BY stato, cod_jfas, data_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
|
||||
" CASE\n" +
|
||||
" WHEN data_ord_prod > GETDATE() THEN DATEADD(HH, 7, data_ord_prod)\n" +
|
||||
" ELSE GETDATE() END)\n" +
|
||||
" ELSE\n" +
|
||||
" DATEADD(SECOND, SUM(run_time_sec)\n" +
|
||||
" OVER (PARTITION BY cod_jfas ORDER BY stato, cod_jfas, data_ord_prod, num_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
|
||||
" GETDATE())\n" +
|
||||
" END AS run_time_end,\n" +
|
||||
" id_lotto,\n" +
|
||||
" data_lotto,\n" +
|
||||
" peso_kg,\n" +
|
||||
" data_cons_prod_max\n" +
|
||||
" FROM ord_lav,\n" +
|
||||
" setup_run_time\n" +
|
||||
" ORDER BY ord_lav.data_ord,\n" +
|
||||
" ord_lav.num_ord_prod,\n" +
|
||||
" ord_lav.pos_riga,\n" +
|
||||
" ord_lav.num_ord\n" +
|
||||
" RETURN\n" +
|
||||
"END");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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_20241025173251 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
executeStatement("ALTER TABLE ctb_movt ADD rif_import varchar(40)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -58,8 +58,8 @@ public class LoadColliService {
|
||||
|
||||
for (MtbColt mtbColt : loadColli.getColli()) {
|
||||
mtbColt.setOperation(OperationType.SELECT_OBJECT);
|
||||
Stream.of(mtbColt.getMtbColr()).forEach(mtbColr -> mtbColr.setOperation(OperationType.SELECT_OBJECT));
|
||||
Stream.of(mtbColt.getMtbCols()).forEach(mtbCols -> mtbCols.setOperation(OperationType.SELECT_OBJECT));
|
||||
mtbColt.getMtbColr().forEach(mtbColr -> mtbColr.setOperation(OperationType.SELECT_OBJECT));
|
||||
mtbColt.getMtbCols().forEach(mtbCols -> mtbCols.setOperation(OperationType.SELECT_OBJECT));
|
||||
}
|
||||
|
||||
if (UtilityString.isNullOrEmpty(loadColli.getGestione()) && !UtilityString.isNullOrEmpty(loadColli.getCodDtip())) {
|
||||
@@ -179,11 +179,6 @@ public class LoadColliService {
|
||||
" gtb_divi.cod_divi = dtb_ordt.cod_divi ";
|
||||
|
||||
dtbDoct = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), query, DtbDoct.class);
|
||||
// PreparedStatement ps = multiDBTransactionManager.prepareStatement(query);
|
||||
// ResultSet rs = ps.executeQuery();
|
||||
// dtbDoct = new ResultSetMapper().mapResultSetToList(rs, DtbDoct.class).get(0);
|
||||
// rs.close();
|
||||
// ps.close();
|
||||
} else {
|
||||
if (UtilityString.isNullOrEmpty(loadColli.getCodMdep())) {
|
||||
throw new Exception("Codice Deposito obbligatorio");
|
||||
@@ -198,12 +193,6 @@ public class LoadColliService {
|
||||
" mtb_colr.ser_collo = mtb_colt.ser_collo AND " +
|
||||
" mtb_colr.num_collo = mtb_colt.num_collo ";
|
||||
query = UtilityDB.addwhereCond(query, whereCond, false);
|
||||
//
|
||||
// PreparedStatement ps = multiDBTransactionManager.prepareStatement(query);
|
||||
// ResultSet rs = ps.executeQuery();
|
||||
// dtbDoct = new ResultSetMapper().mapResultSetToList(rs, DtbDoct.class).get(0);
|
||||
// rs.close();
|
||||
// ps.close();
|
||||
dtbDoct = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), query, DtbDoct.class);
|
||||
} else {
|
||||
dtbDoct = new DtbDoct();
|
||||
@@ -273,7 +262,8 @@ public class LoadColliService {
|
||||
}
|
||||
}
|
||||
|
||||
Stream.of(loadColli.getColli()).forEach(x -> x.setUpdateColliFromDoc(true));
|
||||
loadColli.getColli()
|
||||
.forEach(x -> x.setUpdateColliFromDoc(true));
|
||||
|
||||
//AGGIUNGERE CAMPI CHE PASSIAMO DA FUORI
|
||||
dtbDoct.setGestione(loadColli.getGestione())
|
||||
@@ -312,12 +302,12 @@ public class LoadColliService {
|
||||
List<DtbDocr> dtbDocr = loadRigheCollo(whereCond, loadColli);
|
||||
|
||||
if (!dtbDocr.isEmpty()) {
|
||||
com.annimon.stream.Optional<DtbDocr> firstRow = Stream.of(dtbDocr).filter(x -> x.getDataOrd() != null && x.getNumOrd() != null).findFirst();
|
||||
if (firstRow.isPresent()) {
|
||||
dtbDoct
|
||||
.setDataOrd(firstRow.get().getDataOrd())
|
||||
.setNumOrd(firstRow.get().getNumOrd());
|
||||
}
|
||||
dtbDocr.stream()
|
||||
.filter(x -> x.getDataOrd() != null && x.getNumOrd() != null)
|
||||
.findFirst()
|
||||
.ifPresent(docr -> dtbDoct
|
||||
.setDataOrd(docr.getDataOrd())
|
||||
.setNumOrd(docr.getNumOrd()));
|
||||
}
|
||||
|
||||
if (!loadColli.isSaveDoc()) {
|
||||
|
||||
@@ -669,7 +669,9 @@ public class AccountingRules extends QueryRules {
|
||||
.setCodJfas(ctbMovr.getCodJfas())
|
||||
.setIdRiga(ctbMovr.getIdRiga())
|
||||
.setImpDare(ctbMovr.getImpDare())
|
||||
.setImpAvere(ctbMovr.getImpAvere());
|
||||
.setImpAvere(ctbMovr.getImpAvere())
|
||||
.setCodProd(ctbMovr.getCodProd())
|
||||
.setPartitaMagProd(ctbMovr.getPartitaMagProd());
|
||||
ctbMovrCoan.setOperation(OperationType.INSERT);
|
||||
elencoCoan = new ArrayList<>();
|
||||
elencoCoan.add(ctbMovrCoan);
|
||||
|
||||
@@ -210,7 +210,6 @@ public class PurchasesRules extends QueryRules {
|
||||
.setDescrArtForn(mtbLisaData.getDescrArtForn())
|
||||
.setCodBarre(mtbLisaData.getCodBarre())
|
||||
.setCodBarreImb(mtbLisaData.getCodBarreImb())
|
||||
.setQtaCnf(mtbLisaData.getQtaCnf())
|
||||
.setColliPedana(mtbLisaData.getColliPedana())
|
||||
.setFamiglia(mtbLisaData.getFamiglia())
|
||||
.setFlagAttivo(mtbLisaData.getFlagAttivo())
|
||||
|
||||
@@ -220,20 +220,8 @@ public class EmsServices {
|
||||
boolean anyError = checkForErrorsAndAddToResponse(entityImporter, tmpResult, result, gestName, format, fileContent, file.getName(), anomaliaIsError, headless);
|
||||
|
||||
/* 22/01/2018 MARCO: Se la procedura di import va a buon fine, il file viene spostato nella cartella Imported a prescindere dalla presenza o meno di anomalie. */
|
||||
if (!anyError && file != null && !anomaliaIsError) {
|
||||
String absolutePath = setupGest.getImportSetup(multiDBTransactionManager.getPrimaryConnection(), type, format, "PATH_FILE_IMPORTED");
|
||||
if (!UtilityString.isNullOrEmpty(absolutePath)) {
|
||||
String fileNameDest = entityImporter.renameFile(file.getName(), tmpResult);
|
||||
File destFile = new File(absolutePath + File.separator + fileNameDest);
|
||||
if (destFile.exists()) {
|
||||
destFile.delete();
|
||||
}
|
||||
if (!UtilityFile.directoryExists(absolutePath)) {
|
||||
UtilityFile.directoryCreate(absolutePath);
|
||||
}
|
||||
FileUtils.moveFile(file, destFile);
|
||||
}
|
||||
}
|
||||
if (!anyError && file != null && !anomaliaIsError)
|
||||
moveFileImported(type, format, file, entityImporter, tmpResult);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
if (headless) {
|
||||
@@ -286,7 +274,13 @@ public class EmsServices {
|
||||
List<EntityBase> tmpResult = (List<EntityBase>) entityImporter.doImport();
|
||||
response.getAnomalie().addAll(entityImporter.getAnomalie());
|
||||
|
||||
checkForErrorsAndAddToResponse(entityImporter, tmpResult, result, gestName, format, fileContent, fileName, anomaliaIsError, headless);
|
||||
boolean anyError = checkForErrorsAndAddToResponse(entityImporter, tmpResult, result, gestName, format, fileContent, fileName, anomaliaIsError, headless);
|
||||
|
||||
if (!anyError && fileContent != null && !anomaliaIsError){
|
||||
File file = new File(fileName);
|
||||
FileUtils.writeByteArrayToFile(file, fileContent);
|
||||
moveFileImported(type, format, file, entityImporter, tmpResult);
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
if (headless) {
|
||||
@@ -315,6 +309,21 @@ public class EmsServices {
|
||||
}
|
||||
}
|
||||
|
||||
private void moveFileImported(String type, String format, File file, IEntityImporter entityImporter, List<EntityBase> tmpResult) throws Exception {
|
||||
String absolutePath = setupGest.getImportSetup(multiDBTransactionManager.getPrimaryConnection(), type, format, "PATH_FILE_IMPORTED");
|
||||
if (!UtilityString.isNullOrEmpty(absolutePath)) {
|
||||
String fileNameDest = entityImporter.renameFile(file.getName(), tmpResult);
|
||||
File destFile = new File(absolutePath + File.separator + fileNameDest);
|
||||
if (destFile.exists()) {
|
||||
destFile.delete();
|
||||
}
|
||||
if (!UtilityFile.directoryExists(absolutePath)) {
|
||||
UtilityFile.directoryCreate(absolutePath);
|
||||
}
|
||||
FileUtils.moveFile(file, destFile);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Procedura di impostazione parametri Entity Importer
|
||||
*
|
||||
|
||||
@@ -64,18 +64,10 @@ public class EntityProcessor {
|
||||
private SettingsModel settingsModel;
|
||||
|
||||
public <T> T processEntity(EntityInterface entity, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
final RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
|
||||
|
||||
String username = "";
|
||||
|
||||
if (requestDataDTO != null && requestDataDTO.isValidUsername()) {
|
||||
username = requestDataDTO.getUsername();
|
||||
}
|
||||
|
||||
return (T) processEntity(entity, true, false, username, multiDBTransactionManager, requestDataDTO, true, false);
|
||||
return processEntity(entity, false, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
public EntityBase processEntity(EntityInterface entity, boolean skipCommit, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
public <T> T processEntity(EntityInterface entity, boolean skipCommit, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
|
||||
final RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
|
||||
String username = "";
|
||||
@@ -84,7 +76,7 @@ public class EntityProcessor {
|
||||
username = requestDataDTO.getUsername();
|
||||
}
|
||||
|
||||
return (EntityBase) processEntity(entity, true, skipCommit, username, multiDBTransactionManager, requestDataDTO, true, false);
|
||||
return (T) processEntity(entity, true, skipCommit, username, multiDBTransactionManager, requestDataDTO, true, false);
|
||||
}
|
||||
|
||||
public EntityBase processEntity(EntityInterface entity, Boolean isSync,
|
||||
@@ -507,8 +499,6 @@ public class EntityProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
multiDBTransactionManager.commitAll();
|
||||
|
||||
return entityList;
|
||||
}
|
||||
|
||||
|
||||
@@ -1621,16 +1621,17 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
||||
this.setWhereCond((UtilityString.isNullOrEmpty(this.getWhereCond()) ? "" : this.whereCond + " AND ") + parent.getWhereCond());
|
||||
}
|
||||
|
||||
List<Field> fields = Stream.of(getEntityHolder().getFields(this.getClass())).filter(x -> x.isAnnotationPresent(ImportFromParent.class)).toList();
|
||||
final List<EntityHierarchy.Field> fields = getEntityHolder()
|
||||
.getEntityFields(this.getClass(), EntityHierarchy.Field::isImportFromParent);
|
||||
|
||||
for (Field field : fields) {
|
||||
ImportFromParent ifp = field.getAnnotation(ImportFromParent.class);
|
||||
for (EntityHierarchy.Field field : fields) {
|
||||
ImportFromParent ifp = field.getImportFromParent();
|
||||
String fieldName;
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ifp.value())) {
|
||||
fieldName = ifp.value();
|
||||
} else {
|
||||
fieldName = field.getName();
|
||||
fieldName = field.getField().getName();
|
||||
}
|
||||
|
||||
Class<? extends EntityBase> parentClazz = null;
|
||||
@@ -1649,7 +1650,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
||||
fieldParent.setAccessible(true);
|
||||
Object obj = fieldParent.get(parent);
|
||||
|
||||
String mName = "set" + field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1);
|
||||
String mName = "set" + field.getField().getName().substring(0, 1).toUpperCase() + field.getField().getName().substring(1);
|
||||
if (obj != null) {
|
||||
Method m = ReflectionUtils.findMethod(getClass(), mName, obj.getClass());
|
||||
if (m != null) m.invoke(this, obj);
|
||||
|
||||
@@ -125,6 +125,7 @@ public class EntityPropertyHolder {
|
||||
.setField(declaredField)
|
||||
.setIdentity(declaredField.getAnnotation(Identity.class))
|
||||
.setSqlField(declaredField.getAnnotation(SqlField.class))
|
||||
.setImportFromParent(declaredField.getAnnotation(ImportFromParent.class))
|
||||
.setObjectStorage(declaredField.getAnnotation(ObjectStorage.class))
|
||||
.setClob(declaredField.getAnnotation(Clob.class))
|
||||
.setBlob(declaredField.getAnnotation(Blob.class)));
|
||||
|
||||
@@ -412,8 +412,6 @@ public class EmsRestConstants {
|
||||
public static final String PATH_GEST_SETUP_LIST = PATH + "gestSetupList";
|
||||
public static final String PATH_FILL_FROM_XLS = PATH + "fillFromXls";
|
||||
public static final String PATH_PKG_IMPORT_FROM_XLS = PATH + "pkgImportFromXls";
|
||||
public static final String PATH_IMPORT_COLLI_DA_PRODUZIONE = PATH + "importColliDaProduzione";
|
||||
public static final String PATH_IMPORT_COLLO_DA_PRODUZIONE_JSON = PATH + "importColloDaProduzioneJson";
|
||||
public static final String PATH_IMPORT_COLLI_DA_PRODUZIONE_JSON = PATH + "importColliDaProduzioneJson";
|
||||
public static final String PATH_PRINT_REPORT = PATH + "printReport";
|
||||
public static final String PATH_PKG_PRINT_LABEL = PATH + "pkgPrintLabel";
|
||||
|
||||
@@ -97,6 +97,10 @@ public class CtbMovr extends EntityBase {
|
||||
@SqlField(value = "perc_ded", nullable = false, defaultObjectValue = "0")
|
||||
private BigDecimal percDed;
|
||||
|
||||
private String codProd;
|
||||
|
||||
private String partitaMagProd;
|
||||
|
||||
@ImportFromParent
|
||||
private Date dataCmov;
|
||||
|
||||
@@ -424,6 +428,24 @@ public class CtbMovr extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodProd() {
|
||||
return codProd;
|
||||
}
|
||||
|
||||
public CtbMovr setCodProd(String codProd) {
|
||||
this.codProd = codProd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMagProd() {
|
||||
return partitaMagProd;
|
||||
}
|
||||
|
||||
public CtbMovr setPartitaMagProd(String partitaMagProd) {
|
||||
this.partitaMagProd = partitaMagProd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<CtbParr> getCtbParr() {
|
||||
return ctbParr;
|
||||
}
|
||||
|
||||
@@ -62,6 +62,12 @@ public class CtbMovrCoan extends EntityBase {
|
||||
@SqlField(value = "cambio_divi_cont", nullable = false)
|
||||
private BigDecimal cambioDiviCont;
|
||||
|
||||
@SqlField(value = "cod_prod", maxLength = 15)
|
||||
private String codProd;
|
||||
|
||||
@SqlField(value = "partita_mag_prod", maxLength = 20)
|
||||
private String partitaMagProd;
|
||||
|
||||
public CtbMovrCoan() {
|
||||
super(logger);
|
||||
}
|
||||
@@ -173,4 +179,22 @@ public class CtbMovrCoan extends EntityBase {
|
||||
this.cambioDiviCont = cambioDiviCont;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodProd() {
|
||||
return codProd;
|
||||
}
|
||||
|
||||
public CtbMovrCoan setCodProd(String codProd) {
|
||||
this.codProd = codProd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMagProd() {
|
||||
return partitaMagProd;
|
||||
}
|
||||
|
||||
public CtbMovrCoan setPartitaMagProd(String partitaMagProd) {
|
||||
this.partitaMagProd = partitaMagProd;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,6 +118,9 @@ public class CtbMovt extends EntityBase {
|
||||
@SqlField(value = "data_comp_iva")
|
||||
private Date dataCompIva;
|
||||
|
||||
@SqlField(value = "rif_import", maxLength = 40)
|
||||
private String rifImport;
|
||||
|
||||
@JsonProperty(value = "flag_scorporo")
|
||||
private String flagScorporo;
|
||||
|
||||
@@ -581,6 +584,15 @@ public class CtbMovt extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRifImport() {
|
||||
return rifImport;
|
||||
}
|
||||
|
||||
public CtbMovt setRifImport(String rifImport) {
|
||||
this.rifImport = rifImport;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<CtbMovi> getCtbMovi() {
|
||||
return ctbMovi;
|
||||
}
|
||||
|
||||
@@ -97,6 +97,9 @@ public class MtbLisaData extends EntityBase {
|
||||
@SqlField(value = "val_prov", nullable = false)
|
||||
private BigDecimal valProv;
|
||||
|
||||
@SqlField(value = "qta_cnf", nullable = false)
|
||||
private BigDecimal qtaCnf;
|
||||
|
||||
@ImportFromParent
|
||||
@MapToTable(value = "data_iniz")
|
||||
private Date dataIniz;
|
||||
@@ -139,9 +142,6 @@ public class MtbLisaData extends EntityBase {
|
||||
@MapToTable(value = "cod_barre_imb")
|
||||
private String codBarreImb;
|
||||
|
||||
@MapToTable(value = "qta_cnf")
|
||||
private BigDecimal qtaCnf;
|
||||
|
||||
@MapToTable(value = "colli_pedana")
|
||||
private BigDecimal colliPedana;
|
||||
|
||||
|
||||
@@ -119,4 +119,9 @@ public class UtilityLocalDate {
|
||||
.atZone(currentZone)
|
||||
.toLocalDateTime();
|
||||
}
|
||||
|
||||
public static LocalDateTime isNull(LocalDateTime dateToCheck, LocalDateTime fallbackValue) {
|
||||
if (dateToCheck == null) return fallbackValue;
|
||||
return dateToCheck;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -3,9 +3,14 @@ package it.integry.ems.contabil.Import;
|
||||
import it.integry.ems.Import.base.BaseEntityImporter;
|
||||
import it.integry.ems.Import.base.IEntityImporter;
|
||||
import it.integry.ems.contabil.Import.service.ContabilImportService;
|
||||
import it.integry.ems.document.Import.DocumentiImporter;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.entity.CtbMovt;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class ContabilImporter extends BaseEntityImporter<List<EntityBase>> implements IEntityImporter<List<EntityBase>> {
|
||||
|
||||
@@ -64,4 +69,26 @@ public class ContabilImporter extends BaseEntityImporter<List<EntityBase>> imple
|
||||
return this.text;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String renameFile(String orginalFileName, List<EntityBase> entities) throws Exception {
|
||||
{
|
||||
ContabilImporter.Format enumFormat = ContabilImporter.Format.fromString(super.format);
|
||||
String fileNameDest = null;
|
||||
if (enumFormat != null) {
|
||||
switch (enumFormat) {
|
||||
case DOCFINANCE:
|
||||
String rifImport = entities.stream()
|
||||
.filter(x -> x instanceof CtbMovt).findFirst().map(x -> ((CtbMovt) x).getRifImport()).orElse(null);
|
||||
fileNameDest = rifImport + ".txt";
|
||||
break;
|
||||
default:
|
||||
fileNameDest = super.renameFile(orginalFileName, entities);
|
||||
}
|
||||
}
|
||||
|
||||
return fileNameDest;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -497,6 +497,11 @@ public class MovimentiContabiliDocfinanceDTO {
|
||||
}
|
||||
|
||||
public static CtbMovt fromMovimenti(MovimentiContabiliDocfinanceDTO mov){
|
||||
return new CtbMovt().setDataCmov(mov.getDataOperazione()).setCodCcau(mov.getCausaleCoge()).setDescrizioneCaus(String.valueOf(mov.hashCode()));
|
||||
return new CtbMovt()
|
||||
.setDataCmov(mov.getDataOperazione())
|
||||
.setCodCcau(mov.getCausaleCoge())
|
||||
.setDescrizioneCaus(String.valueOf(mov.hashCode()))
|
||||
.setNumDoc(Integer.valueOf(mov.getMovimento()))
|
||||
.setRifImport(mov.getAnnoCoge() + "_" + mov.getNumeroRitornoCoge());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -582,13 +582,26 @@ public class ContabilImportService {
|
||||
TxtMapper<MovimentiContabiliDocfinanceDTO> txtMapper = new TxtMapper<MovimentiContabiliDocfinanceDTO>()
|
||||
.setFieldsSplitChar("");
|
||||
List<MovimentiContabiliDocfinanceDTO> deserialize = txtMapper.deserialize(lines, MovimentiContabiliDocfinanceDTO.class);
|
||||
|
||||
|
||||
String sql =
|
||||
Query.format(
|
||||
"SELECT CAST(count(*) as bit ) FROM ctb_movt WHERE rif_import = %s",
|
||||
deserialize.get(0).getAnnoCoge() + "_" + deserialize.get(0).getNumeroRitornoCoge()
|
||||
);
|
||||
|
||||
|
||||
if ( UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql))
|
||||
throw new Exception("Impossibile importare questo file, movimenti già importati");
|
||||
|
||||
|
||||
Map<CtbMovt, List<MovimentiContabiliDocfinanceDTO>> movimenti = deserialize.stream().collect(Collectors.groupingBy(MovimentiContabiliDocfinanceDTO::fromMovimenti));
|
||||
|
||||
List<CtbMovt> ctbMovtList = new ArrayList<>();
|
||||
for (CtbMovt ctbMovt : movimenti.keySet()) {
|
||||
|
||||
String codCcau = ctbMovt.getCodCcau();
|
||||
String sql = Query.format("SELECT CAST(COUNT(*) AS BIT) FROM ctb_caus WHERE cod_ccau = %s", codCcau);
|
||||
sql = Query.format("SELECT CAST(COUNT(*) AS BIT) FROM ctb_caus WHERE cod_ccau = %s", codCcau);
|
||||
boolean codCcauExists = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
|
||||
|
||||
if (!codCcauExists) {
|
||||
@@ -674,7 +687,6 @@ public class ContabilImportService {
|
||||
if (listAnomalie.isEmpty() || listAnomalie.stream().noneMatch(AnomalieDTO::isError)){
|
||||
return entityProcessor.processEntityList(ctbMovtList, true);
|
||||
}
|
||||
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,12 +199,13 @@ public class RossoGarganoProductionService {
|
||||
" mtb_partita_mag_carat.partita_mag,\n" +
|
||||
" MIN(CASE WHEN carat = 'Lotto Produttore' THEN val_carat END) AS lottoProduttore,\n" +
|
||||
" MIN(CASE WHEN carat = 'Modalita Raccolta' THEN val_carat END) AS modalitaRaccolta,\n" +
|
||||
" MIN(CASE WHEN carat = 'RifAnalisi' THEN val_carat END) AS rifAnalisi,\n" +
|
||||
" MIN(CASE WHEN carat = 'varieta' THEN val_carat END) AS varieta\n" +
|
||||
" FROM mtb_partita_mag_carat\n" +
|
||||
" INNER JOIN collo ON collo.partita_mag = mtb_partita_mag_carat.partita_mag AND\n" +
|
||||
" collo.cod_mart = mtb_partita_mag_carat.cod_mart AND\n" +
|
||||
" collo.activity_id = mtb_partita_mag_carat.activity_id\n" +
|
||||
" WHERE carat IN ('Lotto Produttore', 'Modalita Raccolta', 'varieta')\n" +
|
||||
" WHERE carat IN ('Lotto Produttore', 'Modalita Raccolta','RifAnalisi', 'varieta')\n" +
|
||||
" GROUP BY mtb_partita_mag_carat.activity_id, mtb_partita_mag_carat.cod_mart,\n" +
|
||||
" mtb_partita_mag_carat.partita_mag),\n" +
|
||||
" ordRacc AS (SELECT dtb_ordt.data_ord,\n" +
|
||||
|
||||
@@ -18,6 +18,7 @@ import it.integry.ems.service.MailService;
|
||||
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.config.EmsRestConstants;
|
||||
import it.integry.ems_model.coollection.Coollection;
|
||||
import it.integry.ems_model.db.ResultSetMapper;
|
||||
import it.integry.ems_model.entity.*;
|
||||
@@ -228,7 +229,7 @@ public class DocumentProdService {
|
||||
docT.setNumDoc(numDoc);
|
||||
docT.setSerDoc(serDoc);
|
||||
|
||||
if (riapriOrdini.compareTo("S") == 0){
|
||||
if (riapriOrdini.compareTo("S") == 0) {
|
||||
DtbOrdt ordT = new DtbOrdt();
|
||||
ordT.setGestione(gestione);
|
||||
ordT.setDataOrd(dataOrd);
|
||||
@@ -2335,7 +2336,6 @@ public class DocumentProdService {
|
||||
return arrayEntity;
|
||||
}
|
||||
|
||||
|
||||
public List<EntityBase> generaDocumentiCLAV(Date dataLav, String codMdep) throws Exception {
|
||||
|
||||
String sql = "SELECT cod_anag FROM mtb_depo WHERE cod_mdep = " + UtilityDB.valueToString(codMdep);
|
||||
@@ -2807,7 +2807,6 @@ public class DocumentProdService {
|
||||
return arrayEntity;
|
||||
}
|
||||
|
||||
|
||||
public List<DtbDoct> generaDocumentiLavorazione(ChiusuraLavorazioneDTO dtoChiusura) throws Exception {
|
||||
List<DtbDoct> listDocs = new ArrayList<>();
|
||||
DtbOrdt ordine = dtoChiusura.getOrdine();
|
||||
@@ -4125,7 +4124,6 @@ public class DocumentProdService {
|
||||
return rows;
|
||||
}
|
||||
|
||||
|
||||
public void generateDocGiroconto(GirocontoLavorazioneDTO girocontoLavorazioneDTO) throws Exception {
|
||||
if (!requestDataDTO.isValidUsername()) {
|
||||
throw new UsernameNotFoundException("Utente " + requestDataDTO.getUsername() + " non riconoscuto!");
|
||||
@@ -4220,8 +4218,8 @@ public class DocumentProdService {
|
||||
slavRow.setOperation(OperationType.INSERT);
|
||||
String sql =
|
||||
it.integry.ems_model.utility.Query.format(
|
||||
"SELECT cast(count(*) as bit) FROM mtb_partita_mag WHERE cod_mart = %s and partita_mag = %s",
|
||||
materiaPrima.getCodMart(), row.getPartitaMag());
|
||||
"SELECT cast(count(*) as bit) FROM mtb_partita_mag WHERE cod_mart = %s and partita_mag = %s",
|
||||
materiaPrima.getCodMart(), row.getPartitaMag());
|
||||
boolean existLotto = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
String partitaMag = null;
|
||||
if (existLotto)
|
||||
@@ -4230,7 +4228,7 @@ public class DocumentProdService {
|
||||
sql =
|
||||
it.integry.ems_model.utility.Query.format(
|
||||
"SELECT partita_mag FROM mtb_partita_mag WHERE cod_mart = %s and data_scad in (select data_scad from mtb_partita_mag WHERE cod_mart = %s AND partita_mag = %s)",
|
||||
materiaPrima.getCodMart(), row.getCodMart(), row.getPartitaMag());
|
||||
materiaPrima.getCodMart(), row.getCodMart(), row.getPartitaMag());
|
||||
partitaMag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
}
|
||||
|
||||
@@ -4318,7 +4316,7 @@ public class DocumentProdService {
|
||||
cmd.close();
|
||||
|
||||
// Sostituire item padre da tutti gli item figli
|
||||
sql = " update atb_fabbr " +
|
||||
sql = " update atb_fabbr " +
|
||||
" set /*item = replace(item, substring(" + UtilityDB.valueToString(item) + ", 8, LEN(" + UtilityDB.valueToString(item) + ") - 7), ''), */" +
|
||||
" livello = livello -1, " +
|
||||
" id_padre = case when livello -1 = 1 then null else id_padre end " +
|
||||
@@ -4382,14 +4380,42 @@ public class DocumentProdService {
|
||||
cmd.executeUpdate(sql);
|
||||
cmd.close();
|
||||
}
|
||||
rs.close();ps.close();
|
||||
rs.close();
|
||||
ps.close();
|
||||
|
||||
conn.commit();
|
||||
} catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
conn.rollback();
|
||||
throw new Exception("Errore aggiornamento criterio produttivo " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public DtbDoct sganciaDocumentoDaCollo(MtbColt mtbColt) throws Exception {
|
||||
if(UtilityInteger.isNullOrZero(mtbColt.getNumDoc()))
|
||||
return null;
|
||||
|
||||
DtbDoct docLav = new DtbDoct();
|
||||
docLav
|
||||
.setCodDtip(mtbColt.getCodDtip())
|
||||
.setDataDoc(mtbColt.getDataDoc())
|
||||
.setNumDoc(mtbColt.getNumDoc())
|
||||
.setSerDoc(mtbColt.getSerDoc())
|
||||
.setCodAnag(mtbColt.getCodAnag())
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(docLav, true, multiDBTransactionManager);
|
||||
if(UtilityInteger.isNullOrZero(docLav.getNumDoc()))
|
||||
return null;
|
||||
DtbDocr rows = new DtbDocr();
|
||||
rows.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), docLav);
|
||||
mtbColt.setCodDtip(EmsRestConstants.NULL)
|
||||
.setDataDoc(EmsRestConstants.DATE_NULL)
|
||||
.setNumDoc(EmsRestConstants.INTEGER_NULL)
|
||||
.setSerDoc(EmsRestConstants.NULL);
|
||||
|
||||
entityProcessor.processEntity(mtbColt, true, multiDBTransactionManager);
|
||||
|
||||
return docLav;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -366,7 +366,7 @@ public class ICONImportService {
|
||||
filtro.setSerCollo(collo.getSerCollo());
|
||||
filtro.setNumCollo(collo.getNumCollo());
|
||||
filtro.setCriterioDistribuzione("U");
|
||||
colTDistr = distrCollo.distribuzioneRigheColloNew(filtro);
|
||||
colTDistr = distrCollo.distribuzioneRigheColloNew(filtro, true);
|
||||
colTDistributed.addAll(colTDistr);
|
||||
|
||||
entityProcessor.processEntityList(colTDistr, multiDBTransactionManager, true);
|
||||
|
||||
@@ -541,7 +541,7 @@ public class MetalSistemImportService {
|
||||
filtro.setSerCollo(colT.getSerCollo());
|
||||
filtro.setNumCollo(colT.getNumCollo());
|
||||
filtro.setCriterioDistribuzione("U");
|
||||
List<MtbColt> colTDistr = distrCollo.distribuzioneRigheColloNew(filtro);
|
||||
List<MtbColt> colTDistr = distrCollo.distribuzioneRigheColloNew(filtro, true);
|
||||
|
||||
index = 0;
|
||||
colliCommessa = new ArrayList<>();
|
||||
|
||||
@@ -3,75 +3,27 @@ package it.integry.ems.logistic.controller;
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.logistic.dto.ImportColliDaProduzioneDTO;
|
||||
import it.integry.ems.logistic.service.PackagesImportService;
|
||||
import it.integry.ems.response.EsitoType;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.config.EmsRestConstants;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@Scope("request")
|
||||
|
||||
public class PackageImportController {
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
@Autowired
|
||||
private PackagesImportService packagesImportService;
|
||||
|
||||
@RequestMapping(value = EmsRestConstants.PATH_IMPORT_COLLI_DA_PRODUZIONE, method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
List<ServiceRestResponse> importColliDaProduzione(HttpServletRequest request,
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody String fileContent) {
|
||||
List<ServiceRestResponse> respList = new ArrayList<ServiceRestResponse>();
|
||||
|
||||
try {
|
||||
respList = UtilityEntity.toServiceRestResponse(UtilityEntity.toEntityBaseList(packagesImportService.importColliDaProduzione(fileContent)));
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
respList.add(new ServiceRestResponse(EsitoType.KO, configuration, e));
|
||||
}
|
||||
return respList;
|
||||
}
|
||||
|
||||
@RequestMapping(value = EmsRestConstants.PATH_IMPORT_COLLI_DA_PRODUZIONE_JSON, method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse importColliDaProduzioneJson(HttpServletRequest request,
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody List<ImportColliDaProduzioneDTO> colliToImport) {
|
||||
ServiceRestResponse importColliDaProduzione(@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody List<ImportColliDaProduzioneDTO> colliToImport) throws Exception {
|
||||
|
||||
try {
|
||||
return ServiceRestResponse.createPositiveResponse(packagesImportService.importColliDaProduzione(colliToImport));
|
||||
} catch (Exception e) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
return ServiceRestResponse.createNegativeResponse(configuration, e);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = EmsRestConstants.PATH_IMPORT_COLLO_DA_PRODUZIONE_JSON, method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse importColloDaProduzioneJson(HttpServletRequest request,
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody ImportColliDaProduzioneDTO colloToImport) {
|
||||
|
||||
try {
|
||||
Date dataVers = new Date();
|
||||
return ServiceRestResponse.createPositiveResponse(packagesImportService.importColloDaProduzione(colloToImport, dataVers));
|
||||
} catch (Exception e) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
return ServiceRestResponse.createNegativeResponse(configuration, e);
|
||||
}
|
||||
return ServiceRestResponse.createEntityPositiveResponse(packagesImportService.importColliDaProduzione(colliToImport));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.ems.logistic.dto;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
public class ImportColliDaProduzioneDTO {
|
||||
@@ -15,7 +16,7 @@ public class ImportColliDaProduzioneDTO {
|
||||
|
||||
private int colliBancale;
|
||||
private BigDecimal qtaCnf;
|
||||
private Date dataCollo;
|
||||
private LocalDate dataCollo;
|
||||
|
||||
private String preparatoDa;
|
||||
private Date dataOrd;
|
||||
@@ -27,6 +28,8 @@ public class ImportColliDaProduzioneDTO {
|
||||
private Integer numRisorse;
|
||||
private String annotazioni;
|
||||
|
||||
private boolean autoGeneraVendita = true;
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
@@ -108,11 +111,11 @@ public class ImportColliDaProduzioneDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataCollo() {
|
||||
public LocalDate getDataCollo() {
|
||||
return dataCollo;
|
||||
}
|
||||
|
||||
public ImportColliDaProduzioneDTO setDataCollo(Date dataCollo) {
|
||||
public ImportColliDaProduzioneDTO setDataCollo(LocalDate dataCollo) {
|
||||
this.dataCollo = dataCollo;
|
||||
return this;
|
||||
}
|
||||
@@ -197,4 +200,13 @@ public class ImportColliDaProduzioneDTO {
|
||||
this.annotazioni = annotazioni;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isAutoGeneraVendita() {
|
||||
return autoGeneraVendita;
|
||||
}
|
||||
|
||||
public ImportColliDaProduzioneDTO setAutoGeneraVendita(boolean autoGeneraVendita) {
|
||||
this.autoGeneraVendita = autoGeneraVendita;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,9 +67,10 @@ public class FiltroDistribuzioneColloDTO {
|
||||
U("U"), //AGGIORNA IL COLLO ESISTENTE
|
||||
O("O"), //DIVIDE IL COLLO INIZIALE PER ORDINE
|
||||
G("G"), //DIVIDE IL COLLO INIZIALE PER IL GRUPPO BOLLA DEGLI ARTICOLI
|
||||
UP("UP"); //SI TRATTA DI UN COLLO DI LAVORAZIONE CHE HA SULLE RIGHE I RIFERIMENTI DELL'ORDINE DI PRODUZIONE (GESTIONE_RIF = 'A')
|
||||
UP("UP"), //SI TRATTA DI UN COLLO DI LAVORAZIONE CHE HA SULLE RIGHE I RIFERIMENTI DELL'ORDINE DI PRODUZIONE (GESTIONE_RIF = 'A')
|
||||
//E VIENE LANCIATA LA NORMALE DISTRIBUZIONE MA NELL'AGGIORNARE IL COLLO VENGONO LETTI I RIFERIMENTI DELL'ORDINE DI LAVORAZIOKNE
|
||||
// A CUI LA CHIAVE DATA,NUMERO E RIGA ORDINE FANNO RIFERIMENTO
|
||||
FASE("FASE");
|
||||
|
||||
|
||||
private String text;
|
||||
|
||||
@@ -24,6 +24,9 @@ import java.math.RoundingMode;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.stream.Collectors.groupingBy;
|
||||
|
||||
@Component
|
||||
public class DistribuzioneColliService {
|
||||
@@ -32,7 +35,7 @@ public class DistribuzioneColliService {
|
||||
private final List<MtbColt> mCurrentlyDistributingMtbColt = new ArrayList<>();
|
||||
|
||||
|
||||
public List<MtbColt> distribuzioneRigheColloNew(final FiltroDistribuzioneColloDTO filtroDistribuzioneColloDTO) throws Exception {
|
||||
public List<MtbColt> distribuzioneRigheColloNew(final FiltroDistribuzioneColloDTO filtroDistribuzioneColloDTO, boolean skipCommit) throws Exception {
|
||||
|
||||
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
|
||||
EntityProcessor entityProcessor = ContextLoader.getCurrentWebApplicationContext().getBean(EntityProcessor.class);
|
||||
@@ -81,7 +84,7 @@ public class DistribuzioneColliService {
|
||||
psRemoveOrdRifsFromMtbColrs.executeUpdate();
|
||||
psRemoveOrdRifsFromMtbColrs.close();
|
||||
|
||||
List<EntityBase> result = entityProcessor.processEntity(sourceMtbColt, multiDBTransactionManager);
|
||||
List<EntityBase> result = entityProcessor.processEntity(sourceMtbColt, skipCommit, multiDBTransactionManager);
|
||||
|
||||
if (result == null || result.isEmpty())
|
||||
throw new EntityNotFoundException(String.format("Il collo numero %d del %s non esiste",
|
||||
@@ -130,7 +133,7 @@ public class DistribuzioneColliService {
|
||||
String filtroOrdini = sourceMtbColt.getFiltroOrdini();
|
||||
String whereCondOrd = null;
|
||||
|
||||
if (UtilityString.isNullOrEmpty(filtroOrdini)){
|
||||
if (UtilityString.isNullOrEmpty(filtroOrdini)) {
|
||||
return Collections.singletonList(sourceMtbColt.setMtbColr(sourceMtbColrs));
|
||||
}
|
||||
|
||||
@@ -154,7 +157,7 @@ public class DistribuzioneColliService {
|
||||
whereCondOrd = UtilityXML.XML2WhereCond(xmlFilter.toString());
|
||||
}
|
||||
|
||||
if (UtilityString.isNullOrEmpty(whereCondOrd)){
|
||||
if (UtilityString.isNullOrEmpty(whereCondOrd)) {
|
||||
return Collections.singletonList(sourceMtbColt.setMtbColr(sourceMtbColrs));
|
||||
}
|
||||
|
||||
@@ -230,15 +233,21 @@ public class DistribuzioneColliService {
|
||||
" cod_kit, " +
|
||||
" num_cnf_evasa, " +
|
||||
" id_viaggio, " +
|
||||
" data_cons_anag " +
|
||||
" data_cons_anag," +
|
||||
" dtb_ordt.cod_jfas AS cod_jfas " +
|
||||
" FROM ovw_ordini_inevasi dtb_ordr " +
|
||||
" INNER JOIN dtb_ordt ON dtb_ordr.gestione = dtb_ordt.gestione AND " +
|
||||
" dtb_ordr.data_ord = dtb_ordt.data_ord AND " +
|
||||
" dtb_ordr.num_ord = dtb_ordt.num_ord " +
|
||||
" WHERE " + whereCondOrd;
|
||||
|
||||
List<DtbOrdt> orderTestate = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), dtbOrdrSql, DtbOrdt.class, 30);
|
||||
List<DtbOrdr> orderRows = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), dtbOrdrSql, DtbOrdr.class, 30);
|
||||
if(orderRows == null) orderRows = new ArrayList<>();
|
||||
if (orderRows == null) orderRows = new ArrayList<>();
|
||||
|
||||
orderTestate = Stream.of(orderTestate)
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
List<MtbColr> mtbColrsToSave = new ArrayList<>();
|
||||
|
||||
@@ -251,13 +260,13 @@ public class DistribuzioneColliService {
|
||||
List<MtbColr> found;
|
||||
Predicate<MtbColr> qtaCnfPredicate;
|
||||
|
||||
if (sourceMtbColr.getFlagQtaCnfFissa().equalsIgnoreCase("N") && flagRaggXQtaCnf.equalsIgnoreCase("S")){
|
||||
if (sourceMtbColr.getFlagQtaCnfFissa().equalsIgnoreCase("N") && flagRaggXQtaCnf.equalsIgnoreCase("S")) {
|
||||
qtaCnfPredicate = mtbColr -> Objects.equals(mtbColr.getQtaCnf().setScale(5, RoundingMode.HALF_UP), sourceMtbColr.getQtaCnf().setScale(5, RoundingMode.HALF_UP));
|
||||
} else {
|
||||
qtaCnfPredicate = mtbColr -> true;
|
||||
}
|
||||
|
||||
found = Stream.of(groupedMtbColrs)
|
||||
found = groupedMtbColrs.stream()
|
||||
.filter(mtbColr -> Objects.equals(mtbColr.getPartitaMag(), sourceMtbColr.getPartitaMag()) &&
|
||||
Objects.equals(mtbColr.getCodMart(), sourceMtbColr.getCodMart()) &&
|
||||
Objects.equals(mtbColr.getCodTagl(), sourceMtbColr.getCodTagl()) &&
|
||||
@@ -269,9 +278,9 @@ public class DistribuzioneColliService {
|
||||
Objects.equals(mtbColr.getSerColloRif(), sourceMtbColr.getSerColloRif()) &&
|
||||
qtaCnfPredicate.test(mtbColr)
|
||||
)
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (found != null && found.size() > 0) {
|
||||
if (found != null && !found.isEmpty()) {
|
||||
found.get(0).setQtaCol(found.get(0).getQtaCol().add(sourceMtbColr.getQtaCol()));
|
||||
found.get(0).setNumCnf(found.get(0).getNumCnf().add(sourceMtbColr.getNumCnf()));
|
||||
} else {
|
||||
@@ -312,7 +321,7 @@ public class DistribuzioneColliService {
|
||||
sourceMtbColr.setQtaCnf(currentMtbAart.getQtaCnf());
|
||||
} else {
|
||||
if (sourceMtbColr.getQtaCol().compareTo(BigDecimal.ZERO) > 0 && sourceMtbColr.getNumCnf().compareTo(BigDecimal.ZERO) > 0) {
|
||||
if (flagRaggXQtaCnf.equalsIgnoreCase("N")){
|
||||
if (flagRaggXQtaCnf.equalsIgnoreCase("N")) {
|
||||
sourceMtbColr.setQtaCnf(sourceMtbColr.getQtaCol().divide(sourceMtbColr.getNumCnf(), RoundingMode.HALF_UP));
|
||||
} else {
|
||||
//Se la qta_cnf + variabile ed il DISTRIBUISCI_X_QTA_CNF = S allora la qta_cnf deve essere quella presente nel collo
|
||||
@@ -325,7 +334,7 @@ public class DistribuzioneColliService {
|
||||
//Prendo tutte le righe d'ordine con quest'articolo / partita
|
||||
//solo se la partita non è NULL sull'ordine ed è uguale su collo e ordine
|
||||
List<DtbOrdr> artOrderRowsWithPart = null;
|
||||
if (flagRaggXQtaCnf.equalsIgnoreCase("S") && "N".equalsIgnoreCase(currentMtbAart.getFlagQtaCnfFissa())){
|
||||
if (flagRaggXQtaCnf.equalsIgnoreCase("S") && "N".equalsIgnoreCase(currentMtbAart.getFlagQtaCnfFissa())) {
|
||||
artOrderRowsWithPart = Stream.of(orderRows)
|
||||
.filter(dtbOrdr -> UtilityString.equalsIgnoreCase(dtbOrdr.getCodMart(), finalSourceMtbColr.getCodMart()) &&
|
||||
UtilityString.equalsIgnoreCase(dtbOrdr.getPartitaMag(), finalSourceMtbColr.getPartitaMag()) &&
|
||||
@@ -333,7 +342,7 @@ public class DistribuzioneColliService {
|
||||
UtilityString.equalsIgnoreCase(dtbOrdr.getCodCol(), finalSourceMtbColr.getCodCol()) &&
|
||||
Objects.equals(dtbOrdr.getQtaCnf().setScale(5, RoundingMode.HALF_UP), finalSourceMtbColr.getQtaCnf().setScale(5, RoundingMode.HALF_UP)))
|
||||
.toList();
|
||||
}else {
|
||||
} else {
|
||||
artOrderRowsWithPart = Stream.of(orderRows)
|
||||
.filter(dtbOrdr -> UtilityString.equalsIgnoreCase(dtbOrdr.getCodMart(), finalSourceMtbColr.getCodMart()) &&
|
||||
UtilityString.equalsIgnoreCase(dtbOrdr.getPartitaMag(), finalSourceMtbColr.getPartitaMag()) &&
|
||||
@@ -392,12 +401,12 @@ public class DistribuzioneColliService {
|
||||
//Prendo tutte le righe d'ordine con quest'articolo / partita
|
||||
//solo se la partita è NULL sull'ordine
|
||||
List<DtbOrdr> artOrderRowsNoPart = null;
|
||||
if (flagRaggXQtaCnf.equalsIgnoreCase("S") && "N".equalsIgnoreCase(currentMtbAart.getFlagQtaCnfFissa())){
|
||||
if (flagRaggXQtaCnf.equalsIgnoreCase("S") && "N".equalsIgnoreCase(currentMtbAart.getFlagQtaCnfFissa())) {
|
||||
artOrderRowsNoPart = Stream.of(orderRows)
|
||||
.filter(dtbOrdr -> UtilityString.equalsIgnoreCase(dtbOrdr.getCodMart(), finalSourceMtbColr.getCodMart()) &&
|
||||
(dtbOrdr.getPartitaMag() == null) &&
|
||||
UtilityString.equalsIgnoreCase(dtbOrdr.getCodTagl(), finalSourceMtbColr.getCodTagl()) &&
|
||||
UtilityString.equalsIgnoreCase(dtbOrdr.getCodCol(), finalSourceMtbColr.getCodCol()) &&
|
||||
UtilityString.equalsIgnoreCase(dtbOrdr.getCodCol(), finalSourceMtbColr.getCodCol()) &&
|
||||
Objects.equals(dtbOrdr.getQtaCnf().setScale(5, RoundingMode.HALF_UP), finalSourceMtbColr.getQtaCnf().setScale(5, RoundingMode.HALF_UP)))
|
||||
.toList();
|
||||
} else {
|
||||
@@ -459,7 +468,8 @@ public class DistribuzioneColliService {
|
||||
|
||||
}
|
||||
|
||||
if (criterioDistribuzione == FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum.U) {
|
||||
if (criterioDistribuzione == FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum.U ||
|
||||
criterioDistribuzione == FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum.FASE) {
|
||||
|
||||
// Aggiornamento riga ordine: viene impostata la parola chiave USED per indicare che la riga è stata processata
|
||||
// da un disponsitivo esterno e quindi verrà scaricata successivamente con la chiusura della produzione
|
||||
@@ -467,7 +477,7 @@ public class DistribuzioneColliService {
|
||||
|
||||
|
||||
//Leggo tutte le righe d'orine interessate e ne modifico il campo SYSTEM_NOTE
|
||||
final List<DtbOrdr> dtbOrdrToUpdate = Stream.of(mtbColrsToSave)
|
||||
final List<DtbOrdr> dtbOrdrToUpdate = mtbColrsToSave.stream()
|
||||
.map(mtbColr -> {
|
||||
DtbOrdr dtbOrdr = new DtbOrdr();
|
||||
dtbOrdr.setGestione(filtroDistribuzioneColloDTO.getGestione());
|
||||
@@ -479,10 +489,10 @@ public class DistribuzioneColliService {
|
||||
return dtbOrdr;
|
||||
})
|
||||
.distinct()
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
if (dtbOrdrToUpdate != null && dtbOrdrToUpdate.size() > 0) {
|
||||
if (dtbOrdrToUpdate != null && !dtbOrdrToUpdate.isEmpty()) {
|
||||
|
||||
//Creo le testate per ogni ordine trovato nelle righe
|
||||
List<DtbOrdt> dtbOrdtToUpdate = Stream.of(dtbOrdrToUpdate)
|
||||
@@ -499,18 +509,19 @@ public class DistribuzioneColliService {
|
||||
.toList();
|
||||
|
||||
|
||||
if (dtbOrdtToUpdate != null && dtbOrdtToUpdate.size() > 0) {
|
||||
if (dtbOrdtToUpdate != null && !dtbOrdtToUpdate.isEmpty()) {
|
||||
|
||||
//Associo le righe alla testata
|
||||
Stream.of(dtbOrdtToUpdate)
|
||||
dtbOrdtToUpdate
|
||||
.forEach(dtbOrdt -> {
|
||||
List<DtbOrdr> dtbOrdrs = Stream.of(dtbOrdrToUpdate)
|
||||
List<DtbOrdr> dtbOrdrs = dtbOrdrToUpdate.stream()
|
||||
.filter(dtbOrdr -> dtbOrdr.getGestione().equals(dtbOrdt.getGestione()) &&
|
||||
dtbOrdr.getNumOrd().equals(dtbOrdt.getNumOrd()) &&
|
||||
dtbOrdr.getDataOrd().equals(dtbOrdt.getDataOrd())).toList();
|
||||
dtbOrdr.getDataOrd().equals(dtbOrdt.getDataOrd()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
if (dtbOrdrs != null && dtbOrdrs.size() > 0)
|
||||
if (dtbOrdrs != null && !dtbOrdrs.isEmpty())
|
||||
dtbOrdt.getDtbOrdr().addAll(dtbOrdrs);
|
||||
|
||||
|
||||
@@ -564,16 +575,27 @@ public class DistribuzioneColliService {
|
||||
|
||||
MtbColt finalSourceMtbColt = sourceMtbColt;
|
||||
List<DtbOrdr> finalOrderRows = orderRows;
|
||||
Stream.of(mtbColtByOrders)
|
||||
List<DtbOrdt> finalOrderTestate = orderTestate;
|
||||
|
||||
mtbColtByOrders
|
||||
.forEach(mtbColt -> {
|
||||
|
||||
DtbOrdr dtbOrdr = Stream.of(finalOrderRows)
|
||||
DtbOrdt dtbOrdt = finalOrderTestate.stream()
|
||||
.filter(dtbOrdt1 -> dtbOrdt1.getNumOrd().equals(mtbColt.getNumOrd()) &&
|
||||
dtbOrdt1.getDataOrd().equals(mtbColt.getDataOrd()) &&
|
||||
dtbOrdt1.getGestione().equals(mtbColt.getGestione()))
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
DtbOrdr dtbOrdr = finalOrderRows.stream()
|
||||
.filter(dtbOrdr1 -> dtbOrdr1.getNumOrd().equals(mtbColt.getNumOrd()) &&
|
||||
dtbOrdr1.getDataOrd().equals(mtbColt.getDataOrd()) &&
|
||||
dtbOrdr1.getGestione().equals(mtbColt.getGestione()))
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
mtbColt.setCodJfas(dtbOrdt.getCodJfas());
|
||||
|
||||
mtbColt.setCodMdep(dtbOrdr.getCodMdep());
|
||||
mtbColt.setCodAnag(dtbOrdr.getCodAnag());
|
||||
mtbColt.setRifOrd(finalSourceMtbColt.getRifOrd());
|
||||
@@ -605,6 +627,13 @@ public class DistribuzioneColliService {
|
||||
entityToSave.addAll(mtbColtByOrders);
|
||||
break;
|
||||
|
||||
case FASE:
|
||||
List<MtbColt> mtbColtByCodJfas = splitMtbColrsByCodJfas(sourceMtbColt, orderTestate, mtbColrsToSave);
|
||||
|
||||
mtbColrsToSave.clear();
|
||||
entityToSave.addAll(mtbColtByCodJfas);
|
||||
break;
|
||||
|
||||
case U:
|
||||
case G:
|
||||
case UP:
|
||||
@@ -670,10 +699,10 @@ public class DistribuzioneColliService {
|
||||
entityToSave.add(sourceMtbColt);
|
||||
|
||||
|
||||
List<EntityBase> saveResponse = entityProcessor.processEntityList(entityToSave, true);
|
||||
List<EntityBase> saveResponse = entityProcessor.processEntityList(entityToSave, skipCommit);
|
||||
|
||||
|
||||
if (saveResponse != null && saveResponse.size() > 0) {
|
||||
if (saveResponse != null && !saveResponse.isEmpty()) {
|
||||
for (EntityBase responseEntity : saveResponse) {
|
||||
if (responseEntity.getException() != null) throw responseEntity.getException();
|
||||
|
||||
@@ -734,20 +763,20 @@ public class DistribuzioneColliService {
|
||||
|
||||
if (mtbColtSplitted == null) return null;
|
||||
|
||||
if (mtbColtSplitted.size() > 0) {
|
||||
if (!mtbColtSplitted.isEmpty()) {
|
||||
|
||||
for (final MtbColt mtbColt : mtbColtSplitted) {
|
||||
|
||||
mtbColt.setMtbColr(new ArrayList<>());
|
||||
|
||||
List<MtbColr> mtbColrsToAdd = Stream.of(inputMtbColrs)
|
||||
List<MtbColr> mtbColrsToAdd = inputMtbColrs.stream()
|
||||
.filter(mtbColr -> mtbColt.getDataOrd().equals(mtbColr.getDataOrd()) &&
|
||||
mtbColt.getNumOrd().equals(mtbColr.getNumOrd()) &&
|
||||
mtbColr.getQtaCol().compareTo(BigDecimal.ZERO) > 0)
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (mtbColrsToAdd != null && mtbColrsToAdd.size() > 0) {
|
||||
Stream.of(mtbColrsToAdd)
|
||||
if (mtbColrsToAdd != null && !mtbColrsToAdd.isEmpty()) {
|
||||
mtbColrsToAdd
|
||||
.forEach(mtbColr -> {
|
||||
mtbColr.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
@@ -756,8 +785,95 @@ public class DistribuzioneColliService {
|
||||
}
|
||||
}
|
||||
|
||||
return Stream.of(mtbColtSplitted)
|
||||
.filter(mtbColt -> mtbColt.getMtbColr().size() > 0).toList();
|
||||
return mtbColtSplitted.stream()
|
||||
.filter(mtbColt -> !mtbColt.getMtbColr().isEmpty())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
private List<MtbColt> splitMtbColrsByCodJfas(MtbColt inputMtbColt, List<DtbOrdt> inputOrders, List<MtbColr> inputMtbColrs) {
|
||||
final Map<Object, List<HashMap<String, Object>>> ordersByCodJfas = inputOrders.stream()
|
||||
.map(x -> new HashMap<String, Object>() {{
|
||||
put("data_ord", x.getDataOrd());
|
||||
put("num_ord", x.getNumOrd());
|
||||
put("gestione", x.getGestione());
|
||||
put("cod_jfas", x.getCodJfas());
|
||||
}})
|
||||
.distinct()
|
||||
.collect(groupingBy(x -> x.get("cod_jfas")));
|
||||
|
||||
List<MtbColt> mtbColts = new ArrayList<>();
|
||||
|
||||
for (List<HashMap<String, Object>> orders : ordersByCodJfas.values()) {
|
||||
|
||||
|
||||
final List<MtbColr> collect = orders.stream()
|
||||
.map(x -> inputMtbColrs.stream()
|
||||
.filter(y -> y.getGestione().equalsIgnoreCase((String) x.get("gestione")) &&
|
||||
y.getNumOrd().equals(x.get("num_ord")) &&
|
||||
y.getDataOrd().equals(x.get("data_ord")))
|
||||
.collect(Collectors.toList()))
|
||||
.flatMap(Collection::stream)
|
||||
.peek(x -> x.setNumCollo(null))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!collect.isEmpty()) {
|
||||
|
||||
MtbColt clonedMtbColt = (MtbColt) inputMtbColt.clone();
|
||||
clonedMtbColt.setNumCollo(null);
|
||||
clonedMtbColt.setMtbColr(collect);
|
||||
clonedMtbColt.setCodJfas((String) orders.get(0).get("cod_jfas"));
|
||||
clonedMtbColt.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
mtbColts.add(clonedMtbColt);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return mtbColts;
|
||||
|
||||
// List<MtbColt> mtbColtSplitted = Stream.of(inputMtbColrs)
|
||||
// .distinctBy(mtbColr -> UtilityDate.formatDate(mtbColr.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + mtbColr.getNumOrd() + mtbColr.getGestione())
|
||||
// .map(mtbColr -> {
|
||||
// MtbColt mtbColt = new MtbColt();
|
||||
//
|
||||
// mtbColt.setDataOrd(mtbColr.getDataOrd());
|
||||
// mtbColt.setNumOrd(mtbColr.getNumOrd());
|
||||
// mtbColt.setGestione(mtbColr.getGestione());
|
||||
//
|
||||
// mtbColt.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
//
|
||||
// return mtbColt;
|
||||
// })
|
||||
// .toList();
|
||||
//
|
||||
// if (mtbColtSplitted == null) return null;
|
||||
//
|
||||
// if (!mtbColtSplitted.isEmpty()) {
|
||||
//
|
||||
// for (final MtbColt mtbColt : mtbColtSplitted) {
|
||||
//
|
||||
// mtbColt.setMtbColr(new ArrayList<>());
|
||||
//
|
||||
// List<MtbColr> mtbColrsToAdd = inputMtbColrs.stream()
|
||||
// .filter(mtbColr -> mtbColt.getDataOrd().equals(mtbColr.getDataOrd()) &&
|
||||
// mtbColt.getNumOrd().equals(mtbColr.getNumOrd()) &&
|
||||
// mtbColr.getQtaCol().compareTo(BigDecimal.ZERO) > 0)
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// if (mtbColrsToAdd != null && !mtbColrsToAdd.isEmpty()) {
|
||||
// mtbColrsToAdd
|
||||
// .forEach(mtbColr -> {
|
||||
// mtbColr.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
// mtbColt.getMtbColr().add(mtbColr);
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return mtbColtSplitted.stream()
|
||||
// .filter(mtbColt -> !mtbColt.getMtbColr().isEmpty())
|
||||
// .collect(Collectors.toList());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
@@ -298,72 +299,31 @@ public class PackagesImportService {
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<MtbColt> importColliDaProduzione(String fileContent) throws Exception {
|
||||
String line = "";
|
||||
|
||||
String delimiter = UtilityString.identifyLineDelimiter(fileContent);
|
||||
ByteBuffer byteBuffer = ByteBuffer.wrap(fileContent.getBytes());
|
||||
|
||||
List<ImportColliDaProduzioneDTO> listColli = new ArrayList<>();
|
||||
for (int i = 0; i < byteBuffer.capacity(); i++) {
|
||||
line += (char) byteBuffer.get();
|
||||
if (line.endsWith(delimiter)) {
|
||||
String[] details = line.split("\t");
|
||||
|
||||
ImportColliDaProduzioneDTO importColliDaProduzioneDTO = new ImportColliDaProduzioneDTO()
|
||||
.setCodMart(details[0])
|
||||
.setCodJcom(details[1])
|
||||
.setPartitaMag(details[2])
|
||||
.setPesoLordo(new BigDecimal(details[3]))
|
||||
.setPesoNetto(new BigDecimal(details[4]))
|
||||
.setCodTcol(details[5])
|
||||
.setFornitore(details[6])
|
||||
.setColliBancale(new Integer(details[7]))
|
||||
.setDataCollo(UtilityString.parseDate(details[8]))
|
||||
.setDataOrd(UtilityString.parseDate(details[10]))
|
||||
.setNumOrd(new Integer(details[11]))
|
||||
.setCodJfas(details[12])
|
||||
.setGestione(details[13])
|
||||
.setQtaCol(new BigDecimal(details[14]))
|
||||
.setRigaOrd(new Integer(details[15]))
|
||||
.setNumRisorse(new Integer(details[16].replace("\n", "")))
|
||||
.setAnnotazioni(details[17]);
|
||||
|
||||
listColli.add(importColliDaProduzioneDTO);
|
||||
line = "";
|
||||
}
|
||||
}
|
||||
|
||||
return importColliDaProduzione(listColli);
|
||||
}
|
||||
|
||||
public List<MtbColt> importColliDaProduzione(List<ImportColliDaProduzioneDTO> importColliList) throws Exception {
|
||||
List<MtbColt> savedMtbColt = new ArrayList<>();
|
||||
|
||||
Date dataVers = new Date();
|
||||
LocalDateTime dataVers = UtilityLocalDate.getNowTime();
|
||||
|
||||
for (ImportColliDaProduzioneDTO importColliProd : importColliList) {
|
||||
savedMtbColt.addAll(importColloDaProduzione(importColliProd, dataVers));
|
||||
}
|
||||
|
||||
if (savedMtbColt.isEmpty())
|
||||
throw new Exception("Non è stato generato alcun collo");
|
||||
|
||||
//CHIAMATA A PROCESS ENTITY LIST
|
||||
if (savedMtbColt.size() == 0) {
|
||||
throw new Exception("Non ci sono colli creati");
|
||||
}
|
||||
|
||||
return savedMtbColt;
|
||||
}
|
||||
|
||||
|
||||
public List<MtbColt> importColloDaProduzione(ImportColliDaProduzioneDTO importColliProd, Date dataVers) throws Exception {
|
||||
private List<MtbColt> importColloDaProduzione(ImportColliDaProduzioneDTO importColliProd, LocalDateTime dataVers) throws Exception {
|
||||
Connection connection = multiDBTransactionManager.getPrimaryConnection();
|
||||
|
||||
String serCollo = setupGest.getImportSetup(connection, "COLLI", "COLLI_DA_PRODUZIONE", "SER_COLLO");
|
||||
String flagStart = UtilityString.streNull(setupGest.getImportSetup(connection, "COLLI", "COLLI_DA_PRODUZIONE", "AUTO_START"));
|
||||
String flagStop = UtilityString.streNull(setupGest.getImportSetup(connection, "COLLI", "COLLI_DA_PRODUZIONE", "AUTO_STOP"));
|
||||
|
||||
dataVers = UtilityDate.RelativeDateTime(dataVers, UtilityDate.DaysAfter(dataVers, importColliProd.getDataCollo()));
|
||||
dataVers = importColliProd.getDataCollo().atTime(dataVers.getHour(), dataVers.getMinute(), dataVers.getSecond());
|
||||
|
||||
String query = null;
|
||||
if (importColliProd.getGestione().equalsIgnoreCase("L")) {
|
||||
@@ -404,7 +364,7 @@ public class PackagesImportService {
|
||||
}
|
||||
mtbColt.setCodMdep(codMdep)
|
||||
.setPreparatoDa(requestDataDTO.getUsername())
|
||||
.setDataCollo(UtilityLocalDate.localDateFromDate(importColliProd.getDataCollo()))
|
||||
.setDataCollo(importColliProd.getDataCollo())
|
||||
.setSerCollo(serCollo)
|
||||
.setCodTcol(importColliProd.getCodTcol())
|
||||
.setPesoKg(importColliProd.getPesoLordo())
|
||||
@@ -413,7 +373,7 @@ public class PackagesImportService {
|
||||
.setNumOrd(importColliProd.getNumOrd())
|
||||
.setGestione(importColliProd.getGestione())
|
||||
.setSegno(1)
|
||||
.setDataVers(UtilityLocalDate.localDateTimeFromDate(dataVers))
|
||||
.setDataVers(dataVers)
|
||||
.setCodJfas(importColliProd.getCodJfas())
|
||||
.setAnnotazioni(importColliProd.getAnnotazioni());
|
||||
|
||||
@@ -444,11 +404,11 @@ public class PackagesImportService {
|
||||
colliRet.add(mtbColt);
|
||||
|
||||
List<EntityBase> entityBases = new ArrayList<>();
|
||||
if (!UtilityString.isNullOrEmpty(importColliProd.getCodJcom())) {
|
||||
if (!UtilityString.isNullOrEmpty(importColliProd.getCodJcom()) && importColliProd.isAutoGeneraVendita()) {
|
||||
MtbColt mtbColtV = new MtbColt()
|
||||
.setGestione("V")
|
||||
.setCodMdep(codMdep)
|
||||
.setDataCollo(UtilityLocalDate.localDateFromDate(importColliProd.getDataCollo()))
|
||||
.setDataCollo(importColliProd.getDataCollo())
|
||||
.setSerCollo(serCollo)
|
||||
.setSegno(-1)
|
||||
.setPesoKg(importColliProd.getPesoLordo())
|
||||
@@ -456,7 +416,7 @@ public class PackagesImportService {
|
||||
.setCodTcol(importColliProd.getCodTcol())
|
||||
.setPreparatoDa(requestDataDTO.getUsername())
|
||||
.setAnnotazioni(importColliProd.getFornitore())
|
||||
.setDataVers(UtilityLocalDate.localDateTimeFromDate(dataVers))
|
||||
.setDataVers(dataVers)
|
||||
.setMtbColr(new ArrayList<>());
|
||||
mtbColtV.setOperation(OperationType.INSERT);
|
||||
entityBases.add(mtbColtV);
|
||||
@@ -565,7 +525,7 @@ public class PackagesImportService {
|
||||
|
||||
ordSteps = new DtbOrdSteps()
|
||||
.setDataIniz(dataIniz)
|
||||
.setDataFine(dataVers)
|
||||
.setDataFine(UtilityLocalDate.localDateTimeToDate(dataVers))
|
||||
.setCodJfas(importColliProd.getCodJfas())
|
||||
.setIdRiga(idRiga)
|
||||
.setIdStep(maxStep);
|
||||
@@ -576,7 +536,7 @@ public class PackagesImportService {
|
||||
entityBases.add(ordT);
|
||||
} else if (maxStep > 0 && dataFineStep != null) {
|
||||
ordSteps = new DtbOrdSteps()
|
||||
.setDataFine(dataVers)
|
||||
.setDataFine(UtilityLocalDate.localDateTimeToDate(dataVers))
|
||||
.setCodJfas(importColliProd.getCodJfas())
|
||||
.setIdRiga(idRiga)
|
||||
.setIdStep(maxStep);
|
||||
|
||||
@@ -16,6 +16,7 @@ import it.integry.ems_model.entity.WdtbOrdr;
|
||||
import it.integry.ems_model.entity.WdtbOrdt;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityBigDecimal;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -181,7 +182,7 @@ public class OrdifyService {
|
||||
BigDecimal percProv = setupGest.getSetupBigDecimal("ORDIFY", "SETUP", "PERC_PROVVIGIONE");
|
||||
BigDecimal maxSconto = setupGest.getSetupBigDecimal("ORDIFY", "SETUP", "MAX_SCONTO");
|
||||
|
||||
BigDecimal prov = percProv == null || percProv.equals(BigDecimal.ZERO) ? null : maxSconto.subtract(sconto).multiply(percProv);
|
||||
BigDecimal prov = UtilityBigDecimal.isNullOrZero(percProv) || UtilityBigDecimal.isNullOrZero(maxSconto) ? null : maxSconto.subtract(sconto).multiply(percProv);
|
||||
|
||||
WdtbOrdr wdtbOrdr = new WdtbOrdr()
|
||||
.setCodMart(orderRow.getCodMart())
|
||||
|
||||
@@ -132,6 +132,8 @@ public class AccettazioneOrtoFruttaDTO implements Cloneable {
|
||||
private String lottoProduttore;
|
||||
@SqlField("modalitaRaccolta")
|
||||
private String modalitaRaccolta;
|
||||
@SqlField("rifAnalisi")
|
||||
private String rifAnalisi;
|
||||
@SqlField("codVzon")
|
||||
private String codVzon;
|
||||
@SqlField("indiceVariazione")
|
||||
@@ -710,6 +712,15 @@ public class AccettazioneOrtoFruttaDTO implements Cloneable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRifAnalisi() {
|
||||
return rifAnalisi;
|
||||
}
|
||||
|
||||
public AccettazioneOrtoFruttaDTO setRifAnalisi(String rifAnalisi) {
|
||||
this.rifAnalisi = rifAnalisi;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodVzon() {
|
||||
return codVzon;
|
||||
}
|
||||
|
||||
@@ -147,19 +147,29 @@ public class OrtoFruttaProductionService {
|
||||
List<MtbPartitaMagCarat> datiPartita;
|
||||
MtbPartitaMagCarat lottoProd = new MtbPartitaMagCarat();
|
||||
MtbPartitaMagCarat modalitaRaccolta = new MtbPartitaMagCarat();
|
||||
MtbPartitaMagCarat rifAnalisi = new MtbPartitaMagCarat();
|
||||
MtbPartitaMagCarat varietaRaccolta = new MtbPartitaMagCarat();
|
||||
String caratLottoProd = "Lotto Produttore";
|
||||
String caratModalitaRaccolta = "Modalita Raccolta";
|
||||
String caratVarietaRaccolta = "Varieta";
|
||||
String caratRifAnalisi = "RifAnalisi";
|
||||
if (dto.getOriginal() != null) {
|
||||
datiPartita = UtilityDB.executeSimpleQueryDTO(
|
||||
multiDBTransactionManager.getPrimaryConnection(),
|
||||
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{}) and activity_id = {}", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta, caratVarietaRaccolta, activityId),
|
||||
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{},{}) and activity_id = {}",
|
||||
dto.getCodMart(),
|
||||
dto.getPartitaRaccolta(),
|
||||
caratLottoProd,
|
||||
caratModalitaRaccolta,
|
||||
caratVarietaRaccolta,
|
||||
caratRifAnalisi,
|
||||
activityId),
|
||||
MtbPartitaMagCarat.class);
|
||||
if (!UtilityList.isNullOrEmpty(datiPartita)) {
|
||||
lottoProd = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratLottoProd)).findFirst().orElse(new MtbPartitaMagCarat());
|
||||
modalitaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratModalitaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat());
|
||||
varietaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratVarietaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat());
|
||||
rifAnalisi = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratRifAnalisi)).findFirst().orElse(new MtbPartitaMagCarat());
|
||||
}
|
||||
}
|
||||
lottoProd
|
||||
@@ -175,6 +185,12 @@ public class OrtoFruttaProductionService {
|
||||
.setActivityId(activityId)
|
||||
.setDataRilevazione(LocalDateTime.now())
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
rifAnalisi
|
||||
.setCarat(caratRifAnalisi)
|
||||
.setValCarat(dto.getRifAnalisi())
|
||||
.setActivityId(activityId)
|
||||
.setDataRilevazione(LocalDateTime.now())
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
varietaRaccolta
|
||||
.setCarat(caratVarietaRaccolta)
|
||||
.setValCarat(dto.getVarieta())
|
||||
@@ -185,12 +201,13 @@ public class OrtoFruttaProductionService {
|
||||
datiPartita.add(lottoProd);
|
||||
datiPartita.add(modalitaRaccolta);
|
||||
datiPartita.add(varietaRaccolta);
|
||||
datiPartita.add(rifAnalisi);
|
||||
|
||||
MtbPartitaMag part = new MtbPartitaMag();
|
||||
part
|
||||
.setCodMart(dto.getCodMart())
|
||||
.setPartitaMag(dto.getPartitaRaccolta())
|
||||
.setDescrizione(dto.getRagSocProduttore()+" - "+dto.getVarieta())
|
||||
.setDescrizione(dto.getRagSocProduttore() + " - " + dto.getVarieta())
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
part.setMtbPartitaMagCarat(datiPartita);
|
||||
|
||||
@@ -256,7 +273,7 @@ public class OrtoFruttaProductionService {
|
||||
|
||||
collo.setDataVers(dto.getDataVers());
|
||||
MtbColr rowToEmpty = new MtbColr();
|
||||
rowToEmpty.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(),collo);
|
||||
rowToEmpty.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), collo);
|
||||
MtbColr row = collo.getMtbColr().stream().filter(x -> x.getCodMart().equalsIgnoreCase(dto.getCodMart())).findFirst().orElse(new MtbColr());
|
||||
if (row.getNumOrd() == null) {
|
||||
collo.getMtbColr().add(row);
|
||||
@@ -348,7 +365,7 @@ public class OrtoFruttaProductionService {
|
||||
if (colloDest == null) {
|
||||
colloDest = wmsLavorazioneService.createUDC(new CreateUDCRequestDTO().setCodMdep(posizione.getCodMdep()).setPosizione(posizione.getPosizione()));
|
||||
}
|
||||
wmsGenericService.spostaArtsTraUL(collo, colloDest);
|
||||
wmsGenericService.spostaArtsTraUL(collo, colloDest, false);
|
||||
}
|
||||
|
||||
|
||||
@@ -423,7 +440,7 @@ public class OrtoFruttaProductionService {
|
||||
"SETUP",
|
||||
"SER_DOC_SCAR");
|
||||
|
||||
String sql = Query.format("SELECT * from dtb_doct where cod_anag = %s AND cod_dtip = %s and activity_id = %s ", dto.getCodAnag(), codDtip, activityId);
|
||||
String sql = Query.format("SELECT * from dtb_doct where cod_anag = %s AND cod_dtip = %s and activity_id = %s ", dto.getCodAnag(), codDtip, activityId);
|
||||
PreparedStatement ps = multiDBTransactionManager.getPrimaryConnection().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
|
||||
DtbDoct slav = UtilityDB.executePreparedStatementDTOOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), ps, DtbDoct.class);
|
||||
|
||||
@@ -448,16 +465,19 @@ public class OrtoFruttaProductionService {
|
||||
.setCodMdep(ordAcq.getCodMdep())
|
||||
;
|
||||
|
||||
sql = "SELECT riga_ord from dtb_ordr where gestione = " + UtilityDB.valueToString(dto.getGestione()) + " " +
|
||||
sql = "SELECT riga_ord from dtb_ordr where gestione = " + UtilityDB.valueToString(dto.getGestione()) + " " +
|
||||
" and data_ord =" + UtilityDB.valueToString(dataOrd) + " " +
|
||||
"AND num_ord = " + UtilityDB.valueToString(dto.getNumOrd()) + " " +
|
||||
"AND cod_mart = " + UtilityDB.valueToString(ordAcq.getDtbOrdr().get(0).getCodMart()) + " " +
|
||||
"AND partita_mag = " + UtilityDB.valueToString(ordAcq.getDtbOrdr().get(0).getPartitaMag());
|
||||
Integer rigaOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
|
||||
|
||||
BigDecimal qtaScarto = !UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()) ? dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP) : BigDecimal.ZERO;
|
||||
BigDecimal qtaScarto = dto.getScarto();
|
||||
if (UtilityBigDecimal.isNullOrZero(qtaScarto)) {
|
||||
qtaScarto = !UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()) ?
|
||||
dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 3, RoundingMode.HALF_UP) :
|
||||
BigDecimal.ZERO;
|
||||
}
|
||||
BigDecimal qtaCnf = dto.getQtaCol().divide(dto.getNumCnf(), 3, RoundingMode.HALF_UP);
|
||||
BigDecimal qtaDoc = dto.getQtaCol().subtract(qtaScarto);
|
||||
BigDecimal numCnf = qtaDoc.divide(qtaCnf, 2, RoundingMode.HALF_UP);
|
||||
@@ -486,7 +506,7 @@ public class OrtoFruttaProductionService {
|
||||
|
||||
|
||||
if (dto.getOriginal() != null && dto.isDDTEdited()) {
|
||||
String sql = Query.format("SELECT * from dtb_doct where cod_anag = %s AND cod_dtip = %s and activity_id = %s ", dto.getOriginal().getCodAnag(), dto.getOriginal().getCodDtipProvv(), activityId);
|
||||
String sql = Query.format("SELECT * from dtb_doct where cod_anag = %s AND cod_dtip = %s and activity_id = %s ", dto.getOriginal().getCodAnag(), dto.getOriginal().getCodDtipProvv(), activityId);
|
||||
PreparedStatement ps = multiDBTransactionManager.getPrimaryConnection().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
|
||||
DtbDoct oldDoc = UtilityDB.executePreparedStatementDTOOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), ps, DtbDoct.class);
|
||||
|
||||
@@ -543,17 +563,22 @@ public class OrtoFruttaProductionService {
|
||||
.setSconto5(dto.getIndiceVariazione().negate())
|
||||
.setOperation(OperationType.INSERT);
|
||||
ddt.getDtbDocr().add(rowPlus);
|
||||
if (!UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione())) {
|
||||
BigDecimal qtaScarto = dto.getScarto();
|
||||
if (UtilityBigDecimal.isNullOrZero(qtaScarto)) {
|
||||
qtaScarto = !UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()) ?
|
||||
dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 3, RoundingMode.HALF_UP) :
|
||||
BigDecimal.ZERO;
|
||||
}
|
||||
if (!UtilityBigDecimal.isNullOrZero(qtaScarto)) {
|
||||
DtbDocr rowScarto = new DtbDocr();
|
||||
BigDecimal qtaDoc = dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
|
||||
BigDecimal numCnf = qtaDoc.divide(qtaCnf, 2, RoundingMode.HALF_UP);
|
||||
BigDecimal numCnf = qtaScarto.divide(qtaCnf, 2, RoundingMode.HALF_UP);
|
||||
rowScarto
|
||||
.setCodMart(ordAcq.getDtbOrdr().get(0).getCodMart())
|
||||
.setPartitaMag(ordAcq.getDtbOrdr().get(0).getPartitaMag())
|
||||
.setDataOrd(ordAcq.getDataOrd())
|
||||
.setNumOrd(ordAcq.getNumOrd())
|
||||
.setRigaOrd(ordAcq.getDtbOrdr().get(0).getRigaOrd())
|
||||
.setQtaDoc(qtaDoc.negate())
|
||||
.setQtaDoc(qtaScarto.negate())
|
||||
.setNumCnf(numCnf.negate())
|
||||
.setQtaCnf(qtaCnf)
|
||||
.setPesoLordo(dto.getPesoLordoPedane())
|
||||
@@ -639,7 +664,7 @@ public class OrtoFruttaProductionService {
|
||||
|
||||
if (!UtilityList.isNullOrEmpty(docs)) {
|
||||
docs = docs.stream().peek(x -> x.setOperation(OperationType.DELETE)).collect(Collectors.toList());
|
||||
entityProcessor.processEntityList(docs, multiDBTransactionManager,true);
|
||||
entityProcessor.processEntityList(docs, multiDBTransactionManager, true);
|
||||
UtilityEntity.throwEntitiesException(docs);
|
||||
}
|
||||
}
|
||||
@@ -659,7 +684,7 @@ public class OrtoFruttaProductionService {
|
||||
.setPartitaMag(carats.get(0).getPartitaMag())
|
||||
.setMtbPartitaMagCarat(carats)
|
||||
.setOperation(OperationType.UPDATE);
|
||||
entityProcessor.processEntity(partita, true,multiDBTransactionManager);
|
||||
entityProcessor.processEntity(partita, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -643,7 +643,7 @@ public class WMSAccettazioneService {
|
||||
|
||||
|
||||
colloDest.setMtbCols(new ArrayList<>());
|
||||
wmsGenericService.spostaArtsTraUL(udc, colloDest);
|
||||
wmsGenericService.spostaArtsTraUL(udc, colloDest, false);
|
||||
}
|
||||
|
||||
|
||||
@@ -655,7 +655,7 @@ public class WMSAccettazioneService {
|
||||
colloDest.setMtbCols(new ArrayList<>());
|
||||
colloDest.setMtbColr(new ArrayList<>());
|
||||
colloCarico.getMtbColr().get(0).setDatetimeRow(DateUtils.addMinutes(Calendar.getInstance().getTime(), 5));
|
||||
wmsGenericService.spostaArtsTraUL(colloCarico, colloDest);
|
||||
wmsGenericService.spostaArtsTraUL(colloCarico, colloDest, false);
|
||||
|
||||
return colloCarico;
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class WMSColliController {
|
||||
|
||||
|
||||
if (useNewDistribution)
|
||||
response.setEntityList(wmsColliService.distribuisciUL(filtroDistribuzioneColloDTO));
|
||||
response.setEntityList(wmsColliService.distribuisciUL(filtroDistribuzioneColloDTO, false));
|
||||
else
|
||||
response.setEntityList(logisticService.distribuzioneRigheCollo(filtroDistribuzioneColloDTO));
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ public class WMSColliService {
|
||||
@Autowired
|
||||
private DistribuzioneColliService distribuzioneColliService;
|
||||
|
||||
public List<MtbColt> distribuisciUL(FiltroDistribuzioneColloDTO filtroDistribuzioneColloDTO) throws Exception {
|
||||
public List<MtbColt> distribuisciUL(FiltroDistribuzioneColloDTO filtroDistribuzioneColloDTO, boolean skipCommit) throws Exception {
|
||||
MtbColt sourceMtbColt = new MtbColt()
|
||||
.setNumCollo(filtroDistribuzioneColloDTO.getNumCollo())
|
||||
.setGestione(filtroDistribuzioneColloDTO.getGestione())
|
||||
@@ -54,7 +54,7 @@ public class WMSColliService {
|
||||
sourceMtbColt.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(sourceMtbColt, multiDBTransactionManager);
|
||||
|
||||
return distribuzioneColliService.distribuzioneRigheColloNew(filtroDistribuzioneColloDTO);
|
||||
return distribuzioneColliService.distribuzioneRigheColloNew(filtroDistribuzioneColloDTO, skipCommit);
|
||||
}
|
||||
|
||||
public MtbColt assegnaLottoSuColloScarico(MtbColt sourceMtbColt) throws Exception {
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package it.integry.ems.retail.wms.dto;
|
||||
|
||||
public class CloseUDCLavorazioneRequestDTO extends CloseUDCRequestDTO {
|
||||
private boolean createDocuments;
|
||||
private String documentCodDtip;
|
||||
|
||||
public boolean isCreateDocuments() {
|
||||
return createDocuments;
|
||||
}
|
||||
|
||||
public String getDocumentCodDtip() {
|
||||
return documentCodDtip;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package it.integry.ems.retail.wms.dto;
|
||||
|
||||
public class CloseUDSLavorazioneRequestDTO extends CloseUDSRequestDTO {
|
||||
|
||||
private boolean createDocument;
|
||||
private String documentCodDtip;
|
||||
private String documentCodAnag;
|
||||
|
||||
public boolean isCreateDocument() {
|
||||
return createDocument;
|
||||
}
|
||||
|
||||
public String getDocumentCodDtip() {
|
||||
return documentCodDtip;
|
||||
}
|
||||
|
||||
public String getDocumentCodAnag() {
|
||||
return documentCodAnag;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package it.integry.ems.retail.wms.dto;
|
||||
|
||||
import it.integry.ems_model.entity.DtbDoct;
|
||||
|
||||
public class CloseUDSLavorazioneResponseDTO extends CloseUDSResponseDTO {
|
||||
|
||||
private DtbDoct generatedDocument;
|
||||
|
||||
public DtbDoct getGeneratedDocument() {
|
||||
return generatedDocument;
|
||||
}
|
||||
|
||||
public CloseUDSLavorazioneResponseDTO setGeneratedDocument(DtbDoct generatedDocument) {
|
||||
this.generatedDocument = generatedDocument;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package it.integry.ems.retail.wms.dto;
|
||||
|
||||
import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO;
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
|
||||
public class CloseUDSRequestDTO {
|
||||
@@ -7,6 +8,7 @@ public class CloseUDSRequestDTO {
|
||||
private String orderCodMdep;
|
||||
private MtbColt mtbColt;
|
||||
|
||||
private FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum criterioDistribuzione = FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum.U;
|
||||
|
||||
public String getOrderCodMdep() {
|
||||
return orderCodMdep;
|
||||
@@ -15,4 +17,8 @@ public class CloseUDSRequestDTO {
|
||||
public MtbColt getMtbColt() {
|
||||
return mtbColt;
|
||||
}
|
||||
|
||||
public FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum getCriterioDistribuzione() {
|
||||
return criterioDistribuzione;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ public class InsertUDSRowRequestDTO {
|
||||
private Integer numOrd;
|
||||
private Integer rigaOrd;
|
||||
|
||||
private String codJcom;
|
||||
|
||||
private String contrassegnoDa;
|
||||
|
||||
public MtbColr getSourceMtbColr() {
|
||||
@@ -124,6 +126,15 @@ public class InsertUDSRowRequestDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJcom() {
|
||||
return codJcom;
|
||||
}
|
||||
|
||||
public InsertUDSRowRequestDTO setCodJcom(String codJcom) {
|
||||
this.codJcom = codJcom;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getContrassegnoDa() {
|
||||
return contrassegnoDa;
|
||||
}
|
||||
|
||||
@@ -554,8 +554,12 @@ public class WMSGenericController {
|
||||
ServiceRestResponse spostaArtsTraUL(@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO) throws Exception {
|
||||
|
||||
wmsGenericService.spostaArtsTraUL(spostaArtsTraULRequestDTO.getSourceMtbColt(), spostaArtsTraULRequestDTO.getDestinationMtbColt());
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
final SpostaArtsTraULResponseDTO spostaArtsTraULResponseDTO = wmsGenericService.spostaArtsTraUL(
|
||||
spostaArtsTraULRequestDTO.getSourceMtbColt(),
|
||||
spostaArtsTraULRequestDTO.getDestinationMtbColt(),
|
||||
spostaArtsTraULRequestDTO.isFlagForceUseRefs());
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(spostaArtsTraULResponseDTO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
package it.integry.ems.retail.wms.generic.controller;
|
||||
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.response.EsitoType;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeCloseRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeEditRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.service.WMSMagazzinoBufferService;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@Scope("request")
|
||||
@RequestMapping("wms/magazzino-buffer")
|
||||
@@ -20,6 +26,8 @@ public class WMSMagazzinoBufferController {
|
||||
|
||||
@Autowired
|
||||
private WMSMagazzinoBufferService wmsMagazzinoBufferService;
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
|
||||
@RequestMapping(value = "{posizione}/isVersamentoStarted", method = RequestMethod.POST)
|
||||
@@ -53,13 +61,34 @@ public class WMSMagazzinoBufferController {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
@RequestMapping(value = "{posizione}/cancelVersamentoMateriale", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse cancelVersamentoMateriale(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@PathVariable String posizione,
|
||||
@RequestBody MagazzinoBufferVersamentoMaterialeRequestDTO dto) throws Exception {
|
||||
@PathVariable String posizione,
|
||||
@RequestBody MagazzinoBufferVersamentoMaterialeRequestDTO dto) throws Exception {
|
||||
wmsMagazzinoBufferService.cancelVersamentoMateriale(dto, posizione);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
@RequestMapping(value = "editVersamentoMateriale", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse editVersamentoMateriale(HttpServletRequest request, @RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestBody List<MagazzinoBufferVersamentoMaterialeEditRequestDTO> dtoList) throws Exception {
|
||||
|
||||
try {
|
||||
wmsMagazzinoBufferService.editVersamentoMateriale(dtoList);
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
multiDBTransactionManager.rollbackAll();
|
||||
} catch (Exception ex) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
}
|
||||
logger.error(request.getRequestURI(), e);
|
||||
return new ServiceRestResponse(EsitoType.KO, profileDB, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,14 @@ package it.integry.ems.retail.wms.generic.dto;
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class MagazzinoBufferVersamentoMaterialeCloseRequestDTO {
|
||||
|
||||
private MtbColt inputMtbColt;
|
||||
private BigDecimal qtaTotDaScaricare;
|
||||
private BigDecimal numCnfDaScaricare;
|
||||
private LocalDateTime oraFineVersamento;
|
||||
|
||||
|
||||
public MtbColt getInputMtbColt() {
|
||||
@@ -37,4 +39,13 @@ public class MagazzinoBufferVersamentoMaterialeCloseRequestDTO {
|
||||
this.numCnfDaScaricare = numCnfDaScaricare;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDateTime getOraFineVersamento() {
|
||||
return oraFineVersamento;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeCloseRequestDTO setOraFineVersamento(LocalDateTime oraFineVersamento) {
|
||||
this.oraFineVersamento = oraFineVersamento;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,223 @@
|
||||
package it.integry.ems.retail.wms.generic.dto;
|
||||
|
||||
import it.integry.ems_model.entity.MtbColr;
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class MagazzinoBufferVersamentoMaterialeEditRequestDTO {
|
||||
|
||||
private BigDecimal qtaVers;
|
||||
private BigDecimal numCnfVers;
|
||||
private BigDecimal qtaCnf;
|
||||
private String partitaMag;
|
||||
private LocalDate dataCollo;
|
||||
private String serCollo;
|
||||
private String gestione;
|
||||
private Integer numCollo;
|
||||
private String codJfas;
|
||||
private String descPosizione;
|
||||
private String posizione;
|
||||
private String codMart;
|
||||
private String codMdep;
|
||||
private LocalDateTime oraInizPrep;
|
||||
private LocalDateTime oraFinePrep;
|
||||
private LocalDate dataColloRif;
|
||||
private String serColloRif;
|
||||
private String gestioneRif;
|
||||
private Integer numColloRif;
|
||||
|
||||
|
||||
public BigDecimal getQtaVers() {
|
||||
return qtaVers;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setQtaVers(BigDecimal qtaVers) {
|
||||
this.qtaVers = qtaVers;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnfVers() {
|
||||
return numCnfVers;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setNumCnfVers(BigDecimal numCnfVers) {
|
||||
this.numCnfVers = numCnfVers;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataCollo() {
|
||||
return dataCollo;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setDataCollo(LocalDate dataCollo) {
|
||||
this.dataCollo = dataCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getSerCollo() {
|
||||
return serCollo;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setSerCollo(String serCollo) {
|
||||
this.serCollo = serCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setGestione(String gestione) {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getNumCollo() {
|
||||
return numCollo;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setNumCollo(Integer numCollo) {
|
||||
this.numCollo = numCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJfas() {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescPosizione() {
|
||||
return descPosizione;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setDescPosizione(String descPosizione) {
|
||||
this.descPosizione = descPosizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPosizione() {
|
||||
return posizione;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setPosizione(String posizione) {
|
||||
this.posizione = posizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMdep() {
|
||||
return codMdep;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setCodMdep(String codMdep) {
|
||||
this.codMdep = codMdep;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDateTime getOraInizPrep() {
|
||||
return oraInizPrep;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setOraInizPrep(LocalDateTime oraInizPrep) {
|
||||
this.oraInizPrep = oraInizPrep;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDateTime getOraFinePrep() {
|
||||
return oraFinePrep;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setOraFinePrep(LocalDateTime oraFinePrep) {
|
||||
this.oraFinePrep = oraFinePrep;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataColloRif() {
|
||||
return dataColloRif;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setDataColloRif(LocalDate dataColloRif) {
|
||||
this.dataColloRif = dataColloRif;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getSerColloRif() {
|
||||
return serColloRif;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setSerColloRif(String serColloRif) {
|
||||
this.serColloRif = serColloRif;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGestioneRif() {
|
||||
return gestioneRif;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setGestioneRif(String gestioneRif) {
|
||||
this.gestioneRif = gestioneRif;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getNumColloRif() {
|
||||
return numColloRif;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setNumColloRif(Integer numColloRif) {
|
||||
this.numColloRif = numColloRif;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCnf() {
|
||||
return qtaCnf;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setQtaCnf(BigDecimal qtaCnf) {
|
||||
this.qtaCnf = qtaCnf;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMag() {
|
||||
return partitaMag;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setPartitaMag(String partitaMag) {
|
||||
this.partitaMag = partitaMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static MtbColt getMtbColt(MagazzinoBufferVersamentoMaterialeEditRequestDTO dto){
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.setDataCollo(dto.getDataCollo())
|
||||
.setSerCollo(dto.getSerCollo())
|
||||
.setGestione(dto.getGestione())
|
||||
.setNumCollo(dto.getNumCollo())
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
return mtbColt;
|
||||
}
|
||||
public static MtbColt getMtbColtRif(MagazzinoBufferVersamentoMaterialeEditRequestDTO dto){
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.setDataCollo(dto.getDataColloRif())
|
||||
.setSerCollo(dto.getSerColloRif())
|
||||
.setGestione(dto.getGestioneRif())
|
||||
.setNumCollo(dto.getNumColloRif())
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
return mtbColt;
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,8 @@ public class SpostaArtsTraULRequestDTO {
|
||||
|
||||
private MtbColt destinationMtbColt;
|
||||
|
||||
private boolean flagForceUseRefs;
|
||||
|
||||
public MtbColt getSourceMtbColt() {
|
||||
return sourceMtbColt;
|
||||
}
|
||||
@@ -25,4 +27,13 @@ public class SpostaArtsTraULRequestDTO {
|
||||
this.destinationMtbColt = destinationMtbColt;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagForceUseRefs() {
|
||||
return flagForceUseRefs;
|
||||
}
|
||||
|
||||
public SpostaArtsTraULRequestDTO setFlagForceUseRefs(boolean flagForceUseRefs) {
|
||||
this.flagForceUseRefs = flagForceUseRefs;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package it.integry.ems.retail.wms.generic.dto;
|
||||
|
||||
import it.integry.ems_model.entity.MtbColr;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SpostaArtsTraULResponseDTO {
|
||||
|
||||
private List<MtbColr> generatedMtbColr;
|
||||
|
||||
|
||||
public List<MtbColr> getGeneratedMtbColr() {
|
||||
return generatedMtbColr;
|
||||
}
|
||||
|
||||
public SpostaArtsTraULResponseDTO setGeneratedMtbColr(List<MtbColr> generatedMtbColr) {
|
||||
this.generatedMtbColr = generatedMtbColr;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,6 @@ import it.integry.ems.service.PrinterService;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.user.UserSession;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems.utility.UtilityLogger;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.db.ResultSetMapper;
|
||||
import it.integry.ems_model.entity.*;
|
||||
@@ -48,7 +47,6 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -1729,7 +1727,7 @@ public class WMSGenericService {
|
||||
BigDecimal qtaCnf,
|
||||
BigDecimal numCnfToMove) throws Exception {
|
||||
|
||||
BigDecimal initialQtaToMove = new BigDecimal(qtaToMove.floatValue());
|
||||
BigDecimal initialQtaToMove = BigDecimal.valueOf(qtaToMove.floatValue());
|
||||
|
||||
if (posizioneSource == null) {
|
||||
throw new Exception("Nessuna posizione sorgente selezionata");
|
||||
@@ -1977,8 +1975,9 @@ public class WMSGenericService {
|
||||
UtilityEntity.throwEntitiesException(entitiesToSave);
|
||||
}
|
||||
|
||||
public void spostaArtsTraUL(MtbColt sourceMtbColt, MtbColt destinationMtbColt) throws Exception {
|
||||
public SpostaArtsTraULResponseDTO spostaArtsTraUL(MtbColt sourceMtbColt, MtbColt destinationMtbColt, boolean flagForceUseRefs) throws Exception {
|
||||
|
||||
SpostaArtsTraULResponseDTO response = new SpostaArtsTraULResponseDTO();
|
||||
List<MtbColr> mtbColrsToMove = sourceMtbColt.getMtbColr();
|
||||
|
||||
if (mtbColrsToMove != null && !mtbColrsToMove.isEmpty()) {
|
||||
@@ -1991,8 +1990,8 @@ public class WMSGenericService {
|
||||
|
||||
boolean destroyMtbColrReferences = false;
|
||||
|
||||
//Se le gestioni sono uguali faccio uno storno sulla sorgente e non lavoro con i riferimenti
|
||||
if ((UtilityString.equalsIgnoreCase(sourceMtbColt.getGestione(), "V") && UtilityString.equalsIgnoreCase(destinationMtbColt.getGestione(), "V")) ||
|
||||
//Se le gestioni sono uguali faccio uno storno sulla sorgente e non lavoro con i riferimenti (solo se non volontariamente forzata)
|
||||
if (!flagForceUseRefs && (UtilityString.equalsIgnoreCase(sourceMtbColt.getGestione(), "V") && UtilityString.equalsIgnoreCase(destinationMtbColt.getGestione(), "V")) ||
|
||||
(UtilityString.equalsIgnoreCase(sourceMtbColt.getGestione(), "V") && sourceMtbColt.getSegno() == -1 && UtilityString.equalsIgnoreCase(destinationMtbColt.getGestione(), "L"))) {
|
||||
destroyMtbColrReferences = true;
|
||||
|
||||
@@ -2061,8 +2060,12 @@ public class WMSGenericService {
|
||||
}
|
||||
|
||||
entityProcessor.processEntityList(mtbColts, true);
|
||||
}
|
||||
UtilityEntity.throwEntitiesException(mtbColts);
|
||||
|
||||
response.setGeneratedMtbColr(destinationMtbColt.getMtbColr());
|
||||
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
public List<AnomalieDTO> scaricoMateriaPrimaDaDistintaBase(String codMdep, String codJfas, Boolean useRapportoMatPrima, List<ScaricoMateriaPrimaDTO> scaricoMateriaPrimaDTOList) throws Exception {
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
package it.integry.ems.retail.wms.generic.service;
|
||||
|
||||
import it.integry.ems.document.service.DocumentProdService;
|
||||
import it.integry.ems.retail.wms.dto.CreateUDSRequestDTO;
|
||||
import it.integry.ems.retail.wms.dto.InsertUDSRowRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeCloseRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeEditRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
|
||||
import it.integry.ems.retail.wms.lavorazione.service.WMSLavorazioneService;
|
||||
import it.integry.ems.rules.businessLogic.LoadColliService;
|
||||
import it.integry.ems.rules.businessLogic.dto.LoadColliDTO;
|
||||
import it.integry.ems.service.AziendaService;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
@@ -24,15 +28,14 @@ import org.springframework.stereotype.Service;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
public class WMSMagazzinoBufferService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
@@ -44,9 +47,16 @@ public class WMSMagazzinoBufferService {
|
||||
|
||||
@Autowired
|
||||
private LoadColliService loadColliService;
|
||||
|
||||
@Autowired
|
||||
private SetupGest setupGest;
|
||||
|
||||
@Autowired
|
||||
private AziendaService aziendaService;
|
||||
|
||||
@Autowired
|
||||
private DocumentProdService documentProdService;
|
||||
|
||||
|
||||
public boolean isVersamentoStarted(MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, String posizione) throws Exception {
|
||||
|
||||
@@ -93,6 +103,7 @@ public class WMSMagazzinoBufferService {
|
||||
|
||||
final MtbColt startUds = wmsLavorazioneService.createUDS(new CreateUDSRequestDTO()
|
||||
.setSegno(-1)
|
||||
.setCodAnag(aziendaService.retrieveInternalCodAnagCliente())
|
||||
.setSerCollo(magazzinoBufferVersamentoMaterialeRequestDTO.getSerCollo())
|
||||
.setNumCollo(magazzinoBufferVersamentoMaterialeRequestDTO.getNumCollo())
|
||||
.setCodMdep(mtbColtRef.getCodMdep())
|
||||
@@ -154,7 +165,7 @@ public class WMSMagazzinoBufferService {
|
||||
int totalNumCnf = magazzinoBufferVersamentoMaterialeRequestDTO.getNumCnfDaScaricare().intValue();
|
||||
|
||||
LocalDateTime startDateTime = UtilityLocalDate.localDateTimeFromDate(udsMtbColr.getDatetimeRow());
|
||||
LocalDateTime endDateTime = UtilityLocalDate.getNowTime();
|
||||
LocalDateTime endDateTime = UtilityLocalDate.isNull(magazzinoBufferVersamentoMaterialeRequestDTO.getOraFineVersamento(),UtilityLocalDate.getNowTime());
|
||||
|
||||
long totalSeconds = ChronoUnit.SECONDS.between(startDateTime, endDateTime);
|
||||
long secondsPerSigleRow = totalSeconds / totalNumCnf;
|
||||
@@ -195,12 +206,13 @@ public class WMSMagazzinoBufferService {
|
||||
entityProcessor.processEntityList(entityList, multiDBTransactionManager, true);
|
||||
|
||||
LoadColliDTO loadColliDTO = new LoadColliDTO()
|
||||
.setCodAnag(UtilityString.isNull(mtbColtToUpdate.getCodAnag(),aziendaService.retrieveInternalCodAnagFornitore()))
|
||||
.setCodDtip(setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_SCAR"))
|
||||
.setCodMdep(mtbColtToUpdate.getCodMdep())
|
||||
.setSaveDoc(true)
|
||||
.setColli(Collections.singletonList(mtbColtToUpdate));
|
||||
DtbDoct doc = loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
|
||||
entityProcessor.processEntity(doc,true,multiDBTransactionManager);
|
||||
entityProcessor.processEntity(doc, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
public void cancelVersamentoMateriale(MagazzinoBufferVersamentoMaterialeRequestDTO dto, String posizione) throws Exception {
|
||||
@@ -216,10 +228,100 @@ public class WMSMagazzinoBufferService {
|
||||
" AND mtb_colr.gestione_rif = {}\n" +
|
||||
"and mtb_colt.posizione = {}\n" +
|
||||
" GROUP BY mtb_colt.num_collo, mtb_colt.gestione, mtb_colt.ser_collo, mtb_colt.data_collo, posizione, cod_jfas\n" +
|
||||
"having sum(mtb_colr.qta_col) = 0\n", colloVersato.getDataCollo(),colloVersato.getSerCollo(),colloVersato.getNumCollo(),colloVersato.getGestione(),posizione);
|
||||
"having sum(mtb_colr.qta_col) = 0\n", colloVersato.getDataCollo(), colloVersato.getSerCollo(), colloVersato.getNumCollo(), colloVersato.getGestione(), posizione);
|
||||
|
||||
MtbColt colloScarico = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(),sql,MtbColt.class);
|
||||
MtbColt colloScarico = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
|
||||
colloScarico.setOperation(OperationType.DELETE);
|
||||
entityProcessor.processEntity(colloScarico,false,multiDBTransactionManager);
|
||||
entityProcessor.processEntity(colloScarico, false, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
public void editVersamentoMateriale(List<MagazzinoBufferVersamentoMaterialeEditRequestDTO> dtoList) throws Exception {
|
||||
Map<MtbColt, List<MagazzinoBufferVersamentoMaterialeEditRequestDTO>> mapScarichi = dtoList.stream().collect(Collectors.groupingBy(MagazzinoBufferVersamentoMaterialeEditRequestDTO::getMtbColtRif));
|
||||
//se non è stato passato nessun versamento in input o se si cerca di modificare più di una udc invio errore
|
||||
if (mapScarichi.isEmpty() || mapScarichi.keySet().size() > 1) {
|
||||
throw new Exception("è possibile correggere solo uno scarico per volta!");
|
||||
}
|
||||
MtbColt colloRif = mapScarichi.keySet().stream().findFirst().orElse(null);
|
||||
//controllo che non si cerchi di scaricare più di quello che è presente nel collo originale
|
||||
checkQuantitaScaricate(colloRif, mapScarichi.get(colloRif));
|
||||
|
||||
for (MagazzinoBufferVersamentoMaterialeEditRequestDTO dto : mapScarichi.get(colloRif)) {
|
||||
MtbColt scarico = MagazzinoBufferVersamentoMaterialeEditRequestDTO.getMtbColt(dto);
|
||||
entityProcessor.processEntity(scarico, true, multiDBTransactionManager);
|
||||
if (UtilityString.isNullOrEmpty(scarico.getCodAnag())){
|
||||
scarico.setCodAnag(aziendaService.retrieveInternalCodAnagFornitore());
|
||||
}
|
||||
//sgancio il collo dal documenti di scarico (verrà ricreato a fine procedura)
|
||||
DtbDoct docScarico = documentProdService.sganciaDocumentoDaCollo(scarico);
|
||||
|
||||
MtbColr rows = new MtbColr();
|
||||
//elimino tutte le righe
|
||||
rows.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), scarico);
|
||||
scarico.setPosizione(dto.getPosizione())
|
||||
.setOraInizPrep(UtilityLocalDate.localDateTimeToDate(dto.getOraInizPrep()))
|
||||
.setOraFinePrep(UtilityLocalDate.localDateTimeToDate(dto.getOraFinePrep()))
|
||||
.setCodJfas(dto.getCodJfas());
|
||||
entityProcessor.processEntity(scarico, true, multiDBTransactionManager);
|
||||
|
||||
MtbColr udcMtbColr = new MtbColr();
|
||||
udcMtbColr
|
||||
.setGestione(colloRif.getGestione())
|
||||
.setDataCollo(colloRif.getDataCollo())
|
||||
.setSerCollo(colloRif.getSerCollo())
|
||||
.setNumCollo(colloRif.getNumCollo())
|
||||
;
|
||||
wmsLavorazioneService.insertUDSRow(new InsertUDSRowRequestDTO()
|
||||
.setTargetMtbColt(scarico)
|
||||
.setSourceMtbColr(udcMtbColr)
|
||||
.setCodMart(dto.getCodMart())
|
||||
.setQtaTot(BigDecimal.ZERO)
|
||||
.setNumCnf(BigDecimal.ZERO)
|
||||
.setQtaCnf(dto.getQtaCnf())
|
||||
.setPartitaMag(dto.getPartitaMag()));
|
||||
|
||||
|
||||
MagazzinoBufferVersamentoMaterialeCloseRequestDTO endVersamentoRequest = new MagazzinoBufferVersamentoMaterialeCloseRequestDTO();
|
||||
endVersamentoRequest
|
||||
.setInputMtbColt(colloRif)
|
||||
|
||||
.setQtaTotDaScaricare(dto.getQtaVers())
|
||||
.setNumCnfDaScaricare(dto.getNumCnfVers())
|
||||
.setOraFineVersamento(dto.getOraFinePrep());
|
||||
endVersamentoMateriale(endVersamentoRequest, dto.getPosizione());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void checkQuantitaScaricate(MtbColt colloRif, List<MagazzinoBufferVersamentoMaterialeEditRequestDTO> dtoList) throws Exception {
|
||||
|
||||
if (dtoList.isEmpty())
|
||||
throw new Exception("Impossibile verificare le quantità da scaricare!");
|
||||
|
||||
BigDecimal qtaScarRichiesta = dtoList.stream().map(MagazzinoBufferVersamentoMaterialeEditRequestDTO::getNumCnfVers).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
String codMart = dtoList.stream().findFirst().get().getCodMart();
|
||||
|
||||
String sql = Query.format("SELECT mtb_colr.cod_mart, SUM(qta_col) AS qta_col, SUM(num_cnf) AS num_cnf\n" +
|
||||
"FROM 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" +
|
||||
"WHERE mtb_colt.data_collo = {}\n" +
|
||||
" AND mtb_colt.num_collo = {}\n" +
|
||||
" AND mtb_colt.ser_collo = {}\n" +
|
||||
" AND mtb_colt.gestione = {}\n" +
|
||||
" AND mtb_colr.cod_mart = {}\n" +
|
||||
"\n" +
|
||||
"GROUP BY mtb_colr.cod_mart",
|
||||
colloRif.getDataCollo(),
|
||||
colloRif.getNumCollo(),
|
||||
colloRif.getSerCollo(),
|
||||
colloRif.getGestione(),
|
||||
codMart
|
||||
|
||||
);
|
||||
MvwSitArtUdcDetInventarioDTO qtaEsistente = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MvwSitArtUdcDetInventarioDTO.class);
|
||||
|
||||
if (qtaScarRichiesta.compareTo(qtaEsistente.getNumCnf()) > 0) {
|
||||
throw new Exception("Lo scarico richiesto supera le quantità disponibili nella UL di partenza!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,14 +50,14 @@ public class WMSLavorazioneController {
|
||||
@RequestMapping(value = "closeUDC", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse closeUDC(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestBody CloseUDCRequestDTO closeUDCRequestDTO) throws Exception {
|
||||
@RequestBody CloseUDCLavorazioneRequestDTO closeUDCRequestDTO) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(wmsLavorazioneService.closeUDC(closeUDCRequestDTO));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "closeUDS", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse closeUDS(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestBody CloseUDSRequestDTO closeUDSRequestDTO) throws Exception {
|
||||
@RequestBody CloseUDSLavorazioneRequestDTO closeUDSRequestDTO) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(wmsLavorazioneService.closeUDS(closeUDSRequestDTO));
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ import it.integry.ems.retail.wms.exceptions.UDSQuantityOverflowException;
|
||||
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
|
||||
import it.integry.ems.retail.wms.generic.service.WMSGenericService;
|
||||
import it.integry.ems.retail.wms.generic.service.WMSGiacenzaULService;
|
||||
import it.integry.ems.rules.businessLogic.LoadColliService;
|
||||
import it.integry.ems.rules.businessLogic.dto.LoadColliDTO;
|
||||
import it.integry.ems.service.AziendaService;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
@@ -73,6 +75,9 @@ public class WMSLavorazioneService {
|
||||
@Autowired
|
||||
private SetupGest setupGest;
|
||||
|
||||
@Autowired
|
||||
private LoadColliService loadColliService;
|
||||
|
||||
@Autowired
|
||||
private AziendaService aziendaService;
|
||||
|
||||
@@ -106,7 +111,6 @@ public class WMSLavorazioneService {
|
||||
.setPosizione(createUDSRequestDTO.getPosizione())
|
||||
.setCodJfas(createUDSRequestDTO.getCodJfas())
|
||||
.setRifOrd(createUDSRequestDTO.getRifOrd())
|
||||
.setCodAnag(createUDSRequestDTO.getCodAnag())
|
||||
.setCodVdes(createUDSRequestDTO.getCodVdes())
|
||||
.setIdLotto(createUDSRequestDTO.getIdLotto());
|
||||
|
||||
@@ -195,36 +199,64 @@ public class WMSLavorazioneService {
|
||||
}
|
||||
|
||||
|
||||
public CloseUDSResponseDTO closeUDS(CloseUDSRequestDTO closeUDSRequestDTO) throws Exception {
|
||||
public CloseUDSLavorazioneResponseDTO closeUDS(CloseUDSLavorazioneRequestDTO closeUDSRequestDTO) throws Exception {
|
||||
if (!userSession.isAttivo()) {
|
||||
throw new UsernameNotFoundException("Utente " + userSession.getUsername() + " non riconosciuto!");
|
||||
}
|
||||
|
||||
MtbColt mtbColtToClose = closeUDSRequestDTO.getMtbColt();
|
||||
CloseUDSLavorazioneResponseDTO response = new CloseUDSLavorazioneResponseDTO();
|
||||
|
||||
if (wmsGenericService.canULBeDeleted(mtbColtToClose)) {
|
||||
wmsGenericService.deleteUL(mtbColtToClose);
|
||||
return new CloseUDSResponseDTO().setDeleted(true);
|
||||
try {
|
||||
MtbColt mtbColtToClose = closeUDSRequestDTO.getMtbColt();
|
||||
|
||||
if (wmsGenericService.canULBeDeleted(mtbColtToClose)) {
|
||||
wmsGenericService.deleteUL(mtbColtToClose);
|
||||
response.setDeleted(true);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
|
||||
mtbColtToClose.getMtbColr().clear();
|
||||
mtbColtToClose.setOraFinePrep(new Date())
|
||||
.setOperation(OperationType.UPDATE);
|
||||
|
||||
entityProcessor.processEntity(mtbColtToClose, multiDBTransactionManager);
|
||||
|
||||
List<MtbColt> distributedUDS = wmsColliService.distribuisciUL(new FiltroDistribuzioneColloDTO()
|
||||
.setDataCollo(mtbColtToClose.getDataCollo())
|
||||
.setSerCollo(mtbColtToClose.getSerCollo())
|
||||
.setGestione(mtbColtToClose.getGestione())
|
||||
.setNumCollo(mtbColtToClose.getNumCollo())
|
||||
.setCriterioDistribuzione(closeUDSRequestDTO.getCriterioDistribuzione().getText()), true);
|
||||
|
||||
response.setSaved(true)
|
||||
.setGeneratedMtbColts(distributedUDS);
|
||||
|
||||
if (closeUDSRequestDTO.isCreateDocument()) {
|
||||
LoadColliDTO loadColliDTO = new LoadColliDTO();
|
||||
loadColliDTO
|
||||
.setColli(distributedUDS)
|
||||
.setCodAnag(closeUDSRequestDTO.getDocumentCodAnag())
|
||||
.setCodDtip(closeUDSRequestDTO.getDocumentCodDtip())
|
||||
.setGestione(GestioneEnum.LAVORAZIONE.getText())
|
||||
.setFlagLeggiDatiOrd(false)
|
||||
.setCodMdep(closeUDSRequestDTO.getMtbColt().getCodMdep());
|
||||
|
||||
DtbDoct documentToSave = loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
|
||||
entityProcessor.processEntity(documentToSave, true, multiDBTransactionManager);
|
||||
|
||||
UtilityEntity.throwEntityException(documentToSave);
|
||||
|
||||
response.setGeneratedDocument(documentToSave);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
multiDBTransactionManager.rollbackAll();
|
||||
throw e;
|
||||
}
|
||||
|
||||
mtbColtToClose.getMtbColr().clear();
|
||||
mtbColtToClose.setOraFinePrep(new Date())
|
||||
.setOperation(OperationType.UPDATE);
|
||||
|
||||
entityProcessor.processEntity(mtbColtToClose, multiDBTransactionManager);
|
||||
|
||||
FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum criterioDistribuzione = FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum.U;
|
||||
|
||||
List<MtbColt> distributedUDS = wmsColliService.distribuisciUL(new FiltroDistribuzioneColloDTO()
|
||||
.setDataCollo(mtbColtToClose.getDataCollo())
|
||||
.setSerCollo(mtbColtToClose.getSerCollo())
|
||||
.setGestione(mtbColtToClose.getGestione())
|
||||
.setNumCollo(mtbColtToClose.getNumCollo())
|
||||
.setCriterioDistribuzione(criterioDistribuzione.getText()));
|
||||
|
||||
return new CloseUDSResponseDTO()
|
||||
.setSaved(true)
|
||||
.setGeneratedMtbColts(distributedUDS);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
@@ -235,7 +267,7 @@ public class WMSLavorazioneService {
|
||||
|
||||
MtbColt targetMtbColt = insertUDSRowRequestDTO.getTargetMtbColt();
|
||||
targetMtbColt.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(targetMtbColt, multiDBTransactionManager);
|
||||
entityProcessor.processEntity(targetMtbColt,true, multiDBTransactionManager);
|
||||
|
||||
|
||||
MtbAart mtbAart = productServices.getArticoloByCodMart(insertUDSRowRequestDTO.getCodMart());
|
||||
@@ -264,6 +296,7 @@ public class WMSLavorazioneService {
|
||||
.setNumOrd(insertUDSRowRequestDTO.getNumOrd())
|
||||
.setRigaOrd(insertUDSRowRequestDTO.getRigaOrd())
|
||||
.setDatetimeRow(new Date())
|
||||
.setCodJcom(insertUDSRowRequestDTO.getCodJcom())
|
||||
.setMtbColrInfoProd(mtbColrInfoProd);
|
||||
targetMtbColr.setOperation(OperationType.INSERT);
|
||||
targetMtbColt.getMtbColr().add(targetMtbColr);
|
||||
@@ -548,7 +581,7 @@ public class WMSLavorazioneService {
|
||||
}
|
||||
|
||||
|
||||
public CloseUDCResponseDTO closeUDC(CloseUDCRequestDTO closeUDCRequestDTO) throws Exception {
|
||||
public CloseUDCResponseDTO closeUDC(CloseUDCLavorazioneRequestDTO closeUDCRequestDTO) throws Exception {
|
||||
if (!userSession.isAttivo()) {
|
||||
throw new UsernameNotFoundException("Utente " + userSession.getUsername() + " non riconosciuto!");
|
||||
}
|
||||
|
||||
@@ -200,7 +200,7 @@ public class WMSSpedizioneService {
|
||||
.setSerCollo(mtbColtToClose.getSerCollo())
|
||||
.setGestione(mtbColtToClose.getGestione())
|
||||
.setNumCollo(mtbColtToClose.getNumCollo())
|
||||
.setCriterioDistribuzione(criterioDistribuzione.getText()));
|
||||
.setCriterioDistribuzione(criterioDistribuzione.getText()), false);
|
||||
|
||||
boolean generaDoc = setupGest.getSetupBoolean("PICKING", "SPEDIZIONE", "GENERA_DOC");
|
||||
|
||||
@@ -527,7 +527,7 @@ public class WMSSpedizioneService {
|
||||
.setSerCollo(mtbColt.getSerCollo())
|
||||
.setGestione(mtbColt.getGestione())
|
||||
.setNumCollo(mtbColt.getNumCollo())
|
||||
.setCriterioDistribuzione(FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum.U.getText()));
|
||||
.setCriterioDistribuzione(FiltroDistribuzioneColloDTO.CriterioDistribuzioneEnum.U.getText()), false);
|
||||
|
||||
mtbColtListToReturn.addAll(distributedUDS);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user