diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250610152544.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250610152544.java new file mode 100644 index 0000000000..bbb06d9c03 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250610152544.java @@ -0,0 +1,266 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250610152544 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createOrUpdateView("[dbo].[vvw_sit_consegneXcommessa]", "CREATE VIEW [dbo].[vvw_sit_consegneXcommessa] as \n" + + "SELECT \n" + + " ordv.gestione AS gestione,\n" + + " ordv.cod_jcom AS cod_jcom, \n" + + " ordv.data_ord AS data_ord,\n" + + " ordv.num_ord AS num_ord,\n" + + " ordv.rif_ord AS rif_ord,\n" + + " ordv.id_viaggio AS id_viaggio,\n" + + " ordv.cod_mart AS cod_mart,\n" + + " ordv.cod_alis AS cod_alis,\n" + + " ISNULL(ordv.cod_art_for, ordv.cod_mart) AS cod_art_for,\n" + + " ISNULL(ordv.descrizione_estesa, ordv.descrizione) AS descrizione,\n" + + " SUM(ordv.qta_ord) AS qta_ord,\n" + + " ISNULL(orda.qta_da_evadere, 0) AS qta_acq,\n" + + " CASE WHEN ISNULL(orda.qta_da_evadere, 0) = 0 THEN NULL ELSE MAX(orda.data_cons) END AS data_cons_acq,\n" + + " ISNULL(colv.qta_col, 0) AS qta_riservata,\n" + + " CASE\n" + + " WHEN ISNULL(mtb_part.qta_esistente, 0) < 0 THEN SUM(ISNULL(cola.qta_col, 0))\n" + + " ELSE ISNULL(mtb_part.qta_esistente, 0) + SUM(ISNULL(cola.qta_col, 0)) END AS qta_disp,\n" + + " SUM(ordv.qta_evasa) AS qta_consegnata,\n" + + " SUM(ordv.importoinevaso) AS importoinevaso,\n" + + " SUM(ordv.importoinevasoivato) AS importoinevasoivato,\n" + + " CASE\n" + + " WHEN SUM(ordv.qta_ord - ordv.qta_evasa) <= SUM(ISNULL(colv.qta_col, 0)) + (CASE\n" + + " WHEN ISNULL(mtb_part.qta_esistente, 0) < 0\n" + + " THEN SUM(ISNULL(cola.qta_col, 0))\n" + + " ELSE ISNULL(mtb_part.qta_esistente, 0) + SUM(ISNULL(cola.qta_col, 0)) END)\n" + + " THEN SUM(ordv.importoinevaso)\n" + + " ELSE (SUM(ISNULL(colv.qta_col, 0)) + (CASE\n" + + " WHEN SUM(ISNULL(cola.qta_col, 0)) +\n" + + " ISNULL(mtb_part.qta_esistente, 0) > 0\n" + + " THEN SUM(ISNULL(cola.qta_col, 0)) + ISNULL(mtb_part.qta_esistente, 0)\n" + + " ELSE 0 END)) * SUM(ordv.importoinevaso) /\n" + + " (SUM(ordv.qta_ord) - SUM(ordv.qta_evasa)) END AS importoevadibile,\n" + + " ordv.unt_ord AS unt_ord,\n" + + " ordv.term_cons,\n" + + " jtb_comt.descrizione AS commessa,\n" + + " CASE\n" + + " WHEN SUM(ordv.qta_ord - ordv.qta_evasa) <= 0 THEN 'CONSEGNATO'\n" + + " WHEN SUM(ordv.qta_ord - ordv.qta_evasa) <= SUM(ISNULL(colv.qta_col, 0)) + CASE\n" + + " WHEN ISNULL(mtb_part.qta_esistente, 0) < 0\n" + + " THEN SUM(ISNULL(cola.qta_col, 0))\n" + + " ELSE ISNULL(mtb_part.qta_esistente, 0) + SUM(ISNULL(cola.qta_col, 0)) END\n" + + " THEN 'DISPONIBILE'\n" + + " ELSE 'NON DISPONIBILE' END AS statoriga,\n" + + " SUM(ordv.importorigaord) AS importoriga,\n" + + " ordv.data_cons AS data_cons_vend,\n" + + " gtb_anag.rag_soc AS cliente,\n" + + " ISNULL(vtb_dest.indirizzo, gtb_anag.indirizzo) AS indirizzo,\n" + + " CASE WHEN vtb_dest.indirizzo IS NULL THEN gtb_anag.citta ELSE vtb_dest.citta END AS citta,\n" + + " CASE\n" + + " WHEN ISNULL(vtb_dest.destinatario, '') <> gtb_anag.rag_soc AND vtb_dest.destinatario IS NOT NULL\n" + + " THEN vtb_dest.destinatario\n" + + " ELSE NULL END AS destinatario,\n" + + " ordv.cod_vage,\n" + + " vtb_agen.rag_soc AS agente,\n" + + " ordv.partita_mag,\n" + + " orda.gestione_rif,\n" + + " gtb_anag.cod_anag AS cod_anag,\n" + + " ordv.num_ord_provv AS num_ord_provv,\n" + + " ordv.flag_sospeso AS flag_sospeso,\n" + + " MIN(ordv.pos_riga) AS pos_riga,\n" + + " ordv.controllato_da AS controllato_da,\n" + + " gtb_anag.e_mail AS e_mail,\n" + + " ordv.data_ins_ord,\n" + + " ordv.flag_evaso,\n" + + " ordv.cod_paga,\n" + + " ordv.descrizione_paga,\n" + + " ordv.cod_vdes \n" + + " \n" + + "FROM gtb_anag,\n" + + " (SELECT dtb_ordt.gestione,\n" + + " cod_vage,\n" + + " cod_anag,\n" + + " cod_vdes,\n" + + " term_cons,\n" + + " dtb_ordr.unt_ord,\n" + + " dtb_ordr.cod_jcom,\n" + + " dtb_ordr.cod_mart,\n" + + " dtb_ordr.cod_alis,\n" + + " dtb_ordr.cod_art_for,\n" + + " dtb_ordt.data_ord,\n" + + " dtb_ordt.num_ord,\n" + + " dtb_ordt.rif_ord,\n" + + " dtb_ordr.descrizione,\n" + + " dtb_ordr.descrizione_estesa,\n" + + " dtb_ordr.data_cons,\n" + + " dtb_ordr.riga_ord,\n" + + " dtb_ordr.qta_ord,\n" + + " dtb_ordr.qta_evasa,\n" + + " dtb_ordr.cod_mdep,\n" + + " dtb_ordr.flag_evaso,\n" + + " SUM(dtb_ordr.qta_ord * dtb_ordr.val_unt * (1 - sconto1 / 100) * (1 - sconto2 / 100) * (1 - sconto3 / 100) *\n" + + " (1 - sconto4 / 100) * (1 - sconto5 / 100) * (1 - sconto6 / 100) * (1 - sconto7 / 100) *\n" + + " (1 - sconto8 / 100)) AS importorigaord,\n" + + " SUM(CASE\n" + + " WHEN (dtb_ordr.qta_ord > dtb_ordr.qta_evasa) AND dtb_ordr.flag_evaso = 'I' THEN\n" + + " (dtb_ordr.qta_ord - dtb_ordr.qta_evasa) * dtb_ordr.val_unt * (1 - sconto1 / 100) *\n" + + " (1 - sconto2 / 100) * (1 - sconto3 / 100) * (1 - sconto4 / 100) * (1 - sconto5 / 100) *\n" + + " (1 - sconto6 / 100) * (1 - sconto7 / 100) * (1 - sconto8 / 100)\n" + + " ELSE 0 END) AS importoinevaso,\n" + + " SUM(CASE\n" + + " WHEN (dtb_ordr.qta_ord > dtb_ordr.qta_evasa) AND dtb_ordr.flag_evaso = 'I' THEN\n" + + " (dtb_ordr.qta_ord - dtb_ordr.qta_evasa) * dtb_ordr.val_unt *\n" + + " (1 + gtb_aliq.perc_aliq / 100) * (1 - sconto1 / 100) * (1 - sconto2 / 100) *\n" + + " (1 - sconto3 / 100) * (1 - sconto4 / 100) * (1 - sconto5 / 100) * (1 - sconto6 / 100) *\n" + + " (1 - sconto7 / 100) * (1 - sconto8 / 100)\n" + + " ELSE 0 END) AS importoinevasoivato,\n" + + " dtb_ordr.partita_mag,\n" + + " dtb_ordt.num_ord_provv,\n" + + " dtb_ordt.flag_sospeso,\n" + + " dtb_ordr.pos_riga,\n" + + " dtb_ordt.controllato_da,\n" + + " dtb_ordt.data_ins_ord,\n" + + " dtb_ordr.id_viaggio,\n" + + " dtb_ordt.cod_paga,\n" + + " dtb_ordt.descrizione_paga\n" + + " FROM dtb_ordt,\n" + + " dtb_ordr\n" + + " LEFT OUTER JOIN gtb_aliq ON dtb_ordr.cod_aliq = gtb_aliq.cod_aliq\n" + + " WHERE dtb_ordt.gestione = dtb_ordr.gestione\n" + + " AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" + + " AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" + + " AND dtb_ordt.gestione = 'V'\n" + + " AND dtb_ordr.cod_mart IS NOT NULL\n" + + " AND dtb_ordt.flag_annulla = 'N'\n" + + " AND dtb_ordr.flag_evaso <> 'A'\n" + + " GROUP BY dtb_ordt.gestione, cod_vage, cod_anag, cod_vdes, term_cons, dtb_ordr.unt_ord, dtb_ordr.cod_jcom,\n" + + " dtb_ordr.cod_mart, dtb_ordr.cod_alis, dtb_ordr.cod_art_for, dtb_ordt.data_ord, dtb_ordt.num_ord,\n" + + " dtb_ordt.rif_ord, dtb_ordr.descrizione, dtb_ordr.descrizione_estesa, dtb_ordr.data_cons,\n" + + " dtb_ordr.riga_ord, dtb_ordr.qta_ord, dtb_ordr.qta_evasa, dtb_ordr.cod_mdep, dtb_ordr.flag_evaso,\n" + + " dtb_ordr.partita_mag, dtb_ordt.num_ord_provv, dtb_ordt.flag_sospeso, dtb_ordr.pos_riga,\n" + + " dtb_ordt.controllato_da, dtb_ordt.data_ins_ord, dtb_ordr.id_viaggio, dtb_ordt.cod_paga,\n" + + " dtb_ordt.descrizione_paga) ordv\n" + + " LEFT OUTER JOIN vtb_dest ON ordv.cod_anag = vtb_dest.cod_anag AND ordv.cod_vdes = vtb_dest.cod_vdes\n" + + " LEFT OUTER JOIN vtb_agen ON ordv.cod_vage = vtb_agen.cod_vage\n" + + " LEFT OUTER JOIN jtb_comt ON ordv.cod_jcom = jtb_comt.cod_jcom\n" + + " LEFT OUTER JOIN ( /*Ordini di acquisto a fornitori*/ SELECT dtb_ordr.gestione,\n" + + " dtb_ordr.flag_evaso,\n" + + " MAX(dtb_ordr.data_cons) AS data_cons,\n" + + " dtb_ordr.cod_mart,\n" + + " dtb_ordr.cod_col,\n" + + " dtb_ordr.cod_tagl,\n" + + " dtb_ordr.cod_jcom,\n" + + " SUM(qta_ord - qta_evasa) AS qta_da_evadere,\n" + + " dtb_ordt.gestione_rif\n" + + " FROM dtb_ordt,\n" + + " dtb_ordr\n" + + " WHERE dtb_ordt.gestione = dtb_ordr.gestione\n" + + " AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" + + " AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" + + " AND dtb_ordt.gestione = 'A'\n" + + " AND dtb_ordt.flag_sospeso = 'N'\n" + + " AND dtb_ordt.flag_annulla = 'N'\n" + + " AND dtb_ordr.flag_evaso = 'I'\n" + + " AND dtb_ordr.qta_ord > dtb_ordr.qta_evasa\n" + + " GROUP BY dtb_ordr.gestione,\n" + + " dtb_ordr.flag_evaso, /*dtb_ordr.data_cons,*/\n" + + " dtb_ordr.cod_mart, dtb_ordr.cod_col,\n" + + " dtb_ordr.cod_tagl, dtb_ordr.cod_jcom,\n" + + " dtb_ordt.gestione_rif) orda\n" + + " ON ordv.cod_jcom = orda.cod_jcom AND ordv.cod_mart = orda.cod_mart AND orda.gestione = 'A' AND\n" + + " orda.flag_evaso = 'I'\n" + + " LEFT OUTER JOIN ( /*Colli di vendita giĆ  preparati e accantonati per commessa*/ SELECT cod_mart,\n" + + " isnull(mtb_colr.cod_jcom, dtb_ordt.cod_jcom) as cod_jcom,\n" + + " mtb_colr.data_ord,\n" + + " mtb_colr.num_ord,\n" + + " riga_ord,\n" + + " mtb_colt.gestione,\n" + + " SUM(qta_col) AS qta_col\n" + + " FROM mtb_colr inner join mtb_colt on mtb_colr.gestione = mtb_colt.gestione and\n" + + " mtb_colr.data_collo = mtb_colt.data_collo and\n" + + " mtb_colr.ser_collo = mtb_colt.ser_collo and\n" + + " mtb_colr.num_collo = mtb_colt.num_collo\n" + + " inner join dtb_ordt on dtb_ordt.data_ord=mtb_colr.data_ord and\n" + + " dtb_ordt.num_ord=mtb_colr.num_ord and\n" + + " dtb_ordt.gestione=mtb_colr.gestione\n" + + " \n" + + " WHERE mtb_colt.gestione = 'V'\n" + + " AND mtb_colt.cod_dtip IS NULL\n" + + " \n" + + " \n" + + " GROUP BY cod_mart, mtb_colr.cod_jcom, dtb_ordt.cod_jcom,\n" + + " mtb_colr.data_ord,\n" + + " mtb_colr.num_ord,\n" + + " riga_ord,\n" + + " mtb_colt.gestione) colv\n" + + " ON ordv.gestione = colv.gestione AND ordv.data_ord = colv.data_ord AND\n" + + " ordv.num_ord = colv.num_ord AND ordv.riga_ord = colv.riga_ord AND\n" + + " ordv.cod_mart = colv.cod_mart AND ordv.cod_jcom = colv.cod_jcom\n" + + " LEFT OUTER JOIN ( /*Colli di acquisto o produzione in giacenza con commessa esclusi quelli di reso a fornitore o posizionati in aree escluse dal picking*/ SELECT cod_mart, cod_mdep, cod_jcom AS cod_jcom, SUM(qta_col) AS qta_col\n" + + " FROM mvw_sitart_udc_det_inventario\n" + + " WHERE (gestione = 'A' OR gestione = 'L')\n" + + " AND ISNULL(cod_jcom, 'MAG') <> 'MAG'\n" + + " AND ISNULL(priorita, 0) >= 0\n" + + " AND segno = 1\n" + + " GROUP BY cod_mart, cod_mdep, cod_jcom) cola\n" + + " ON ordv.cod_mdep = cola.cod_mdep AND ordv.cod_mart = cola.cod_mart AND\n" + + " ordv.cod_jcom = cola.cod_jcom\n" + + " LEFT OUTER JOIN ( /*Colli di acquisto o produzione in giacenza senza commessa, esclusi quelli di reso a fornitore o posizionati in aree escluse dal picking*/ SELECT cod_mart, cod_mdep, SUM(qta_col) AS qta_esistente\n" + + " FROM mvw_sitart_udc_det_inventario\n" + + " WHERE (gestione = 'A' OR gestione = 'L')\n" + + " AND (cod_jcom IS NULL OR cod_jcom = 'MAG')\n" + + " AND ISNULL(priorita, 0) >= 0\n" + + " AND segno = 1\n" + + " GROUP BY cod_mart, cod_mdep) mtb_part\n" + + " ON ordv.cod_mdep = mtb_part.cod_mdep AND ordv.cod_mart = mtb_part.cod_mart\n" + + "WHERE gtb_anag.cod_anag = ordv.cod_anag\n" + + "GROUP BY ordv.gestione ,\n" + + " ordv.cod_jcom ,\n" + + " ordv.data_ord ,\n" + + " ordv.num_ord ,\n" + + " ordv.rif_ord ,\n" + + " ordv.id_viaggio ,\n" + + " ordv.cod_mart ,\n" + + " ordv.cod_alis ,\n" + + " ISNULL(ordv.cod_art_for, ordv.cod_mart) ,\n" + + " ISNULL(ordv.descrizione_estesa, ordv.descrizione),\n" + + " ISNULL(orda.qta_da_evadere, 0) ,\n" + + " ISNULL(colv.qta_col, 0) ,\n" + + " mtb_part.qta_esistente ,\n" + + " ordv.unt_ord ,\n" + + " ordv.term_cons,\n" + + " jtb_comt.descrizione ,\n" + + " ordv.data_cons,\n" + + " gtb_anag.rag_soc,\n" + + " ISNULL(vtb_dest.indirizzo, gtb_anag.indirizzo),\n" + + " vtb_dest.indirizzo,\n" + + " vtb_dest.destinatario,\n" + + " gtb_anag.citta,\n" + + " vtb_dest.citta,\n" + + " ordv.cod_vage,\n" + + " vtb_agen.rag_soc ,\n" + + " ordv.partita_mag,\n" + + " orda.gestione_rif,\n" + + " gtb_anag.cod_anag ,\n" + + " ordv.num_ord_provv ,\n" + + " ordv.flag_sospeso ,\n" + + " ordv.controllato_da ,\n" + + " gtb_anag.e_mail ,\n" + + " ordv.data_ins_ord,\n" + + " ordv.flag_evaso,\n" + + " ordv.cod_paga,\n" + + " ordv.descrizione_paga,\n" + + " ordv.cod_vdes"); + } + + @Override + public void down() throws Exception { + + } + +}