Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -0,0 +1,528 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.IntegryCustomerDB;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20240725150448 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if (!isCustomerDb(IntegryCustomerDB.Agricoper_Agricoper)) {
|
||||
return;
|
||||
}
|
||||
|
||||
createOrUpdateView("CRP_OF_FabbisognoOre_JSON", "CREATE VIEW [dbo].[CRP_OF_FabbisognoOre_JSON] AS\n" +
|
||||
" --Prende tutte le righe degli ordini di vendita da confezionare in sede ed produce una riga di raccolta per ogni varietà inclusa nel confezionamento\n" +
|
||||
"/*SELECT CASE\n" +
|
||||
" WHEN jtb_cicl.cod_jfas = 'COMA' AND jtb_dist_clav_dir.cod_jfas = 'CONF' THEN 'SEDE'\n" +
|
||||
" ELSE 'CAMPAGNA' END AS luogo_lavoro,\n" +
|
||||
" --ISNULL(dtb_ordt.cod_jcom, CONVERT(VARCHAR(8), (YEAR(dtb_ordt.data_ord) - 2000) * 100000 + dtb_ordt.num_ord)) AS cod_jcom,\n" +
|
||||
" (SELECT DISTINCT ISNULL(ordV.cod_jcom,\n" +
|
||||
" CONVERT(VARCHAR(8), (YEAR(ordV.data_ord) - 2000) * 100000 + ordV.num_ord)) AS cod_jcom,\n" +
|
||||
" jc.descrizione AS desc_comm,\n" +
|
||||
" (SELECT MAX(kg_ord)\n" +
|
||||
" FROM (VALUES (ROUND((qta_ord - qta_evasa) * rap_conv * ma.peso_kg * distPF.perc_mp * 1.1, 0)),\n" +
|
||||
" (0)) AS t(kg_ord)) AS kg_ord\n" +
|
||||
" FROM dtb_ordt ordV\n" +
|
||||
" INNER JOIN dtb_ordr OrdVr ON OrdV.gestione = OrdVr.gestione AND\n" +
|
||||
" ordV.data_ord = OrdVr.data_ord AND\n" +
|
||||
" ordV.num_ord = OrdVr.num_ord AND\n" +
|
||||
" ordV.cod_anag = dtb_ordt.cod_anag AND\n" +
|
||||
" ordVr.cod_mart = dtb_ordr.cod_mart AND\n" +
|
||||
" ordVr.data_cons = dtb_ordr.data_cons\n" +
|
||||
" INNER JOIN mtb_aart ma ON OrdVr.cod_mart = ma.cod_mart\n" +
|
||||
" INNER JOIN jtb_comt jc ON ISNULL(ordV.cod_jcom,\n" +
|
||||
" CONVERT(VARCHAR(8), (YEAR(ordV.data_ord) - 2000) * 100000 + ordV.num_ord)) =\n" +
|
||||
" jc.cod_jcom\n" +
|
||||
" FOR JSON PATH) AS cod_jcom,\n" +
|
||||
" dtb_ordr.data_cons,\n" +
|
||||
" dtb_ordt.cod_anag,\n" +
|
||||
" gtb_anag.rag_soc,\n" +
|
||||
" dtb_ordt.cod_anag + ' - ' + gtb_anag.rag_soc AS cliente,\n" +
|
||||
" --ISNULL(vtb_dest.citta, gtb_anag.citta) AS citta,\n" +
|
||||
" '' AS citta,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.descrizione_estesa AS descrizione,\n" +
|
||||
" dtb_ordr.cod_mart + ' - ' + dtb_ordr.descrizione_estesa AS prodotto,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN SUM(qta_ord - qta_evasa) < 0 THEN 0\n" +
|
||||
" ELSE SUM((qta_ord - qta_evasa) * rap_conv) END *\n" +
|
||||
" distPf.perc_mp *\n" +
|
||||
" 1.1 AS qta_ord,\n" +
|
||||
" ROUND(CASE\n" +
|
||||
" WHEN SUM(qta_ord - qta_evasa) < 0 THEN 0\n" +
|
||||
" ELSE SUM((qta_ord - qta_evasa) * rap_conv * mtb_aart.peso_kg) END * distPf.perc_mp * 1.1, 0) AS kg_ord,\n" +
|
||||
" CEILING(CASE\n" +
|
||||
" WHEN SUM(num_cnf - num_cnf_evasa) < 0 THEN 0\n" +
|
||||
" ELSE SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) END *\n" +
|
||||
" distPf.perc_mp *\n" +
|
||||
" 1.1) AS colli_ord,\n" +
|
||||
" dtb_ordr.qta_cnf,\n" +
|
||||
" CEILING(CASE\n" +
|
||||
" WHEN SUM(num_cnf - num_cnf_evasa) < 0 THEN 0\n" +
|
||||
" ELSE SUM((dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) / dtb_ordr.colli_pedana) END *\n" +
|
||||
" distPf.perc_mp *\n" +
|
||||
" 1.1) AS pedane_ord,\n" +
|
||||
" jtb_dist_clav_dir.cod_jfas,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN jtb_cicl.cod_jfas = 'COMA' AND jtb_dist_clav_dir.cod_jfas = 'CONF' THEN 'COMA'\n" +
|
||||
" ELSE 'CONF' END AS luogo,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN SUM(qta_ord - qta_evasa) < 0 THEN 0\n" +
|
||||
" ELSE ROUND(SUM(qta_ord * rap_conv * jtb_dist_clav_dir.hr_time /\n" +
|
||||
" (jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod)) / 3600,\n" +
|
||||
" 2) END *\n" +
|
||||
" distPf.perc_mp AS ore_uomo_necessarie,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN jtb_dist_clav_dir.hr_time = 0 THEN 80\n" +
|
||||
" ELSE ISNULL(ROUND(jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod /\n" +
|
||||
" (jtb_dist_clav_dir.hr_time / 3600), 0),\n" +
|
||||
" 80) END AS produttivita,\n" +
|
||||
" mtb_aart.unt_mis,\n" +
|
||||
" dtb_ordt.flag_sospeso,\n" +
|
||||
" (SELECT PF.cod_mart,\n" +
|
||||
" mtb_aart.descrizione,\n" +
|
||||
" (SELECT jtb_cicl.cod_jfas AS cod_jfas_sl,\n" +
|
||||
" jtb_cicl.cod_prod AS cod_sl,\n" +
|
||||
" jtb_cicl.descrizione_prod AS descr_sl,\n" +
|
||||
" sl.qta_cnf,\n" +
|
||||
" sl.colli_pedana,\n" +
|
||||
" jtb_dist_mate.perc_sfrido,\n" +
|
||||
" CONVERT(VARCHAR(20), CONVERT(INTEGER, ISNULL(mtb_part.qta_esistente, 0))) + ' ' +\n" +
|
||||
" mtb_aart.unt_mis AS giacenza\n" +
|
||||
" FROM jtb_cicl\n" +
|
||||
" INNER JOIN jtb_dist_mate ON jtb_cicl.cod_prod = jtb_dist_mate.cod_prod\n" +
|
||||
" INNER JOIN mtb_aart sl ON jtb_dist_mate.cod_prod = sl.cod_mart\n" +
|
||||
" INNER JOIN mtb_aart ON jtb_dist_mate.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_grup\n" +
|
||||
" ON mtb_aart.cod_mgrp = mtb_grup.cod_mgrp AND\n" +
|
||||
" mtb_grup.tipo_mgrp = 'MP'\n" +
|
||||
" AND mtb_aart.cod_mart = PF.cod_mart\n" +
|
||||
" LEFT OUTER JOIN mtb_part\n" +
|
||||
" ON jtb_cicl.cod_mart = mtb_part.cod_mart AND mtb_part.cod_mdep =\n" +
|
||||
" (SELECT DBO.getGestSetup('CRUSCOTTO_PRODUZIONE', 'SETUP', 'COD_MDEP_SCAR'))\n" +
|
||||
" WHERE jtb_cicl.cod_jfas = 'RACC'\n" +
|
||||
" AND sl.flag_stato = 'A'\n" +
|
||||
" FOR JSON PATH) AS semilavorato\n" +
|
||||
" FROM jtb_dist_mate PF\n" +
|
||||
" INNER JOIN mtb_aart ON PF.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_grup ON mtb_aart.cod_mgrp = mtb_grup.cod_mgrp AND mtb_grup.tipo_mgrp = 'MP'\n" +
|
||||
" WHERE PF.cod_prod = distPF.cod_prod\n" +
|
||||
" AND PF.cod_mart = distPF.cod_mart\n" +
|
||||
" FOR JSON PATH) AS varieta,\n" +
|
||||
" dtb_ordr.cod_tcol_UL\n" +
|
||||
"FROM dtb_ordt\n" +
|
||||
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione AND dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" +
|
||||
" dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
|
||||
" INNER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordr.cod_mart\n" +
|
||||
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN jtb_dist_clav_dir\n" +
|
||||
" ON jtb_dist_clav_dir.cod_prod = dtb_ordr.cod_mart AND jtb_dist_clav_dir.cod_jfas = 'RACC'\n" +
|
||||
" INNER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
|
||||
" LEFT OUTER JOIN vtb_dest ON dtb_ordt.cod_anag = vtb_dest.cod_anag AND dtb_ordt.cod_vdes = vtb_dest.cod_vdes\n" +
|
||||
" INNER JOIN\n" +
|
||||
" (SELECT jtb_cicl.cod_prod, jtb_dist_mate.cod_mart, jtb_dist_mate.qta_std / jtb_cicl.qta_prod AS perc_mp\n" +
|
||||
" FROM jtb_cicl\n" +
|
||||
" INNER JOIN jtb_dist_mate ON jtb_cicl.cod_prod = jtb_dist_mate.cod_prod\n" +
|
||||
" INNER JOIN mtb_aart ON jtb_dist_mate.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_grup ON mtb_aart.cod_mgrp = mtb_grup.cod_mgrp AND mtb_grup.tipo_mgrp = 'MP') distPF\n" +
|
||||
" ON dtb_ordr.cod_mart = distPF.cod_prod\n" +
|
||||
"\n" +
|
||||
"WHERE dtb_ordt.gestione = 'V'\n" +
|
||||
" AND dtb_ordr.data_cons >= DATEADD(DAY, -1, GETDATE())\n" +
|
||||
" AND flag_evaso = 'I'\n" +
|
||||
" AND flag_annulla = 'N'\n" +
|
||||
"--AND dtb_ordr.cod_mart = '150122-122' and data_cons = '2022/10/01'\n" +
|
||||
"\n" +
|
||||
"GROUP BY jtb_cicl.cod_jfas,\n" +
|
||||
" dtb_ordr.data_cons, gtb_anag.rag_soc, gtb_anag.citta, --vtb_dest.citta,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.descrizione_estesa, jtb_dist_clav_dir.cod_jfas, jtb_dist_clav_dir.hr_time, flag_sospeso,\n" +
|
||||
" dtb_ordt.cod_anag,\n" +
|
||||
" mtb_aart.unt_mis, distPf.perc_mp, distPF.cod_mart,\n" +
|
||||
" distPF.cod_mart, distPF.cod_prod,\n" +
|
||||
" jtb_cicl.qta_prod,\n" +
|
||||
" jtb_cicl.rap_conv_prod, dtb_ordr.cod_tcol_UL, dtb_ordr.qta_cnf*/\n" +
|
||||
"\n" +
|
||||
"WITH prodotti AS (SELECT PF.cod_mart,\n" +
|
||||
" PF.cod_prod,\n" +
|
||||
" mtb_aart.descrizione,\n" +
|
||||
" (SELECT jtb_cicl.cod_jfas AS cod_jfas_sl,\n" +
|
||||
" jtb_cicl.cod_prod AS cod_sl,\n" +
|
||||
" jtb_cicl.descrizione_prod AS descr_sl,\n" +
|
||||
" sl.qta_cnf,\n" +
|
||||
" sl.colli_pedana,\n" +
|
||||
" jtb_dist_mate.perc_sfrido,\n" +
|
||||
" CONVERT(VARCHAR(20), CONVERT(INTEGER, ISNULL(mtb_part.qta_esistente, 0))) + ' ' +\n" +
|
||||
" mtb_aart.unt_mis AS giacenza\n" +
|
||||
" FROM jtb_cicl\n" +
|
||||
" INNER JOIN jtb_dist_mate ON jtb_cicl.cod_prod = jtb_dist_mate.cod_prod\n" +
|
||||
" INNER JOIN mtb_aart sl ON jtb_dist_mate.cod_prod = sl.cod_mart\n" +
|
||||
" INNER JOIN mtb_aart ON jtb_dist_mate.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_grup\n" +
|
||||
" ON mtb_aart.cod_mgrp = mtb_grup.cod_mgrp AND\n" +
|
||||
" mtb_grup.tipo_mgrp = 'MP'\n" +
|
||||
" AND mtb_aart.cod_mart = PF.cod_mart\n" +
|
||||
" LEFT OUTER JOIN mtb_part\n" +
|
||||
" ON jtb_cicl.cod_mart = mtb_part.cod_mart AND mtb_part.cod_mdep =\n" +
|
||||
" (SELECT DBO.getGestSetup('CRUSCOTTO_PRODUZIONE', 'SETUP', 'COD_MDEP_SCAR'))\n" +
|
||||
" WHERE jtb_cicl.cod_jfas = 'RACC'\n" +
|
||||
" AND sl.flag_stato = 'A'\n" +
|
||||
" FOR JSON PATH) AS semilavorato\n" +
|
||||
" FROM jtb_dist_mate PF\n" +
|
||||
" INNER JOIN mtb_aart ON PF.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_grup\n" +
|
||||
" ON mtb_aart.cod_mgrp = mtb_grup.cod_mgrp AND mtb_grup.tipo_mgrp = 'MP'),\n" +
|
||||
" varieta AS (SELECT prodotti.cod_mart,\n" +
|
||||
" prodotti.cod_prod,\n" +
|
||||
" prodotti.descrizione,\n" +
|
||||
" (SELECT cod_mart, descrizione, semilavorato\n" +
|
||||
" FROM prodotti varieta2\n" +
|
||||
" WHERE varieta2.cod_prod = prodotti.cod_prod\n" +
|
||||
" AND varieta2.cod_mart = prodotti.cod_mart\n" +
|
||||
" FOR JSON PATH) AS json_varieta\n" +
|
||||
" FROM prodotti),\n" +
|
||||
" colliL AS (SELECT mtb_colr.cod_mart,\n" +
|
||||
" mtb_colr.data_collo,\n" +
|
||||
" SUM(mtb_colr.num_cnf) AS num_cnf,\n" +
|
||||
" SUM(ma.qta_cnf * mtb_colr.num_cnf) AS qta_col_teo,\n" +
|
||||
" SUM(mtb_colr.qta_col) AS qta_col_eff\n" +
|
||||
" FROM mtb_colr\n" +
|
||||
" INNER JOIN mtb_aart ma ON mtb_colr.cod_mart = ma.cod_mart\n" +
|
||||
" 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" +
|
||||
" WHERE mtb_colr.gestione = 'L'\n" +
|
||||
" AND mtb_colt.segno = 1\n" +
|
||||
" GROUP BY mtb_colr.cod_mart, mtb_colr.data_collo),\n" +
|
||||
" colliV AS (SELECT mtb_colr.cod_mart,\n" +
|
||||
" mtb_colr.cod_jcom,\n" +
|
||||
" mtb_colr.gestione,\n" +
|
||||
" mtb_colr.data_ord,\n" +
|
||||
" mtb_colr.num_ord,\n" +
|
||||
" SUM(mtb_colr.num_cnf) AS num_cnf,\n" +
|
||||
" SUM(ma.qta_cnf * mtb_colr.num_cnf) AS qta_col_teo,\n" +
|
||||
" SUM(mtb_colr.qta_col) AS qta_col_eff\n" +
|
||||
" FROM mtb_colr\n" +
|
||||
" INNER JOIN mtb_aart ma ON mtb_colr.cod_mart = ma.cod_mart\n" +
|
||||
" 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" +
|
||||
" WHERE mtb_colr.gestione = 'V'\n" +
|
||||
" AND mtb_colt.segno = -1\n" +
|
||||
" AND mtb_colt.data_doc IS NULL\n" +
|
||||
" GROUP BY mtb_colr.cod_mart, mtb_colr.cod_jcom, mtb_colr.gestione, mtb_colr.data_ord, mtb_colr.num_ord),\n" +
|
||||
" qtaPianConf AS (SELECT cod_prod,\n" +
|
||||
" cod_jcom,\n" +
|
||||
" MAX(flag_evaso_prod) AS flag_evaso_prod,\n" +
|
||||
" SUM(qta_pian) AS qta_pian,\n" +
|
||||
" SUM(colli_pian) AS colli_pian\n" +
|
||||
" FROM (SELECT DISTINCT luogo_lavoro,\n" +
|
||||
" dopp.cod_jfas,\n" +
|
||||
" dopp.cod_anag,\n" +
|
||||
" dopp.cod_prod,\n" +
|
||||
" cod_sl,\n" +
|
||||
" dopp.cod_jcom,\n" +
|
||||
" dopp.cod_mart,\n" +
|
||||
" magaz,\n" +
|
||||
" CASE WHEN do.flag_evaso_prod = 'E' THEN 1 ELSE 0 END AS flag_evaso_prod,\n" +
|
||||
" CEILING(SUM(CASE WHEN do.flag_evaso_prod = 'E' THEN 0 ELSE qta_ord END)\n" +
|
||||
" OVER (PARTITION BY dopp.cod_jfas, do.num_ord, dopp.cod_prod, dopp.cod_jcom))\n" +
|
||||
" AS qta_pian,\n" +
|
||||
" CEILING(SUM(CASE WHEN do.flag_evaso_prod = 'E' THEN 0 ELSE qta_ord END /\n" +
|
||||
" ma.qta_cnf)\n" +
|
||||
" OVER (PARTITION BY dopp.cod_jfas, do.num_ord, dopp.cod_prod, dopp.cod_jcom))\n" +
|
||||
" AS colli_pian,\n" +
|
||||
" dopp.data_ord\n" +
|
||||
" FROM dtb_ordr_pian_prod dopp\n" +
|
||||
" LEFT OUTER JOIN dtb_ordt do\n" +
|
||||
" ON dopp.gestione = do.gestione\n" +
|
||||
" AND dopp.data_ord = do.data_ord\n" +
|
||||
" AND do.num_ord = dopp.num_ord\n" +
|
||||
" LEFT OUTER JOIN mtb_aart ma ON dopp.cod_prod = ma.cod_mart\n" +
|
||||
" WHERE magaz = 0\n" +
|
||||
" AND dopp.cod_jcom IS NOT NULL\n" +
|
||||
" AND (data_piano >= CAST(GETDATE() AS DATE) OR do.num_ord IS NOT NULL)) t\n" +
|
||||
" GROUP BY cod_prod, cod_jcom),\n" +
|
||||
" qtaPianiRacc AS (SELECT cod_mart,\n" +
|
||||
" data_piano,\n" +
|
||||
" MAX(flag_evaso_prod) AS flag_evaso_prod,\n" +
|
||||
" SUM(qta_pian) AS qta_pian\n" +
|
||||
" FROM (SELECT DISTINCT dopp.cod_mart,\n" +
|
||||
" CASE WHEN do.flag_evaso_prod = 'E' THEN 1 ELSE 0 END AS flag_evaso_prod,\n" +
|
||||
" CEILING(SUM(CASE WHEN do.flag_evaso_prod = 'E' THEN 0 ELSE qta_ord END)\n" +
|
||||
" OVER (PARTITION BY dopp.data_piano, dopp.cod_mart))\n" +
|
||||
" AS qta_pian,\n" +
|
||||
" dopp.data_piano\n" +
|
||||
" FROM dtb_ordr_pian_prod dopp\n" +
|
||||
" LEFT OUTER JOIN dtb_ordt do\n" +
|
||||
" ON dopp.gestione = do.gestione\n" +
|
||||
" AND dopp.data_ord = do.data_ord\n" +
|
||||
" AND do.num_ord = dopp.num_ord\n" +
|
||||
" WHERE dopp.cod_jfas = 'RACC'\n" +
|
||||
" AND data_piano >= CAST(GETDATE() AS DATE)) t\n" +
|
||||
" GROUP BY cod_mart, data_piano),\n" +
|
||||
" ordiniResiduiConf AS (SELECT CASE\n" +
|
||||
" WHEN jtb_cicl.cod_jfas = 'COMA' AND jtb_dist_clav_dir.cod_jfas = 'CONF'\n" +
|
||||
" THEN 'SEDE'\n" +
|
||||
" ELSE 'CAMPAGNA' END AS luogo_lavoro,\n" +
|
||||
" ISNULL(dtb_ordt.cod_jcom,\n" +
|
||||
" CONVERT(VARCHAR(8), (YEAR(dtb_ordt.data_ord) - 2000) * 100000 + dtb_ordt.num_ord)) AS cod_jcom,\n" +
|
||||
" dtb_ordr.data_cons,\n" +
|
||||
" dtb_ordt.cod_anag,\n" +
|
||||
" gtb_anag.rag_soc,\n" +
|
||||
" dtb_ordt.cod_anag + ' - ' + gtb_anag.rag_soc AS cliente,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.descrizione,\n" +
|
||||
" dtb_ordr.cod_mart + ' - ' + dtb_ordr.descrizione AS prodotto,\n" +
|
||||
" --MAX(qtaPian.flag_evaso_prod) AS flag_evaso_prod,\n" +
|
||||
" (dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) * mtb_aart.qta_cnf *\n" +
|
||||
" mtb_aart.peso_kg AS kg_ord,\n" +
|
||||
" qtaPianConf.qta_pian,\n" +
|
||||
" calc.kg_residui AS kg_residui,\n" +
|
||||
" qtaPianConf.colli_pian,\n" +
|
||||
" calc.colli_residui AS colli_residui,\n" +
|
||||
" mtb_aart.qta_cnf,\n" +
|
||||
" dtb_ordr.colli_pedana,\n" +
|
||||
" CEILING(qtaPianConf.colli_pian / dtb_ordr.colli_pedana) AS pedane_pian,\n" +
|
||||
" CEILING(calc.colli_residui / dtb_ordr.colli_pedana) AS pedane_residue,\n" +
|
||||
" jtb_dist_clav_dir.cod_jfas,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN jtb_cicl.cod_jfas = 'COMA' AND jtb_dist_clav_dir.cod_jfas = 'CONF'\n" +
|
||||
" THEN 'COMA'\n" +
|
||||
" ELSE 'CONF' END AS luogo,\n" +
|
||||
" ROUND(calc.kg_residui * jtb_dist_clav_dir.hr_time /\n" +
|
||||
" (jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod) / 3600,\n" +
|
||||
" 2) AS ore_uomo_necessarie,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN jtb_dist_clav_dir.hr_time = 0 THEN 80\n" +
|
||||
" ELSE ISNULL(ROUND(jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod /\n" +
|
||||
" (jtb_dist_clav_dir.hr_time / 3600), 0),\n" +
|
||||
" 80) END AS produttivita,\n" +
|
||||
" mtb_aart.unt_mis,\n" +
|
||||
" dtb_ordt.flag_sospeso,\n" +
|
||||
" dtb_ordr.cod_tcol_UL,\n" +
|
||||
" (SELECT MP.cod_mart, MP.descrizione, MP.perc_sfrido\n" +
|
||||
" FROM (SELECT jtb_cicl.cod_jfas AS cod_jfas_sl,\n" +
|
||||
" jtb_dist_mate.cod_mart,\n" +
|
||||
" mtb_aart.descrizione,\n" +
|
||||
" jtb_cicl.cod_prod AS cod_sl,\n" +
|
||||
" jtb_cicl.descrizione_prod AS descr_sl,\n" +
|
||||
" jtb_dist_mate.perc_sfrido\n" +
|
||||
" FROM jtb_cicl\n" +
|
||||
" INNER JOIN jtb_dist_mate ON jtb_cicl.cod_prod = jtb_dist_mate.cod_prod\n" +
|
||||
" INNER JOIN mtb_aart ON jtb_dist_mate.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_grup\n" +
|
||||
" ON mtb_aart.cod_mgrp = mtb_grup.cod_mgrp AND mtb_grup.tipo_mgrp = 'MP'\n" +
|
||||
" WHERE jtb_cicl.cod_prod = dtb_ordr.cod_mart) MP\n" +
|
||||
" FOR JSON AUTO) varieta\n" +
|
||||
" FROM dtb_ordt\n" +
|
||||
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione AND\n" +
|
||||
" dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" +
|
||||
" dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
|
||||
" INNER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordr.cod_mart\n" +
|
||||
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" LEFT OUTER JOIN jtb_dist_clav_dir\n" +
|
||||
" ON jtb_dist_clav_dir.cod_prod = dtb_ordr.cod_mart AND\n" +
|
||||
" jtb_dist_clav_dir.cod_jfas <> 'RACC'\n" +
|
||||
" INNER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
|
||||
" LEFT OUTER JOIN vtb_dest ON dtb_ordt.cod_anag = vtb_dest.cod_anag AND\n" +
|
||||
" dtb_ordt.cod_vdes = vtb_dest.cod_vdes\n" +
|
||||
" LEFT OUTER JOIN colliV ON colliV.cod_mart = dtb_ordr.cod_mart AND\n" +
|
||||
" colliV.cod_jcom = dtb_ordt.cod_jcom\n" +
|
||||
" LEFT OUTER JOIN qtaPianConf ON dtb_ordr.cod_mart = qtaPianConf.cod_prod AND\n" +
|
||||
" dtb_ordt.cod_jcom = qtaPianConf.cod_jcom\n" +
|
||||
" CROSS APPLY(SELECT ROUND(CEILING(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa -\n" +
|
||||
" ISNULL(colliV.num_cnf, 0) -\n" +
|
||||
" (ISNULL(qtaPianConf.colli_pian, 0))) *\n" +
|
||||
" mtb_aart.qta_cnf *\n" +
|
||||
" mtb_aart.peso_kg, 0) AS kg_residui,\n" +
|
||||
" CEILING(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa -\n" +
|
||||
" ISNULL(colliV.num_cnf, 0) -\n" +
|
||||
" (ISNULL(qtaPianConf.colli_pian, 0))) AS colli_residui) calc\n" +
|
||||
" WHERE dtb_ordt.gestione = 'V'\n" +
|
||||
" AND dtb_ordr.data_cons >= DATEADD(DAY, -1, GETDATE())\n" +
|
||||
" AND flag_evaso = 'I'\n" +
|
||||
" AND flag_annulla = 'N'),\n" +
|
||||
" ordiniResidui AS (SELECT 'CAMPAGNA' AS luogo_lavoro,\n" +
|
||||
" NULL AS cod_jcom,\n" +
|
||||
" data_cons,\n" +
|
||||
" NULL AS cod_anag,\n" +
|
||||
" NULL AS rag_soc,\n" +
|
||||
" NULL AS cliente,\n" +
|
||||
" distPF.cod_mart,\n" +
|
||||
" varieta.descrizione AS descrizione,\n" +
|
||||
" distPF.cod_mart + ' - ' + varieta.descrizione AS prodotto,\n" +
|
||||
" -- 0 AS flag_evaso_prod,\n" +
|
||||
" qtaPianiRacc.qta_pian AS qta_pian,\n" +
|
||||
" ROUND(IIF(SUM(ordiniResiduiConf.kg_ord *\n" +
|
||||
" distPF.perc_mp * 1.1) - ISNULL(qtaPianiRacc.qta_pian, 0) > 0,\n" +
|
||||
" SUM(ordiniResiduiConf.kg_ord *\n" +
|
||||
" distPF.perc_mp * 1.1) - ISNULL(qtaPianiRacc.qta_pian, 0),\n" +
|
||||
" 0),\n" +
|
||||
" 0) AS kg_residui,\n" +
|
||||
" 0 AS colli_pian,\n" +
|
||||
" 0 AS colli_residui,\n" +
|
||||
" semilavorato.qta_cnf,\n" +
|
||||
" semilavorato.colli_pedana,\n" +
|
||||
" 0 AS pedane_pian,\n" +
|
||||
" 0 AS pedane_residue,\n" +
|
||||
" 'RACC' AS cod_jfas,\n" +
|
||||
" 'CONF' AS luogo,\n" +
|
||||
" ROUND(IIF(ROUND(SUM((ordiniResiduiConf.kg_ord *\n" +
|
||||
" distPF.perc_mp * 1.1)), 0) - ISNULL(qtaPianiRacc.qta_pian, 0) > 0,\n" +
|
||||
" ROUND(SUM((ordiniResiduiConf.kg_ord *\n" +
|
||||
" distPF.perc_mp * 1.1)), 0) - ISNULL(qtaPianiRacc.qta_pian, 0),\n" +
|
||||
" 0) / 100\n" +
|
||||
" , 2) AS ore_uomo_necessarie,\n" +
|
||||
" 100 AS produttivita, -- Da perfezionare nel servizio dal calcolo: ROUND(jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod / (jtb_dist_clav_dir.hr_time / 3600), 0)\n" +
|
||||
" 'KG' AS unt_mis,\n" +
|
||||
" 'N' AS flag_sospeso,\n" +
|
||||
" NULL AS cod_tcol_UL,\n" +
|
||||
" varieta.json_varieta AS varieta\n" +
|
||||
" FROM ordiniResiduiConf\n" +
|
||||
" INNER JOIN (SELECT jtb_cicl.cod_prod,\n" +
|
||||
" jtb_dist_mate.cod_mart,\n" +
|
||||
" mtb_aart.descrizione,\n" +
|
||||
" mtb_aart.peso_kg,\n" +
|
||||
" jtb_dist_mate.qta_std / jtb_cicl.qta_prod AS perc_mp\n" +
|
||||
" FROM jtb_cicl\n" +
|
||||
" INNER JOIN jtb_dist_mate ON jtb_cicl.cod_prod = jtb_dist_mate.cod_prod\n" +
|
||||
" INNER JOIN mtb_aart ON jtb_dist_mate.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN mtb_grup\n" +
|
||||
" ON mtb_aart.cod_mgrp = mtb_grup.cod_mgrp AND mtb_grup.tipo_mgrp = 'MP') distPF\n" +
|
||||
" ON ordiniResiduiConf.cod_mart = distPF.cod_prod\n" +
|
||||
" INNER JOIN jtb_cicl ON jtb_cicl.cod_prod = ordiniResiduiConf.cod_mart\n" +
|
||||
" INNER JOIN jtb_dist_clav_dir\n" +
|
||||
" ON jtb_dist_clav_dir.cod_prod = ordiniResiduiConf.cod_mart AND\n" +
|
||||
" jtb_dist_clav_dir.cod_jfas = 'RACC'\n" +
|
||||
" INNER JOIN varieta ON varieta.cod_prod = distPF.cod_prod AND\n" +
|
||||
" varieta.cod_mart = distPF.cod_mart\n" +
|
||||
" CROSS APPLY OPENJSON(varieta.json_varieta, N'$') WITH (\n" +
|
||||
" cod_mart VARCHAR(200),\n" +
|
||||
" semilavorato NVARCHAR(MAX) AS JSON\n" +
|
||||
" ) AS varieta2\n" +
|
||||
" OUTER APPLY OPENJSON(varieta2.semilavorato, '$[0]')\n" +
|
||||
" WITH (\n" +
|
||||
" qta_cnf NUMERIC(15, 5),\n" +
|
||||
" colli_pedana NUMERIC(15, 5)\n" +
|
||||
" ) AS semilavorato\n" +
|
||||
" LEFT OUTER JOIN colliL ON colliL.data_collo = ordiniResiduiConf.data_cons AND\n" +
|
||||
" colliL.cod_mart = ordiniResiduiConf.cod_mart\n" +
|
||||
" LEFT OUTER JOIN qtaPianiRacc ON distPF.cod_mart = qtaPianiRacc.cod_mart AND\n" +
|
||||
" ordiniResiduiConf.data_cons = qtaPianiRacc.data_piano\n" +
|
||||
" WHERE flag_sospeso = 'N'\n" +
|
||||
" GROUP BY ordiniResiduiConf.data_cons,\n" +
|
||||
" distPF.cod_mart,\n" +
|
||||
" varieta.descrizione,\n" +
|
||||
" varieta.json_varieta,\n" +
|
||||
" semilavorato.qta_cnf,\n" +
|
||||
" semilavorato.colli_pedana,\n" +
|
||||
" qtaPianiRacc.qta_pian\n" +
|
||||
"\n" +
|
||||
" UNION ALL\n" +
|
||||
"\n" +
|
||||
"-- Prende tutte le righe degli ordini di vendita con i dati della distinta di confezionamento di sede o di campagna\n" +
|
||||
" SELECT luogo_lavoro,\n" +
|
||||
" cod_jcom,\n" +
|
||||
" data_cons,\n" +
|
||||
" cod_anag,\n" +
|
||||
" rag_soc,\n" +
|
||||
" cliente,\n" +
|
||||
" cod_mart,\n" +
|
||||
" descrizione,\n" +
|
||||
" prodotto,\n" +
|
||||
" qta_pian,\n" +
|
||||
" kg_residui,\n" +
|
||||
" colli_pian,\n" +
|
||||
" colli_residui,\n" +
|
||||
" qta_cnf,\n" +
|
||||
" colli_pedana,\n" +
|
||||
" pedane_pian,\n" +
|
||||
" pedane_residue,\n" +
|
||||
" cod_jfas,\n" +
|
||||
" luogo,\n" +
|
||||
" ore_uomo_necessarie,\n" +
|
||||
" produttivita,\n" +
|
||||
" unt_mis,\n" +
|
||||
" flag_sospeso,\n" +
|
||||
" cod_tcol_UL,\n" +
|
||||
" varieta\n" +
|
||||
" FROM ordiniResiduiConf)\n" +
|
||||
"SELECT luogo_lavoro,\n" +
|
||||
" (SELECT jc.cod_jcom,\n" +
|
||||
" jc.descrizione AS desc_comm,\n" +
|
||||
" kg_residui AS kg_ord,\n" +
|
||||
" colli_residui AS colli_ord,\n" +
|
||||
" pedane_residue AS pedane_ord\n" +
|
||||
" FROM ordiniResidui orJson\n" +
|
||||
" INNER JOIN jtb_comt jc ON orJson.cod_jcom = jc.cod_jcom\n" +
|
||||
" WHERE orJson.cod_anag = ordiniResidui.cod_anag\n" +
|
||||
" AND orJson.cod_mart = ordiniResidui.cod_mart\n" +
|
||||
" AND orJson.data_cons = ordiniResidui.data_cons\n" +
|
||||
" AND orJson.cod_tcol_UL = ordiniResidui.cod_tcol_UL\n" +
|
||||
" AND orJson.colli_pedana = ordiniResidui.colli_pedana\n" +
|
||||
" FOR JSON AUTO) AS cod_jcom,\n" +
|
||||
" data_cons,\n" +
|
||||
" cod_anag,\n" +
|
||||
" rag_soc,\n" +
|
||||
" cliente,\n" +
|
||||
" ordiniResidui.cod_mart,\n" +
|
||||
" ordiniResidui.descrizione,\n" +
|
||||
" prodotto,\n" +
|
||||
" SUM(qta_pian) AS qta_pian,\n" +
|
||||
" SUM(kg_residui) AS kg_ord,\n" +
|
||||
" SUM(colli_pian) AS colli_pian,\n" +
|
||||
" SUM(colli_residui) AS colli_ord,\n" +
|
||||
" ordiniResidui.qta_cnf,\n" +
|
||||
" ordiniResidui.colli_pedana,\n" +
|
||||
" SUM(pedane_pian) AS pedane_pian,\n" +
|
||||
" SUM(pedane_residue) AS pedane_ord,\n" +
|
||||
" cod_jfas,\n" +
|
||||
" luogo,\n" +
|
||||
" SUM(ore_uomo_necessarie) AS ore_uomo_necessarie,\n" +
|
||||
" produttivita,\n" +
|
||||
" ordiniResidui.unt_mis,\n" +
|
||||
" flag_sospeso,\n" +
|
||||
" ordiniResidui.cod_tcol_UL,\n" +
|
||||
" mt.descrizione AS desc_pedana,\n" +
|
||||
" varieta,\n" +
|
||||
" ma.qta_cnf AS qta_cnf_prod,\n" +
|
||||
" ma.colli_pedana AS colli_pedana_prod\n" +
|
||||
"FROM ordiniResidui\n" +
|
||||
" INNER JOIN mtb_aart ma ON ordiniResidui.cod_mart = ma.cod_mart\n" +
|
||||
" LEFT OUTER JOIN mtb_tcol mt ON ordiniResidui.cod_tcol_UL = mt.cod_tcol\n" +
|
||||
"GROUP BY luogo_lavoro,\n" +
|
||||
" data_cons,\n" +
|
||||
" cod_anag,\n" +
|
||||
" rag_soc,\n" +
|
||||
" cliente,\n" +
|
||||
" ordiniResidui.cod_mart,\n" +
|
||||
" ordiniResidui.descrizione,\n" +
|
||||
" prodotto,\n" +
|
||||
" ordiniResidui.qta_cnf,\n" +
|
||||
" ordiniResidui.colli_pedana,\n" +
|
||||
" cod_jfas,\n" +
|
||||
" luogo,\n" +
|
||||
" produttivita,\n" +
|
||||
" ordiniResidui.unt_mis,\n" +
|
||||
" flag_sospeso,\n" +
|
||||
" ordiniResidui.cod_tcol_UL,\n" +
|
||||
" mt.descrizione,\n" +
|
||||
" varieta,\n" +
|
||||
" ma.qta_cnf,\n" +
|
||||
" ma.colli_pedana");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -221,7 +221,7 @@ public class GiacenzaService {
|
||||
|
||||
private void popolaQtaCarInventario(String codMdep, Date dataIniz, String queryArt, List<String> articoliSalvati, String codDtipRett) throws Exception {
|
||||
String sql =
|
||||
Query.format("SELECT min(id_inventario) from carelli_giacenza_prog WHERE cod_mdep = %s and id_inventario is not null", codMdep);
|
||||
Query.format("SELECT max(id_inventario) from carelli_giacenza_prog WHERE cod_mdep = %s and id_inventario is not null", codMdep);
|
||||
|
||||
Integer maxIdInv = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
@@ -301,10 +301,10 @@ public class GiacenzaService {
|
||||
|
||||
sql =
|
||||
Query.format(
|
||||
"SELECT art.cod_mart_mov as cod_mart " +
|
||||
"SELECT DISTINCT art.cod_mart_mov as cod_mart " +
|
||||
" FROM mtb_aart " +
|
||||
" INNER JOIN (" + queryArt + ") art on mtb_aart.cod_mart = art.cod_mart\n" +
|
||||
"WHERE exists(select * from mtb_sart where mtb_aart.cod_marT = mtb_sart.cod_mart and mtb_sart.cod_mdep = %s and \n" +
|
||||
"WHERE exists(select * from mtb_sart where art.cod_mart_mov = mtb_sart.cod_mart and mtb_sart.cod_mdep = %s and \n" +
|
||||
"(qta_iniz <> 0 or qta_car <> 0 or qta_scar <> 0 ))", codMdep);
|
||||
sql = UtilityDB.addwhereCond(sql, whereCondFiltro, true);
|
||||
List<String> datiArt = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
@@ -369,7 +369,7 @@ public class GiacenzaService {
|
||||
.setQtaScar(BigDecimal.ZERO)
|
||||
.setDataReg(dataCollo)
|
||||
.setTipoCar("R")
|
||||
.setDataIns(new Date());
|
||||
.setDataIns(dataCollo);
|
||||
|
||||
if (articoliSalvati.contains(codMart))
|
||||
c.setOperation(OperationType.UPDATE);
|
||||
|
||||
Reference in New Issue
Block a user