Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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_20240802150606 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
createSetup("w_vdist_rc", "INVIO_EMAIL", "ABILITA_INVIO_EMAIL", "N",
|
||||
"Abilita la possibilità di inviare l'email anche nel caso di distinte attive",
|
||||
"SI_NO");
|
||||
}
|
||||
|
||||
@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_20240802162927 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
if(isCustomer(IntegryCustomer.Maggio)) {
|
||||
updateSetupValue("w_vdist_rc", "INVIO_EMAIL", "ABILITA_INVIO_EMAIL", "S");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -454,7 +454,9 @@ public class AccountingRules extends QueryRules {
|
||||
ctbScad.getIdRigaMov());
|
||||
List<CrlScadParr> crlScadParrs = UtilityDB.executeSimpleQueryDTO(conn, sql, CrlScadParr.class);
|
||||
|
||||
crlScadParrs.stream().forEach(x->x.setOperation(OperationType.DELETE));
|
||||
if (crlScadParrs != null) {
|
||||
crlScadParrs.stream().forEach(x -> x.setOperation(OperationType.DELETE));
|
||||
}
|
||||
|
||||
if (crlScadParrs != null && crlScadParrs.size() > 0 ){
|
||||
sql =
|
||||
@@ -509,79 +511,84 @@ public class AccountingRules extends QueryRules {
|
||||
)
|
||||
.findFirst();
|
||||
|
||||
CtbParr ctbParr;
|
||||
if (ctbParrFirst.isPresent()) {
|
||||
elencoPartite.remove(ctbParrFirst.get());
|
||||
ctbParr = ctbParrFirst.get();
|
||||
if (UtilityBigDecimal.greaterThan(ctbMovr.getImpDare(), BigDecimal.ZERO)) {
|
||||
ctbParr.setImpDare(ctbParr.getImpDare().add(ctbScad.getImpDare().divide(ctbParr.getCambioDiviScad()).setScale(5, RoundingMode.HALF_UP)));
|
||||
if (UtilityBigDecimal.equalsOrGreaterThan(scad.getImpAvere(), BigDecimal.ZERO) &&
|
||||
UtilityBigDecimal.equalsOrGreaterThan(scad.getImpDare(), BigDecimal.ZERO)) {
|
||||
|
||||
CtbParr ctbParr;
|
||||
if (ctbParrFirst.isPresent()) {
|
||||
elencoPartite.remove(ctbParrFirst.get());
|
||||
ctbParr = ctbParrFirst.get();
|
||||
if (UtilityBigDecimal.greaterThan(ctbMovr.getImpDare(), BigDecimal.ZERO)) {
|
||||
ctbParr.setImpDare(ctbParr.getImpDare().add(ctbScad.getImpDare().divide(ctbParr.getCambioDiviScad()).setScale(5, RoundingMode.HALF_UP)));
|
||||
} else {
|
||||
ctbParr.setImpAvere(ctbParr.getImpAvere().add(ctbScad.getImpAvere().divide(ctbParr.getCambioDiviScad()).setScale(5, RoundingMode.HALF_UP)));
|
||||
}
|
||||
} else {
|
||||
ctbParr.setImpAvere(ctbParr.getImpAvere().add(ctbScad.getImpAvere().divide(ctbParr.getCambioDiviScad()).setScale(5, RoundingMode.HALF_UP)));
|
||||
}
|
||||
} else {
|
||||
|
||||
BigDecimal cambioScad = BigDecimal.ONE;
|
||||
Integer tipoPartita = ctbMovr.getTipoPartita();
|
||||
BigDecimal cambioScad = BigDecimal.ONE;
|
||||
Integer tipoPartita = ctbMovr.getTipoPartita();
|
||||
|
||||
String sql =
|
||||
"SELECT Cast(tipo_partita as integer) as tipo_partita, cambio " +
|
||||
" FROM ctb_part " +
|
||||
" WHERE cod_anag = " + UtilityDB.valueToString(ctbScad.getCodAnag()) + " AND " +
|
||||
"tipo_anag = " + UtilityDB.valueToString(ctbScad.getTipoAnag()) + " AND " +
|
||||
"anno_part = " + UtilityDB.valueToString(ctbScad.getAnnoPart()) + " AND " +
|
||||
"ser_doc = " + UtilityDB.valueToString(ctbScad.getSerDoc()) + " AND " +
|
||||
"num_doc = " + UtilityDB.valueToString(ctbScad.getNumDoc());
|
||||
String sql =
|
||||
"SELECT Cast(tipo_partita as integer) as tipo_partita, cambio " +
|
||||
" FROM ctb_part " +
|
||||
" WHERE cod_anag = " + UtilityDB.valueToString(ctbScad.getCodAnag()) + " AND " +
|
||||
"tipo_anag = " + UtilityDB.valueToString(ctbScad.getTipoAnag()) + " AND " +
|
||||
"anno_part = " + UtilityDB.valueToString(ctbScad.getAnnoPart()) + " AND " +
|
||||
"ser_doc = " + UtilityDB.valueToString(ctbScad.getSerDoc()) + " AND " +
|
||||
"num_doc = " + UtilityDB.valueToString(ctbScad.getNumDoc());
|
||||
|
||||
HashMap<String, Object> datiCtbPart = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql);
|
||||
if ( UtilityHashMap.isPresent(datiCtbPart)) {
|
||||
if ( tipoPartita == null ) tipoPartita = UtilityHashMap.getValueIfExists(datiCtbPart, "tipo_partita");
|
||||
cambioScad = UtilityHashMap.getValueIfExists(datiCtbPart, "cambio", BigDecimal.ONE);
|
||||
HashMap<String, Object> datiCtbPart = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql);
|
||||
if (UtilityHashMap.isPresent(datiCtbPart)) {
|
||||
if (tipoPartita == null)
|
||||
tipoPartita = UtilityHashMap.getValueIfExists(datiCtbPart, "tipo_partita");
|
||||
cambioScad = UtilityHashMap.getValueIfExists(datiCtbPart, "cambio", BigDecimal.ONE);
|
||||
}
|
||||
|
||||
ctbScad.setTipoAnag(UtilityString.isNullOrEmpty(ctbScad.getTipoAnag()) ? ctbMovr.getTipoAnag() : ctbScad.getTipoAnag())
|
||||
.setCodAnag(UtilityString.isNullOrEmpty(ctbScad.getCodAnag()) ? ctbMovr.getCodAnag() : ctbScad.getCodAnag())
|
||||
.setAnnoPart(ctbScad.getAnnoPart() == null ? ctbMovr.getAnnoPart() : ctbScad.getAnnoPart())
|
||||
.setSerDoc(UtilityString.isNullOrEmpty(ctbScad.getSerDoc()) ? ctbMovr.getSerDoc() : ctbScad.getSerDoc())
|
||||
.setNumDoc(UtilityString.isNullOrEmpty(ctbScad.getNumDoc()) ? ctbMovr.getNumDoc() : ctbScad.getNumDoc());
|
||||
|
||||
BigDecimal impDare = BigDecimal.ZERO;
|
||||
BigDecimal impAvere = BigDecimal.ZERO;
|
||||
|
||||
if (UtilityBigDecimal.greaterThan(ctbMovr.getImpDare(), BigDecimal.ZERO)) {
|
||||
if (ctbScad.getImpDare() == null)
|
||||
impDare = ctbMovr.getImpDare();
|
||||
else
|
||||
impDare = ctbScad.getImpDare().divide(cambioScad).setScale(5, RoundingMode.HALF_UP);
|
||||
}
|
||||
if (UtilityBigDecimal.greaterThan(ctbMovr.getImpAvere(), BigDecimal.ZERO)) {
|
||||
if (ctbScad.getImpAvere() == null)
|
||||
impAvere = ctbMovr.getImpAvere();
|
||||
else
|
||||
impAvere = ctbScad.getImpAvere().divide(cambioScad).setScale(5, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
ctbParr =
|
||||
new CtbParr()
|
||||
.setCodCcon(ctbMovr.getCodCcon())
|
||||
.setTipoAnag(ctbScad.getTipoAnag())
|
||||
.setCodAnag(ctbScad.getCodAnag())
|
||||
.setAnnoPart(ctbScad.getAnnoPart())
|
||||
.setSerDoc(ctbScad.getSerDoc())
|
||||
.setNumDoc(ctbScad.getNumDoc())
|
||||
.setDataCmov(ctbMovr.getDataCmov())
|
||||
.setIdRiga(ctbMovr.getIdRiga())
|
||||
.setImpDare(impDare)
|
||||
.setImpAvere(impAvere)
|
||||
.setCodCcau(ctbMovr.getCodCcau())
|
||||
.setDesAgg(finalDesAgg)
|
||||
.setTipoPartita(tipoPartita)
|
||||
.setChiudiScad(ctbMovr.getChiudiScad())
|
||||
.setCambioDiviScad(cambioScad);
|
||||
ctbParr.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
}
|
||||
|
||||
ctbScad.setTipoAnag(UtilityString.isNullOrEmpty(ctbScad.getTipoAnag()) ? ctbMovr.getTipoAnag() : ctbScad.getTipoAnag())
|
||||
.setCodAnag(UtilityString.isNullOrEmpty(ctbScad.getCodAnag()) ? ctbMovr.getCodAnag() : ctbScad.getCodAnag())
|
||||
.setAnnoPart(ctbScad.getAnnoPart() == null ? ctbMovr.getAnnoPart() : ctbScad.getAnnoPart())
|
||||
.setSerDoc(UtilityString.isNullOrEmpty(ctbScad.getSerDoc()) ? ctbMovr.getSerDoc() : ctbScad.getSerDoc())
|
||||
.setNumDoc(UtilityString.isNullOrEmpty(ctbScad.getNumDoc()) ? ctbMovr.getNumDoc() : ctbScad.getNumDoc());
|
||||
|
||||
BigDecimal impDare = BigDecimal.ZERO;
|
||||
BigDecimal impAvere = BigDecimal.ZERO;
|
||||
|
||||
if (UtilityBigDecimal.greaterThan(ctbMovr.getImpDare(), BigDecimal.ZERO)) {
|
||||
if (ctbScad.getImpDare() == null )
|
||||
impDare = ctbMovr.getImpDare();
|
||||
else
|
||||
impDare = ctbScad.getImpDare().divide(cambioScad).setScale(5, RoundingMode.HALF_UP);
|
||||
}
|
||||
if (UtilityBigDecimal.greaterThan(ctbMovr.getImpAvere(), BigDecimal.ZERO)) {
|
||||
if (ctbScad.getImpAvere() == null )
|
||||
impAvere = ctbMovr.getImpAvere();
|
||||
else
|
||||
impAvere = ctbScad.getImpAvere().divide(cambioScad).setScale(5, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
ctbParr =
|
||||
new CtbParr()
|
||||
.setCodCcon(ctbMovr.getCodCcon())
|
||||
.setTipoAnag(ctbScad.getTipoAnag())
|
||||
.setCodAnag(ctbScad.getCodAnag())
|
||||
.setAnnoPart(ctbScad.getAnnoPart())
|
||||
.setSerDoc(ctbScad.getSerDoc())
|
||||
.setNumDoc(ctbScad.getNumDoc())
|
||||
.setDataCmov(ctbMovr.getDataCmov())
|
||||
.setIdRiga(ctbMovr.getIdRiga())
|
||||
.setImpDare(impDare)
|
||||
.setImpAvere(impAvere)
|
||||
.setCodCcau(ctbMovr.getCodCcau())
|
||||
.setDesAgg(finalDesAgg)
|
||||
.setTipoPartita(tipoPartita)
|
||||
.setChiudiScad(ctbMovr.getChiudiScad())
|
||||
.setCambioDiviScad(cambioScad);
|
||||
ctbParr.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
elencoPartite.add(ctbParr);
|
||||
}
|
||||
|
||||
elencoPartite.add(ctbParr);
|
||||
|
||||
CrlScadParr crlScadParr =
|
||||
new CrlScadParr()
|
||||
.setTipoAnag(ctbScad.getTipoAnag())
|
||||
|
||||
@@ -270,6 +270,11 @@ public class MailService {
|
||||
return MailService.readParameter(multiDBTransactionManager, fromEmail);
|
||||
}
|
||||
|
||||
public Message sendMail(String from, String fromName, String to, String cc, String subject, String msg) throws Exception {
|
||||
return sendMailPrimary(from, fromName, to, cc, null, subject, msg, false, false, null, null, null);
|
||||
}
|
||||
|
||||
|
||||
public Message sendMail(String to, String cc, String subject, String msg) throws Exception {
|
||||
return sendMailPrimary(null, null, to, cc, null, subject, msg, false, false, null, null, null);
|
||||
}
|
||||
@@ -662,7 +667,7 @@ public class MailService {
|
||||
testoEmailCustom = changeVariableParts(testoEmailCustom, dati.get(0), nomeUtente);
|
||||
|
||||
try {
|
||||
sendMail(customData.getEmailMittente(), dati.get(0).getEmailDestinatario(), oggettoEmailCustom, testoEmailCustom);
|
||||
sendMail(customData.getEmailMittente(), nomeUtente, dati.get(0).getEmailDestinatario(), "", oggettoEmailCustom, testoEmailCustom);
|
||||
} catch (Exception e) {
|
||||
erroreMessage.append(dati.get(0).getRagSoc() + " " + e.getMessage() + CommonConstants.A_CAPO);
|
||||
}
|
||||
@@ -693,13 +698,15 @@ public class MailService {
|
||||
private String changeRepeatedText(String text, List<CustomEmailDTO.CustomEmailRowDTO> dati, String
|
||||
nomeUtente) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
String patternText = text.substring(text.indexOf("{") + 1, text.indexOf("}"));
|
||||
for (CustomEmailDTO.CustomEmailRowDTO var : dati) {
|
||||
stringBuilder.append(changeVariableParts(patternText, var, nomeUtente) + CommonConstants.A_CAPO);
|
||||
if (text.indexOf("{") > 0){
|
||||
String patternText = text.substring(text.indexOf("{") + 1, text.indexOf("}"));
|
||||
for (CustomEmailDTO.CustomEmailRowDTO var : dati) {
|
||||
stringBuilder.append(changeVariableParts(patternText, var, nomeUtente) + CommonConstants.A_CAPO);
|
||||
}
|
||||
text = text.replaceAll(patternText, stringBuilder.toString());
|
||||
text = text.replaceAll("\\{", "");
|
||||
text = text.replaceAll("}", "");
|
||||
}
|
||||
text = text.replaceAll(patternText, stringBuilder.toString());
|
||||
text = text.replaceAll("\\{", "");
|
||||
text = text.replaceAll("}", "");
|
||||
return text;
|
||||
}
|
||||
|
||||
|
||||
@@ -1428,6 +1428,8 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
||||
fieldsWithoutIdentityAndNotNull.stream().map(Triple::getFirst).collect(Collectors.toList()), ","))
|
||||
.append(") VALUES (");
|
||||
|
||||
StringBuilder insertSqlTrace = new StringBuilder(insertSQL.toString());
|
||||
|
||||
for (int i = 0; i < fieldsWithoutIdentityAndNotNull.size(); i++) {
|
||||
insertSQL.append(" ?");
|
||||
|
||||
@@ -1437,7 +1439,6 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
||||
|
||||
insertSQL.append(")");
|
||||
|
||||
String traceSql = insertSQL.toString();
|
||||
|
||||
try (SQLServerPreparedStatement insertBulkPs =
|
||||
(SQLServerPreparedStatement) sqlServerConnection.prepareStatement(
|
||||
@@ -1448,10 +1449,14 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
||||
final Object value = fieldsWithoutIdentityAndNotNull.get(i - 1).getSecond();
|
||||
insertBulkPs.setObject(i, value);
|
||||
|
||||
traceSql = traceSql.replace("?", UtilityDB.valueToString(value));
|
||||
}
|
||||
insertSqlTrace.append(UtilityDB.valueToString(value));
|
||||
if (i <= fieldsWithoutIdentityAndNotNull.size() - 1)
|
||||
insertSqlTrace.append(",");
|
||||
|
||||
logger.trace("Query tracing: {}", traceSql);
|
||||
}
|
||||
insertSqlTrace.append(")");
|
||||
|
||||
logger.trace("Query tracing: {}", insertSqlTrace);
|
||||
|
||||
long insertedRowCount = insertBulkPs.executeLargeUpdate();
|
||||
if (insertedRowCount > 0 && containsIdentity) {
|
||||
|
||||
@@ -483,7 +483,7 @@ public class UtilityDB {
|
||||
public static <T> List<T> executeSimpleQueryOnlyFirstColumn(Connection conn, String querySql) throws SQLException {
|
||||
List<T> object = new ArrayList<>();
|
||||
List<HashMap<String, Object>> queryResults = executeSimpleQuery(conn, querySql);
|
||||
if (queryResults != null && queryResults.size() > 0) {
|
||||
if (queryResults != null && !queryResults.isEmpty()) {
|
||||
object = new ArrayList<T>();
|
||||
for (HashMap<String, Object> result : queryResults) {
|
||||
T value = (T) result.get(result.keySet().toArray()[0]);
|
||||
|
||||
@@ -399,7 +399,10 @@ when
|
||||
$entity: CtbScad(riaperta != null && riaperta && numCmov !=null)
|
||||
then
|
||||
List<CrlScadParr> crlScadParrs = AccountingRules.completeCrlParrScadScad(conn, $entity);
|
||||
modify ( $entity ) { setCrlScadParr(crlScadParrs) }
|
||||
Date dataNull = new Date(-2208992400000L);
|
||||
modify ( $entity ) {
|
||||
setCrlScadParr(crlScadParrs),
|
||||
setDataPag(dataNull) }
|
||||
end
|
||||
|
||||
|
||||
@@ -433,6 +436,16 @@ then
|
||||
modify ( $entity ) { setDescrizPag(descrizione) }
|
||||
end
|
||||
|
||||
rule "completeDataPagScad"
|
||||
no-loop
|
||||
when
|
||||
eval(completeRulesEnabled)
|
||||
$entity: CtbScad( (impAvere != null && impAvere == 0 ) || (impDare != null && impDare == 0 ))
|
||||
then
|
||||
Date dataNull = new Date(-2208992400000L);
|
||||
modify ( $entity ) { setDataPag(dataNull ) }//impostiamo la data a null
|
||||
end
|
||||
|
||||
rule "completeInseritoDaCtbMovt"
|
||||
no-loop
|
||||
when
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.ems.production.agribook;
|
||||
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.production.agribook.model.AgribookNewFieldRequestDTO;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
@@ -22,6 +23,8 @@ public class AgribookFieldController {
|
||||
|
||||
@Autowired
|
||||
private AgribookFieldService agribookFieldService;
|
||||
@Autowired
|
||||
private RequestDataDTO requestDataDTO;
|
||||
|
||||
|
||||
@RequestMapping(value = "", method = RequestMethod.GET)
|
||||
@@ -43,7 +46,7 @@ public class AgribookFieldController {
|
||||
|
||||
) throws Exception {
|
||||
try (MultiDBTransactionManager internalDb = new MultiDBTransactionManager(profileDb);) {
|
||||
return ServiceRestResponse.createPositiveResponse(agribookFieldService.createField(internalDb, dto));
|
||||
return ServiceRestResponse.createPositiveResponse(agribookFieldService.createField(internalDb, dto, requestDataDTO.getUsername(), requestDataDTO));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +1,20 @@
|
||||
package it.integry.ems.production.agribook;
|
||||
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.production.agribook.model.AgribookFieldDTO;
|
||||
import it.integry.ems.production.agribook.model.AgribookNewFieldRequestDTO;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.entity.*;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityBigDecimal;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityLocalDate;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.xlsx4j.sml.Col;
|
||||
|
||||
import javax.rmi.CORBA.Util;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Connection;
|
||||
import java.time.DayOfWeek;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -29,7 +25,7 @@ public class AgribookFieldService {
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
|
||||
public List<AgribookFieldDTO> retrieveFields(MultiDBTransactionManager multiDBTransactionManager,String codMdep) throws Exception {
|
||||
public List<AgribookFieldDTO> retrieveFields(MultiDBTransactionManager multiDBTransactionManager, String codMdep) throws Exception {
|
||||
|
||||
String sql = "SELECT * FROM " + MtbDepoPosizioni.ENTITY;
|
||||
|
||||
@@ -40,10 +36,10 @@ public class AgribookFieldService {
|
||||
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AgribookFieldDTO.class);
|
||||
}
|
||||
|
||||
public List<EntityBase> createField(MultiDBTransactionManager connection, AgribookNewFieldRequestDTO dto) throws Exception {
|
||||
public List<EntityBase> createField(MultiDBTransactionManager connection, AgribookNewFieldRequestDTO dto, String username, RequestDataDTO requestDataDTO) throws Exception {
|
||||
|
||||
List<EntityBase> entityList = new ArrayList<>();
|
||||
String codVdes = UtilityString.isNull(dto.getCodVdes(), this.suggestCodVdes(connection,dto.getCodAnag()));
|
||||
String codVdes = UtilityString.isNull(dto.getCodVdes(), dto.isNewDes()?this.suggestCodVdes(connection, dto.getCodAnag()):null);
|
||||
if (dto.isNewDes()) {
|
||||
if (UtilityString.isNullOrEmpty(codVdes)) {
|
||||
throw new Exception("Impossibile calcolare il codice destinatario!");
|
||||
@@ -68,8 +64,10 @@ public class AgribookFieldService {
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
GtbAnag gtbanag = new GtbAnag();
|
||||
List<VtbDest> destList = new ArrayList<>();
|
||||
destList.add(vtbDest);
|
||||
gtbanag.setCodAnag(dto.getCodAnag())
|
||||
.setVtbDest(Collections.singletonList(vtbDest))
|
||||
.setVtbDest(destList)
|
||||
.setOperation(OperationType.UPDATE);
|
||||
|
||||
entityList.add(gtbanag);
|
||||
@@ -78,7 +76,7 @@ public class AgribookFieldService {
|
||||
String codMdepDest = this.getCodMdepDest(connection, dto.getCodAnag(), codVdes);
|
||||
|
||||
if (UtilityString.isNullOrEmpty(codMdepDest)) {
|
||||
codMdepDest = this.suggestCodMdep(connection,dto.getCodAnag(), codVdes);
|
||||
codMdepDest = this.suggestCodMdep(connection, dto.getCodAnag(), codVdes);
|
||||
if (UtilityString.isNullOrEmpty(codMdepDest)) {
|
||||
throw new Exception("Codice nuovo deposito calcolato non valido");
|
||||
}
|
||||
@@ -105,22 +103,24 @@ public class AgribookFieldService {
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(dto.getVarieta())) {
|
||||
MtbPartitaMagCarat carat = this.getVarieta(connection,dto.getCodMart(),dto.getPartitaMag());
|
||||
MtbPartitaMagCarat carat = this.getVarieta(connection, dto.getCodMart(), dto.getPartitaMag());
|
||||
if (carat == null) {
|
||||
carat = new MtbPartitaMagCarat();
|
||||
carat.setCarat("VARIETA");
|
||||
carat.setCarat("VARIETA");
|
||||
}
|
||||
carat
|
||||
.setValCarat(dto.getVarieta())
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
partitaMag.setMtbPartitaMagCarat(Collections.singletonList(carat));
|
||||
List<MtbPartitaMagCarat> caratList = new ArrayList<>();
|
||||
|
||||
caratList.add(carat);
|
||||
partitaMag.setMtbPartitaMagCarat(caratList);
|
||||
|
||||
}
|
||||
|
||||
entityList.add(partitaMag);
|
||||
|
||||
|
||||
|
||||
DtbOrdr ordr = new DtbOrdr();
|
||||
ordr.setCodMart(dto.getCodMart())
|
||||
.setUntOrd(dto.getUntMis())
|
||||
@@ -130,6 +130,8 @@ public class AgribookFieldService {
|
||||
.setCodMdep(codMdepDest)
|
||||
.setDataCons(UtilityLocalDate.localDateToDate(dto.getDataInizProd().with(DayOfWeek.MONDAY)))
|
||||
.setOperation(OperationType.INSERT);
|
||||
List<DtbOrdr> ordrList = new ArrayList<>();
|
||||
ordrList.add(ordr);
|
||||
DtbOrdt ordt = new DtbOrdt();
|
||||
ordt
|
||||
.setGestione("A")
|
||||
@@ -139,34 +141,36 @@ public class AgribookFieldService {
|
||||
.setCodMdep(codMdepDest)
|
||||
.setCodVdes(codVdes)
|
||||
.setDataInizProd(UtilityLocalDate.localDateToDate(dto.getDataInizProd()))
|
||||
.setDtbOrdr(Collections.singletonList(ordr))
|
||||
.setDtbOrdr(ordrList)
|
||||
.setOperation(OperationType.INSERT);
|
||||
|
||||
entityList.add(ordt);
|
||||
return entityProcessor.processEntityList(entityList, connection, true);
|
||||
List<EntityBase> results = entityProcessor.processEntityList(entityList,username,true,true,false, connection, true,false,requestDataDTO);
|
||||
UtilityEntity.throwEntitiesException(results);
|
||||
return results;
|
||||
|
||||
}
|
||||
|
||||
private MtbPartitaMagCarat getVarieta(MultiDBTransactionManager connection,String codMart, String partitaMag) throws Exception {
|
||||
String sql = "SELECT * FROM " + MtbPartitaMagCarat.ENTITY+" Where cod_mart = "+UtilityDB.valueToString(codMart)+" and partita_mag = "+UtilityDB.valueToString(partitaMag)+" AND carat = 'VARIETA'";
|
||||
private MtbPartitaMagCarat getVarieta(MultiDBTransactionManager connection, String codMart, String partitaMag) throws Exception {
|
||||
String sql = "SELECT * FROM " + MtbPartitaMagCarat.ENTITY + " Where cod_mart = " + UtilityDB.valueToString(codMart) + " and partita_mag = " + UtilityDB.valueToString(partitaMag) + " AND carat = 'VARIETA'";
|
||||
|
||||
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection.getPrimaryConnection(),sql,MtbPartitaMagCarat.class);
|
||||
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection.getPrimaryConnection(), sql, MtbPartitaMagCarat.class);
|
||||
}
|
||||
|
||||
private String suggestCodMdep(MultiDBTransactionManager multiDBTransactionManager,String codAnag, String codVdes) throws Exception {
|
||||
String sql = "SELECT dbo.f_suggestCodeCodMdep("+UtilityDB.valueToString(codAnag)+","+UtilityDB.valueToString(codVdes)+") AS cod_mdep";
|
||||
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(),sql);
|
||||
private String suggestCodMdep(MultiDBTransactionManager multiDBTransactionManager, String codAnag, String codVdes) throws Exception {
|
||||
String sql = "SELECT dbo.f_suggestCodeCodMdep(" + UtilityDB.valueToString(codAnag) + "," + UtilityDB.valueToString(codVdes) + ") AS cod_mdep";
|
||||
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
}
|
||||
|
||||
private String getCodMdepDest(MultiDBTransactionManager multiDBTransactionManager, String codAnag, String codVdes) throws Exception {
|
||||
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(),
|
||||
"SELECT cod_mdep from mtb_depo where " +
|
||||
" cod_anag = " + UtilityDB.valueToString(codAnag) + " " +
|
||||
" and cod_vdes = " + UtilityDB.valueToString(codVdes));
|
||||
" and ISNULL(cod_vdes,'') = ISNULL(" + UtilityDB.valueToString(codVdes)+",'')");
|
||||
}
|
||||
|
||||
private String suggestCodVdes(MultiDBTransactionManager multiDBTransactionManager,String codAnag) throws Exception {
|
||||
String sql = "SELECT dbo.f_suggestCodeCodVdes("+UtilityDB.valueToString(codAnag)+", 0) AS cod_vdes";
|
||||
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(),sql);
|
||||
private String suggestCodVdes(MultiDBTransactionManager multiDBTransactionManager, String codAnag) throws Exception {
|
||||
String sql = "SELECT dbo.f_suggestCodeCodVdes(" + UtilityDB.valueToString(codAnag) + ", 0) AS cod_vdes";
|
||||
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -641,7 +641,7 @@ public class GiacenzaService {
|
||||
" MAX(cod_mdep)\n" +
|
||||
" FROM mtb_aart\n" +
|
||||
" INNER JOIN mtb_comp ON mtb_aart.cod_mart = mtb_comp.cod_mart\n" +
|
||||
" LEFT OUTER JOIN tmpGiac inv ON mtb_comp.cod_comp = inv.cod_mart\n" +
|
||||
" LEFT OUTER JOIN inv ON mtb_comp.cod_comp = inv.cod_mart\n" +
|
||||
" WHERE mtb_aart.articolo_composto = 'S'\n" +
|
||||
" AND mtb_aart.flag_stato = 'A'\n" +
|
||||
" GROUP BY mtb_comp.cod_mart)\n" +
|
||||
|
||||
@@ -11,6 +11,7 @@ public class MagazzinoBufferVersamentoMaterialeRequestDTO {
|
||||
private String serCollo;
|
||||
private Integer numCollo;
|
||||
private LocalDate dataCollo;
|
||||
private String codJfas;
|
||||
|
||||
|
||||
public MtbColt getInputMtbColt() {
|
||||
@@ -49,4 +50,13 @@ public class MagazzinoBufferVersamentoMaterialeRequestDTO {
|
||||
this.dataCollo = dataCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJfas() {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public MagazzinoBufferVersamentoMaterialeRequestDTO setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,6 +99,7 @@ public class WMSMagazzinoBufferService {
|
||||
.setNumCollo(magazzinoBufferVersamentoMaterialeRequestDTO.getNumCollo())
|
||||
.setCodMdep(mtbColtRef.getCodMdep())
|
||||
.setPosizione(posizione)
|
||||
.setCodJfas(magazzinoBufferVersamentoMaterialeRequestDTO.getCodJfas())
|
||||
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO));
|
||||
|
||||
wmsLavorazioneService.insertUDSRow(new InsertUDSRowRequestDTO()
|
||||
|
||||
@@ -102,6 +102,8 @@ public class SystemController {
|
||||
|
||||
@Autowired
|
||||
private SecretKeyCacheComponent secretKeyCacheComponent;
|
||||
|
||||
@Autowired
|
||||
private RequestDataDTO requestDataDTO;
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ import it.integry.ems_model.base.EquatableEntityInterface;
|
||||
import it.integry.ems_model.exception.EntityException;
|
||||
import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityBigDecimal;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
@@ -300,7 +302,7 @@ public class ExchangeCampiRaccoltaDTO implements EquatableEntityInterface<Exchan
|
||||
public boolean equalsKey(ExchangeCampiRaccoltaDTO other) {
|
||||
|
||||
return codAnag.equalsIgnoreCase(other.getCodAnag()) &&
|
||||
codVdes.equalsIgnoreCase(other.getCodVdes()) &&
|
||||
(UtilityString.isNull(codVdes,"").equalsIgnoreCase(UtilityString.isNull(other.getCodVdes(),""))) &&
|
||||
codMartMp.equalsIgnoreCase(other.getCodMartMp()) &&
|
||||
lottoFornitore.equalsIgnoreCase(other.getLottoFornitore());
|
||||
}
|
||||
@@ -309,29 +311,29 @@ public class ExchangeCampiRaccoltaDTO implements EquatableEntityInterface<Exchan
|
||||
public boolean equalsContent(ExchangeCampiRaccoltaDTO other) {
|
||||
return
|
||||
codAnag.equalsIgnoreCase(other.getCodAnag()) &&
|
||||
ragSoc.equalsIgnoreCase(other.getRagSoc()) &&
|
||||
codVdes.equalsIgnoreCase(other.getCodVdes()) &&
|
||||
produttore.equalsIgnoreCase(other.getProduttore()) &&
|
||||
cooperativa.equalsIgnoreCase(other.getCooperativa()) &&
|
||||
indirizzoCoop.equalsIgnoreCase(other.getIndirizzoCoop()) &&
|
||||
cittaCoop.equalsIgnoreCase(other.getCittaCoop()) &&
|
||||
capCoop.equalsIgnoreCase(other.getCapCoop()) &&
|
||||
provCoop.equalsIgnoreCase(other.getProvCoop()) &&
|
||||
partIvaCoop.equalsIgnoreCase(other.getPartIvaCoop()) &&
|
||||
op.equalsIgnoreCase(other.getOp()) &&
|
||||
codAnagProd.equalsIgnoreCase(other.getCodAnagProd()) &&
|
||||
ragSocProd.equalsIgnoreCase(other.getRagSocProd()) &&
|
||||
indirizzoProd.equalsIgnoreCase(other.getIndirizzoProd()) &&
|
||||
cittaProd.equalsIgnoreCase(other.getCittaProd()) &&
|
||||
capProd.equalsIgnoreCase(other.getCapProd()) &&
|
||||
provProd.equalsIgnoreCase(other.getProvProd()) &&
|
||||
partIvaProd.equalsIgnoreCase(other.getPartIvaProd()) &&
|
||||
codMartMp.equalsIgnoreCase(other.getCodMartMp()) &&
|
||||
codMartMg.equalsIgnoreCase(other.getCodMartMg()) &&
|
||||
varieta.equalsIgnoreCase(other.getVarieta()) &&
|
||||
lottoFornitore.equalsIgnoreCase(other.getLottoFornitore()) &&
|
||||
valUnt.equals(other.getValUnt()) &&
|
||||
qtaAttesa.equals(other.getQtaAttesa())
|
||||
(UtilityString.isNull(ragSoc,"").equalsIgnoreCase(UtilityString.isNull(other.getRagSoc(),""))) &&
|
||||
(UtilityString.isNull(codVdes,"").equalsIgnoreCase(UtilityString.isNull(other.getCodVdes(),""))) &&
|
||||
UtilityString.isNull(produttore,"").equalsIgnoreCase(UtilityString.isNull(other.getProduttore(),"")) &&
|
||||
UtilityString.isNull(cooperativa,"").equalsIgnoreCase(UtilityString.isNull(other.getCooperativa(),"")) &&
|
||||
UtilityString.isNull(indirizzoCoop,"").equalsIgnoreCase(UtilityString.isNull(other.getIndirizzoCoop(),"")) &&
|
||||
UtilityString.isNull(cittaCoop,"").equalsIgnoreCase(UtilityString.isNull(other.getCittaCoop(),"")) &&
|
||||
UtilityString.isNull(capCoop,"").equalsIgnoreCase(UtilityString.isNull(other.getCapCoop(),"")) &&
|
||||
UtilityString.isNull(provCoop,"").equalsIgnoreCase(UtilityString.isNull(other.getProvCoop(),"")) &&
|
||||
UtilityString.isNull(partIvaCoop,"").equalsIgnoreCase(UtilityString.isNull(other.getPartIvaCoop(),"")) &&
|
||||
UtilityString.isNull(op,"").equalsIgnoreCase(UtilityString.isNull(other.getOp(),"")) &&
|
||||
UtilityString.isNull(codAnagProd,"").equalsIgnoreCase(UtilityString.isNull(other.getCodAnagProd(),"")) &&
|
||||
UtilityString.isNull(ragSocProd,"").equalsIgnoreCase(UtilityString.isNull(other.getRagSocProd(),"")) &&
|
||||
UtilityString.isNull(indirizzoProd,"").equalsIgnoreCase(UtilityString.isNull(other.getIndirizzoProd(),"")) &&
|
||||
UtilityString.isNull(cittaProd,"").equalsIgnoreCase(UtilityString.isNull(other.getCittaProd(),"")) &&
|
||||
UtilityString.isNull(capProd,"").equalsIgnoreCase(UtilityString.isNull(other.getCapProd(),"")) &&
|
||||
UtilityString.isNull(provProd,"").equalsIgnoreCase(UtilityString.isNull(other.getProvProd(),"")) &&
|
||||
UtilityString.isNull(partIvaProd,"").equalsIgnoreCase(UtilityString.isNull(other.getPartIvaProd(),"")) &&
|
||||
UtilityString.isNull(codMartMp,"").equalsIgnoreCase(UtilityString.isNull(other.getCodMartMp(),"")) &&
|
||||
UtilityString.isNull(codMartMg,"").equalsIgnoreCase(UtilityString.isNull(other.getCodMartMg(),"")) &&
|
||||
UtilityString.isNull(varieta,"").equalsIgnoreCase(UtilityString.isNull(other.getVarieta(),"")) &&
|
||||
UtilityString.isNull(lottoFornitore,"").equalsIgnoreCase(UtilityString.isNull(other.getLottoFornitore(),"")) &&
|
||||
UtilityBigDecimal.isNull(valUnt,BigDecimal.ZERO).equals(UtilityBigDecimal.isNull(other.getValUnt(),BigDecimal.ZERO)) &&
|
||||
UtilityBigDecimal.isNull(qtaAttesa,BigDecimal.ZERO).equals(UtilityBigDecimal.isNull(other.getQtaAttesa(),BigDecimal.ZERO))
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import java.util.stream.Collectors;
|
||||
public class ExchangeArticoliImportService {
|
||||
|
||||
//TODO: To be remove, only for fast development
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "EXCHANGE";
|
||||
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
|
||||
@@ -32,7 +32,7 @@ import java.util.stream.Collectors;
|
||||
public class ExchangeColliImportService {
|
||||
|
||||
//TODO: To be remove, only for fast development
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "EXCHANGE";
|
||||
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
@@ -46,9 +46,6 @@ public class ExchangeColliImportService {
|
||||
@Autowired
|
||||
private ExchangeImportDataManagerService exchangeImportDataManagerService;
|
||||
|
||||
@Autowired
|
||||
private ExchangePartiteMagazzinoImportService exchangePartiteMagazzinoImportService;
|
||||
|
||||
@Autowired
|
||||
private SetupGest setupGest;
|
||||
|
||||
@@ -76,7 +73,6 @@ public class ExchangeColliImportService {
|
||||
|
||||
try {
|
||||
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), colliSchemaType, useTempTable);
|
||||
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione(internalMultiDb, exchangeMultiDb, requestDataDTO);
|
||||
|
||||
String testataTableName = null;
|
||||
String righeTableName = null;
|
||||
@@ -169,10 +165,10 @@ public class ExchangeColliImportService {
|
||||
|
||||
|
||||
final List<MtbColt> mtbColtLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbColt.class,
|
||||
mtbColtLavTableName, Query.format("data_collo BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
|
||||
mtbColtLavTableName, null, retrieveAlreadyImported);
|
||||
|
||||
final List<MtbColr> mtbColrLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbColr.class,
|
||||
mtbColrLavTableName, Query.format("data_collo BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
|
||||
mtbColrLavTableName, null, retrieveAlreadyImported);
|
||||
|
||||
|
||||
mtbColtLav
|
||||
|
||||
@@ -8,7 +8,6 @@ import it.integry.ems_model.base.EquatableEntityInterface;
|
||||
import it.integry.ems_model.entity.DtbDocr;
|
||||
import it.integry.ems_model.entity.DtbDoct;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.Query;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityLocalDate;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@@ -30,7 +29,7 @@ import java.util.stream.Collectors;
|
||||
public class ExchangeDocumentImportService {
|
||||
|
||||
//TODO: To be remove, only for fast development
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "EXCHANGE";
|
||||
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
@@ -41,9 +40,6 @@ public class ExchangeDocumentImportService {
|
||||
@Autowired
|
||||
private ExchangeImportDataManagerService exchangeImportDataManagerService;
|
||||
|
||||
@Autowired
|
||||
private ExchangePartiteMagazzinoImportService exchangePartiteMagazzinoImportService;
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
public void importTestateDocumentiLavorazione(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception {
|
||||
@@ -53,8 +49,6 @@ public class ExchangeDocumentImportService {
|
||||
|
||||
try {
|
||||
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.DocumentiLavorazione, useTempTable);
|
||||
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione(internalMultiDb, exchangeMultiDb, requestDataDTO);
|
||||
|
||||
|
||||
final List<DtbDoct> exchangeImportedTestateData = importTestateDocumentiLavorazione(
|
||||
exchangeMultiDb.getPrimaryConnection(),
|
||||
@@ -68,8 +62,6 @@ public class ExchangeDocumentImportService {
|
||||
UtilityLocalDate.getNow(),
|
||||
false, useTempTable);
|
||||
|
||||
exchangeUpdatedTestateData.forEach(x -> x.setUpdProgMaga(false));
|
||||
|
||||
|
||||
final List<DtbDocr> exchangeImportedRigheData = importRigheDocumentiLavorazione(
|
||||
exchangeMultiDb.getPrimaryConnection(),
|
||||
@@ -89,6 +81,7 @@ public class ExchangeDocumentImportService {
|
||||
List<EquatableEntityInterface> allRigheData = exchangeImportDataManagerService
|
||||
.runSync(DtbDocr.class, exchangeImportedRigheData, exchangeUpdatedRigheData);
|
||||
|
||||
allTestateData.forEach(x -> ((DtbDoct) x).setUpdProgMaga(false));
|
||||
|
||||
allTestateData.stream()
|
||||
.map(x -> (DtbDoct) x)
|
||||
@@ -133,20 +126,28 @@ public class ExchangeDocumentImportService {
|
||||
|
||||
for (EquatableEntityInterface dataToSave : allData) {
|
||||
|
||||
DtbDoct document = (DtbDoct) dataToSave;
|
||||
// calls.add(() -> {
|
||||
logger.debug("Importati {} documenti di {}", importedCounter.incrementAndGet(), allData.size());
|
||||
try {
|
||||
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
|
||||
|
||||
//Inserisco prima la testata perché se inserisco testata+righe e la testata ha INSERT,
|
||||
// le righe vengono salvate con ID riga calcolato e non con ID riga passato
|
||||
DtbDoct cloneDocument = (DtbDoct) document.clone();
|
||||
cloneDocument.setDtbDocr(new ArrayList<>());
|
||||
entityProcessor.processEntity(cloneDocument, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
|
||||
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (DtbDoct) dataToSave, useTempTable);
|
||||
//multiDBTransactionManager.commitAll();
|
||||
|
||||
if(!document.getDtbDocr().isEmpty()) {
|
||||
document.setOperation(OperationType.NO_OP);
|
||||
entityProcessor.processEntity(document, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
|
||||
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), document.getDtbDocr(), useTempTable);
|
||||
}
|
||||
|
||||
internalMultiDb.commitAll();
|
||||
exchangeMultiDb.commitAll();
|
||||
} catch (Exception ex) {
|
||||
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
|
||||
|
||||
DtbDoct document = (DtbDoct) dataToSave;
|
||||
logger.error("Errore durante l'importazione del documento [" +
|
||||
"num: " + document.getNumDoc() + ", " +
|
||||
"serie: " + document.getSerDoc() + ", " +
|
||||
@@ -184,7 +185,7 @@ public class ExchangeDocumentImportService {
|
||||
}
|
||||
|
||||
final List<DtbDoct> dtbDoctLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbDoct.class,
|
||||
dtbDoctLavTableName, Query.format("data_doc BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
|
||||
dtbDoctLavTableName, null, retrieveAlreadyImported);
|
||||
|
||||
|
||||
dtbDoctLav
|
||||
@@ -213,7 +214,7 @@ public class ExchangeDocumentImportService {
|
||||
|
||||
|
||||
return exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbDocr.class,
|
||||
dtbDocrLavTableName, Query.format("data_doc BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
|
||||
dtbDocrLavTableName, null, retrieveAlreadyImported);
|
||||
}
|
||||
|
||||
|
||||
@@ -227,8 +228,19 @@ public class ExchangeDocumentImportService {
|
||||
}};
|
||||
|
||||
exchangeImportDataManagerService.updateImportedStatus(connection, "dtb_doct_lav", importedKey, useTempTable);
|
||||
exchangeImportDataManagerService.updateImportedStatus(connection, "dtb_docr_lav", importedKey, useTempTable);
|
||||
// connection.commit();
|
||||
}
|
||||
|
||||
private void singleUpdateImported(Connection connection, List<DtbDocr> importedDtbDocr, boolean useTempTable) throws Exception {
|
||||
final List<HashMap<String, Object>> importedRowKeys = importedDtbDocr.stream()
|
||||
.map(x -> new HashMap<String, Object>() {{
|
||||
put("data_doc", x.getDataDoc());
|
||||
put("ser_doc", x.getSerDoc());
|
||||
put("num_doc", x.getNumDoc());
|
||||
put("cod_anag", x.getCodAnag());
|
||||
put("cod_dtip", x.getCodDtip());
|
||||
put("id_riga", x.getIdRiga());
|
||||
}}).collect(Collectors.toList());
|
||||
exchangeImportDataManagerService.updateImportedStatus(connection, "dtb_docr_lav", importedRowKeys, useTempTable);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
|
||||
public class ExchangeOrdiniImportService {
|
||||
|
||||
//TODO: To be remove, only for fast development
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "EXCHANGE";
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
@@ -48,9 +48,6 @@ public class ExchangeOrdiniImportService {
|
||||
@Autowired
|
||||
private ExchangeImportDataManagerService exchangeImportDataManagerService;
|
||||
|
||||
@Autowired
|
||||
private ExchangePartiteMagazzinoImportService exchangePartiteMagazzinoImportService;
|
||||
|
||||
@Autowired
|
||||
private AgribookFieldService agribookFieldService;
|
||||
|
||||
@@ -61,7 +58,6 @@ public class ExchangeOrdiniImportService {
|
||||
|
||||
try {
|
||||
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.OrdiniLavorazione, useTempTable);
|
||||
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione(internalMultiDb, exchangeMultiDb, requestDataDTO);
|
||||
|
||||
final List<DtbOrdt> exchangeImportedMtbColts = importOrdiniLavorazione(
|
||||
exchangeMultiDb.getPrimaryConnection(),
|
||||
@@ -162,10 +158,10 @@ public class ExchangeOrdiniImportService {
|
||||
}
|
||||
|
||||
List<DtbOrdt> dtbOrdtLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbOrdt.class,
|
||||
dtbOrdtTableName, Query.format("data_ord BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
|
||||
dtbOrdtTableName, null, retrieveAlreadyImported);
|
||||
|
||||
List<DtbOrdr> dtbOrdrLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbOrdr.class,
|
||||
dtbOrdrTableName, Query.format("data_ord BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
|
||||
dtbOrdrTableName, null, retrieveAlreadyImported);
|
||||
|
||||
dtbOrdtLav = dtbOrdtLav.stream()
|
||||
// .filter(x -> x.getGestione().equalsIgnoreCase("A"))
|
||||
@@ -303,7 +299,7 @@ public class ExchangeOrdiniImportService {
|
||||
.setVarieta(field.getVarieta())
|
||||
.setDataInizProd(field.getDataInizProd())
|
||||
.setDataOrd(field.getDataInizProd());
|
||||
agribookFieldService.createField(multiDb,dto);
|
||||
agribookFieldService.createField(multiDb,dto, ROSSOGARGANO_EXCHANGE_USER,new RequestDataDTO());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,7 @@ import java.util.stream.Collectors;
|
||||
public class ExchangePartiteMagazzinoImportService {
|
||||
|
||||
//TODO: To be remove, only for fast development
|
||||
private final String ROSSOGARGANO_EXCHANGE_PROFILEDB = "ROSSO_GARGANO_EXCHANGE";
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
|
||||
private final String ROSSOGARGANO_EXCHANGE_USER = "EXCHANGE";
|
||||
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -130,6 +130,10 @@ public class ExchangeSystemManagerService {
|
||||
final ExchangePartiteMagazzinoImportService beanPartiteMagazzino = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangePartiteMagazzinoImportService.class);
|
||||
beanPartiteMagazzino.importPartiteMagazzinoLavorazione(internalDb, exchangeDb, requestDataDTO);
|
||||
break;
|
||||
case CampiRaccolta:
|
||||
final ExchangeOrdiniImportService beanCampiRaccolta = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangeOrdiniImportService.class);
|
||||
beanCampiRaccolta.importCampiDiRaccolta(internalDb, exchangeDb, requestDataDTO);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user