getMovMag

This commit is contained in:
2024-08-01 14:47:13 +02:00
parent 51ceb69192
commit cd04fcc42e

View File

@@ -0,0 +1,416 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240801144301 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("getMovMag", "CREATE FUNCTION [dbo].[getMovMag](@codAnag varchar(5), @codDtip varchar(5), @dataDoc datetime, @serDoc varchar(2), @numDoc int)\n" +
" RETURNS TABLE AS\n" +
" RETURN (\n" +
"with setup as (\n" +
" SELECT MAX(cASE WHEN key_section = 'GESTISCE_FLAG_DIG' AND value = 'S' THEN 1 ELSE 0 END) as useFlagDig,\n" +
" MAX(CASE WHEN key_section = 'VALORIZZAZIONE_SCARICHI' then VALUE ELSE 'C'end) AS VAL_SCARICHI,\n" +
" max(CASE WHEN key_section = 'PERC_SFRIDO' then VALUE ELSE null end) AS PERC_SFRIDO\n" +
" FROM stb_gest_setup\n" +
" WHERE gest_name = 'DATI_AZIENDA'\n" +
" and section = 'PROGRESSIVI_MAG'\n" +
" and key_section IN ('GESTISCE_FLAG_DIG', 'VALORIZZAZIONE_SCARICHI', 'PERC_SFRIDO')\n" +
")\n" +
", documenti as (\n" +
" SELECT dt.cod_anag,\n" +
" dt.cod_dtip,\n" +
" dt.data_doc,\n" +
" dt.ser_doc,\n" +
" dt.num_doc,\n" +
" dr.id_riga,\n" +
" dt.data_reg,\n" +
" dt.cod_mdep,\n" +
" dr.cod_mart as cod_mart,\n" +
" td.tipo_emissione,\n" +
" mtb_aart.unt_mis as unt_mis_mag,\n" +
" dr.qta_doc * dr.rap_conv as qta_doc,\n" +
" dr.num_cnf,\n" +
" dr.costo_unt,\n" +
" dr.costo_unt / (case when dr.rap_conv = 0 THEN 1 ELSE dr.rap_conv END) as costo_unt_um,\n" +
" dt.cambio,\n" +
" mtb_aart.perc_sfrido,\n" +
" dr.importo_riga,\n" +
" dr.cod_col,\n" +
" dr.cod_tagl,\n" +
" dr.partita_mag,\n" +
" IsNull(mag.cod_mdep, dt.cod_mdep) as cod_mdep_anag,\n" +
" dt.cod_prod,\n" +
" dt.partita_mag as partita_mag_prod,\n" +
" dr.cod_jcom,\n" +
" dt.cod_jfas,\n" +
" dt.gestione,\n" +
" dr.data_ord,\n" +
" dr.num_ord,\n" +
" td.segno_qta_car,\n" +
" td.segno_qta_scar,\n" +
" td.segno_val_car,\n" +
" td.segno_val_scar,\n" +
" td.flag_sfrido,\n" +
" CAST(0 as bit) as doc_trasf\n" +
" FROM dtb_doct dt\n" +
" inner join dtb_tipi td on dt.cod_dtip = td.cod_dtip\n" +
" inner join dtb_docr dr\n" +
" on dt.cod_anag = dr.cod_anag and dt.cod_dtip = dr.cod_dtip and dt.data_doc = dr.data_doc and\n" +
" dt.ser_doc = dr.ser_doc and dt.num_doc = dr.num_doc\n" +
" inner join mtb_aart on dr.cod_mart = mtb_aart.cod_mart\n" +
" left outer join mtb_depo mag\n" +
" on dt.cod_anag = mag.cod_anag and isNull(dt.cod_vdes, '') = ISNULL(mag.cod_vdes, '')\n" +
" left outer join dtb_tipi tdc on dr.cod_dtip_comp = tdc.cod_dtip\n" +
" WHERE td.tipo_emissione = 'DIRETTA'\n" +
" and dt.cod_anag = @codAnag\n" +
" and dt.cod_dtip = @codDtip\n" +
" and dt.data_doc = @dataDoc\n" +
" and dt.ser_doc = @serDoc\n" +
" and dt.num_doc = @numDoc\n" +
" AND (( dt.gestione <> 'L' AND td.segno_qta_car = 0 AND td.segno_val_car = 1 AND tdc.gestione <> 'V' ) OR\n" +
" NOT( dt.gestione <> 'L' AND td.segno_qta_car = 0 AND td.segno_val_car = 1 ))\n" +
" union all\n" +
" /*Movimento su eventuale secondo deposito legato all'intestatario del documento*/\n" +
" /*Vengono evitati i carichi fittizi su deposito del terzista di semilavorati che rientrano da c/lavoro*/\n" +
" SELECT dt.cod_anag,\n" +
" dt.cod_dtip,\n" +
" dt.data_doc,\n" +
" dt.ser_doc,\n" +
" dt.num_doc,\n" +
" dr.id_riga,\n" +
" dt.data_reg,\n" +
" isnull(dep1.cod_mdep, dep2.cod_mdep) as cod_mdep,\n" +
" dr.cod_mart as cod_mart,\n" +
" td.tipo_emissione,\n" +
" mtb_aart.unt_mis as unt_mis_mag,\n" +
" dr.qta_doc * dr.rap_conv as qta_doc,\n" +
" dr.num_cnf,\n" +
" dr.costo_unt,\n" +
" dr.costo_unt / (case when dr.rap_conv = 0 THEN 1 ELSE dr.rap_conv END) as costo_unt_um,\n" +
" dt.cambio,\n" +
" mtb_aart.perc_sfrido,\n" +
" dr.importo_riga,\n" +
" dr.cod_col,\n" +
" dr.cod_tagl,\n" +
" case when isnull(dep1.flag_gestisci_tracc, dep2.flag_gestisci_tracc) = 1 then dr.partita_mag else null end as partita_mag,\n" +
" IsNull(isnull(dep1.cod_mdep, dep2.cod_mdep), dt.cod_mdep) as cod_mdep_anag,\n" +
" dt.cod_prod,\n" +
" case when isnull(dep1.flag_gestisci_tracc, dep2.flag_gestisci_tracc) = 1 then dt.partita_mag else null end as partita_mag_prod,\n" +
" dr.cod_jcom,\n" +
" dt.cod_jfas,\n" +
" dt.gestione,\n" +
" dr.data_ord,\n" +
" dr.num_ord,\n" +
" td.segno_qta_scar as segno_qta_car,\n" +
" td.segno_qta_car as segno_qta_scar,\n" +
" td.segno_val_scar as segno_val_car,\n" +
" td.segno_val_car as segno_val_scar,\n" +
" td.flag_sfrido,\n" +
" CAST(1 as bit) as doc_trasf\n" +
" FROM dtb_doct dt\n" +
" inner join dtb_tipi td on dt.cod_dtip = td.cod_dtip\n" +
" inner join dtb_docr dr\n" +
" on dt.cod_anag = dr.cod_anag and dt.cod_dtip = dr.cod_dtip and dt.data_doc = dr.data_doc and\n" +
" dt.ser_doc = dr.ser_doc and dt.num_doc = dr.num_doc\n" +
" inner join mtb_aart on dr.cod_mart = mtb_aart.cod_mart\n" +
" left outer join mtb_depo dep1 on dt.cod_anag = dep1.cod_anag and\n" +
" dt.cod_vdes = dep1.cod_vdes \n" +
" left outer join mtb_depo dep2 on dt.cod_anag = dep2.cod_anag and\n" +
" dep2.cod_vdes is null\n" +
" \n" +
" WHERE td.tipo_emissione = 'DIRETTA'\n" +
" and dt.cod_anag = @codAnag\n" +
" and dt.cod_dtip = @codDtip\n" +
" and dt.data_doc = @dataDoc\n" +
" and dt.ser_doc = @serDoc\n" +
" and dt.num_doc = @numDoc\n" +
" and isnull(dep1.cod_mdep, dep2.cod_mdep) <> dt.cod_mdep\n" +
" and td.flag_trasf = 'S'\n" +
" and not (dt.gestione = 'L' and dr.data_ord is not null and dr.riga_ord = 0 and td.segno_qta_car = 1)\n" +
" union all\n" +
" /*In questa sezione vengono generati gli scarichi di materiali sui depositi dei terzisti,\n" +
" SOLO quando non ci sono scarichi espliciti e l'ordine di lavorazione e' inevaso (qta_Evasa = 0),\n" +
" basta che il deposito dell'impegno e' il magazzino aziendale e non quello del terzista */\n" +
" /*Questa logica andrebbe sostituita con un documento di scarico esplicito dei materiali dal deposito del terzista\n" +
" e un carico esplicito sul deposito azienda del semilavorato. Si dovrebbe evitare il giroconto del semilavorato\n" +
" (carico e scarico) sul deposito del terzista*/\n" +
" /* Non più utilizzato\n" +
" SELECT dt.cod_anag,\n" +
" dt.cod_dtip,\n" +
" dt.data_doc,\n" +
" dt.ser_doc,\n" +
" dt.num_doc,\n" +
" dr.id_riga,\n" +
" dt.data_reg,\n" +
" mag.cod_mdep,\n" +
" dr.cod_mart as cod_mart,\n" +
" td.tipo_emissione,\n" +
" mtb_aart.unt_mis as unt_mis_mag,\n" +
" ordr.qta_ord * ordr.rap_conv * dr.qta_doc*dr.rap_conv / ordt.qta_prod as qta_doc,\n" +
" dr.num_cnf,\n" +
" dr.costo_unt,\n" +
" dr.costo_unt / (case when dr.rap_conv = 0 THEN 1 ELSE dr.rap_conv END) as costo_unt_um,\n" +
" dt.cambio,\n" +
" mtb_aart.perc_sfrido,\n" +
" dr.importo_riga,\n" +
" dr.cod_col,\n" +
" dr.cod_tagl,\n" +
" dr.partita_mag,\n" +
" IsNull(mag.cod_mdep, dt.cod_mdep) as cod_mdep_anag,\n" +
" dt.cod_prod,\n" +
" dt.partita_mag as partita_mag_prod,\n" +
" dr.cod_jcom,\n" +
" dt.cod_jfas,\n" +
" dt.gestione,\n" +
" dr.data_ord,\n" +
" dr.num_ord,\n" +
" 0 as segno_qta_car,\n" +
" td.segno_qta_scar,\n" +
" 0 as segno_val_car,\n" +
" td.segno_val_scar,\n" +
" td.flag_sfrido\n" +
" FROM dtb_doct dt\n" +
" inner join dtb_tipi td on dt.cod_dtip = td.cod_dtip\n" +
" inner join dtb_docr dr\n" +
" on dt.cod_anag = dr.cod_anag and dt.cod_dtip = dr.cod_dtip and dt.data_doc = dr.data_doc and\n" +
" dt.ser_doc = dr.ser_doc and dt.num_doc = dr.num_doc\n" +
" inner join dtb_ordt ot on dt.gestione = ot.gestione and dt.data_ord = ot.data_ord and dt.num_ord = ot.num_ord\n" +
" inner join dtb_ordr ordr on dt.gestione = ordr.gestione and dr.data_ord = ordr.data_ord and dr.num_ord = ordr.num_ord\n" +
" inner join mtb_aart on dr.cod_mart = mtb_aart.cod_mart\n" +
" left outer join mtb_depo mag\n" +
" on dt.cod_anag = mag.cod_anag and isNull(dt.cod_vdes, '') = ISNULL(mag.cod_vdes, '')\n" +
" WHERE td.tipo_emissione = 'DIRETTA'\n" +
" and dt.cod_anag = @codAnag\n" +
" and dt.cod_dtip = @codDtip\n" +
" and dt.data_doc = @dataDoc\n" +
" and dt.ser_doc = @serDoc\n" +
" and dt.num_doc = @numDoc\n" +
" and dt.num_doc = @numDoc\n" +
" and dt.cod_mdep <> mag.cod_mdep\n" +
" and td.flag_trasf = 'S'\n" +
" and ( td.segno_qta_car > 0 OR td.segno_qta_scar < 0 )\n" +
" and ordr.qta_evasa = 0\n" +
" and dr.riga_ord = 0\n" +
" Union all */\n" +
" /*Movimento su eventuale deposito di conto vendita legato al deposito del documento*/\n" +
" SELECT dt.cod_anag,\n" +
" dt.cod_dtip,\n" +
" dt.data_doc,\n" +
" dt.ser_doc,\n" +
" dt.num_doc,\n" +
" dr.id_riga,\n" +
" dt.data_reg,\n" +
" dt.cod_mdep,\n" +
" dr.cod_mart as cod_mart,\n" +
" td.tipo_emissione,\n" +
" mtb_aart.unt_mis as unt_mis_mag,\n" +
" dr.qta_doc * dr.rap_conv as qta_doc,\n" +
" dr.num_cnf,\n" +
" dr.costo_unt,\n" +
" dr.costo_unt / (case when dr.rap_conv = 0 THEN 1 ELSE dr.rap_conv END) as costo_unt_um,\n" +
" dt.cambio,\n" +
" mtb_aart.perc_sfrido,\n" +
" dr.importo_riga,\n" +
" dr.cod_col,\n" +
" dr.cod_tagl,\n" +
" case when mtb_depo.flag_gestisci_tracc = 1 then dr.partita_mag else null end as partita_mag,\n" +
" IsNull(mag.cod_mdep, dt.cod_mdep) as cod_mdep_anag,\n" +
" dt.cod_prod,\n" +
" case when mtb_depo.flag_gestisci_tracc = 1 then dt.partita_mag else null end as partita_mag_prod,\n" +
" dr.cod_jcom,\n" +
" dt.cod_jfas,\n" +
" dt.gestione,\n" +
" dr.data_ord,\n" +
" dr.num_ord,\n" +
" -1 * td.segno_qta_car as segno_qta_car,\n" +
" -1 * td.segno_qta_scar as segno_qta_scar,\n" +
" -1 * td.segno_val_car as segno_val_car,\n" +
" -1 * td.segno_val_scar as segno_val_scar,\n" +
" td.flag_sfrido,\n" +
" CAST(1 as bit) as doc_trasf\n" +
" FROM dtb_doct dt\n" +
" inner join dtb_tipi td on dt.cod_dtip = td.cod_dtip\n" +
" inner join mtb_depo on dt.cod_mdep = mtb_depo.cod_mdep\n" +
" inner join dtb_docr dr\n" +
" on dt.cod_anag = dr.cod_anag and dt.cod_dtip = dr.cod_dtip and dt.data_doc = dr.data_doc and\n" +
" dt.ser_doc = dr.ser_doc and dt.num_doc = dr.num_doc\n" +
" inner join mtb_aart on dr.cod_mart = mtb_aart.cod_mart\n" +
" left outer join mtb_depo mag\n" +
" on dt.cod_anag = mag.cod_anag and isNull(dt.cod_vdes, '') = ISNULL(mag.cod_vdes, '')\n" +
" WHERE td.tipo_emissione = 'DIRETTA'\n" +
" and dt.cod_anag = @codAnag\n" +
" and dt.cod_dtip = @codDtip\n" +
" and dt.data_doc = @dataDoc\n" +
" and dt.ser_doc = @serDoc\n" +
" and dt.num_doc = @numDoc\n" +
" and td.flag_conto_vendita = 'S'\n" +
" and mtb_depo.cod_mdep_cv is not null\n" +
")\n" +
"\n" +
"\n" +
"select dr.cod_anag,\n" +
" dr.cod_Dtip,\n" +
" dr.data_doc,\n" +
" dr.ser_doc,\n" +
" dr.num_doc,\n" +
" dr.id_riga as Id_rigaDoc,\n" +
" row_number()\n" +
" over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mdep order by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mdep, dr.id_riga) as id_riga,\n" +
" dr.data_reg,\n" +
" gtb_periodo_fisc.anno as anno,\n" +
" dr.cod_mdep,\n" +
" isnull(mtb_comp.cod_comp, dr.cod_mart) as cod_mart,\n" +
" (case when setup.useFlagDig = 1 and mtb_unt_mis.flag_dig = 'S' THEN round(dr.qta_doc, 2) else dr.qta_doc end) *\n" +
" dr.segno_qta_car *\n" +
" (isnull(mtb_comp.qta_std, 1)) as qta_car,\n" +
" case\n" +
" when mtb_comp.cod_mart is not null THEN Round(\n" +
" dr.qta_doc * dr.segno_qta_car * mtb_comp.qta_std / mtb_comp.qta_cnf,\n" +
" (case when mtb_comp.flag_qta_cnf_fissa = 'S' THEN 5 ELSE 0 END))\n" +
" else dr.num_cnf * dr.segno_qta_car end as num_car, \n" +
" (dr.segno_val_car *\n" +
" case when \n" +
" SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep )= 0 THEN \n" +
" 0 ELSE \n" +
" SUM( case when doc_trasf = 1 AND setup.VAL_SCARICHI = 'V' THEN dr.importo_riga ELSE dr.qta_doc * dr.costo_unt_um END ) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) /\n" +
" SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) * dr.qta_doc\n" +
" / dr.cambio * gtb_divi.cambio end) * Case\n" +
" WHEN mtb_comp.qta_std is null or dr.qta_doc = 0\n" +
" then 1\n" +
" else mtb_comp.perc_prezzo / 100 end as val_car,\n" +
" \n" +
" case when\n" +
" dr.gestione = 'V'\n" +
" AND dr.segno_qta_scar > 0\n" +
" AND dr.flag_sfrido = 'S'\n" +
" THEN \n" +
" case when setup.PERC_SFRIDO = 'A' THEN \n" +
" (case when setup.useFlagDig = 1 and mtb_unt_mis.flag_dig = 'S' THEN round(dr.qta_doc, 2) else dr.qta_doc end) *\n" +
" dr.segno_qta_scar * (isnull(mtb_comp.qta_std, 1)) / (1 - (dr.perc_sfrido / 100))\n" +
" else\n" +
" (case when setup.useFlagDig = 1 and mtb_unt_mis.flag_dig = 'S' THEN round(dr.qta_doc, 2) else dr.qta_doc end) *\n" +
" dr.segno_qta_scar * (isnull(mtb_comp.qta_std, 1)) * ( 1 + (dr.perc_sfrido / 100))\n" +
" end\n" +
" else\n" +
" (case when setup.useFlagDig = 1 and mtb_unt_mis.flag_dig = 'S' THEN round(dr.qta_doc, 2) else dr.qta_doc end) *\n" +
" dr.segno_qta_scar * (isnull(mtb_comp.qta_std, 1)) END as qta_scar,\n" +
" case\n" +
" when\n" +
" mtb_comp.cod_mart is not null\n" +
" THEN\n" +
" Round((dr.qta_doc * dr.segno_qta_scar * mtb_comp.qta_std / mtb_comp.qta_cnf),\n" +
" (case when mtb_comp.flag_qta_cnf_fissa = 'S' THEN 5 ELSE 0 END))\n" +
" else\n" +
" dr.num_cnf * dr.segno_qta_scar\n" +
" end\n" +
" as num_scar,\n" +
" dr.segno_val_scar \n" +
" *\n" +
" CASE WHEN \n" +
" SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep )= 0 THEN 0\n" +
" ELSE \n" +
" SUM(case when setup.VAL_SCARICHI = 'V' THEN dr.importo_riga ELSE dr.qta_doc * dr.costo_unt_um END) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) /\n" +
" SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) END * dr.qta_doc / dr.cambio *\n" +
" gtb_divi.cambio *\n" +
" \n" +
" Case WHEN mtb_comp.qta_std is null or dr.qta_doc = 0 then 1 else mtb_comp.perc_prezzo / 100 end as val_scar,\n" +
" dr.cod_col,\n" +
" dr.cod_tagl,\n" +
" case\n" +
" when\n" +
" mtb_comp.cod_mart is not null\n" +
" then\n" +
" null\n" +
" else\n" +
" dr.partita_mag\n" +
" end\n" +
" as partita_mag,\n" +
" case\n" +
" when\n" +
" SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) = 0 \n" +
" then\n" +
" 0 \n" +
" else SUM(costo_unt_um * dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) \n" +
" / SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) \n" +
" / dr.cambio * gtb_divi.cambio *\n" +
" Case\n" +
" WHEN mtb_comp.qta_std is null or dr.qta_doc = 0 then 1\n" +
" else mtb_comp.perc_prezzo / 100 / mtb_comp.qta_std END END as costo_unt,\n" +
" dr.cod_jcom,\n" +
" dr.cod_jfas,\n" +
" case when dr.cod_mdep = dr.cod_mdep_anag THEN dr.cod_prod else null end as cod_prod,\n" +
" case\n" +
" when dr.cod_mdep = dr.cod_mdep_anag THEN dr.partita_mag_prod\n" +
" else null end as partita_mag_prod,\n" +
" dr.gestione,\n" +
" dr.data_ord,\n" +
" dr.num_ord,\n" +
" gtb_anni_divi.cod_divi_cont_prima as cod_divi,\n" +
" gtb_divi.cambio,\n" +
" CASE\n" +
" WHEN (dr.segno_qta_car > 0 OR dr.segno_qta_scar < 0) AND \n" +
" SUM((dr.segno_qta_car - dr.segno_qta_scar ) * dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) > 0 THEN\n" +
" Abs((case\n" +
" when setup.useFlagDig = 1 and mtb_unt_mis.flag_dig = 'S' THEN round(dr.qta_doc, 2)\n" +
" else dr.qta_doc end) * (isnull(mtb_comp.qta_std, 1)))\n" +
" ELSE 0 END as qta_car_costo,\n" +
" CASE\n" +
" WHEN (dr.segno_qta_car > 0 OR dr.segno_qta_scar < 0 )AND \n" +
" SUM((dr.segno_qta_car - dr.segno_qta_scar ) * dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) > 0 THEN\n" +
" abs((case when \n" +
" SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep )= 0 THEN 0\n" +
" ELSE \n" +
" SUM(dr.costo_unt_um * dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep )\n" +
" /SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) * dr.qta_doc\n" +
" / dr.cambio * gtb_divi.cambio end) *\n" +
" Case WHEN mtb_comp.qta_std is null or dr.qta_doc = 0 then 1 else mtb_comp.perc_prezzo / 100 end)\n" +
" WHEN ( dr.segno_qta_car = 0 AND dr.segno_val_car <> 0 ) OR ( dr.segno_qta_scar = 0 AND dr.segno_val_scar <> 0 ) AND \n" +
" SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) > 0 THEN\n" +
" abs((case when \n" +
" SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep )= 0 THEN 0\n" +
" ELSE \n" +
" SUM(dr.costo_unt_um * dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep )\n" +
" /SUM(dr.qta_doc) over (partition by dr.cod_anag, dr.cod_dtip, dr.data_doc, dr.ser_doc, dr.num_doc, dr.cod_mart, dr.partita_mag, dr.cod_col, dr.cod_tagl, dr.cod_mdep ) * dr.qta_doc\n" +
" / dr.cambio * gtb_divi.cambio end) *\n" +
" Case WHEN mtb_comp.qta_std is null or dr.qta_doc = 0 then 1 else mtb_comp.perc_prezzo / 100 end)\n" +
" \n" +
" ELSE 0 END as val_car_costo,\n" +
" null as Posizione,\n" +
" mtb_comp.cod_mart as cod_kit\n" +
"from documenti dr\n" +
" inner join gtb_anni_divi on year(dr.data_reg) = gtb_anni_divi.anno\n" +
" inner join gtb_periodo_fisc on dr.data_reg between gtb_periodo_fisc.data_iniz and gtb_periodo_fisc.data_fine\n" +
" inner join gtb_divi on gtb_anni_divi.cod_divi_cont_prima = gtb_divi.cod_divi\n" +
" left outer join\n" +
" (\n" +
" SELECT mtb_comp.*,\n" +
" comp.qta_cnf,\n" +
" mtb_aart.flag_qta_cnf_fissa\n" +
" FROM mtb_aart\n" +
" inner join mtb_comp ON mtb_aart.cod_mart = mtb_comp.cod_mart\n" +
" inner join mtb_aart comp on mtb_comp.cod_comp = comp.cod_mart\n" +
" WHERE mtb_aart.articolo_composto = 'S'\n" +
" ) mtb_comp\n" +
" on dr.cod_mart = mtb_comp.cod_mart\n" +
" left outer join\n" +
" mtb_unt_mis\n" +
" ON dr.unt_mis_mag = mtb_unt_mis.unt_mis,\n" +
" setup\n" +
"\n" +
"\n" +
" )");
}
@Override
public void down() throws Exception {
}
}