Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
2024-06-20 12:08:19 +02:00
30 changed files with 904 additions and 127 deletions

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240618101450 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("W_GANAG_RC", "SETUP", "ABILITA_NUM_DICH_PLAFOND_IVA", "N", "Se impostato a S permette all'operatore di inserire manualmente il numero di dichiarazione d'intento: necessario per le aziende che non gestiscono l'invio della dichiarazione che valorizza automaticamente il numero", false, null, false, false, false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240618101509 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
updateSetupValue("W_GANAG_RC", "SETUP", "ABILITA_NUM_DICH_PLAFOND_IVA", "S");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,26 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240618105823 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm))
return;
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "MIRARCHI", "PATH_FILE", "\\\\SERVER-GRAMM\\Condivisa\\DOCUMENTI\\MIRARCHI\\", "Directory contente i file da importare.", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "MIRARCHI", "PATH_FILE_IMPORTED", "\\\\SERVER-GRAMM\\Condivisa\\DOCUMENTI\\MIRARCHI\\IMPORTED\\", "Directory dove vengono spostati i file dopo l'importazione.", false, null, false, false, false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240618123104 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if( isTextiles())
executeStatement("alter table ttb_style add flag_min_ord_linea_col bit default 1 not null;");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,36 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240618155823 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("mvw_articoli_esclusi_wms", "CREATE VIEW dbo.mvw_articoli_esclusi_wms AS\n" +
"SELECT DISTINCT mrl_depo_art_esclusi_wms.cod_mdep,\n" +
" ma.cod_mart,\n" +
" ma.cod_mgrp,\n" +
" ma.cod_msgr,\n" +
" ma.cod_msfa,\n" +
" ma.cod_mtip,\n" +
" ma.cod_mstp\n" +
"FROM mrl_depo_art_esclusi_wms\n" +
" INNER JOIN mtb_aart ma\n" +
" ON (ISNULL(mrl_depo_art_esclusi_wms.cod_mgrp, ma.cod_mgrp) = ma.cod_mgrp AND\n" +
" ISNULL(mrl_depo_art_esclusi_wms.cod_msgr, ma.cod_msgr) = ma.cod_msgr AND\n" +
" ISNULL(ISNULL(mrl_depo_art_esclusi_wms.cod_msfa, ma.cod_msfa), '') = ISNULL(ma.cod_msfa, '') AND\n" +
" ISNULL(ISNULL(mrl_depo_art_esclusi_wms.cod_mtip, ma.cod_mtip), '') = ISNULL(ma.cod_mtip, '') AND\n" +
" ISNULL(ISNULL(mrl_depo_art_esclusi_wms.cod_mstp, ma.cod_mstp), '') = ISNULL(ma.cod_mstp, '') AND\n" +
" ISNULL(mrl_depo_art_esclusi_wms.cod_mart, ma.cod_mart) = ma.cod_mart)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240618162308 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("w_vwordt_el", "SETUP", "CHECK_DICH_INTENTO", "N", "Se impostato a S allora nella visualizzazione degli ordini se il cliente ha esenziona, ma la dichiarazione dell'anno non è caricata visualizza il codice anagrafico in rosso e visualizza un messaggio", false, null, false, false, false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240618162327 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.FolliesGroup_FolliesGroup))
return;
updateSetupValue("w_vwordt_el", "SETUP", "CHECK_DICH_INTENTO", "S");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,196 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240619102012 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateProcedure("MRP_UpdateQtaImpProx", "CREATE Procedure [dbo].[MRP_UpdateQtaImpProx](@elencoArticoli varchar(max) = null)\n" +
"AS \n" +
"--DECLARE @elencoarticoli VARCHAR(MAX) = NULL\n" +
"SET NOCOUNT ON;\n" +
"DECLARE @tableart TABLE\n" +
" (\n" +
" cod_mart VARCHAR(15)\n" +
" );\n" +
"\n" +
"IF @elencoarticoli IS NOT NULL AND @elencoarticoli <> ''\n" +
" BEGIN\n" +
" INSERT INTO @tableart\n" +
" SELECT *\n" +
" FROM dbo.parsestringintoarray(@elencoarticoli, '|')\n" +
" END\n" +
"ELSE\n" +
" BEGIN\n" +
" INSERT INTO @tableart\n" +
" SELECT mtb_aart.cod_mart\n" +
" FROM mtb_aart\n" +
" INNER JOIN jtb_cicl ON mtb_aart.cod_mart = jtb_cicl.cod_mart\n" +
" WHERE mtb_aart.flag_stato = 'A'\n" +
" END;\n" +
"\n" +
"WITH imp_ordini AS (SELECT mtb_part.cod_mart,\n" +
" mtb_aart.unt_mis,\n" +
" CASE\n" +
" WHEN SUM(mtb_part.qta_imp_cli) > SUM(mtb_part.qta_esistente + mtb_part.qta_ord_for) THEN\n" +
" SUM(mtb_part.qta_imp_cli - (mtb_part.qta_esistente + mtb_part.qta_ord_for))\n" +
" ELSE 0 END AS qtadaprodurre,\n" +
" CASE\n" +
" WHEN SUM(mtb_part.qta_imp_cli) > SUM(mtb_part.qta_esistente + mtb_part.qta_ord_for) THEN\n" +
" SUM(mtb_part.qta_imp_cli - (mtb_part.qta_esistente + mtb_part.qta_ord_for)) /\n" +
" mtb_aart.qta_cnf\n" +
" ELSE 0 END AS numdaprodurre,\n" +
" SUM((mtb_part.qta_esistente + mtb_part.qta_ord_for) - mtb_part.qta_imp_cli) AS qta_disp\n" +
" \n" +
" FROM mtb_part\n" +
" INNER JOIN jtb_cicl ON mtb_part.cod_mart = jtb_cicl.cod_prod\n" +
" INNER JOIN mtb_aart ON mtb_part.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN @tableart a ON mtb_aart.cod_mart = a.cod_mart\n" +
" WHERE mtb_aart.flag_stato = 'A'\n" +
" GROUP BY mtb_part.cod_mart, mtb_aart.unt_mis, mtb_aart.qta_cnf\n" +
" HAVING SUM(mtb_part.qta_esistente + mtb_part.qta_ord_for) <> SUM(mtb_part.qta_imp_cli) \n" +
" \n" +
" \n" +
" )\n" +
" , imp_contratti AS (SELECT c.cod_mart,\n" +
" ISNULL(SUM((qta_vend_contratto - qta_ord - qta_doc) /\n" +
" CASE WHEN c.rap_conv = 0 THEN 1 ELSE c.rap_conv END), 0) AS qtacontratto\n" +
" FROM vvw_contratti_vendita c\n" +
" INNER JOIN @tableart a ON c.cod_mart = a.cod_mart\n" +
" WHERE c.data_fine >= CAST(GETDATE() AS DATE)\n" +
" GROUP BY c.cod_mart\n" +
" HAVING ISNULL(SUM(qta_residua), 0) > 0)\n" +
" , imp_budget AS (SELECT b.cod_mart,\n" +
" SUM(qta_saldo) AS qta_bdg\n" +
" FROM ovw_budget_ordv b\n" +
" INNER JOIN @tableart a ON b.cod_mart = a.cod_mart\n" +
" WHERE CAST(GETDATE() AS DATE) BETWEEN b.data_iniz AND b.data_fine\n" +
" AND qta_saldo <> 0\n" +
" GROUP BY b.cod_mart)\n" +
" , tmp_impegni\n" +
" AS (SELECT ISNULL(ISNULL(imp_ordini.cod_mart, imp_contratti.cod_mart), imp_budget.cod_mart) AS cod_mart,\n" +
" SUM(ISNULL(imp_ordini.qtadaprodurre, 0)) AS qtadaprodurre,\n" +
" SUM(ISNULL(imp_ordini.numdaprodurre, 0)) AS numdaprodurre,\n" +
" SUM(ISNULL(imp_contratti.qtacontratto -\n" +
" ISNULL(CASE WHEN imp_ordini.qta_disp > 0 THEN imp_ordini.qta_disp ELSE 0 END, 0),\n" +
" 0)) AS qtacontratto,\n" +
" SUM(ISNULL(imp_budget.qta_bdg, 0)) AS qtabudget\n" +
" \n" +
" FROM imp_ordini\n" +
" FULL OUTER JOIN imp_contratti ON imp_ordini.cod_mart = imp_contratti.cod_mart\n" +
" FULL OUTER JOIN imp_budget ON imp_ordini.cod_mart = imp_budget.cod_mart\n" +
" \n" +
" GROUP BY ISNULL(ISNULL(imp_ordini.cod_mart, imp_contratti.cod_mart), imp_budget.cod_mart)\n" +
" HAVING SUM(ISNULL(imp_ordini.qtadaprodurre, 0)) <> 0\n" +
" OR SUM(ISNULL(imp_contratti.qtacontratto -\n" +
" ISNULL(CASE WHEN imp_ordini.qta_disp > 0 THEN imp_ordini.qta_disp ELSE 0 END, 0), 0)) <> 0\n" +
" OR SUM(ISNULL(imp_budget.qta_bdg, 0)) <> 0)\n" +
"\n" +
"SELECT materiali.cod_mart,\n" +
" materiali.cod_prod,\n" +
" jtb_fasi.cod_mdep_lav AS cod_mdep,\n" +
" SUM(qtadaprodurre * ((materiali.qta_prod * materiali.rap_conv) /\n" +
" (jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod))) AS impegnatoprox,\n" +
" SUM(qtacontratto * ((materiali.qta_prod * materiali.rap_conv) /\n" +
" (jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod))) AS impproxcontratto,\n" +
" SUM(qtabudget * ((materiali.qta_prod * materiali.rap_conv) /\n" +
" (jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod))) AS impproxbudget,\n" +
" max(case when ord.gestione = 'L' THEN max_data_cons else null end ) as data_imp_prox,\n" +
" max(case when ord.gestione = 'A' THEN max_data_cons else null end ) as data_imp_prox_contr\n" +
"INTO #tmp\n" +
"FROM tmp_impegni\n" +
" INNER JOIN\n" +
" (SELECT cod_mart, descrizione_estesa, unt_mis_prod AS unt_doc, rap_conv_prod AS rap_conv, qta_prod, cod_prod\n" +
" FROM [dbo].getmaterialidistinta(NULL)\n" +
" WHERE cod_parent IS NOT NULL) materiali ON materiali.cod_prod = tmp_impegni.cod_mart\n" +
" INNER JOIN jtb_cicl ON materiali.cod_prod = jtb_cicl.cod_prod\n" +
" INNER JOIN jtb_fasi ON jtb_cicl.cod_jfas = jtb_fasi.cod_jfas \n" +
" LEFT OUTER JOIN (select cod_mart, dtb_ordt.gestione, MAX(dtb_ordr.data_cons) as max_data_cons\n" +
" from dtb_ordt inner join dtb_ordr on 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" +
" where dtb_ordt.gestione <> 'V' AND \n" +
" dtb_ordt.flag_annulla = 'N' and\n" +
" dtb_ordt.flag_budget = 0 and\n" +
" dtb_ordt.flag_sospeso = 'N' and\n" +
" dtb_ordt.flag_evaso_forzato = 'N' and \n" +
" dtb_ordr.flag_evaso = 'I' \n" +
" group by cod_mart, dtb_ordt.gestione\n" +
" ) ORD ON materiali.cod_mart = ORD.cod_mart\n" +
"GROUP BY materiali.cod_prod,\n" +
" materiali.cod_mart,\n" +
" jtb_fasi.cod_mdep_lav\n" +
" \n" +
"SELECT cod_mart,\n" +
" cod_mdep,\n" +
" SUM(impegnatoprox) AS impegnatoprox,\n" +
" SUM(impproxcontratto) AS impproxcontratto,\n" +
" SUM(impproxbudget) AS impproxbudget,\n" +
" IIF( data_imp_prox is null or data_imp_prox < Cast(getdate() as date), Cast(getdate() as date), data_imp_prox) as data_imp_prox,\n" +
" IIF( data_imp_prox_contr is null or data_imp_prox_contr < Cast(getdate() as date), Cast(getdate() as date), data_imp_prox_contr) as data_imp_prox_contr \n" +
"INTO #tmpsum\n" +
"FROM #tmp\n" +
"WHERE cod_mdep IS NOT NULL\n" +
"GROUP BY cod_mart, cod_mdep,\n" +
" data_imp_prox,\n" +
" data_imp_prox_contr\n" +
"\n" +
"INSERT INTO mtb_part (cod_mart, cod_mdep, scorta_min, qta_esistente, qta_imp_cli, qta_imp_lav, qta_ord_for)\n" +
"SELECT cod_mart, cod_mdep, 0, 0, 0, 0, 0\n" +
"FROM #tmpsum t\n" +
"WHERE NOT EXISTS(SELECT * FROM mtb_part WHERE mtb_part.cod_mart = t.cod_mart AND mtb_part.cod_mdep = t.cod_mdep)\n" +
"\n" +
"IF @elencoarticoli IS NULL OR @elencoarticoli = ''\n" +
" UPDATE mtb_part SET qta_imp_prox = 0, qta_imp_prox_contr = 0, qta_imp_prox_bdg = 0, data_imp_prox = null, data_imp_prox_contr = null\n" +
"ELSE\n" +
" UPDATE mtb_part\n" +
" SET qta_imp_prox = 0,\n" +
" qta_imp_prox_contr = 0,\n" +
" qta_imp_prox_bdg = 0,\n" +
" data_imp_prox = null, \n" +
" data_imp_prox_contr = null \n" +
" WHERE cod_mart IN (SELECT cod_mart FROM #tmpsum)\n" +
"\n" +
"UPDATE mtb_part\n" +
"SET qta_imp_prox = q.impegnatoprox,\n" +
" qta_imp_prox_contr = q.impproxcontratto,\n" +
" qta_imp_prox_bdg = q.impproxbudget,\n" +
" data_imp_prox = DateAdd(day, 1, q.data_imp_prox), \n" +
" data_imp_prox_contr = DateAdd(day, 1, q.data_imp_prox_contr )\n" +
"FROM mtb_part\n" +
" INNER JOIN #tmpsum q ON mtb_part.cod_mdep = q.cod_mdep AND mtb_part.cod_mart = q.cod_mart\n" +
"\n" +
"IF EXISTS(SELECT *\n" +
" FROM #tmp\n" +
" WHERE cod_mdep IS NULL)\n" +
" BEGIN\n" +
"\n" +
"\n" +
" DECLARE @message VARCHAR(MAX), @email VARCHAR(MAX)\n" +
"\n" +
" SELECT @email = e_mail FROM stb_email WHERE flag_default = 'S';\n" +
"\n" +
" SET @message = 'Verificare i seguenti articoli: la fase non ha il deposito agganciato.' + CHAR(10) + CHAR(13)\n" +
" SELECT @message = @message +\n" +
" STUFF((SELECT ',' + cod_prod\n" +
" FROM #tmp\n" +
" WHERE cod_mdep IS NULL\n" +
" FOR XML PATH('')), 1, 1, '')\n" +
"\n" +
" EXECUTE [dbo].[sp_sendEmail] @email, 'helpdesk@integry.it', 'Errore Impegni Prossimi', @message\n" +
"\n" +
" END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,32 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240619104751 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "ATTIVO", "S", "Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "COD_ANAG", null, "Codice anagrafico del vettore", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "COD_VVET", null, "Codice vettore", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "EMAIL_FOR_LOG", "test@integry.it", "Inserire il file l'indirizzo email per inviare il log dell'importazione", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "FILE_FILTER", null, "Inserire il criterio di filtro dei file o il nome del file specifio (seguire la sintassi di java)", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "GG_CANC_FILE", null, "Giorni per la cancellazione dei file dalla cartella di appoggio", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "IMPORT_REST", "S", "Inserire S/N per attivare/disattivare il salvataggio con i servizi REST", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "LISTENING", "N", "Se LISTENIG = 'N' la procedura di importazione non si potrà mai mettere in ascolto sulla directory perchè nella procedura vengono prese in considerazione più file.", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "PATH_FILE", null, "Directory contente i file da importare.", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "PATH_FILE_IMPORTED", null, "Directory dove vengono spostati i file dopo l'importazione.", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "TIPO_RIPARTIZIONE_COSTI_PER_PEDANA_A", "PEZZI", "Se il tipo di calcolo è a PEDANA allora si può decidere se la ripartizione dei costi deve essere fatta a pedana, a colli o a pezzi. E' stato necessario perchè spesso il numero di pedane del vettore è diverso dal numero di pedane che calcoliamo noi nei documenti", false, null, false, false, false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,29 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240619105030 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm))
return;
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "COD_ANAG", "F3658");
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "COD_VVET", "278");
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "PATH_FILE", "\\\\SERVER-GRAMM\\Condivisa\\DOCUMENTI\\DIPA\\");
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "PATH_FILE_IMPORTED", "\\\\SERVER-GRAMM\\Condivisa\\DOCUMENTI\\DIPA\\IMPORTED\\");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240619105525 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "€/KG.", "PESO", "Tipo calcolo euro/kg", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "€/PLT", "PEDANE", "Tipo calcolo euro/pallet", false, null, false, false, false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,26 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240619163048 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm))
return;
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "DIPA", "ELENCO_TIPI_DOC_DA_ESCLUDERE", "D.D.T|DDTAV|DDTRC");
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "MIRARCHI", "ELENCO_TIPI_DOC_DA_ESCLUDERE", "D.D.T|DDTAV|DDTRC");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -110,7 +110,7 @@ public class SalesRules extends QueryRules {
if (vtbListData.getCheckDataFine() != null && vtbListData.getCheckDataFine()) {
Date dataFineOld = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(
conn,
Query.format("SELECT data_fine FROM vtb_list_data WHERE cod_vlis = %s AND versione = %S", vtbListData.getCodVlis(),vtbListData.getVersione()));
Query.format("SELECT data_fine FROM vtb_list_data WHERE cod_vlis = %s AND versione = %S", vtbListData.getCodVlis(), vtbListData.getVersione()));
if (dataFineOld != null && vtbListData.getDataFine().after(dataFineOld))
throw new Exception("Impossibile posticipare la data fine di una promozione.");
@@ -851,29 +851,30 @@ public class SalesRules extends QueryRules {
public static Boolean checkArtPromoVendita(Connection conn, MtbLisvData entity) throws Exception {
Boolean ret = false;
String query =
Query.format(
"SELECT TOP 1 cod_promo, " +
"data_iniz, " +
"data_fine, " +
"versione " +
" FROM dbo.getPromozioneVendita(" + UtilityDB.valueDateToString(entity.getDataIniz(), CommonConstants.DATE_FORMAT_YMD) + ", "
+ UtilityDB.valueDateToString(entity.getDataFine(), CommonConstants.DATE_FORMAT_YMD) + ", "
+ UtilityDB.valueToString(entity.getCodVlis()) + ", null, "
+ UtilityDB.valueToString(entity.getCodMart()) + ") " +
" FROM dbo.getPromozioneVendita( %s, %s, %s , null, %s) " +
" WHERE tipo_variazione <> 'D' AND" +
" versione <> " + UtilityDB.valueToString(entity.getVersione());
" versione <> %s",
entity.getDataIniz(),
entity.getDataFine(),
entity.getCodVlis(),
entity.getCodMart(),
entity.getVersione()==null?0:entity.getVersione()
);
PreparedStatement ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
HashMap<String, Object> datiPromo = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, query);
if (UtilityHashMap.isPresent(datiPromo)) {
String errorMessage =
"Impossibile salvare la promozione sul listino " + entity.getCodVlis() + ". " +
"Articolo " + entity.getCodMart() + " già presente nella promozione " +
rs.getString(1) +
" valida dal " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(rs.getDate(2)) +
" al " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(rs.getDate(3)) +
" versione " + rs.getString(4);
rs.close();
ps.close();
datiPromo.get("cod_promo") +
" valida dal " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(datiPromo.get("data_iniz")) +
" al " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(datiPromo.get("data_fine")) +
" versione " + datiPromo.get("versione");
throw new Exception(errorMessage);
}
@@ -1162,11 +1163,9 @@ public class SalesRules extends QueryRules {
String sql = Query.format(
"SELECT id_viaggio, posizione\n" +
"FROM vtb_viaggi\n" +
"WHERE id_viaggio != %s\n" +
" AND posizione != 0\n" +
"WHERE posizione != 0\n" +
" AND CAST(data_ora_iniz_trasp AS DATE) = %s\n" +
"ORDER BY posizione",
vtbViaggi.getIdViaggio(),
vtbViaggi.getDataOraInizTrasp()
);
@@ -1176,7 +1175,8 @@ public class SalesRules extends QueryRules {
return;
}
int indexOfLastPosizione = viaggiGiorno.indexOf(viaggiGiorno.stream().filter(viaggio -> viaggio.getPosizione() == vtbViaggi.getPosizione()).findFirst().orElse(null));
int indexOfLastPosizione = viaggiGiorno.indexOf(viaggiGiorno.stream()
.filter(viaggio -> !viaggio.getIdViaggio().equalsIgnoreCase(vtbViaggi.getIdViaggio()) && viaggio.getPosizione() == vtbViaggi.getPosizione()).findFirst().orElse(null));
if (indexOfLastPosizione != -1) {
viaggiGiorno.add(indexOfLastPosizione, vtbViaggi);
@@ -1195,7 +1195,7 @@ public class SalesRules extends QueryRules {
viaggio.setOperation(OperationType.UPDATE);
});
viaggiGiorno.remove(vtbViaggi);
viaggiGiorno = viaggiGiorno.stream().filter(viaggio -> !viaggio.getIdViaggio().equalsIgnoreCase(vtbViaggi.getIdViaggio())).collect(Collectors.toList());
vtbViaggi.setVtbViaggiList(viaggiGiorno);
}

View File

@@ -115,6 +115,8 @@ public class TtbStyle extends EntityBase {
private String temaEstero;
@SqlField(value = "path_file_img")
private String pathFileImg;
@SqlField(value = "flag_min_ord_linea_col")
private Boolean flagMinOrdLineaCol;
@Priority(value = 1, copyPk = false)
private MtbAart mtbAart;
@@ -527,6 +529,14 @@ public class TtbStyle extends EntityBase {
return this;
}
public Boolean getFlagMinOrdLineaCol() {
return flagMinOrdLineaCol;
}
public TtbStyle setFlagMinOrdLineaCol(Boolean flagMinOrdLineaCol) {
this.flagMinOrdLineaCol = flagMinOrdLineaCol;
return this;
}
public List<TtbStyleColori> getTtbStyleColori() {
return ttbStyleColori;

View File

@@ -52,10 +52,10 @@ public class VtbViaggi extends EntityBase {
private Mezzo mezzo;
@SqlField(value = "posizione", defaultObjectValue = "0")
private short posizione;
private Short posizione;
@SqlField(value = "confermato", defaultObjectValue = "0")
private boolean confermato;
private Boolean confermato;
@Priority(value = 101, copyPk = false)
private List<VtbViaggi> vtbViaggiList;
@@ -150,20 +150,20 @@ public class VtbViaggi extends EntityBase {
return this;
}
public short getPosizione() {
public Short getPosizione() {
return posizione;
}
public VtbViaggi setPosizione(short posizione) {
public VtbViaggi setPosizione(Short posizione) {
this.posizione = posizione;
return this;
}
public boolean isConfermato() {
public Boolean getConfermato() {
return confermato;
}
public VtbViaggi setConfermato(boolean confermato) {
public VtbViaggi setConfermato(Boolean confermato) {
this.confermato = confermato;
return this;
}

View File

@@ -4,7 +4,6 @@ import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants;
import it.integry.ems.activity.dto.*;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.media.MediaImageService;
import it.integry.ems.media.MediaVideoService;
@@ -19,7 +18,6 @@ import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,9 +25,7 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.*;
@@ -421,6 +417,39 @@ public class ActivityService {
if (!sottoAttivita.isEmpty())
entityBaseList.addAll(sottoAttivita);
sql =
Query.format(
"SELECT jtb_rlavr.cod_jflav, jtb_rlavr.data_lav, jtb_rlavr.id_riga, %s as cod_jfas " +
" FROM stb_activity INNER JOIN jtb_rlavr ON stb_activity.activity_id = jtb_rlavr.activity_id " +
" WHERE parent_activity_id = %s AND stb_activity.cod_jfas <> %s\n" +
" AND NOT EXISTS(SELECT * from stb_activity_check WHERE stb_activity.cod_jcom = stb_activity_check.cod_jcom AND stb_activity.effective_date between stb_activity_check.data_iniz AND stb_activity_check.data_fine )",
codjfas,
stbActivity.getActivityId(),
codjfas);
List<JtbRLavr> righeRapportini = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, JtbRLavr.class, OperationType.UPDATE);
if (!righeRapportini.isEmpty()) {
List<Map.Entry<JtbRLavt, List<JtbRLavr>>> list = Stream.of(righeRapportini).groupBy(
x -> {
JtbRLavt jtbRLavt = new JtbRLavt();
jtbRLavt.setCodJflav(x.getCodJflav());
jtbRLavt.setDataLav(x.getDataLav());
jtbRLavt.setOperation(OperationType.NO_OP);
jtbRLavt.setJtbRlavr(new ArrayList<>());
return jtbRLavt;
}
).toList();
List<JtbRLavt> rapportini = new ArrayList<>();
for (Map.Entry<JtbRLavt, List<JtbRLavr>> entry:list ) {
rapportini.add(entry.getKey().setJtbRlavr(entry.getValue()));
}
entityBaseList.addAll(rapportini);
}
List<EntityBase> entityRet = entityProcessor.processEntityList(entityBaseList, true);
UtilityEntity.throwEntitiesException(entityRet);
@@ -429,55 +458,77 @@ public class ActivityService {
}
public ActivityTaskDTO insSubactivity(StbActivity stbActivity) throws Exception {
String sql =
Query.format(
"SELECT activity_id " +
" FROM stb_activity " +
" WHERE stb_activity.parent_activity_id = %s AND " +
"stb_activity.user_name = %s AND " +
"( stb_activity.estimated_time = %s OR (stb_activity.effective_date is null AND stb_activity.activity_result_id = 'DA FARE'))",
stbActivity.getParentActivityId(),
stbActivity.getUserName(),
stbActivity.getEstimatedTime());
try {
String sql =
Query.format(
"SELECT activity_id " +
" FROM stb_activity " +
" WHERE stb_activity.parent_activity_id = %s AND " +
"stb_activity.user_name = %s AND " +
"( stb_activity.estimated_time = %s OR (stb_activity.effective_date is null AND stb_activity.activity_result_id = 'DA FARE'))",
stbActivity.getParentActivityId(),
stbActivity.getUserName(),
stbActivity.getEstimatedTime());
String activityId = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
String activityId = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
long seconds = (long) (stbActivity.getOreRapportino().floatValue() * 60L * 60L);
long seconds = (long) (stbActivity.getOreRapportino().floatValue() * 60L * 60L);
if (stbActivity.getEffectiveTime() != null) {
Instant endTimeInstant = stbActivity.getEffectiveTime().toInstant().plusSeconds(seconds);
Date endTime = Date.from(endTimeInstant);
if (stbActivity.getEffectiveTime() != null) {
Instant endTimeInstant = stbActivity.getEffectiveTime().toInstant().plusSeconds(seconds);
Date endTime = Date.from(endTimeInstant);
stbActivity.setEffectiveEndtime(endTime);
}
if (UtilityString.isNullOrEmpty(activityId)) {
stbActivity.setOperation(OperationType.INSERT);
if (UtilityString.isNullOrEmpty(stbActivity.getActivityDescription())) {
sql = Query.format("SELECT activity_description FROM stb_activity WHERE stb_activity.activity_id = %s", stbActivity.getParentActivityId());
String activityDescr = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
stbActivity.setActivityDescription(activityDescr);
stbActivity.setEffectiveEndtime(endTime);
}
} else {
stbActivity.setActivityId(activityId);
stbActivity.setOperation(OperationType.UPDATE);
if (UtilityString.isNullOrEmpty(activityId)) {
stbActivity.setOperation(OperationType.INSERT);
if (UtilityString.isNullOrEmpty(stbActivity.getActivityDescription())) {
sql = Query.format("SELECT activity_description FROM stb_activity WHERE stb_activity.activity_id = %s", stbActivity.getParentActivityId());
String activityDescr = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
stbActivity.setActivityDescription(activityDescr);
}
} else {
stbActivity.setActivityId(activityId);
stbActivity.setOperation(OperationType.UPDATE);
}
entityProcessor.processEntity(stbActivity, true, multiDBTransactionManager);
UtilityEntity.throwEntityException(stbActivity);
sql = String.format(
"SELECT * FROM stb_activity WHERE activity_id = %s AND user_name in (%s)",
UtilityDB.valueToString(stbActivity.getParentActivityId()),
"'DEV', 'T0001', 'T0003'");
StbActivity processo = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbActivity.class);
if (processo != null) {
processo
.setUserName(stbActivity.getUserName())
.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(processo, true, multiDBTransactionManager);
UtilityEntity.throwEntityException(processo);
}
multiDBTransactionManager.commitAll();
return new ActivityTaskDTO()
.setActivityId(stbActivity.getActivityId())
.setActivityTypeId(stbActivity.getActivityTypeId())
.setActivityDescription(stbActivity.getActivityDescription())
.setUserName(stbActivity.getUserName())
.setEffectiveDate(stbActivity.getEffectiveDate())
.setActivityResultId(stbActivity.getActivityResultId())
.setResultDescription(stbActivity.getResultDescription())
.setOreLav(stbActivity.getOreRapportino())
.setEstimatedDate(stbActivity.getEstimatedDate())
.setEffectiveTime(stbActivity.getEffectiveTime())
.setEffectiveEndtime(stbActivity.getEffectiveEndtime())
.setNote(stbActivity.getNote());
} catch (Exception e){
multiDBTransactionManager.rollbackAll();
throw e;
}
entityProcessor.processEntity(stbActivity, multiDBTransactionManager);
return new ActivityTaskDTO()
.setActivityId(stbActivity.getActivityId())
.setActivityTypeId(stbActivity.getActivityTypeId())
.setActivityDescription(stbActivity.getActivityDescription())
.setUserName(stbActivity.getUserName())
.setEffectiveDate(stbActivity.getEffectiveDate())
.setActivityResultId(stbActivity.getActivityResultId())
.setResultDescription(stbActivity.getResultDescription())
.setOreLav(stbActivity.getOreRapportino())
.setEstimatedDate(stbActivity.getEstimatedDate())
.setEffectiveTime(stbActivity.getEffectiveTime())
.setEffectiveEndtime(stbActivity.getEffectiveEndtime())
.setNote(stbActivity.getNote());
}
@@ -800,14 +851,14 @@ public class ActivityService {
" THEN stb_activity.activity_description\n" +
" ELSE NULL END) AS activity_description,\n" +
" MAX(CASE\n" +
" WHEN IsNull(estimated_date, effective_date) BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE())\n" +
" WHEN IsNull(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE())\n" +
" THEN 1\n" +
" ELSE 0 END) AS planned_this_week,\n" +
" MAX(CASE\n" +
" WHEN estimated_date between dbo.f_getfirstdayofweek(DateAdd(week, -1, GETDATE())) AND dbo.f_getLastDayOfWeek(DateAdd(week, -1, GETDATE())) THEN 1\n" +
" WHEN IsNull(effective_date, estimated_date) between dbo.f_getfirstdayofweek(DateAdd(week, -1, GETDATE())) AND dbo.f_getLastDayOfWeek(DateAdd(week, -1, GETDATE())) THEN 1\n" +
" ELSE 0 END) AS planned_previous_week,\n" +
" MAX(CASE\n" +
" WHEN estimated_date between dbo.f_getfirstdayofweek(DateAdd(week, 1, GETDATE())) AND dbo.f_getLastDayOfWeek(DateAdd(week, 1, GETDATE())) THEN 1\n" +
" WHEN IsNull(effective_date, estimated_date) between dbo.f_getfirstdayofweek(DateAdd(week, 1, GETDATE())) AND dbo.f_getLastDayOfWeek(DateAdd(week, 1, GETDATE())) THEN 1\n" +
" ELSE 0 END) AS planned_next_week,\n" +
" SUM(jtb_rlavr.ore) AS ore\n" +
" FROM stb_activity\n" +

View File

@@ -679,7 +679,10 @@ public class SteUPService {
String tipoAttivitaVerificaVolantino = setup.get("TIPO_ATTIVITA_VERIFICA_VOLANTINO");
String tipoAttivitaVerificaPromo = setup.get("TIPO_ATTIVITA_VERIFICA_ALTRE_PROMO");
String tipoAttivitaRotturaStock = setup.get("TIPO_ATTIVITA_ROTTURA_STOCK");
List<String> repartiFreschi = Arrays.asList(StringUtils.split(setup.get("REPARTI_FRESCHI"), "|"));
String setupRepartiFreschi = setup.get("REPARTI_FRESCHI");
List<String> repartiFreschi = null;
if (!UtilityString.isNullOrEmpty(setupRepartiFreschi))
repartiFreschi = Arrays.asList(StringUtils.split(setupRepartiFreschi, "|"));
String fileElencoArticoli = StringUtils.join(barcodes, CommonConstants.A_CAPO);

View File

@@ -357,7 +357,7 @@ public class LicorProductionService {
" AND mtb_colt.data_ord = %s\n" +
" AND mtb_colt.num_ord = %s\n" +
" AND mtb_colr.riga_ord IS NOT NULL\n" +
" AND NOT EXISTS(SELECT cod_mart\n" +
" AND EXISTS(SELECT cod_mart\n" +
" FROM mvw_articoli_esclusi_wms\n" +
" WHERE cod_mdep = mtb_colt.cod_mdep\n" +
" AND mtb_colr.cod_mart = mvw_articoli_esclusi_wms.cod_mart)",
@@ -397,7 +397,7 @@ public class LicorProductionService {
int countArticoloEscluso = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
if (countArticoloEscluso != 0) {
if (countArticoloEscluso == 0) {
continue;
}

View File

@@ -62,6 +62,7 @@ public class DocCostiTrasportoController {
case "ROTUNNO":
break;
case "DIPA":
docTrasp = documentService.importDocumentiTrasportoDIPA(requestDataDTO, type, format);
break;
case "PAPAGNI":
docTrasp = documentService.importDocumentiTrasportoPapagni(requestDataDTO);

View File

@@ -10,20 +10,38 @@ public class DocTraspImportDTO {
private String serDoc;
private String ragSoc;
private String citta;
/*Indica la quantita tassata*/
private BigDecimal tassato;
/*Indica il tipo di calcolo (PEDANE, PESO, COLLI, KG etc) con cui verrà fatta la ripartizione dei costi,
solitamente se il vettore non specifica nel file per ogni documento il tipo di calcolo allora viene impostato
nella configurazione del formato di importazione*/
private String tipoCalc;
/*Indica la tipologia di costo della spedizione codificata secondo i nostri codici (PD, KG, NR, PZ etc)*/
private String untMis;
/*Importo totale costo spedizione*/
private BigDecimal nolo;
/*Riferimento documento: dovrebbe essere il riferimento del numero documento, ma a volte viene anche specificata
la serie da parte del vettore, questa infomraizoni solitamente viene visualizzata in fase di importazione nel caso
di anomalie nella ricerca del documento*/
private String rifDoc;
/*Riferimento del numero di riga del file importato*/
private Integer idRiga;
private String elencoDocDaEscludere;
private String checkSerDoc;
private BigDecimal peso;
private BigDecimal colli;
private BigDecimal pallet;
private String gestione;
/*Può valere A oV: se impostato la ricarca del documento veine fatto per gestione,
altrimenti vengono presi tutti i documenti di A e V*/
private String checkGestione;
/*Può valere S o N: se impostato a S allora vuol dire che la ricerca del documento
verrà fatta sia con la data del documento che nell'ambito dell'intero anno*/
private String checkAnnoDoc;
/*Può valere S o N: se impostato a S allora vuol dire che la ricerca del documento
verrà fatta anche per codice vettore associato al fornitore*/
private String checkVettore;
/*Può valere S o N: se impostato a S allora vuol dire che la ricerca del documento
verrà fatta anche per serie documento, questa condizione va
utilizzata solo se il tracciato ha la colonna della serire specificata*/
private String checkSerDoc;
public Date getDataDoc() {
return dataDoc;
@@ -133,15 +151,6 @@ public class DocTraspImportDTO {
return this;
}
public String getElencoDocDaEscludere() {
return elencoDocDaEscludere;
}
public DocTraspImportDTO setElencoDocDaEscludere(String elencoDocDaEscludere) {
this.elencoDocDaEscludere = elencoDocDaEscludere;
return this;
}
public BigDecimal getPeso() {
return peso;
}
@@ -178,12 +187,12 @@ public class DocTraspImportDTO {
return this;
}
public String getGestione() {
return gestione;
public String getCheckGestione() {
return checkGestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
public void setCheckGestione(String checkGestione) {
this.checkGestione = checkGestione;
}
public String getCheckAnnoDoc() {

View File

@@ -20,10 +20,15 @@ import it.integry.ems_model.utility.UtilityString;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.jcodec.common.DictionaryCompressor;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
@@ -31,7 +36,9 @@ import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -75,6 +82,7 @@ public class DocCostiTrasporto {
String codVvet = UtilityString.emptyStr2Null(setupGest.getImportSetup(connect, type, format, "COD_VVET"));
String elencoClientiTipoCalcPallet = UtilityString.emptyStr2Null(setupGest.getImportSetup(connect, type, format, "TIPO_CALC_PALLET_EL_COD_ANAG"));
String elencoDocDaEscludere = UtilityString.emptyStr2Null(setupGest.getImportSetup(connect, type, format, "ELENCO_TIPI_DOC_DA_ESCLUDERE"));
if (codVvet == null){
throw new Exception("CODICE VETTORE NON CONFIGURATO");
}
@@ -90,13 +98,15 @@ public class DocCostiTrasporto {
Integer numDoc = doc.getNumDoc();
String serDoc = UtilityString.emptyStr2Null(doc.getSerDoc());
Integer idRiga = doc.getIdRiga();
String elencoDocDaEscludere = doc.getElencoDocDaEscludere();
String note = "";
String gestione = doc.getGestione();
String checkgestione = doc.getCheckGestione();
String untMis = getUntMisFromTipoCalc(tipoCalc);
// Acquisizione numero e serie documento
codDtip = null;
codAnag = null;
serDoc = null;
if (numDoc == null){
if (rifDoc == null || rifDoc.length() == 0){
rifDoc = "[VUOTO]";
@@ -110,8 +120,8 @@ public class DocCostiTrasporto {
whereCondSerDoc = "dtb_doct.ser_doc = " + UtilityDB.valueToString(serDoc) ;
}
String whereCondGestione = "";
if (gestione != null){
whereCondGestione = "dtb_doct.gestione = " + UtilityDB.valueToString(gestione) ;
if (checkgestione != null){
whereCondGestione = "dtb_doct.gestione = " + UtilityDB.valueToString(checkgestione) ;
}
String whereCondDataAnnoDoc = "";
@@ -174,7 +184,7 @@ public class DocCostiTrasporto {
note += "@DOC_NO_EXIST=" + rifDoc + " documento inesistente";
dataDoc = dataSped;
} else if (rowCounter > 1) {
note += "@DOC_MORE=" + rifDoc + " ci sono più documenti associati con la stessa serie e numero nel gestionale";
note += "@DOC_MORE=" + rifDoc + " ci sono più documenti associati con la stessa numero nel gestionale";
dataDoc = dataSped;
}
}
@@ -516,7 +526,6 @@ public class DocCostiTrasporto {
docTrasp.setDataSped(dataDoc);
docTrasp.setRifDoc(rifDoc);
docTrasp.setIdRiga(idRiga);
docTrasp.setElencoDocDaEscludere(elencoTipiDocDaEscludere);
docTrasp.setCheckSerDoc(checkSerieDoc);
docTrasp.setColli(tassatoCollo);
docTrasp.setPeso(tassatoPeso);
@@ -537,10 +546,9 @@ public class DocCostiTrasporto {
String checkSerieDoc = "N";
String gestione = "V";
String checkAnnoDoc = "N";
String checlVettore = "S";
String checkVettore = "S";
List<ReturnDocCostiTrasportoDTO> docCostiTrasp = new ArrayList<>();
List<DocTraspImportDTO> listDocTrasp = new ArrayList<>();
HashMap<String, String> returns = new HashMap<String, String>();
DataFormatter dataFormatter = new DataFormatter();
Connection connect = multiDBTransactionManager.getPrimaryConnection();
@@ -568,16 +576,12 @@ public class DocCostiTrasporto {
Date dataDoc = new SimpleDateFormat("dd-MMM-yyyy").parse(dataSpedizione);
String untMis = getUntMisFromTipoCalc(tipoCalc);
returns = getSerNumDoc(rifDoc);
String serDoc = returns.get("serDoc");
Integer numDoc = null;
if (UtilityString.isNumber(rifDoc)){numDoc = Integer.valueOf(rifDoc);}
DocTraspImportDTO docTrasp = new DocTraspImportDTO();
docTrasp.setDataDoc(dataDoc);
docTrasp.setNumDoc(numDoc);
docTrasp.setSerDoc(serDoc);
docTrasp.setRagSoc(ragSoc);
docTrasp.setNolo(totaleNolo);
docTrasp.setTassato(tassato);
@@ -586,10 +590,10 @@ public class DocCostiTrasporto {
docTrasp.setDataSped(dataDoc);
docTrasp.setRifDoc(rifDoc);
docTrasp.setIdRiga(idRiga);
docTrasp.setGestione(gestione);
docTrasp.setCheckGestione(gestione);
docTrasp.setCheckSerDoc(checkSerieDoc);
docTrasp.setCheckAnnoDoc(checkAnnoDoc);
docTrasp.setCheckVettore(checlVettore);
docTrasp.setCheckVettore(checkVettore);
listDocTrasp.add(docTrasp);
}
docCostiTrasp = checkAndImportDoc(listDocTrasp, format);
@@ -598,6 +602,112 @@ public class DocCostiTrasporto {
UtilityFile.fileDelete(pathFileImported);
FileUtils.moveFile(new File(requestDataDTO.getPathFile()), new File(pathFileImported));
return docCostiTrasp;
}
public List<ReturnDocCostiTrasportoDTO> importDocumentiTrasportoDIPA(ImportRequestDTO requestDataDTO, String type, String format) throws Exception {
int idRiga = 0;
String rifDocOld = "", rifDoc = "";
List<ReturnDocCostiTrasportoDTO> docCostiTrasp = new ArrayList<>();
List<DocTraspImportDTO> listDocTrasp = new ArrayList<>();
DocTraspImportDTO docTrasp = new DocTraspImportDTO();
DataFormatter dataFormatter = new DataFormatter();
Connection connect = multiDBTransactionManager.getPrimaryConnection();
String checkSerieDoc = "N",
checkAnnoDoc = "N",
checkVettore = "N",
checkGestione = "V";
File tempFile = new File(requestDataDTO.getPathFile());
FileInputStream fis = new FileInputStream(tempFile);
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet mySheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = mySheet.iterator();
Row row = null;
while (rowIterator.hasNext()) {
if (idRiga <= 1){
row = rowIterator.next();
idRiga++;
if (idRiga == 1){
continue;
}
}else {
if (rifDoc.length() == 0){
break;
}
}
int index = 0;
do {
String dataSpedizione = String.valueOf(row.getCell(0));
rifDoc = dataFormatter.formatCellValue(row.getCell(1));
String ragSoc = dataFormatter.formatCellValue(row.getCell(3));
String citta = dataFormatter.formatCellValue(row.getCell(4)).toUpperCase();
BigDecimal tassato = new BigDecimal(String.valueOf(row.getCell(5)));
String tipoCalcVett = dataFormatter.formatCellValue(row.getCell(7)).toUpperCase();
BigDecimal nolo = new BigDecimal(String.valueOf(row.getCell(8)));
Date dataDoc = new SimpleDateFormat("dd/MM/yyyy").parse(dataSpedizione);
index++;
// Le informazioni relativa agli estremi del documento vengono presi dalla prima riga, mentre dalle atre righe vengono solo sommati i singoli importi di spedizione più diritti fissi e contrassegno
if (index == 1){
Integer numDoc = null;
if (UtilityString.isNumber(rifDoc)) {
numDoc = Integer.valueOf(rifDoc);
}
docTrasp = new DocTraspImportDTO();
docTrasp.setDataDoc(dataDoc);
docTrasp.setNumDoc(numDoc);
docTrasp.setRagSoc(ragSoc);
docTrasp.setNolo(nolo);
docTrasp.setDataSped(dataDoc);
docTrasp.setRifDoc(rifDoc);
docTrasp.setIdRiga(idRiga);
docTrasp.setCheckGestione(checkGestione);
docTrasp.setCitta(citta);
docTrasp.setCheckSerDoc(checkSerieDoc);
docTrasp.setCheckAnnoDoc(checkAnnoDoc);
docTrasp.setCheckVettore(checkVettore);
String tipoCalc = setupGest.getImportSetup(connect, type, format, tipoCalcVett);
if (tipoCalc != null){
String untMis = getUntMisFromTipoCalc(tipoCalc);
docTrasp.setTipoCalc(tipoCalc);
docTrasp.setUntMis(untMis);
docTrasp.setTassato(tassato);
}
listDocTrasp.add(docTrasp);
} else {
String tipoCalc = setupGest.getImportSetup(connect, type, format, tipoCalcVett);
String untMis = getUntMisFromTipoCalc(tipoCalc);
if (tipoCalc != null){
docTrasp.setTipoCalc(tipoCalc);
docTrasp.setUntMis(untMis);
docTrasp.setTassato(tassato);
}
docTrasp.setNolo(docTrasp.getNolo().add(nolo));
}
rifDocOld = rifDoc;
if (rowIterator.hasNext()){
idRiga++;
row = rowIterator.next();
rifDoc = dataFormatter.formatCellValue(row.getCell(1));
}
} while (rifDocOld.compareTo(rifDoc) == 0);
}
docCostiTrasp = checkAndImportDoc(listDocTrasp, format);
String pathFileImported = UtilityString.replaceSubString(requestDataDTO.getPathFile(), format, format + "\\imported");
UtilityFile.fileDelete(pathFileImported);
FileUtils.moveFile(new File(requestDataDTO.getPathFile()), new File(pathFileImported));
return docCostiTrasp;
}
}

View File

@@ -397,7 +397,7 @@ public class OrdikidsService {
" mtb_aart.cod_sco_art, " +
" ttb_style.prezzo_base, " +
" ttb_style.val_scatto, " +
" ttb_line.num_min_art_col " +
" ttb_line.num_min_art_col * ttb_style.flag_min_ord_linea_col as num_min_art_col " +
"FROM tvvw_agen_line INNER JOIN ttb_style ON tvvw_agen_line.cod_line = ttb_style.cod_line and ttb_style.anno_stag = tvvw_agen_line.anno_stag " +
" INNER JOIN mtb_aart ON ttb_style.cod_style = mtb_aart.cod_mart " +
" INNER JOIN ttb_line ON ttb_style.cod_line = ttb_line.cod_line " +

View File

@@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.io.File;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -174,7 +175,7 @@ public class ImportListiniAcquistoApuliaCarrefourService {
.setPercOneri(UtilityBigDecimal.isNull(x.getPercOneri(), BigDecimal.ZERO))
.setValOneri(UtilityBigDecimal.isNull(x.getValOneri(), BigDecimal.ZERO))
.setPercPromo(UtilityBigDecimal.isNull(x.getPercPromo(), BigDecimal.ZERO))
.setValPromo(UtilityBigDecimal.isNull(x.getValPromo(), BigDecimal.ZERO))
.setValPromo(BigDecimal.ZERO)
);
righeListino.addAll(mtbLisaData);
}
@@ -424,10 +425,15 @@ public class ImportListiniAcquistoApuliaCarrefourService {
String[] elencoFile = files.split("\\|");
//INSERIMENTO DATI IN TABELLE DI APPOGGIO
for (int i = 0; i < elencoFile.length; i++) {
String fileName = elencoFile[i];
for (String fileName : elencoFile) {
//Controllo se il file esiste e se non è vuoto
File file = new File(pathFile + "/" + fileName + ".csv");
String fileNamePart = UtilityString.left(elencoFile[i], 3).toUpperCase();
if (!file.exists() || !file.isFile() || file.length() <= 0) {
throw new Exception("Il file è vuoto o non esiste.");
}
String fileNamePart = UtilityString.left(fileName, 3).toUpperCase();
switch (fileNamePart) {
case "LIS":
@@ -503,8 +509,8 @@ public class ImportListiniAcquistoApuliaCarrefourService {
ps.close();
} catch (SQLException e) {
throw new Exception("Impossibile importare il file " + fileName + CommonConstants.A_CAPO + "." +
e.getMessage() + CommonConstants.A_CAPO + "." +
"Verificare il file, potrebbe essere corrotto o incompleto.");
e.getMessage() + CommonConstants.A_CAPO + "." +
"Verificare il file, potrebbe essere corrotto o incompleto.");
}
UtilityDB.trimTableColumn(conn, tableName, null);

View File

@@ -90,4 +90,12 @@ public class WMSAccettazioneController {
return ServiceRestResponse.createPositiveResponse(wmsAccettazioneService.accettazioneMerceSilos(colloCarico));
}
@RequestMapping(value = "checkIfBarcodeUlAlreadyRegistered", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse checkBarcodeUl(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam String barcodeUl ) throws Exception {
return ServiceRestResponse.createPositiveResponse(wmsAccettazioneService.checkIfBarcodeUlAlreadyRegistered(barcodeUl));
}
}

View File

@@ -716,4 +716,15 @@ public class WMSAccettazioneService {
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MvwSitArtUdcDetInventarioDTO.class);
}
public boolean checkIfBarcodeUlAlreadyRegistered(String barcodeUl) throws Exception {
String sql = Query.format(
"SELECT CAST(COUNT(*) AS BIT)\n" +
"FROM mtb_colt\n" +
"WHERE barcode_ul = %s",
barcodeUl
);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
}

View File

@@ -35,13 +35,11 @@ public class WMSDocumentService {
public Boolean checkFrumaDoc(String fornitore, String numDoc, Date dataDoc) throws Exception {
String sql =
Query.format("SELECT *\n" +
"FROM dtb_doct\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
"WHERE dtb_doct.data_doc = %s\n" +
" AND dtb_doct.cod_anag = %s\n" +
" AND dtb_doct.num_doc = %s\n" +
" AND dtb_tipi.gestione = 'A'\n" +
" AND dtb_tipi.segno_qta_car >= 1",
"FROM wdtb_doct\n" +
"WHERE wdtb_doct.data_doc = %s\n" +
" AND wdtb_doct.cod_anag = %s\n" +
" AND wdtb_doct.num_doc = %s\n" +
" AND wdtb_doct.gestione = 'A'\n",
dataDoc,
fornitore,
numDoc
@@ -49,6 +47,25 @@ public class WMSDocumentService {
List<HashMap<String, Object>> hashMaps = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
if ( hashMaps.isEmpty() ) {
sql =
Query.format("SELECT *\n" +
"FROM dtb_doct\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
"WHERE dtb_doct.data_doc = %s\n" +
" AND dtb_doct.cod_anag = %s\n" +
" AND dtb_doct.num_doc = %s\n" +
" AND dtb_tipi.gestione = 'A'\n" +
" AND dtb_tipi.segno_qta_car >= 1",
dataDoc,
fornitore,
numDoc
);
hashMaps = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
}
return !hashMaps.isEmpty();
}

View File

@@ -0,0 +1,28 @@
package it.integry.ems.retail.wms.dto;
import it.integry.ems_model.entity.MtbColt;
public class DuplicateUDSRequestDTO {
private MtbColt mtbColt;
private int numOfDuplicates;
public MtbColt getMtbColt() {
return mtbColt;
}
public DuplicateUDSRequestDTO setMtbColt(MtbColt mtbColt) {
this.mtbColt = mtbColt;
return this;
}
public int getNumOfDuplicates() {
return numOfDuplicates;
}
public DuplicateUDSRequestDTO setNumOfDuplicates(int numOfDuplicates) {
this.numOfDuplicates = numOfDuplicates;
return this;
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.ems.retail.wms.dto;
import it.integry.ems_model.entity.MtbColt;
import java.util.List;
public class DuplicateUDSResponseDTO {
private List<MtbColt> mtbColtList;
public List<MtbColt> getMtbColtList() {
return mtbColtList;
}
public DuplicateUDSResponseDTO setMtbColtList(List<MtbColt> mtbColtList) {
this.mtbColtList = mtbColtList;
return this;
}
}

View File

@@ -86,4 +86,11 @@ public class WMSSpedizioneController {
}
@RequestMapping(value = "duplicateUDSRow", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse duplicateUDSRow(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestBody DuplicateUDSRequestDTO duplicateUDSRowRequestDTO) throws Exception {
return ServiceRestResponse.createPositiveResponse(wmsSpedizioneService.duplicateUDSRow(duplicateUDSRowRequestDTO));
}
}

View File

@@ -116,7 +116,7 @@ public class WMSSpedizioneService {
.distinct()
.collect(Collectors.toList());
if(foundNumOrds.size() == 1)
if (foundNumOrds.size() == 1)
udsMtbColt
.setNumOrd(foundNumOrds.get(0));
@@ -125,7 +125,7 @@ public class WMSSpedizioneService {
.distinct()
.collect(Collectors.toList());
if(foundDataOrds.size() == 1)
if (foundDataOrds.size() == 1)
udsMtbColt
.setDataOrd(foundDataOrds.get(0));
@@ -134,7 +134,7 @@ public class WMSSpedizioneService {
.distinct()
.collect(Collectors.toList());
if(foundRifOrds.size() == 1)
if (foundRifOrds.size() == 1)
udsMtbColt
.setRifOrd(foundRifOrds.get(0));
@@ -143,7 +143,7 @@ public class WMSSpedizioneService {
.distinct()
.collect(Collectors.toList());
if(foundCodAnagOrds.size() == 1)
if (foundCodAnagOrds.size() == 1)
udsMtbColt
.setCodAnag(foundCodAnagOrds.get(0));
@@ -498,4 +498,20 @@ public class WMSSpedizioneService {
entityProcessor.processEntity(mtbColt, multiDBTransactionManager);
}
public DuplicateUDSResponseDTO duplicateUDSRow(DuplicateUDSRequestDTO deleteUDSRowRequestDTO) throws Exception {
List<MtbColt> mtbColtList = new ArrayList<>();
MtbColt mtbColt = deleteUDSRowRequestDTO.getMtbColt();
mtbColt.setOperation(OperationType.INSERT);
for (int i = 0; i < deleteUDSRowRequestDTO.getNumOfDuplicates(); i++) {
mtbColtList.add(mtbColt.setNumCollo(null));
}
entityProcessor.processEntityList(mtbColtList, true);
return new DuplicateUDSResponseDTO().setMtbColtList(mtbColtList);
}
}