modificata procedura di esportazione ordini per slim2k

This commit is contained in:
2024-05-28 14:45:31 +02:00
parent 95a49495c3
commit d148de7617
3 changed files with 143 additions and 28 deletions

View File

@@ -0,0 +1,105 @@
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.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240528131317 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomerDb(IntegryCustomerDB.Carelli_Format))
createOrUpdateFunction("[slim2k_exportOrdV]", "CREATE FUNCTION [dbo].[slim2k_exportOrdV](@codMdep varchar(5), @dataOrd datetime, @numOrd int, @listcode varchar(max),\n" +
"@singoloOrdine bit, @raggruppaArticoli bit) RETURNS TABLE AS \n" +
"return \n" +
"with ord as (\n" +
"select distinct dtb_ordt.data_ord,\n" +
"case when @raggruppaArticoli = 1 THEN min(dtb_ordt.num_ord) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else dtb_ordt.num_ord end as num_ord,\n" +
"dtb_ordt.cod_anag,\n" +
"dtb_ordt.cod_vdes,\n" +
"dtb_ordt.cod_mdep,\n" +
"dtb_ordt.serie,\n" +
"case when @raggruppaArticoli = 1 THEN min(dtb_ordr.riga_ord) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else dtb_ordr.riga_ord end as riga_ord,\n" +
"dtb_ordr.cod_mart,\n" +
"dtb_ordr.data_cons,\n" +
"case when @raggruppaArticoli = 1 THEN sum(round(dtb_ordr.qta_ord - dtb_ordr.qta_evasa,3)) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else dtb_ordr.qta_ord - dtb_ordr.qta_evasa end as qta_ord,\n" +
"case when @raggruppaArticoli = 1 THEN sum(num_cnf) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else dtb_ordr.num_cnf end as num_cnf,\n" +
"case when @raggruppaArticoli = 1 THEN sum(Round((dtb_ordr.qta_ord - dtb_ordr.qta_evasa ) / dtb_ordr.qta_cnf, 0)) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else Round((dtb_ordr.qta_ord - dtb_ordr.qta_evasa ) / dtb_ordr.qta_cnf, 0) end as num_cnf_inevasa\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 gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag \n" +
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN mtb_unt_mis ON dtb_ordr.unt_ord = mtb_unt_mis.unt_mis\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" +
" WHERE dtb_ordt.gestione = 'V' AND\n" +
" dtb_ordt.flag_annulla = 'N' AND\n" +
" dtb_ordr.data_cons in (\n" +
" SELECT top 1 dtb_ordr.data_cons\n" +
" FROM dtb_ordt 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" +
" where dtb_ordt.gestione = 'V' AND\n" +
" dtb_ordt.flag_annulla = 'N' AND\n" +
" dtb_ordr.flag_evaso = 'I' AND\n" +
" dtb_ordt.data_ord = @dataOrd AND \n" +
" dtb_ordt.num_ord = @numOrd AND\n" +
" dtb_ordt.cod_mdep = @codMdep\n" +
" order by dtb_ordr.data_cons) ANd\n" +
" ( dtb_ordt.num_ord = @numOrd OR \n" +
" dbo.slim2k_getListCode(dtb_ordt.data_ord, dtb_ordt.num_ord, dtb_ordt.cod_anag, dtb_ordt.cod_vdes, dtb_ordt.cod_mdep) = @listcode ) AND\n" +
" dtb_ordt.cod_mdep = @codMdep AND\n" +
" dtb_ordr.flag_evaso ='I' AND\n" +
" dtb_ordr.gestione ='V' AND \n" +
" dtb_ordt.cod_anag in (select cod_anag from format.dbo.vvw_clienti_slim2k) and\n" +
" (IsNull(mtb_unt_mis.flag_unita_kg, 'N') = 'N' OR\n" +
" (IsNull(mtb_unt_mis.flag_unita_kg, 'N') = 'S' AND Round((dtb_ordr.qta_ord - dtb_ordr.qta_evasa ) / dtb_ordr.qta_cnf, 0) > 0 ))\n" +
" )\n" +
"\n" +
" \n" +
" SELECT 'I' as rowstate,\n" +
" 'FOD' as firm,\n" +
" 'SHP' as listtype, \n" +
" @listcode as listcode, \n" +
" CASE \n" +
" WHEN\n" +
" @singoloOrdine = 0 \n" +
" then \n" +
" DENSE_RAnK() over (ORDER BY ord.data_ord, ord.num_ord ) *1000\n" +
" ELSE 0\n" +
" END + ord.riga_ord as cnt ,\n" +
" Convert(integer, convert(varchar(8), ord.data_ord, 112)) as listdate,\n" +
" Convert(varchar(40), CASE WHEN ord.cod_vdes is not null THEN vtb_dest.citta + ' - ' + vtb_dest.indirizzo ELSE gtb_anag.citta + ' - ' + gtb_anag.indirizzo END) as indirizzo,\n" +
" 'CLI' as doctype,\n" +
" Convert(varchar(15), ord.num_ord) as num_ord,\n" +
" Convert(integer, convert(varchar(8),ord.data_ord, 112)) as data_ord,\n" +
" ord.riga_ord,\n" +
" 'C' as tipo_anag,\n" +
" ord.cod_anag,\n" +
" ord.cod_vdes,\n" +
" ord.cod_mart,\n" +
" Convert(numeric(10,3), ord.qta_ord) as qta_ord,\n" +
" 'D' as rowtype,\n" +
" Convert(integer, convert(varchar(8), ord.data_cons, 112)) as data_cons,\n" +
" ord.cod_mdep,\n" +
" ord.num_cnf,\n" +
" ord.num_cnf_inevasa \n" +
" FROM ord\n" +
" \n" +
" INNER JOIN gtb_anag ON ord.cod_anag = gtb_anag.cod_anag \n" +
" LEFT OUTER JOIN vtb_dest ON ord.cod_anag = vtb_dest.cod_anag AND\n" +
" ord.cod_vdes = vtb_dest.cod_vdes");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240528131622 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'", false);
createSetup("EXPORT_ORDINI VENDITA", "SLIM2K", "RAGGRUPPA_ARTICOLI", "S", "permette di ragguppare gli articoli uguali presenti su più ordini escludendo le suddivisioni", false, "SI_NO", true, false, false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
}
@Override
public void down() throws Exception {
}
}