Aggiunte procedure di esportazione ordini, clienti\fornitori e articoli

This commit is contained in:
2024-01-17 09:12:35 +01:00
parent f1f1a2ebe2
commit 5b65a2b204
6 changed files with 514 additions and 4 deletions

View File

@@ -48,8 +48,13 @@ public class OrdiniExporter extends BaseEntityExporter implements IEntityExporte
entityExportResponse = ordiniAcquistoExportServices.exportOrdiniPazienza(type, format, whereCond);
break;
case SLIM2K:
ordiniVenditaExportServices = ContextLoader.getCurrentWebApplicationContext().getBean(OrdiniVenditaExportServices.class);
ordiniVenditaExportServices.exportOrdiniVenditaSlim2K(type, format, whereCond);
if (type.equalsIgnoreCase("ORDINI VENDITA")){
ordiniVenditaExportServices = ContextLoader.getCurrentWebApplicationContext().getBean(OrdiniVenditaExportServices.class);
ordiniVenditaExportServices.exportOrdiniVenditaSlim2K(type, format, whereCond);
}else{
ordiniAcquistoExportServices = ContextLoader.getCurrentWebApplicationContext().getBean(OrdiniAcquistoExportServices.class);
ordiniAcquistoExportServices.exportOrdiniSlim2K(type, format);
}
break;
case ECRSAT:
ordiniVenditaExportServices = ContextLoader.getCurrentWebApplicationContext().getBean(OrdiniVenditaExportServices.class);

View File

@@ -4,6 +4,7 @@ import com.google.common.io.Files;
import it.integry.common.var.CommonConstants;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.service.HttpRestWrapper;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDirs;
import it.integry.ems.utility.UtilityFile;
@@ -23,6 +24,7 @@ import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -353,7 +355,7 @@ public class OrdiniAcquistoExportServices {
+ UtilityString.FillString(rifOrd, ' ', 7, "R")
+ UtilityString.FillString(String.valueOf(rigaOrd), '0', 5, "L");
stringFile = stringFile + "\r\n";
stringFile = stringFile + "\r ";
fileString.append(stringFile);
}
Integer countRowFile = (fileString.toString()).split(CommonConstants.A_CAPO).length;
@@ -511,7 +513,6 @@ public class OrdiniAcquistoExportServices {
}
public EntityExportResponse exportOrdiniVendita(String type, String format) throws Exception {
Connection connection = multiDBTransactionManager.getPrimaryConnection();
@@ -541,6 +542,88 @@ public class OrdiniAcquistoExportServices {
return entityExportResponse;
}
public EntityExportResponse exportOrdiniSlim2K(String type, String format) throws Exception{
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<List<File>>();
Connection conn = multiDBTransactionManager.getPrimaryConnection();
Map<String, String> setup = setupGest.getExportSetupSection(conn, type, format);
String url = setup.get("URL");
if (UtilityString.isNullOrEmpty(url)) {
throw new Exception("Attenzione non è stata definito l'URL.");
}
String sql = "DELETE FROM Slim2k.dbo.inboundorders_import";
Statement cmd = multiDBTransactionManager.getPrimaryConnection().createStatement();
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
sql = "INSERT INTO Slim2k.dbo.inboundorders_import( " +
"firm, " +
"stype, " +
"scode, " +
"doctype, " +
"docdate, " +
"docnum, " +
"docrow, " +
"rowstate, " +
"item, " +
"refitem, " +
"unit, " +
"qtyorder, " +
"descr, " +
"dlydate1, " +
"state, " +
"rectype, " +
"rowtype, " +
"whouse, " +
"qtyorderalt ) " +
"SELECT 'FOD', " +
"'S', " +
"dtb_ordt.cod_anag + dtb_ordt.listino, " +
"'ORD', " +
"Convert(integer, convert(varchar(10), dtb_ordt.data_ord, 112)) as data_ord, " +
"Convert(varchar(15),dtb_ordt.num_ord) as num_ord, " +
"dtb_ordr.riga_ord, " +
"'I', " +
"dtb_ordr.cod_mart, " +
"dtb_ordr.cod_art_for, " +
"dtb_ordr.unt_ord, " +
"convert(numeric(10,3),dtb_ordr.qta_ord) as qta, " +
"dtb_ordr.descrizione, " +
"Convert(integer, convert(varchar(10),dtb_ordr.data_cons, 112)), " +
"'I', " +
"'A', " +
"'D', " +
"dtb_ordt.cod_mdep, " +
"dtb_ordr.num_cnf " +
"FROM [format].[dbo].dtb_ordt dtb_ordt, [format].[dbo].dtb_ordr dtb_ordr " +
"WHERE dtb_ordt.gestione = 'A' AND " +
"dtb_ordt.gestione = dtb_ordr.gestione AND " +
"dtb_ordt.data_ord = dtb_ordr.data_ord AND " +
"dtb_ordt.num_ord = dtb_ordr.num_ord AND " +
"dtb_ordt.listino IS NOT NULL AND " +
"dtb_ordt.cod_mdep in ('01', '03', '04', '06' ) AND " +
"dtb_ordt.data_ord >= DateAdd(Day, -120, GETDATE()) AND " +
"dtb_ordr.flag_evaso ='I' and " +
"dtb_ordt.flag_annulla ='N' and " +
"dtb_ordt.flag_evaso_forzato = 'N'";
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
StringBuilder responseBody = new StringBuilder();
int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, null);
if (status != 200) {
throw new Exception("Errore nell' esportazione dell'anagrafica <br/>Body: " + responseBody);
}
return entityExportResponse;
}
}

View File

@@ -31,6 +31,9 @@ public class ArticoliExporter extends BaseEntityExporter implements IEntityExpor
case WOOCOMMERCE_STOCK:
WoocommerceService woocommerceService = context.getBean(WoocommerceService.class);
return woocommerceService.exportStockList(type, format, setupGest);
case SLIM2K:
Slim2kService slim2kService = context.getBean(Slim2kService.class);
return slim2kService.export(type, format);
default:
throw new Exception(String.format("Formato %s non supportato", format));
}
@@ -45,6 +48,7 @@ public class ArticoliExporter extends BaseEntityExporter implements IEntityExpor
VIRTUEMART("VIRTUEMART"),
WBC_STOCK_LIST("GET_STOCK_LIST"),
YOCABE("YOCABE"),
SLIM2K("SLIM2K"),
WOOCOMMERCE_STOCK("WOOCOMMERCE_STOCK");
private String text;

View File

@@ -0,0 +1,220 @@
package it.integry.ems.product.export.services;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.service.HttpRestWrapper;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.service.SetupGest;
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 java.io.File;
import java.sql.Connection;
import java.sql.Statement;
import java.util.List;
import java.util.Map;
@Service
@Scope("request")
public class Slim2kService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private SetupGest setupGest;
public EntityExportResponse export(String type, String format) throws Exception {
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<List<File>>();
Connection conn = multiDBTransactionManager.getPrimaryConnection();
Map<String, String> setup = setupGest.getExportSetupSection(conn, type, format);
String url = setup.get("URL");
if (UtilityString.isNullOrEmpty(url)) {
throw new Exception("Attenzione non è stata definito l'URL.");
}
item(url);
translateItem(url);
moveUnits(url);
return entityExportResponse;
}
private void item(String url) throws Exception{
String sql = "DELETE FROM Slim2k.dbo.items_import";
Statement cmd = multiDBTransactionManager.getPrimaryConnection().createStatement();
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
sql = "INSERT INTO Slim2k.dbo.items_import(" +
"firm," +
"item," +
"type," +
"description," +
"ean," +
"itm4par," +
"par4plt," +
"plttype," +
"unit," +
"unitalt," +
"cfactor," +
"prdcode," +
"category," +
"state," +
"itemvar5," +
"wgross," +
"flagstock," +
"flag5," +
"wnet," +
"timeduration," +
"ratetolerance)" +
"SELECT 'FOD'," +
"mtb_aart.cod_mart," +
"'I'," +
"mtb_aart.descrizione," +
"left(mtb_aart.bar_code,13)," +
"CAST(mtb_aart.qta_cnf AS INTEGER)," +
"CAST(mtb_aart.colli_pedana AS INTEGER)," +
"mtb_aart.cod_tcol_UL," +
"mtb_aart.unt_mis," +
"mtb_aart.unt_mis2," +
"Convert(numeric(8,4),round(mtb_aart.rap_conv2,4))," +
"mtb_aart.cod_mgrp," +
"mtb_aart.cod_msgr," +
"'A'," +
"mtb_aart.cod_msfa," +
"case when mtb_aart.qta_cnf = 0 then convert(numeric(10,3),mtb_aart.peso_kg) else" +
" convert(numeric(10,3),(mtb_aart.peso_kg * mtb_aart.qta_cnf+mtb_aart.tara_kg)) end as PesoLordPz," +
"'D,W' as flagstock," +
"'1' as state," +
"case when mtb_aart.qta_cnf = 0 then convert(numeric(10,3),mtb_aart.peso_kg) else" +
" convert(numeric(10,3),(mtb_aart.peso_kg * mtb_aart.qta_cnf)) end as PesoNettoPz," +
"mtb_aart.gg_scad_partita, 10 " +
"FROM format.dbo.mtb_aart " +
"WHERE mtb_aart.flag_stato = 'A' and cod_mart not in ('130100014','040200962','011000513','011000475','011000298','011000252','011000254','011000819')";
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
StringBuilder responseBody = new StringBuilder();
url = url.replace("%s", "items_import");
int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, null);
if (status != 200) {
throw new Exception("Errore nell' esportazione degli articoli <br/>Body: " + responseBody);
}
}
private void translateItem(String url) throws Exception{
String sql = "DELETE FROM Slim2k.dbo.translateitems_import";
Statement cmd = multiDBTransactionManager.getPrimaryConnection().createStatement();
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
sql = "INSERT INTO Slim2k.dbo.translateitems_import( " +
"firm, " +
"scode, " +
"stype, " +
"item, " +
"sitem, " +
"description) " +
" SELECT 'FOD' as DB, " +
"atb_forn.cod_anag + atb_forn.cod_alis as listino, " +
"'S' as flag, " +
"mtb_lisa.cod_mart, " +
"Left(mtb_lisa.cod_art_for,20), " +
"isnull(mtb_lisa.descr_art_forn,mtb_aart.descrizione) as descrizione " +
"FROM format.dbo.atb_forn, format.dbo.mtb_lisa, " +
" format.dbo.atb_list, format.dbo.mtb_aart " +
"WHERE atb_forn.cod_alis = atb_list.cod_alis AND " +
"atb_list.cod_alis = mtb_lisa.cod_alis AND " +
"mtb_aart.cod_mart = mtb_lisa.cod_mart AND " +
"mtb_aart.flag_stato = 'A' AND " +
"atb_forn.cod_alis IS NOT NULL " +
"UNION " +
"SELECT 'FOD', " +
"atb_forn.cod_anag + vtb_dest.cod_alis, " +
"'S', " +
"mtb_lisa.cod_mart, " +
"Left(mtb_lisa.cod_art_for,20), " +
"isnull(mtb_lisa.descr_art_forn,mtb_aart.descrizione) " +
"FROM format.dbo.atb_forn , format.dbo.vtb_dest , " +
" format.dbo.mtb_lisa, format.dbo.atb_list, format.dbo.mtb_aart " +
"WHERE vtb_dest.cod_alis = atb_list.cod_alis AND " +
"atb_forn.cod_anag = vtb_dest.cod_anag AND " +
"mtb_aart.cod_mart = mtb_lisa.cod_mart AND " +
"atb_list.cod_alis = mtb_lisa.cod_alis AND " +
"mtb_aart.flag_stato = 'A' AND " +
"vtb_dest.cod_alis is not null " +
"union all " +
"select distinct * from " +
"(select 'FOD' as Firm, 'EANb' as scode,'S' as sType, mtb_aart.cod_mart, right(mtb_aart_bar_code.cod_barre,13) cod_art_for, " +
"mtb_aart.descrizione " +
"from format.dbo.mtb_aart_bar_code, format.dbo.mtb_aart " +
"where mtb_aart.cod_mart = mtb_aart_bar_code.cod_mart AND " +
"mtb_aart.flag_stato = 'A' " +
"union all " +
"select 'FOD', 'EANb','S', mtb_aart.cod_mart, right(mtb_aart.cod_barre_imb,13), " +
"mtb_aart.descrizione " +
"from format.dbo.mtb_aart " +
"where mtb_aart.cod_barre_imb is not null and mtb_aart.flag_stato = 'A' " +
"union all " +
"select 'FOD', 'EANb','S', mtb_aart.cod_mart, mtb_aart.bar_code, " +
"mtb_aart.descrizione " +
"from format.dbo.mtb_aart " +
"where len(mtb_aart.bar_code) <= 8 and mtb_aart.flag_stato = 'A' " +
" " +
") Eanb";
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
StringBuilder responseBody = new StringBuilder();
url = url.replace("%s", "translateitems_import");
int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, null);
if (status != 200) {
throw new Exception("Errore nell' esportazione degli articoli <br/>Body: " + responseBody);
}
}
private void moveUnits(String url) throws Exception{
String sql = "DELETE FROM Slim2k.dbo.moveunits_import";
Statement cmd = multiDBTransactionManager.getPrimaryConnection().createStatement();
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
sql = "INSERT INTO Slim2k.dbo.moveunits_import(firm, " +
"type, " +
"moveunit, " +
"descr, " +
"cnt) " +
"select 'FOD', " +
"'P', " +
"mtb_tcol.cod_tcol, " +
"mtb_tcol.descrizione, " +
"row_number() OVER (ORDER BY mtb_tcol.cod_tcol) " +
" from format.dbo.mtb_tcol where mtb_tcol.flag_UI_UL = 'UL'";
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
StringBuilder responseBody = new StringBuilder();
url = url.replace("%s", "moveunits_import");
int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, null);
if (status != 200) {
throw new Exception("Errore nell' esportazione degli articoli <br/>Body: " + responseBody);
}
}
}

View File

@@ -5,6 +5,7 @@ import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.export.base.IEntityExporter;
import it.integry.ems.system.export.services.anagrafiche.AnagraficaIsidService;
import it.integry.ems.system.export.services.anagrafiche.AnagraficaLaranciaService;
import it.integry.ems.system.export.services.anagrafiche.AnagraficaSlim2kService;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
@@ -23,6 +24,9 @@ public class AnagraficaExporter extends BaseEntityExporter implements IEntityExp
case VIRTUEMART:
AnagraficaLaranciaService anagraficaLaranciaService = context.getBean(AnagraficaLaranciaService.class);
return anagraficaLaranciaService.exportClienti(type, format);
case SLIM2K:
AnagraficaSlim2kService slim2kService = context.getBean(AnagraficaSlim2kService.class);
return slim2kService.export(type, format);
default:
throw new Exception(String.format("Formato %s non supportato", format));
}
@@ -34,6 +38,7 @@ public class AnagraficaExporter extends BaseEntityExporter implements IEntityExp
public enum Format {
ISID("ISID"),
SLIM2K("SLIM2K"),
VIRTUEMART("VIRTUEMART");
private String text;

View File

@@ -0,0 +1,193 @@
package it.integry.ems.system.export.services.anagrafiche;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.service.HttpRestWrapper;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.service.SetupGest;
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 java.io.File;
import java.sql.Connection;
import java.sql.Statement;
import java.util.List;
import java.util.Map;
@Service
@Scope("request")
public class AnagraficaSlim2kService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private SetupGest setupGest;
public EntityExportResponse export(String type, String format) throws Exception {
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<List<File>>();
Connection conn = multiDBTransactionManager.getPrimaryConnection();
Map<String, String> setup = setupGest.getExportSetupSection(conn, type, format);
String url = setup.get("URL");
if (UtilityString.isNullOrEmpty(url)) {
throw new Exception("Attenzione non è stata definito l'URL.");
}
customers(url);
destinations(url);
suppliers(url);
return entityExportResponse;
}
private void customers(String url) throws Exception{
String sql = "DELETE FROM Slim2k.dbo.customers_import";
Statement cmd = multiDBTransactionManager.getPrimaryConnection().createStatement();
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
sql = "INSERT INTO Slim2k.dbo.customers_import( " +
"firm, " +
"ccode, " +
"ctype, " +
"cname, " +
"vatcode, " +
"address1, " +
"city1, " +
"zipcode1, " +
"province1, " +
"country1, " +
"phone, " +
"language, " +
"state) " +
"SELECT 'FOD', " +
"gtb_anag.cod_anag, " +
"'C', " +
"gtb_anag.rag_soc, " +
"gtb_anag.part_iva, " +
"gtb_anag.indirizzo, " +
"gtb_anag.citta, " +
"gtb_anag.cap, " +
"gtb_anag.prov, " +
"gtb_anag.nazione, " +
"gtb_anag.telefono, " +
"'1', " +
"'A' " +
"FROM format.dbo.gtb_anag as gtb_anag " +
"WHERE gtb_anag.cod_anag in (select cod_anag from format.dbo.vvw_clienti_slim2k) ";
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
StringBuilder responseBody = new StringBuilder();
url = url.replace("%s", "customers_import");
int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, null);
if (status != 200) {
throw new Exception("Errore nell' esportazione dell'anagrafica <br/>Body: " + responseBody);
}
}
private void destinations(String url) throws Exception{
String sql = "SELECT 'FOD', " +
"vtb_dest.cod_vdes, " +
"vtb_dest.cod_anag, " +
"'C', " +
"CASE WHEN vtb_dest.destinatario = 'IDEM' THEN gtb_anag.rag_soc ELSE vtb_dest.destinatario END, " +
"gtb_anag.part_iva, " +
"CASE WHEN vtb_dest.destinatario = 'IDEM' THEN gtb_anag.indirizzo ELSE vtb_dest.indirizzo END, " +
"CASE WHEN vtb_dest.destinatario = 'IDEM' THEN gtb_anag.citta ELSE vtb_dest.citta END, " +
"CASE WHEN vtb_dest.destinatario = 'IDEM' THEN gtb_anag.cap ELSE vtb_dest.cap END, " +
"CASE WHEN vtb_dest.destinatario = 'IDEM' THEN gtb_anag.prov ELSE vtb_dest.prov END, " +
"CASE WHEN vtb_dest.destinatario = 'IDEM' THEN gtb_anag.nazione ELSE vtb_dest.nazione END, " +
"CASE WHEN vtb_dest.destinatario = 'IDEM' THEN gtb_anag.telefono ELSE vtb_dest.tel END, " +
"'1', " +
"'A' " +
"FROM [format].[dbo].vtb_dest as vtb_dest, [format].[dbo].gtb_anag as gtb_anag " +
"WHERE vtb_dest.cod_anag = gtb_anag.cod_anag AND gtb_anag.cod_anag in ('C0557','C0242','C0001')";
Statement cmd = multiDBTransactionManager.getPrimaryConnection().createStatement();
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
StringBuilder responseBody = new StringBuilder();
url = url.replace("%s", "destinations_import");
int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, null);
if (status != 200) {
throw new Exception("Errore nell' esportazione dell'anagrafica <br/>Body: " + responseBody);
}
}
private void suppliers(String url) throws Exception{
String sql = "DELETE FROM Slim2k.dbo.suppliers_import";
Statement cmd = multiDBTransactionManager.getPrimaryConnection().createStatement();
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
sql = "INSERT INTO Slim2k.dbo.suppliers_import( " +
"firm, " +
"scode,stype, " +
"sname, " +
"vatcode, " +
"address1, " +
"city1, " +
"zipcode1, " +
"province1, " +
"country1, " +
"phone, " +
"state) " +
"SELECT 'FOD', " +
"atb_forn.cod_anag + atb_forn.cod_alis, " +
"'S', " +
"gtb_anag.rag_soc, " +
"substring(gtb_anag.part_iva,1,11), " +
"substring(gtb_anag.indirizzo,1,64), " +
"gtb_anag.citta, " +
"substring(gtb_anag.cap,1,5), " +
"gtb_anag.prov, " +
"substring(gtb_anag.nazione,1,2), " +
"substring(gtb_anag.telefono,1,24), " +
"'A' " +
"FROM format.dbo.atb_forn, format.dbo.gtb_anag " +
"WHERE atb_forn.cod_anag = gtb_anag.cod_anag AND " +
"atb_forn.cod_alis IS NOT NULL " +
"union " +
"SELECT 'FOD', " +
"atb_forn.cod_anag + vtb_dest.cod_alis, " +
"'S', " +
"gtb_anag.rag_soc, " +
"substring(gtb_anag.part_iva,1,11), " +
"substring(gtb_anag.indirizzo,1,64), " +
"gtb_anag.citta, " +
"substring(gtb_anag.cap,1,5), " +
"gtb_anag.prov, " +
"substring(gtb_anag.nazione,1,2), " +
"substring(gtb_anag.telefono,1,24), " +
"'A' " +
"FROM format.dbo.atb_forn , format.dbo.vtb_dest, format.dbo.gtb_anag " +
"WHERE atb_forn.cod_anag = gtb_anag.cod_anag AND " +
"atb_forn.cod_anag = vtb_dest.cod_anag AND " +
"vtb_dest.cod_alis is not null ";
cmd.executeUpdate(sql);
multiDBTransactionManager.commitAll();
StringBuilder responseBody = new StringBuilder();
url = url.replace("%s", "suppliers_import");
int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, null);
if (status != 200) {
throw new Exception("Errore nell' esportazione dell'anagrafica <br/>Body: " + responseBody);
}
}
}