modificata funzione getSchedaCosti
This commit is contained in:
@@ -0,0 +1,288 @@
|
||||
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_20251121165211 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if(isCustomer(IntegryCustomer.Biolevante)) {
|
||||
createOrUpdateFunction("[getSchedaCosti]", "CREATE FUNCTION [dbo].[getSchedaCosti](@CodProd VARCHAR(15), @DataCosto DATETIME, @codVlis VARCHAR(5),\n" +
|
||||
" @tipoCosto VARCHAR(2))\n" +
|
||||
" RETURNS TABLE\n" +
|
||||
" AS\n" +
|
||||
" RETURN\n" +
|
||||
" (\n" +
|
||||
"/*\n" +
|
||||
"\n" +
|
||||
"declare @CodProd VARCHAR(15), @DataCosto DATETIME, @codVlis VARCHAR(5), @tipoCosto varchar(2)\n" +
|
||||
"\n" +
|
||||
"set @codProd = 'ccondib1lev'\n" +
|
||||
"set @dataCosto = Cast(getDAte() as date)\n" +
|
||||
"set @tipoCosto = 'UC';\n" +
|
||||
"set @codVlis = '0036';\n" +
|
||||
"*/\n" +
|
||||
"/*tipoCosto: \n" +
|
||||
" UC = Ultimo costo\n" +
|
||||
" CM = Costo di mercato */\n" +
|
||||
" WITH gruppi_merc AS (SELECT cod_mgrp,\n" +
|
||||
" descrizione,\n" +
|
||||
" tipo_mgrp,\n" +
|
||||
" CASE tipo_mgrp\n" +
|
||||
" WHEN 'MP' THEN '01'\n" +
|
||||
" WHEN 'IMB' THEN '02'\n" +
|
||||
" WHEN 'ACC' THEN '03'\n" +
|
||||
" WHEN 'SL' THEN '04'\n" +
|
||||
" WHEN 'PF' THEN '04'\n" +
|
||||
" ELSE 11 END AS sort_categ,\n" +
|
||||
" CASE tipo_mgrp\n" +
|
||||
" WHEN 'MP' THEN 'MATERIE PRIME'\n" +
|
||||
" WHEN 'IMB' THEN 'IMBALLAGGI'\n" +
|
||||
" WHEN 'ACC' THEN 'MATERIALE ACCESSORIO'\n" +
|
||||
" WHEN 'SL' THEN 'COSTO LAVORAZIONI'\n" +
|
||||
" WHEN 'PF' THEN 'COSTO LAVORAZIONI'\n" +
|
||||
" ELSE tipo_mgrp\n" +
|
||||
" END AS categoria,\n" +
|
||||
" CASE WHEN tipo_mgrp IN ('MP', 'IMB', 'ACC') THEN 1 ELSE 0 END AS isMateriaPrima\n" +
|
||||
" from mtb_grup)\n" +
|
||||
" ,explode_dist AS (\n" +
|
||||
" SELECT CASE WHEN sfuso.cod_mart IS NOT NULL THEN 1 ELSE 0 END AS isSfuso,\n" +
|
||||
" ISNULL(ISNULL(sfuso.cod_mart, dist.cod_prod), mtb_aart.cod_mart) AS cod_mart,\n" +
|
||||
" dist.flag_foglia,\n" +
|
||||
" dist.unt_mis_prod AS unt_mis_art,\n" +
|
||||
" mtb_aart.unt_mis AS unt_mis_prod,\n" +
|
||||
" dist.qta_prod * ISNULL(sfuso.PercProd, 1) AS qta_prod,\n" +
|
||||
" case when sfuso.cod_mart IS not null \n" +
|
||||
" then\n" +
|
||||
" /*se si tratta di un mix pendiamo il costo dei materiali dalla mtb_aart*/\n" +
|
||||
" sfuso_art.val_ult_car\n" +
|
||||
" else\n" +
|
||||
" ROUND(ISNULL(dist.costo_materiali, 0) / dist.qta_prod *\n" +
|
||||
" ISNULL(sfuso.PercProd, 1),\n" +
|
||||
" 5) end AS costo_unt,\n" +
|
||||
" ISNULL( (case \n" +
|
||||
" when sfuso.cod_mart IS not null \n" +
|
||||
" then sfuso_art.val_ult_car * dist.qta_prod \n" +
|
||||
" else dist.costo_materiali end ) \n" +
|
||||
" * ISNULL(sfuso.PercProd, 1), 0) AS costo_materiali,\n" +
|
||||
" \n" +
|
||||
" ISNULL(dist.costo_manodopera, 0) +\n" +
|
||||
" ISNULL(dist.costo_manodopera_magaz, 0) +\n" +
|
||||
" ISNULL(dist.costo_servizi, 0) \n" +
|
||||
" AS altri_costi\n" +
|
||||
" FROM dbo.f_explodedist(@codprod, 1, 'U', @datacosto, 'S', 'S') dist\n" +
|
||||
" INNER JOIN mtb_aart\n" +
|
||||
" ON mtb_aart.cod_mart = ISNULL(dist.cod_prod_pri, dist.cod_prod) \n" +
|
||||
" LEFT OUTER JOIN olvw_miscele_olio miscele ON dist.cod_prod = miscele.cod_mart\n" +
|
||||
" LEFT OUTER JOIN olvw_distinta_sfuso sfuso\n" +
|
||||
" ON dist.cod_prod_pri = sfuso.cod_prod AND\n" +
|
||||
" dist.cod_prod = miscele.cod_mart\n" +
|
||||
" LEFT OUTER JOIN mtb_aart sfuso_art on sfuso.cod_mart = sfuso_art.cod_mart\n" +
|
||||
"\n" +
|
||||
" )\n" +
|
||||
" , distinta_base AS (\n" +
|
||||
" SELECT 1 AS sort,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN explode_dist.flag_foglia = 1 THEN gruppi_merc.sort_categ ELSE '4' END as sort_categ,\n" +
|
||||
" gruppi_merc.tipo_mgrp,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN explode_dist.flag_foglia = 1 THEN gruppi_merc.categoria ELSE 'COSTO LAVORAZIONI' END as categoria,\n" +
|
||||
" mtb_aart.cod_msgr, \n" +
|
||||
" CASE\n" +
|
||||
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1\n" +
|
||||
" THEN mtb_aart.descrizione\n" +
|
||||
" ELSE 'MANO DOPERA E ALTRI COSTI DI PRODUZIONE (' + gruppi_merc.tipo_mgrp + ')' END AS descr_costo,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1\n" +
|
||||
" THEN explode_dist.cod_mart\n" +
|
||||
" END AS cod_mart,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1\n" +
|
||||
" THEN explode_dist.unt_mis_art\n" +
|
||||
" ELSE explode_dist.unt_mis_prod END AS unt_mis,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1\n" +
|
||||
" THEN explode_dist.qta_prod\n" +
|
||||
" ELSE 1 END AS qta_prod,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1 \n" +
|
||||
" THEN\n" +
|
||||
" CASE\n" +
|
||||
" WHEN @tipoCosto = 'CM' THEN ISNULL(lisa.costo_mercato, 0)\n" +
|
||||
" ELSE explode_dist.costo_unt END\n" +
|
||||
" ELSE explode_dist.altri_costi END AS costo_unit,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN explode_dist.flag_foglia = 1 THEN\n" +
|
||||
" CASE\n" +
|
||||
" WHEN @tipoCosto = 'CM'\n" +
|
||||
" THEN ISNULL(lisa.costo_mercato, 0) * explode_dist.qta_prod\n" +
|
||||
" ELSE explode_dist.costo_materiali END +\n" +
|
||||
" --ISNULL(oneri_acq.costo_kg * explode_dist.qta_prod, 0)\n" +
|
||||
" CASE WHEN @tipoCosto = 'CM'\n" +
|
||||
" THEN ISNULL(oneri_acq.costo_kg * explode_dist.qta_prod, 0)\n" +
|
||||
" ELSE 0 END\n" +
|
||||
" ELSE explode_dist.altri_costi END costo_materiali,\n" +
|
||||
" CONVERT(VARCHAR(4), 'VAL') AS qualificatore,\n" +
|
||||
" CONVERT(VARCHAR(1), 'V') AS tipo_calcolo,\n" +
|
||||
" dati_listino.dati AS dati_listino\n" +
|
||||
" FROM explode_dist\n" +
|
||||
" INNER JOIN mtb_aart ON explode_dist.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN gruppi_merc ON mtb_aart.cod_mgrp = gruppi_merc.cod_mgrp\n" +
|
||||
" OUTER APPLY (SELECT LISA.COD_MART,\n" +
|
||||
" AVG(prz_acq_netto_um) AS costo_mercato\n" +
|
||||
" FROM dbo.getListinoAcquisto(DATEADD(MONTH, 1, @DataCosto),\n" +
|
||||
" NULL, NULL, mtb_aart.cod_mart,\n" +
|
||||
" 'S', NULL) lisa\n" +
|
||||
" WHERE ( Lisa.tipo_variazione is null OR lisa.tipo_variazione <> 'D' )\n" +
|
||||
" AND lisa.flag_attivo = 'S'\n" +
|
||||
" AND lisa.flag_forn_pref = 'S'\n" +
|
||||
" AND @tipoCosto = 'CM'\n" +
|
||||
" GROUP BY lisa.cod_mart) lisa\n" +
|
||||
" OUTER APPLY (SELECT STUFF((SELECT '~' + lisa.cod_alis + ' - ' +\n" +
|
||||
" lisa.descrizione + ' DEL ' +\n" +
|
||||
" CONVERT(VARCHAR(10), lisa.data_iniz, 103) +\n" +
|
||||
" ' PREZZO: ' +\n" +
|
||||
" FORMAT(prz_acq_netto_um, '#,##0.00###') +\n" +
|
||||
" '€' AS [text()]\n" +
|
||||
" FROM dbo.getListinoAcquisto(\n" +
|
||||
" DATEADD(WEEK, 1, @DataCosto),\n" +
|
||||
" NULL, NULL, mtb_aart.cod_mart,\n" +
|
||||
" 'S', NULL) lisa\n" +
|
||||
" WHERE lisa.tipo_variazione <> 'D'\n" +
|
||||
" AND lisa.flag_attivo = 'S'\n" +
|
||||
" AND lisa.flag_forn_pref = 'S'\n" +
|
||||
" AND @tipoCosto = 'CM'\n" +
|
||||
" FOR XML PATH('')), 1, 1,\n" +
|
||||
" '') AS dati) dati_listino\n" +
|
||||
" OUTER APPLY (SELECT SUM(conai.costo_kg * mtb_spes.qta_spes) AS costo_kg\n" +
|
||||
" FROM mtb_aart arti\n" +
|
||||
" INNER JOIN mtb_spes ON arti.cod_mart = mtb_spes.cod_mart\n" +
|
||||
" LEFT OUTER JOIN (SELECT cod_conai,\n" +
|
||||
" da_data,\n" +
|
||||
" LEAD(\n" +
|
||||
" DATEADD(DAY, -1, da_data),\n" +
|
||||
" 1,\n" +
|
||||
" CAST(GETDATE() AS DATE))\n" +
|
||||
" OVER (PARTITION BY cod_conai ORDER BY da_data) AS a_data,\n" +
|
||||
" costo_kg\n" +
|
||||
" FROM gtb_conai_costi) conai\n" +
|
||||
" ON mtb_spes.cod_spes =\n" +
|
||||
" conai.cod_conai AND\n" +
|
||||
" CAST(GETDATE() AS DATE) BETWEEN da_data AND a_data\n" +
|
||||
" WHERE arti.cod_mart = mtb_aart.cod_mart) AS oneri_acq )\n" +
|
||||
"\n" +
|
||||
"\n" +
|
||||
" SELECT sort,\n" +
|
||||
" sort_categ AS group_categ,\n" +
|
||||
" sort_categ,\n" +
|
||||
" tipo_mgrp,\n" +
|
||||
" categoria,\n" +
|
||||
" cod_msgr,\n" +
|
||||
" descr_costo,\n" +
|
||||
" cod_mart,\n" +
|
||||
" unt_mis,\n" +
|
||||
" ROUND(qta_prod, 4) AS qta_prod,\n" +
|
||||
" /*costo_unit,*/\n" +
|
||||
" CASE\n" +
|
||||
" WHEN qta_prod > 0 THEN ROUND(ISNULL(costo_materiali, 0) / qta_prod, 5)\n" +
|
||||
" ELSE 0 END AS costo_unit,\n" +
|
||||
" ROUND(ISNULL(costo_materiali, 0), 5) AS valore,\n" +
|
||||
" qualificatore,\n" +
|
||||
" tipo_calcolo,\n" +
|
||||
" dati_listino\n" +
|
||||
" FROM distinta_base\n" +
|
||||
" UNION ALL\n" +
|
||||
" SELECT CASE WHEN tipo_calcolo = 'LAVORAZIONE' THEN 1 ELSE 2 END AS sort,\n" +
|
||||
" CASE WHEN tipo_calcolo = 'LAVORAZIONE' THEN 4 ELSE 5 END AS group_categ,\n" +
|
||||
" 20,\n" +
|
||||
" NULL,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN tipo_calcolo = 'LAVORAZIONE' THEN 'COSTO LAVORAZIONI'\n" +
|
||||
" ELSE 'COSTI DIRETTI COMMERCIALI E CONSEGNA' END,\n" +
|
||||
" NULL,\n" +
|
||||
" jtb_dist_clav_dir.descrizione,\n" +
|
||||
" jtb_dist_clav_dir.cod_prod,\n" +
|
||||
" jtb_dist_clav_dir.unt_mis,\n" +
|
||||
" jtb_dist_clav_dir.qta_lav / jtb_cicl.qta_prod / jtb_cicl.rap_conv_prod AS qta_lav,\n" +
|
||||
" jtb_dist_clav_dir.val_unt,\n" +
|
||||
" (jtb_dist_clav_dir.qta_lav * jtb_dist_clav_dir.val_unt / jtb_cicl.qta_prod /\n" +
|
||||
" jtb_cicl.rap_conv_prod),\n" +
|
||||
" CONVERT(VARCHAR(4), 'VAL') AS qualificatore,\n" +
|
||||
" CONVERT(VARCHAR(1), 'V') AS tipo_calcolo,\n" +
|
||||
" NULL AS dati_listino\n" +
|
||||
" FROM jtb_dist_clav_dir\n" +
|
||||
" INNER JOIN jtb_cicl ON jtb_cicl.cod_prod = jtb_dist_clav_dir.cod_prod\n" +
|
||||
" INNER JOIN gtb_spes ON jtb_dist_clav_dir.cod_jcos_dir = gtb_spes.cod_spes\n" +
|
||||
" WHERE jtb_dist_clav_dir.cod_prod = (@codprod)\n" +
|
||||
" AND gtb_spes.tipo_calcolo IN ('TRASPORTO PER KG', 'TRASPORTO PER COLLO', 'COMMERCIALI', 'LAVORAZIONE')\n" +
|
||||
" AND jtb_dist_clav_dir.flag_fase_pref = 'S'\n" +
|
||||
" UNION ALL\n" +
|
||||
" SELECT 2,\n" +
|
||||
" 5 AS group_categ,\n" +
|
||||
" 21,\n" +
|
||||
" NULL,\n" +
|
||||
" 'COSTI DIRETTI COMMERCIALI E CONSEGNA',\n" +
|
||||
" NULL,\n" +
|
||||
" jtb_clav_ind.descrizione,\n" +
|
||||
" NULL,\n" +
|
||||
" NULL,\n" +
|
||||
" NULL,\n" +
|
||||
" NULL,\n" +
|
||||
" jtb_dist_clav_ind.perc_cost,\n" +
|
||||
" CONVERT(VARCHAR(4), 'PERC') AS qualificatore,\n" +
|
||||
" jtb_clav_ind.tipo_calcolo AS tipo_calcolo,\n" +
|
||||
" NULL AS dati_listino\n" +
|
||||
" FROM jtb_dist_clav_ind\n" +
|
||||
" INNER JOIN jtb_clav_ind ON jtb_clav_ind.cod_jcos_ind = jtb_dist_clav_ind.cod_jcos_ind\n" +
|
||||
" WHERE jtb_dist_clav_ind.cod_prod = (@codprod)\n" +
|
||||
" UNION ALL\n" +
|
||||
" SELECT sort,\n" +
|
||||
" group_categ,\n" +
|
||||
" sort_categ,\n" +
|
||||
" tipo_mgrp,\n" +
|
||||
" categoria,\n" +
|
||||
" cod_msgr,\n" +
|
||||
" descr_costo,\n" +
|
||||
" cod_mart,\n" +
|
||||
" unt_mis,\n" +
|
||||
" ROUND(qta_prod, 4) AS qta_prod,\n" +
|
||||
" costo_unit,\n" +
|
||||
" valore,\n" +
|
||||
" qualificatore,\n" +
|
||||
" tipo_calcolo,\n" +
|
||||
" dati_listino\n" +
|
||||
" FROM dbo.getSchedaCosti_DatiCommerciali(@codprod, @DataCosto, @codvlis) AS dati_commerciali\n" +
|
||||
" UNION ALL\n" +
|
||||
" SELECT 3,\n" +
|
||||
" 6 AS group_categ,\n" +
|
||||
" 31,\n" +
|
||||
" NULL,\n" +
|
||||
" 'COSTI INDIRETTI',\n" +
|
||||
" NULL,\n" +
|
||||
" 'COSTI GENERALI INCIDENZA A PERCENTUALE',\n" +
|
||||
" jtb_cicl.cod_mart,\n" +
|
||||
" NULL,\n" +
|
||||
" NULL,\n" +
|
||||
" NULL,\n" +
|
||||
" ISNULL(jtb_cicl.perc_cost_gen, 0) AS perc_costi_gen,\n" +
|
||||
" CONVERT(VARCHAR(4), 'PERC') AS qualificatore,\n" +
|
||||
" CONVERT(VARCHAR(1), 'V') AS tipo_calcolo,\n" +
|
||||
" NULL AS dati_listino\n" +
|
||||
" FROM mtb_aart\n" +
|
||||
" INNER JOIN jtb_cicl ON mtb_aart.cod_mart = jtb_cicl.cod_prod \n" +
|
||||
" WHERE mtb_aart.cod_mart = (@codprod) \n" +
|
||||
" )");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user