Finish Hotfix-61

This commit is contained in:
2024-05-28 14:45:39 +02:00
3 changed files with 143 additions and 28 deletions

View File

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

View File

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

View File

@@ -13,10 +13,7 @@ import it.integry.ems_model.entity.WtbUsersInfo;
import it.integry.ems_model.resolver.SqlFieldHolder;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.UtilityZip;
import it.integry.ems_model.utility.*;
import org.apache.commons.io.FilenameUtils;
import org.apache.http.entity.ContentType;
import org.apache.logging.log4j.LogManager;
@@ -71,7 +68,8 @@ public class OrdiniVenditaExportServices {
}
try {
String listaSingoloOrdine = setup.get("LISTA_SINGOLO_ORDINE");
boolean listaSingoloOrdine = UtilityHashMap.getValueIfExists(setup, "LISTA_SINGOLO_ORDINE", "N"). equalsIgnoreCase("S");
boolean ragguppaArticolo = UtilityHashMap.getValueIfExists(setup, "RAGGRUPPA_ARTICOLI", "N"). equalsIgnoreCase("S");
String sql =
"SELECT data_ord, " +
@@ -82,23 +80,15 @@ public class OrdiniVenditaExportServices {
"WHERE gestione = 'V' ";
sql = UtilityDB.addwhereCond(sql, whereCond, false);
PreparedStatement ps = multiDBTransactionManager.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
Integer numOrd = null;
String codMdep = null, listCode = null;
Date dataOrd = null;
if (rs.next()) {
dataOrd = rs.getDate("data_ord");
numOrd = rs.getInt("num_ord");
codMdep = rs.getString("cod_mdep");
listCode = rs.getString("listcode");
}
rs.close();
ps.close();
HashMap<String, Object> datiOrdine = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql);
if (listCode == null) {
if (datiOrdine == null || datiOrdine.size() == 0 )
throw new Exception("Nessun ordine trovato");
}
Date dataOrd = UtilityHashMap.getValueIfExists(datiOrdine, "data_ord");
Integer numOrd = UtilityHashMap.getValueIfExists(datiOrdine,"num_ord");
String codMdep = UtilityHashMap.getValueIfExists(datiOrdine,"cod_mdep");
String listCode = UtilityHashMap.getValueIfExists(datiOrdine,"listcode");
sql =
"DELETE FROM slim2k.dbo.shippingplan_import " +
@@ -108,6 +98,7 @@ public class OrdiniVenditaExportServices {
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
sql =
Query.format(
"INSERT INTO slim2k.dbo.shippingplan_import( " +
"rowstate, " +
"firm, " +
@@ -131,25 +122,21 @@ public class OrdiniVenditaExportServices {
"qtyorderalt, " +
"qtyreservedalt) " +
"SELECT * " +
" FROM dbo.slim2k_exportOrdV( " + UtilityDB.valueToString(codMdep) + ", "
+ UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + ", "
+ UtilityDB.valueToString(numOrd) + ", "
+ UtilityDB.valueToString(listCode) + ") ";
" FROM dbo.slim2k_exportOrdV( %s, %s, %s, %s, %s, %s)",
codMdep, dataOrd, numOrd, listCode, listaSingoloOrdine, ragguppaArticolo);
int row = cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
StringBuilder responseBody;
HashMap<String, String> queryParams = new HashMap<String, String>();
queryParams.put("prj", "FOD");
queryParams.put("listtype", "SHP");
queryParams.put("listcode", String.valueOf(listCode));
responseBody = new StringBuilder();
StringBuilder responseBody = new StringBuilder();
int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, queryParams);
if (status != 200) {
throw new Exception("Errore nell' esportazione della lista " + String.valueOf(listCode) + "<br />Body: " + responseBody);
throw new Exception("Errore nell' esportazione della lista " + listCode + "<br />Body: " + responseBody);
} else {
logger.info(responseBody);
}