Merge branch 'develop' into feature/MaxiDataV2
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
This commit is contained in:
@@ -0,0 +1,337 @@
|
||||
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_20250922143404 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if (!isCustomer(IntegryCustomer.Biolevante)) return;
|
||||
|
||||
createOrUpdateView("olvw_miscele_olio", "CREATE view [dbo].[olvw_miscele_olio] as \n" +
|
||||
"select mtb_aart.cod_mart\n" +
|
||||
"from dbo.mtb_sgrp inner join dbo.mtb_aart on mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp and mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
|
||||
"where flag_miscela = 1 and mtb_aart.flag_stato = 'A'");
|
||||
createOrUpdateFunction("lol_getMovimentazioneOlioDett", "CREATE FUNCTION [dbo].[lol_getMovimentazioneOlioDett]\n" +
|
||||
"( \n" +
|
||||
" @codAnag varchar(5), @codDtip varchar(5), @dataDoc datetime, @serDoc varchar(3), @numDoc int, @filtraMiscela bit\n" +
|
||||
")\n" +
|
||||
"RETURNS TABLE as\n" +
|
||||
"return \n" +
|
||||
"(\n" +
|
||||
"SELECT \n" +
|
||||
" doc_r.id_riga, \n" +
|
||||
" doc_r.posizione, \n" +
|
||||
" doc_r.cod_mart, \n" +
|
||||
" doc_r.descrizione_estesa, \n" +
|
||||
" doc_r.unt_doc, \n" +
|
||||
" doc_r.qta_doc, \n" +
|
||||
" doc_r.partita_mag,\n" +
|
||||
" doc_r.cod_art_for as 'cod_art_for',\n" +
|
||||
" dtb_doct.cod_prod,\n" +
|
||||
" dtb_doct.unt_mis_prod,\n" +
|
||||
" dtb_doct.qta_prod,\n" +
|
||||
" dtb_doct.partita_mag as partita_mag_prod,\n" +
|
||||
" mtb_partita_mag.posizione as posizione_prod,\n" +
|
||||
" doc_r.is_olioSfuso\n" +
|
||||
"FROM dtb_doct inner join dtb_docr on dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
|
||||
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
|
||||
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
|
||||
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
|
||||
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
|
||||
" inner join mtb_partita_mag on dtb_doct.cod_prod = mtb_partita_mag.cod_mart AND\n" +
|
||||
" dtb_doct.partita_mag = mtb_partita_mag.partita_mag\n" +
|
||||
"LEFT OUTER JOIN (\n" +
|
||||
"SELECT doc_t.activity_id, doc_r.id_riga, doc_r.cod_mart, doc_r.descrizione_estesa, doc_r.unt_doc, doc_r.qta_doc, doc_r.partita_mag, doc_r.posizione, doc_r.cod_art_for,\n" +
|
||||
"case when IsNull(carat.confezionato, 'S') = 'N' THEN 1 ELSE 0 END as is_olioSfuso\n" +
|
||||
"FROM dtb_doct doc_t inner join dtb_docr doc_r on doc_t.cod_anag = doc_r.cod_anag AND \n" +
|
||||
" doc_t.cod_dtip = doc_r.cod_dtip AND \n" +
|
||||
" doc_t.data_doc = doc_r.data_doc AND\n" +
|
||||
" doc_t.ser_doc = doc_r.ser_doc AND\n" +
|
||||
" doc_t.num_doc = doc_r.num_doc\n" +
|
||||
" inner join dtb_tipi on doc_t.cod_dtip = dtb_tipi.cod_dtip \n" +
|
||||
" left outer join olvw_caratteristiche carat on doc_r.cod_mart = carat.cod_mart\n" +
|
||||
"WHERE dtb_tipi.segno_qta_car - dtb_tipi.segno_qta_scar < 0 AND\n" +
|
||||
"(@filtraMiscela = 0 OR (@filtraMiscela = 1 AND doc_t.cod_prod IN (select cod_mart from olvw_miscele_olio )))\n" +
|
||||
") doc_r on dtb_docr.activity_id_row = doc_r.activity_id \n" +
|
||||
" where dtb_doct.cod_anag = @codAnag AND\n" +
|
||||
" dtb_doct.cod_dtip = @codDtip AND\n" +
|
||||
" dtb_doct.data_doc = @dataDoc AND\n" +
|
||||
" dtb_doct.ser_doc = @serDoc AND\n" +
|
||||
" dtb_doct.num_doc = @numDoc AND\n" +
|
||||
" (@filtraMiscela = 0 OR (@filtraMiscela = 1 AND dtb_docr.cod_mart IN (select cod_mart from olvw_miscele_olio )))\n" +
|
||||
")");
|
||||
createOrUpdateView("lvw_MovimentiPosture", "CREATE view [dbo].[lvw_MovimentiPosture] as\n" +
|
||||
"With MovimentiMixPosture as\n" +
|
||||
" ( \n" +
|
||||
" select CarT.cod_prod CarCodProd,\n" +
|
||||
" CarT.partita_mag CartPartitaMag,\n" +
|
||||
" MixT.cod_prod MixTCodProd,\n" +
|
||||
" MixT.partita_mag as MixTPartita,\n" +
|
||||
" CarR.cod_mart CarRCodMart,\n" +
|
||||
" CarR.posizione CarRPos,\n" +
|
||||
" MixR.cod_mart MixRCodMart,\n" +
|
||||
" MixR.posizione MixRPos,\n" +
|
||||
"\n" +
|
||||
" MixT.data_reg,\n" +
|
||||
" MixT.data_ins,\n" +
|
||||
" MixT.cod_mdep,\n" +
|
||||
" carT.gestione,\n" +
|
||||
" CarT.cod_anag,\n" +
|
||||
" gtb_anag.rag_soc,\n" +
|
||||
" CarT.cod_dtip,\n" +
|
||||
" dtb_tipi.descrizione as causale,\n" +
|
||||
" CarT.data_doc,\n" +
|
||||
" CarT.ser_doc,\n" +
|
||||
" CarT.num_doc,\n" +
|
||||
" Cart.cod_prod as cod_prod_fine,\n" +
|
||||
" Cart.partita_mag as partita_mag_fine,\n" +
|
||||
" MixT.cod_prod as Cod_prod_mix,\n" +
|
||||
" MixT.partita_mag as partita_mag_mix,\n" +
|
||||
" case\n" +
|
||||
" when (MixT.cod_prod <> CarT.cod_prod and MixT.cod_prod not in (select cod_mart from olvw_miscele_olio))\n" +
|
||||
" then\n" +
|
||||
" mtb_partita_mag.posizione --Avvinamento\n" +
|
||||
" else\n" +
|
||||
" Case\n" +
|
||||
" when MixR.cod_mart in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
" then null --La miscela termina nel confezionato quindi postura null\n" +
|
||||
" else\n" +
|
||||
" Case\n" +
|
||||
" when MixT.cod_prod in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
" and CarR.posizione = MixR.posizione\n" +
|
||||
" then null --Rigo di scarico a confezionamento di un olio senza serbatoio polomone\n" +
|
||||
"\n" +
|
||||
" else\n" +
|
||||
" CarR.posizione end end end as Posizione_a,\n" +
|
||||
" MixR.cod_dtip as cod_dtip_mix,\n" +
|
||||
" MixR.cod_mart,\n" +
|
||||
" mtb_aart.descrizione_estesa as descrizione_Articolo, \n" +
|
||||
" MixR.partita_mag,\n" +
|
||||
" CASE WHEN Isnull(carat_CarR.Confezionato, 'N') = 'S' -- Scarico olio confezionato\n" +
|
||||
" THEN null else MixR.posizione end as Posizione_da,\n" +
|
||||
"\n" +
|
||||
" MAX(Case\n" +
|
||||
" when MixR.cod_mart in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
" then null\n" +
|
||||
" else MixR.posizione end)\n" +
|
||||
" over (PARTITION by CarT.cod_anag, CarT.cod_Dtip, CarT.data_doc, CarT.ser_doc, CarT.num_doc) as MaxPosizioneA,\n" +
|
||||
" MAX(MixR.posizione)\n" +
|
||||
" over (PARTITION by CarT.cod_anag, CarT.cod_Dtip, CarT.data_doc, CarT.ser_doc, CarT.num_doc) as MaxPosizioneDa, \n" +
|
||||
" Case\n" +
|
||||
" when isnull(carat_CarR.Confezionato , 'N') = 'S' THEN\n" +
|
||||
" case when tipoMix.segno_qta_car - tipoMix.segno_qta_scar > 0 THEN MixT.qta_prod eLSE 0 END --Sconfezionamento \n" +
|
||||
" when MAX(Case\n" +
|
||||
" when MixR.cod_mart in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
" then Null\n" +
|
||||
" else MixR.posizione end)\n" +
|
||||
" over (PARTITION by CarT.cod_anag, CarT.cod_Dtip, CarT.data_doc, CarT.ser_doc, CarT.num_doc) =\n" +
|
||||
" MAX(MixR.posizione)\n" +
|
||||
" over (PARTITION by CarT.cod_anag, CarT.cod_Dtip, CarT.data_doc, CarT.ser_doc, CarT.num_doc)\n" +
|
||||
" and\n" +
|
||||
" MixR.posizione = MAX(Case\n" +
|
||||
" when MixR.cod_mart in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
" then null\n" +
|
||||
" else MixR.posizione end)\n" +
|
||||
" over (PARTITION by CarT.cod_anag, CarT.cod_Dtip, CarT.data_doc, CarT.ser_doc, CarT.num_doc)\n" +
|
||||
" and MixR.cod_mart in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
" then 0 --Esclusione dei movimenti di M00 nei confezionamenti senza serbatoio polmone\n" +
|
||||
" else \n" +
|
||||
" MixR.qta_doc \n" +
|
||||
" end as qta_doc\n" +
|
||||
" from dtb_doct CarT \n" +
|
||||
" INNER JOIN dtb_tipi on CarT.cod_dtip = dtb_tipi.cod_dtip \n" +
|
||||
" INNER JOIN gtb_anag ON CarT.cod_anag = gtb_anag.cod_anag \n" +
|
||||
" INNER JOIN dtb_docr CarR ON CarT.cod_anag = CarR.cod_anag\n" +
|
||||
" and CarT.cod_dtip = CarR.cod_dtip\n" +
|
||||
" and CarT.data_doc = CarR.data_doc\n" +
|
||||
" and CarT.ser_doc = CarR.ser_doc\n" +
|
||||
" and CarT.num_doc = CarR.num_doc \n" +
|
||||
" INNER JOIn dtb_doct MixT ON CarR.activity_id_row = MixT.activity_id \n" +
|
||||
" INNER JOIN dtb_tipi tipoMix on MixT.cod_dtip = tipoMix.cod_dtip\n" +
|
||||
" INNER JOIN dtb_docr MixR ON MixT.cod_anag = MixR.cod_anag\n" +
|
||||
" and MixT.cod_dtip = MixR.cod_dtip\n" +
|
||||
" and MixT.data_doc = MixR.data_doc\n" +
|
||||
" and MixT.ser_doc = MixR.ser_doc\n" +
|
||||
" and MixT.num_doc = MixR.num_doc \n" +
|
||||
" INNER JOIN mtb_partita_mag ON MixT.cod_prod = mtb_partita_mag.cod_mart and \n" +
|
||||
" MixT.partita_mag = mtb_partita_mag.partita_mag \n" +
|
||||
" INNER JOIN mtb_aart ON MixR.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" LEFT OUTER JOIN olvw_caratteristiche carat_CarR on CarR.cod_mart = carat_CarR.cod_mart\n" +
|
||||
" where dtb_tipi.tipo_emissione = 'DIRETTA' \n" +
|
||||
" and Carr.posizione is not null \n" +
|
||||
" And (\n" +
|
||||
" isNUll(mtb_partita_mag.posizione, '') <> isNull(MixR.posizione, '')\n" +
|
||||
" and CarR.posizione <> isNull(MixR.posizione, '') --esclusione dei giroconti dovuti agli avvinamenti\n" +
|
||||
"\n" +
|
||||
" OR MixT.cod_prod in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
" and\n" +
|
||||
" CarR.posizione = isNull(MixR.posizione, '') --Serve ad includere la riga dell'olio dei confezionamenti senza serbatoio polmone\n" +
|
||||
" \n" +
|
||||
" OR MixT.cod_prod not in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
" and ( MixT.cod_prod <> MixR.cod_mart \n" +
|
||||
" OR (MixT.cod_prod = MixR.cod_mart AND IsNull(carat_CarR.Confezionato, 'N') = 'S' )\n" +
|
||||
" )\n" +
|
||||
" and CarR.posizione = isNull(MixR.posizione, '') --Serve ad includere la riga di riqualificazione dell'olio\n" +
|
||||
" ) \n" +
|
||||
" )\n" +
|
||||
"\n" +
|
||||
", movi as (\n" +
|
||||
" --Carichi da Mix per movimento speciale \n" +
|
||||
" Select data_reg,\n" +
|
||||
" data_ins,\n" +
|
||||
" MovimentiMixPosture.cod_mdep,\n" +
|
||||
" gestione,\n" +
|
||||
" cod_anag,\n" +
|
||||
" rag_soc,\n" +
|
||||
" cod_dtip,\n" +
|
||||
" causale,\n" +
|
||||
" data_doc,\n" +
|
||||
" ser_doc,\n" +
|
||||
" num_doc,\n" +
|
||||
" posizione_a as Posizione,\n" +
|
||||
" mtb_depo_posizioni.descrizione as descrizione_posizione,\n" +
|
||||
" mtb_depo_posizioni.capacita,\n" +
|
||||
" cod_mart,\n" +
|
||||
" descrizione_Articolo,\n" +
|
||||
" partita_mag,\n" +
|
||||
" qta_doc as qta_Car,\n" +
|
||||
" 0 as qta_Scar,\n" +
|
||||
" ISNULL(cod_prod_fine, cod_prod_mix) as cod_prod,\n" +
|
||||
" ISNULL(partita_mag_fine, partita_mag_mix) as partita_mag_prod\n" +
|
||||
" from MovimentiMixPosture,\n" +
|
||||
" mtb_depo_posizioni\n" +
|
||||
" Where Posizione_a is not null\n" +
|
||||
" and qta_doc <> 0\n" +
|
||||
" /*and MovimentiMixPosture.cod_mdep = mtb_depo_posizioni.cod_mdep*/\n" +
|
||||
" and MovimentiMixPosture.Posizione_a = mtb_depo_posizioni.posizione\n" +
|
||||
" \n" +
|
||||
" Union all\n" +
|
||||
"\n" +
|
||||
" --Scarichi da Mix per movimento speciale\n" +
|
||||
" Select data_reg,\n" +
|
||||
" data_ins,\n" +
|
||||
" MovimentiMixPosture.cod_mdep,\n" +
|
||||
" gestione,\n" +
|
||||
" cod_anag,\n" +
|
||||
" rag_soc,\n" +
|
||||
" cod_dtip,\n" +
|
||||
" causale,\n" +
|
||||
" data_doc,\n" +
|
||||
" ser_doc,\n" +
|
||||
" num_doc,\n" +
|
||||
" posizione_da as Posizione,\n" +
|
||||
" mtb_depo_posizioni.descrizione as descrizione_posizione,\n" +
|
||||
" mtb_depo_posizioni.capacita,\n" +
|
||||
" cod_mart,\n" +
|
||||
" descrizione_Articolo,\n" +
|
||||
" partita_mag,\n" +
|
||||
" 0 as qta_Car,\n" +
|
||||
" qta_doc as qta_Scar,\n" +
|
||||
" ISNULL(cod_prod_fine, cod_prod_mix) as cod_prod,\n" +
|
||||
" ISNULL(partita_mag_fine, partita_mag_mix) as partita_mag_prod\n" +
|
||||
" from MovimentiMixPosture,\n" +
|
||||
" mtb_depo_posizioni\n" +
|
||||
" Where Posizione_da is not null\n" +
|
||||
" and qta_doc <> 0\n" +
|
||||
" /*and MovimentiMixPosture.cod_mdep = mtb_depo_posizioni.cod_mdep*/\n" +
|
||||
" and MovimentiMixPosture.Posizione_da = mtb_depo_posizioni.posizione\n" +
|
||||
" \n" +
|
||||
" union all\n" +
|
||||
"\n" +
|
||||
" --Carichi e scarichi da movimenti normali (inventari, ddt di vendita, etc)\n" +
|
||||
" Select dtb_doct.data_reg,\n" +
|
||||
" dtb_doct.data_ins,\n" +
|
||||
" dtb_doct.cod_mdep,\n" +
|
||||
" dtb_doct.gestione,\n" +
|
||||
" dtb_doct.cod_anag,\n" +
|
||||
" gtb_anag.rag_soc,\n" +
|
||||
" dtb_doct.cod_dtip,\n" +
|
||||
" dtb_tipi.descrizione as causale,\n" +
|
||||
" dtb_doct.data_doc,\n" +
|
||||
" dtb_doct.ser_doc,\n" +
|
||||
" dtb_doct.num_doc,\n" +
|
||||
" dtb_docr.posizione,\n" +
|
||||
" mtb_depo_posizioni.descrizione as descrizione_posizione,\n" +
|
||||
" mtb_depo_posizioni.capacita,\n" +
|
||||
" dtb_docr.cod_mart,\n" +
|
||||
" mtb_aart.descrizione_estesa,\n" +
|
||||
" dtb_docr.partita_mag,\n" +
|
||||
" dtb_docr.qta_doc * dtb_docr.rap_conv * (segno_qta_car) as qta_Car,\n" +
|
||||
" dtb_docr.qta_doc * dtb_docr.rap_conv * (segno_qta_scar) as qta_sCar,\n" +
|
||||
" dtb_doct.cod_prod,\n" +
|
||||
" dtb_doct.partita_mag as partita_mag_prod\n" +
|
||||
" from dtb_doct,\n" +
|
||||
" dtb_docr\n" +
|
||||
" left outer join mtb_depo_posizioni on dtb_docr.posizione = mtb_depo_posizioni.posizione,\n" +
|
||||
" dtb_tipi,\n" +
|
||||
" gtb_anag,\n" +
|
||||
" mtb_aart\n" +
|
||||
" Where dtb_doct.cod_anag = dtb_docr.cod_anag\n" +
|
||||
" and dtb_doct.cod_dtip = dtb_docr.cod_dtip\n" +
|
||||
" and dtb_doct.data_doc = dtb_docr.data_doc\n" +
|
||||
" and dtb_doct.ser_doc = dtb_docr.ser_doc\n" +
|
||||
" and dtb_doct.num_doc = dtb_docr.num_doc\n" +
|
||||
" and dtb_doct.cod_anag = gtb_anag.cod_anag\n" +
|
||||
" and dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
|
||||
" and dtb_docr.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" and dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
||||
" and dtb_docr.posizione is not null\n" +
|
||||
" and dtb_doct.activity_id is null\n" +
|
||||
" and dtb_docr.cod_mart not in (select cod_mart from olvw_miscele_olio)\n" +
|
||||
")\n" +
|
||||
"\n" +
|
||||
"select data_reg,\n" +
|
||||
" data_ins,\n" +
|
||||
" cod_mdep,\n" +
|
||||
" gestione,\n" +
|
||||
" cod_anag,\n" +
|
||||
" rag_soc,\n" +
|
||||
" cod_dtip,\n" +
|
||||
" causale,\n" +
|
||||
" data_doc,\n" +
|
||||
" ser_doc,\n" +
|
||||
" num_doc,\n" +
|
||||
" Posizione,\n" +
|
||||
" descrizione_posizione,\n" +
|
||||
" capacita,\n" +
|
||||
" cod_mart,\n" +
|
||||
" descrizione_Articolo,\n" +
|
||||
" partita_mag,\n" +
|
||||
" sum(qta_Car) as qta_car,\n" +
|
||||
" sum(qta_Scar) as qta_scar,\n" +
|
||||
" cod_prod,\n" +
|
||||
" partita_mag_prod\n" +
|
||||
"from movi\n" +
|
||||
"group by data_reg,\n" +
|
||||
" data_ins,\n" +
|
||||
" cod_mdep,\n" +
|
||||
" gestione,\n" +
|
||||
" cod_anag,\n" +
|
||||
" rag_soc,\n" +
|
||||
" cod_dtip,\n" +
|
||||
" causale,\n" +
|
||||
" data_doc,\n" +
|
||||
" ser_doc,\n" +
|
||||
" num_doc,\n" +
|
||||
" Posizione,\n" +
|
||||
" descrizione_posizione,\n" +
|
||||
" capacita,\n" +
|
||||
" cod_mart,\n" +
|
||||
" descrizione_Articolo,\n" +
|
||||
" partita_mag,\n" +
|
||||
" cod_prod,\n" +
|
||||
" partita_mag_prod");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,184 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250923113155 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if (!isTextiles())
|
||||
return;
|
||||
|
||||
createOrUpdateFunction("ftx_getDisponibilitaArticoli", "CREATE FUNCTION [dbo].[ftx_getDisponibilitaArticoli](@datavalidita DATETIME,\n" +
|
||||
" @codmdep VARCHAR(8000),\n" +
|
||||
" @annostag VARCHAR(10),\n" +
|
||||
" @codmart VARCHAR(15),\n" +
|
||||
" @codtagl VARCHAR(15),\n" +
|
||||
" @codcol VARCHAR(15),\n" +
|
||||
" @barcode VARCHAR(15))\n" +
|
||||
" RETURNS TABLE AS\n" +
|
||||
" RETURN\n" +
|
||||
" WITH setup AS (SELECT mtb_depo.cod_mdep,\n" +
|
||||
" MAX(IIF(stb_gest_setup.key_section = 'INCLUDI_QTA_ORD_FOR',\n" +
|
||||
" ISNULL(stb_gest_setup_depo.value, stb_gest_setup.value),\n" +
|
||||
" NULL)) AS includi_qta_ord_for,\n" +
|
||||
" MAX(IIF(stb_gest_setup.key_section = 'ESCLUDI_QTA_COLLI',\n" +
|
||||
" ISNULL(stb_gest_setup_depo.value, 'S'), NULL)) AS ESCLUDI_QTA_COLLI\n" +
|
||||
" FROM mtb_depo\n" +
|
||||
" CROSS APPLY stb_gest_setup\n" +
|
||||
" LEFT OUTER JOIN stb_gest_setup_depo\n" +
|
||||
" ON mtb_depo.cod_mdep = stb_gest_setup_depo.cod_mdep AND\n" +
|
||||
" stb_gest_setup.gest_name = stb_gest_setup_depo.gest_name AND\n" +
|
||||
" stb_gest_setup.section = stb_gest_setup_depo.section AND\n" +
|
||||
" stb_gest_setup.key_section = stb_gest_setup_depo.key_section\n" +
|
||||
" WHERE stb_gest_setup.gest_name = 'DATI_AZIENDA'\n" +
|
||||
" AND stb_gest_setup.section = 'CALCOLO_DISPONIBILITA'\n" +
|
||||
" AND stb_gest_setup.key_section IN ('INCLUDI_QTA_ORD_FOR', 'ESCLUDI_QTA_COLLI')\n" +
|
||||
" GROUP BY mtb_depo.cod_mdep),\n" +
|
||||
" articoli AS (SELECT ttb_style.anno_stag,\n" +
|
||||
" ttb_style.cod_style,\n" +
|
||||
" ttb_style_colori.cod_col,\n" +
|
||||
" ttb_style_taglie.cod_tagl,\n" +
|
||||
" mtb_part_dt.qta_ord_for,\n" +
|
||||
" mtb_part_dt.cod_mdep\n" +
|
||||
" FROM ttb_style,\n" +
|
||||
" ttb_style_colori,\n" +
|
||||
" ttb_style_taglie,\n" +
|
||||
" mtb_part_dt\n" +
|
||||
" WHERE (@codmdep IS NULL OR mtb_part_dt.cod_mdep IN (SELECT value_string AS cod_mdep\n" +
|
||||
" FROM parsestringintoarray(@codmdep, ',')))\n" +
|
||||
" AND (@codmart IS NULL OR ttb_style.cod_style = @codmart)\n" +
|
||||
" AND (@codcol IS NULL OR ttb_style_colori.cod_col = @codcol)\n" +
|
||||
" AND (@codtagl IS NULL OR ttb_style_taglie.cod_tagl = @codtagl)\n" +
|
||||
" AND (@annostag IS NULL OR ttb_style.anno_stag = @annostag)\n" +
|
||||
" AND ttb_style.cod_style = mtb_part_dt.cod_mart\n" +
|
||||
" AND ttb_style_colori.cod_col = mtb_part_dt.cod_col\n" +
|
||||
" AND ttb_style_taglie.cod_tagl = mtb_part_dt.cod_tagl\n" +
|
||||
" AND ttb_style.cod_style = ttb_style_colori.cod_style\n" +
|
||||
" AND ttb_style.cod_style = ttb_style_taglie.cod_style),\n" +
|
||||
" colli AS (SELECT mtb_colr.cod_mart,\n" +
|
||||
" mtb_colr.cod_col,\n" +
|
||||
" mtb_colr.cod_tagl,\n" +
|
||||
" SUM(mtb_colr.qta_col) AS qta,\n" +
|
||||
" mtb_colt.cod_mdep\n" +
|
||||
" FROM mtb_colt\n" +
|
||||
" LEFT OUTER JOIN dtb_tipi ON mtb_colt.cod_dtip = dtb_tipi.cod_dtip,\n" +
|
||||
" mtb_colr\n" +
|
||||
" WHERE mtb_colt.gestione = mtb_colr.gestione\n" +
|
||||
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
|
||||
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
|
||||
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
|
||||
" AND mtb_colt.gestione = 'V'\n" +
|
||||
" AND (@codmdep IS NULL OR mtb_colt.cod_mdep IN (SELECT value_string AS cod_mdep\n" +
|
||||
" FROM parsestringintoarray(@codmdep, ',')))\n" +
|
||||
" AND (mtb_colt.cod_dtip IS NULL OR (dtb_tipi.segno_qta_car = 0 AND dtb_tipi.segno_qta_scar = 0))\n" +
|
||||
" AND (@codmart IS NULL OR mtb_colr.cod_mart = @codmart)\n" +
|
||||
" AND (@codcol IS NULL OR mtb_colr.cod_col = @codcol)\n" +
|
||||
" AND (@codtagl IS NULL OR mtb_colr.cod_tagl = @codtagl)\n" +
|
||||
" GROUP BY mtb_colr.cod_mart,\n" +
|
||||
" mtb_colr.cod_col,\n" +
|
||||
" mtb_colr.cod_tagl,\n" +
|
||||
" mtb_colt.cod_mdep),\n" +
|
||||
" prenotazione AS (SELECT wdtb_ordr.cod_mart,\n" +
|
||||
" wdtb_ordr.cod_col,\n" +
|
||||
" wdtb_ordr.cod_tagl,\n" +
|
||||
" SUM(wdtb_ordr.qta_ord) AS qta,\n" +
|
||||
" wdtb_ordt.cod_mdep\n" +
|
||||
" FROM wdtb_ordt,\n" +
|
||||
" wdtb_ordr\n" +
|
||||
" WHERE wdtb_ordt.gestione = wdtb_ordr.gestione\n" +
|
||||
" AND wdtb_ordt.data_ord = wdtb_ordr.data_ord\n" +
|
||||
" AND wdtb_ordt.num_ord = wdtb_ordr.num_ord\n" +
|
||||
" AND wdtb_ordt.gestione = 'V'\n" +
|
||||
" AND (@codmdep IS NULL OR wdtb_ordt.cod_mdep IN (SELECT value_string AS cod_mdep\n" +
|
||||
" FROM parsestringintoarray(@codmdep, ',')))\n" +
|
||||
" AND wdtb_ordt.flag_elaborato = 'N'\n" +
|
||||
" AND (@codmart IS NULL OR wdtb_ordr.cod_mart = @codmart)\n" +
|
||||
" AND (@codcol IS NULL OR wdtb_ordr.cod_col = @codcol)\n" +
|
||||
" AND (@codtagl IS NULL OR wdtb_ordr.cod_tagl = @codtagl)\n" +
|
||||
" GROUP BY wdtb_ordr.cod_mart,\n" +
|
||||
" wdtb_ordr.cod_col,\n" +
|
||||
" wdtb_ordr.cod_tagl,\n" +
|
||||
" wdtb_ordt.cod_mdep),\n" +
|
||||
" ordine AS (SELECT dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.cod_col,\n" +
|
||||
" dtb_ordr.cod_tagl,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN SUM(CASE\n" +
|
||||
" WHEN dtb_ordr.flag_evaso = 'I' OR\n" +
|
||||
" (dtb_ordr.flag_evaso = 'A' AND dtb_ordr.qta_acc > 0)\n" +
|
||||
" THEN dtb_ordr.qta_ord - dtb_ordr.qta_evasa - dtb_ordr.qta_col\n" +
|
||||
" ELSE 0 END) > 0 THEN\n" +
|
||||
" SUM(CASE\n" +
|
||||
" WHEN dtb_ordr.flag_evaso = 'I' OR\n" +
|
||||
" (dtb_ordr.flag_evaso = 'A' AND dtb_ordr.qta_acc > 0)\n" +
|
||||
" THEN dtb_ordr.qta_ord - dtb_ordr.qta_evasa - dtb_ordr.qta_col\n" +
|
||||
" ELSE 0 END)\n" +
|
||||
" ELSE 0 END AS qta,\n" +
|
||||
" SUM(dtb_ordr.qta_acc) AS qta_acc,\n" +
|
||||
" /*sum(dtb_ordr.qta_acc - dtb_ordr.qta_col) as qta_acc,*/\n" +
|
||||
" dtb_ordt.cod_mdep\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 = 'V'\n" +
|
||||
" AND (@codmdep IS NULL OR dtb_ordt.cod_mdep IN (SELECT value_string AS cod_mdep\n" +
|
||||
" FROM parsestringintoarray(@codmdep, ',')))\n" +
|
||||
" /* AND dtb_ordr.flag_evaso = 'I'*/\n" +
|
||||
" AND dtb_ordt.flag_annulla = 'N'\n" +
|
||||
" AND (@codmart IS NULL OR dtb_ordr.cod_mart = @codmart)\n" +
|
||||
" AND (@codcol IS NULL OR dtb_ordr.cod_col = @codcol)\n" +
|
||||
" AND (@codtagl IS NULL OR dtb_ordr.cod_tagl = @codtagl)\n" +
|
||||
" GROUP BY dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.cod_col,\n" +
|
||||
" dtb_ordr.cod_tagl,\n" +
|
||||
" dtb_ordt.cod_mdep)\n" +
|
||||
"\n" +
|
||||
" SELECT articoli.anno_stag,\n" +
|
||||
" articoli.cod_style,\n" +
|
||||
" articoli.cod_col,\n" +
|
||||
" articoli.cod_tagl,\n" +
|
||||
" ttb_bar_code.cod_barre,\n" +
|
||||
" articoli.cod_mdep,\n" +
|
||||
" ISNULL(giacenza.qta_fine, 0) AS giacenza,\n" +
|
||||
" ISNULL(articoli.qta_ord_for, 0) AS ord_forn,\n" +
|
||||
" ISNULL(ordine.qta, 0) AS ordini,\n" +
|
||||
" ISNULL(prenotazione.qta, 0) AS ordini_web,\n" +
|
||||
" ISNULL(ordine.qta_acc, 0) AS accant_su_ordine,\n" +
|
||||
" ISNULL(colli.qta, 0) AS colli,\n" +
|
||||
" ISNULL(giacenza.qta_fine, 0) - ISNULL(ordine.qta, 0) - ISNULL(prenotazione.qta, 0) +\n" +
|
||||
" IIF(setup.includi_qta_ord_for = 'S', ISNULL(articoli.qta_ord_for, 0), 0) -\n" +
|
||||
" IIF(setup.ESCLUDI_QTA_COLLI = 'S', ISNULL(colli.qta, 0), 0) AS qta_disp,\n" +
|
||||
" ISNULL(giacenza.qta_fine, 0) - ISNULL(ordine.qta_acc, 0) - ISNULL(colli.qta, 0) AS qta_distrib_su_ordini\n" +
|
||||
" FROM articoli\n" +
|
||||
" LEFT OUTER JOIN ttb_bar_code ON articoli.cod_style = ttb_bar_code.cod_style AND\n" +
|
||||
" articoli.cod_col = ttb_bar_code.cod_col AND\n" +
|
||||
" articoli.cod_tagl = ttb_bar_code.cod_tagl\n" +
|
||||
" LEFT OUTER JOIN getsitartadatadett(@datavalidita, @codmdep) giacenza\n" +
|
||||
" ON articoli.cod_style = giacenza.cod_mart AND articoli.cod_col = giacenza.cod_col AND\n" +
|
||||
" articoli.cod_tagl = giacenza.cod_tagl AND articoli.cod_mdep = giacenza.cod_mdep\n" +
|
||||
" LEFT OUTER JOIN ordine\n" +
|
||||
" ON articoli.cod_style = ordine.cod_mart AND articoli.cod_col = ordine.cod_col AND\n" +
|
||||
" articoli.cod_tagl = ordine.cod_tagl AND articoli.cod_mdep = ordine.cod_mdep\n" +
|
||||
" LEFT OUTER JOIN prenotazione ON articoli.cod_style = prenotazione.cod_mart AND\n" +
|
||||
" articoli.cod_col = prenotazione.cod_col AND\n" +
|
||||
" articoli.cod_tagl = prenotazione.cod_tagl AND\n" +
|
||||
" articoli.cod_mdep = prenotazione.cod_mdep\n" +
|
||||
" LEFT OUTER JOIN colli ON articoli.cod_style = colli.cod_mart AND articoli.cod_col = colli.cod_col AND\n" +
|
||||
" articoli.cod_tagl = colli.cod_tagl AND articoli.cod_mdep = colli.cod_mdep\n" +
|
||||
" left outer join setup on setup.cod_mdep = articoli.cod_mdep\n" +
|
||||
" WHERE (@barcode IS NULL OR ttb_bar_code.cod_barre = @barcode)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
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_20250923115203 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if (isCustomer(IntegryCustomer.FolliesGroup)) {
|
||||
|
||||
updateSetupValue("DATI_AZIENDA", "SETUP", "DELIMITED_IDENTIFIER", "1");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250923132435 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
|
||||
createOrUpdateFunction("f_getCodEsenz", "CREATE FUNCTION [dbo].[f_getCodEsenz](@gestione varchar(1), @codAnag varchar(5), @codVdes varchar(5))\n" +
|
||||
"RETURNS varchar(5) \n" +
|
||||
"AS\n" +
|
||||
"BEGIN\n" +
|
||||
" DECLARE @ls_codAliqCli VARCHAR(5),\n" +
|
||||
" @ls_codAliqForn VARCHAR(5),\n" +
|
||||
" @ls_codAliqIn VARCHAR(5),\n" +
|
||||
" @ls_codAliqOut VARCHAR(5),\n" +
|
||||
" @ls_codesenz VARCHAR(5),\n" +
|
||||
" @existCodAnag INTEGER;\n" +
|
||||
" \n" +
|
||||
" SELECT @existCodAnag = 0\n" +
|
||||
" SELECT @ls_codAliqCli = vtb_clie.cod_aliq,\n" +
|
||||
" @ls_codAliqForn = atb_forn.cod_aliq,\n" +
|
||||
" @ls_codAliqIn = vtb_dest.cod_aliq_in,\n" +
|
||||
" @ls_codAliqOut = vtb_dest.cod_aliq_out,\n" +
|
||||
" @existCodAnag = 1\n" +
|
||||
" FROM gtb_anag LEFT OUTER JOIN vtb_clie ON vtb_clie.cod_anag = gtb_anag.cod_anag\n" +
|
||||
" LEFT OUTER JOIN atb_forn ON atb_forn.cod_anag = @codAnag\n" +
|
||||
" LEFT OUTER JOIN vtb_dest ON vtb_dest.cod_vdes = @codVdes AND\n" +
|
||||
" vtb_dest.cod_anag = @codAnag\n" +
|
||||
" WHERE gtb_anag.cod_anag = @codAnag;\n" +
|
||||
"\n" +
|
||||
" IF @gestione = 'V' and @existCodAnag = 0\n" +
|
||||
" begin\n" +
|
||||
" select @ls_codAliqIn = ptb_dest.cod_aliq_in,\n" +
|
||||
" @ls_codAliqOut = ptb_dest.cod_aliq_out\n" +
|
||||
" from ptb_dest \n" +
|
||||
" where cod_ppro = @codAnag AND\n" +
|
||||
" cod_pdes = @codVdes;\n" +
|
||||
" end\n" +
|
||||
" \n" +
|
||||
" if @ls_codAliqIn is null and @ls_codAliqOut is not null\n" +
|
||||
" SELECT @ls_codesenz = @ls_codAliqOut\n" +
|
||||
" \n" +
|
||||
" if @gestione <>'V'\n" +
|
||||
" SELECT @ls_codAliqCli = @ls_codAliqForn\n" +
|
||||
" \n" +
|
||||
" if @ls_codesenz is null and @ls_codAliqCli is not null \n" +
|
||||
" SELECT @ls_codEsenz = @ls_codAliqCli\n" +
|
||||
" \n" +
|
||||
" RETURN @ls_codEsenz;\n" +
|
||||
"END");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1775,21 +1775,32 @@ public class DtbDoct extends DtbBaseDocT implements EquatableEntityInterface<Dtb
|
||||
//
|
||||
// DocumentBusinessLogic.UpdProgMaga task = new StoredProcedure.UpdProgMaga("CARELLI", datiDoc);
|
||||
// new Thread(task).start();
|
||||
CallableStatement StoredProcedure = connection.prepareCall("{call UpdProgMaga(?,?,?,?,?,?,?,?,?,?,?,?)}");
|
||||
StoredProcedure.setString(1, codAnag);
|
||||
StoredProcedure.setString(2, codDtip);
|
||||
StoredProcedure.setTimestamp(3, new Timestamp(dataDoc.getTime()));
|
||||
StoredProcedure.setString(4, serDoc);
|
||||
StoredProcedure.setInt(5, numDoc.intValue());
|
||||
StoredProcedure.setLong(6, segno);
|
||||
StoredProcedure.setString(7, codAnagOld);
|
||||
StoredProcedure.setString(8, codDtipOld);
|
||||
StoredProcedure.setTimestamp(9, new Timestamp(dataDocOld.getTime()));
|
||||
StoredProcedure.setString(10, serDocOld);
|
||||
StoredProcedure.setInt(11, numDocOld.intValue());
|
||||
StoredProcedure.setString(12, operation);
|
||||
StoredProcedure.execute();
|
||||
StoredProcedure.close();
|
||||
try (CallableStatement StoredProcedure = connection.prepareCall("{call UpdProgMaga(?,?,?,?,?,?,?,?,?,?,?,?)}")) {
|
||||
//CallableStatement StoredProcedure = connection.prepareCall("{call UpdProgMaga(?,?,?,?,?,?,?,?,?,?,?,?)}");
|
||||
StoredProcedure.setString(1, codAnag);
|
||||
StoredProcedure.setString(2, codDtip);
|
||||
StoredProcedure.setTimestamp(3, new Timestamp(dataDoc.getTime()));
|
||||
StoredProcedure.setString(4, serDoc);
|
||||
StoredProcedure.setInt(5, numDoc.intValue());
|
||||
StoredProcedure.setLong(6, segno);
|
||||
StoredProcedure.setString(7, codAnagOld);
|
||||
StoredProcedure.setString(8, codDtipOld);
|
||||
StoredProcedure.setTimestamp(9, new Timestamp(dataDocOld.getTime()));
|
||||
StoredProcedure.setString(10, serDocOld);
|
||||
StoredProcedure.setInt(11, numDocOld.intValue());
|
||||
StoredProcedure.setString(12, operation);
|
||||
boolean hasResults = StoredProcedure.execute();
|
||||
while (true) {
|
||||
if (!hasResults) {
|
||||
int updateCount = StoredProcedure.getUpdateCount();
|
||||
if (updateCount == -1) break; // fine
|
||||
}
|
||||
hasResults = StoredProcedure.getMoreResults();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
logger.error(e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -741,7 +741,7 @@ public class ActivityService {
|
||||
String link = String.format("/activity/task/%s", newStbActivity.getActivityId());
|
||||
|
||||
notificationService.sendNotificationToUserDevices(new MessageDTO()
|
||||
.setUserName(user.getUsername())
|
||||
.setUserName(utente)
|
||||
.setAppName(WtbUserDeviceToken.AppName.TASK)
|
||||
.setNotification(new NotificationDTO()
|
||||
.setTitle(title)
|
||||
@@ -1362,8 +1362,13 @@ public class ActivityService {
|
||||
StbActivity oldActivity = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, sql, StbActivity.class);
|
||||
|
||||
List<String> utenti = new ArrayList<>();
|
||||
if (oldActivity != null && !UtilityString.equalsIgnoreCase(oldActivity.getActivityResultId(), activity.getEsito()) || oldActivity.getUserName().equalsIgnoreCase("T0003")) {
|
||||
|
||||
boolean onT0003 = oldActivity != null && oldActivity.getUserName().equalsIgnoreCase("T0003");
|
||||
boolean esitoChanged = oldActivity != null && !UtilityString.equalsIgnoreCase(oldActivity.getActivityResultId(), activity.getEsito());
|
||||
|
||||
if (esitoChanged || onT0003) {
|
||||
boolean sendNotification = false;
|
||||
|
||||
if (oldActivity.getUserName().equalsIgnoreCase("T0003")) {
|
||||
sendNotification = true;
|
||||
utenti.add("F0003");
|
||||
@@ -1377,6 +1382,7 @@ public class ActivityService {
|
||||
activity.getEsito()
|
||||
);
|
||||
sendNotification = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
|
||||
|
||||
if (sendNotification) {
|
||||
sql = Query.format(
|
||||
"SELECT cod_jflav_tec\n" +
|
||||
@@ -1387,17 +1393,16 @@ public class ActivityService {
|
||||
);
|
||||
String responsabile = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
|
||||
|
||||
if (responsabile != null) {
|
||||
if (responsabile != null)
|
||||
utenti.add(responsabile);
|
||||
} else {
|
||||
else
|
||||
utenti.add(oldActivity.getUserCreator());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sendNotification && utenti.size() > 0) {
|
||||
if (sendNotification) {
|
||||
for (String username : utenti) {
|
||||
if (username != null || (!username.equalsIgnoreCase(requestDataDTO.getUsername()))) {
|
||||
if (username != null && !username.equalsIgnoreCase(requestDataDTO.getUsername())) {
|
||||
sql = Query.format(
|
||||
"SELECT full_name\n" +
|
||||
"FROM stb_user\n" +
|
||||
@@ -1407,9 +1412,9 @@ public class ActivityService {
|
||||
String fullname = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
|
||||
|
||||
String title, message;
|
||||
if ( oldActivity.getUserName().equalsIgnoreCase("T0003")) {
|
||||
if (oldActivity.getUserName().equalsIgnoreCase("T0003")) {
|
||||
title = String.format("%s ha aggiornato un'attività", fullname);
|
||||
message = String.format("L'attività: #%s ti è stata assegnata ", activity.getIdAttivita(), activity.getUserName());
|
||||
message = String.format("L'attività: #%s è stata assegnata a %s", activity.getIdAttivita(), activity.getUserName());
|
||||
} else {
|
||||
title = String.format("%s ha aggiornato un'attività", fullname);
|
||||
message = String.format("L'attività: #%s è stata aggiornata con esito %s.", activity.getIdAttivita(), activity.getEsito());
|
||||
|
||||
Reference in New Issue
Block a user