Importazione ordini di vendita sevenbar

This commit is contained in:
2024-09-19 16:41:10 +02:00
parent 955e6d37c2
commit 18acbfa324

View File

@@ -38,6 +38,8 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static it.integry.ems.rules.completing.QueryRules.getSingleValue;
@Service
@Scope("request")
public class PuddyService {
@@ -184,7 +186,8 @@ public class PuddyService {
return List;
}
private ServiceRestResponse importOrdine(MultiDBTransactionManager multiDBTransactionManager, String serie, Date dataOrdProv, Integer numOrdProv, String flagTD, String codVage) throws Exception {
@Deprecated
private ServiceRestResponse importOrdineOld(MultiDBTransactionManager multiDBTransactionManager, String serie, Date dataOrdProv, Integer numOrdProv, String flagTD, String codVage) throws Exception {
String sql, gestione = "V", erroreMsg = "";
PreparedStatement info = null;
ResultSet res = null;
@@ -413,6 +416,291 @@ public class PuddyService {
return List;
}
private ServiceRestResponse importOrdine(MultiDBTransactionManager multiDBTransactionManager, String serieOrd, Date dataOrdProv, Integer numOrdProv, String flagTD, String codVage) throws Exception {
String codFornTDOld = "";
String aziendaOld = "";
String sql, gestione = "V", erroreMsg = "";
PreparedStatement info = null;
ResultSet res = null;
ServiceRestResponse List = new ServiceRestResponse();
DtbOrdt ordT = null;
DtbOrdr ordR = null;
BigDecimal scontoMerce = new BigDecimal(100);
BigDecimal cambioMerce = new BigDecimal(100);
BigDecimal scontoFreschezza = new BigDecimal(100);
Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection();
String gestioneScontofreschezza = UtilityString.streNull(setupGest.getSetup(conn, "W_MLUPDSRV_CONFIG_DLG", "SETUP", "GESTIONE_SCONTO_FRESCHEZZA"));
// Creazione condizione di where righe ordine
String condWhereRigheOrdine =
" x_puddy3_prev_ordini.flag_elaborato = 'N' AND " +
" x_puddy3_prev_ordini.serie = " + UtilityDB.valueToString(serieOrd) + " AND " +
" x_puddy3_prev_ordini.data_ord_provv= " + UtilityDB.valueDateToString(dataOrdProv, CommonConstants.DATE_FORMAT_YMD) + " AND " +
" x_puddy3_prev_ordini.num_ord_provv = " + UtilityDB.valueToString(numOrdProv) + " AND " +
condEsclResi;
String profileDB = multiDBTransactionManager.getPrimaryDatasource().getProfile();
// TODO: gestire controllo e sovracrittura ordine collegandosi ad entrambi i database e leggendo la serie dalla vista di sevenbar x_puddy3_prev_intercode_giro_clienti
// Controllo esistenza ordine
sql =
"SELECT count(*) " +
"FROM dtb_ordt " +
"WHERE gestione = 'V' AND " +
" dtb_ordt.serie = " + UtilityDB.valueToString(serieOrd) + " AND " +
" DATEPART(year, dtb_ordt.data_ord) = " + UtilityDB.valueDateToString(dataOrdProv, "yyyy") + " AND " +
" dtb_ordt.num_ord_provv = " + UtilityDB.valueToString(numOrdProv);
Integer count = (Integer) getSingleValue(conn, sql);
if (count != 0) {setLog(logList, dataOrdProv, numOrdProv, "ORDINE GIA' IMPORTATO", "ORDINE AGENTE " + codVage);}
/*ArrayNode arrayNode = objectMapper.createArrayNode();*/
/*ArrayNode arrayNodeVG = objectMapper.createArrayNode();*/
if ("S".equals(flagTD)) {
// Acquisizione dati ordine
sql = "SELECT x_puddy3_prev_ordini.cod_vage" +
" ,mtb_aart_anag.cod_anag as cod_forn_td " +
" ,x_puddy3_prev_ordini.riga_ord" +
" ,x_puddy3_prev_ordini.cod_anag" +
" ,x_puddy3_prev_ordini.cod_vdes" +
" ,x_puddy3_prev_ordini.cod_mart" +
" ,x_puddy3_prev_ordini.qta_ord" +
" ,x_puddy3_prev_ordini.qta_omg" +
" ,x_puddy3_prev_ordini.qta_resi" +
" ,x_puddy3_prev_ordini.flag_tipo_reso" +
" ,x_puddy3_prev_ordini.data_cons" +
" ,x_puddy3_prev_ordini.partita_mag" +
" ,x_puddy3_prev_agenti_info.deposito " +
" ,x_puddy3_prev_ordini.sconto1 " +
" ,x_puddy3_prev_ordini.sconto2 " +
" ,x_puddy3_prev_ordini.sconto3 " +
" ,x_puddy3_prev_ordini.sconto4 " +
" ,x_puddy3_prev_ordini.cod_promo " +
" ,x_puddy3_prev_intercode_clienti_VG.cod_anag_vg, " +
" ,x_puddy3_prev_intercode_clienti_VG.cod_vdes_vg " +
" ,x_puddy3_prev_intercode_clienti_VG.cod_vage " +
" ,x_puddy3_prev_griglie_art_vg.cod_mart as cod_mart_vg " +
" ,case when x_puddy3_prev_griglie_art_vg.cod_mart not is null then 'SEVENBAR' else 'VG' end as azienda " +
" FROM x_puddy3_prev_ordini left outer join x_puddy3_prev_intercode_clienti_VG on x_puddy3_prev_ordini.cod_anag = x_puddy3_prev_intercode_clienti_VG.cod_anag and " +
" x_puddy3_prev_ordini.cod_vdes = x_puddy3_prev_intercode_clienti_VG.cod_vdes " +
" x_puddy3_prev_griglie_art_vg on x_puddy3_prev_ordini.cod_mart = x_puddy3_prev_griglie_art_vg.cod_mart , " +
" vtb_clie, " +
" x_puddy3_prev_agenti_info, " +
" mtb_aart_anag " +
"WHERE x_puddy3_prev_ordini.cod_anag = vtb_clie.cod_anag AND " +
" x_puddy3_prev_agenti_info.codAgente = x_puddy3_prev_ordini.cod_vage AND " +
" mtb_aart_anag.cod_mart = x_puddy3_prev_ordini.cod_mart AND " +
condWhereRigheOrdine +
"ORDER BY 1, 2, 3";
} else {
sql = "SELECT x_puddy3_prev_ordini.cod_vage" +
" ,CONVERT(varchar(15), 'NO_TD') as cod_forn_td " +
" ,x_puddy3_prev_ordini.riga_ord" +
" ,x_puddy3_prev_ordini.cod_anag" +
" ,x_puddy3_prev_ordini.cod_vdes" +
" ,x_puddy3_prev_ordini.cod_mart" +
" ,x_puddy3_prev_ordini.qta_ord" +
" ,x_puddy3_prev_ordini.qta_omg" +
" ,x_puddy3_prev_ordini.qta_resi" +
" ,x_puddy3_prev_ordini.flag_tipo_reso" +
" ,x_puddy3_prev_ordini.data_cons" +
" ,x_puddy3_prev_ordini.partita_mag" +
" ,x_puddy3_prev_agenti_info.deposito " +
" ,x_puddy3_prev_ordini.sconto1 " +
" ,x_puddy3_prev_ordini.sconto2 " +
" ,x_puddy3_prev_ordini.sconto3 " +
" ,x_puddy3_prev_ordini.sconto4 " +
" ,x_puddy3_prev_ordini.cod_promo " +
" ,x_puddy3_prev_intercode_clienti_VG.cod_anag_vg, " +
" ,x_puddy3_prev_intercode_clienti_VG.cod_vdes_vg " +
" ,x_puddy3_prev_intercode_clienti_VG.cod_vage " +
" ,case when x_puddy3_prev_griglie_art_vg.cod_mart not is null then 'SEVENBAR' else 'VG' end as azienda " +
" ,x_puddy3_prev_intercode_clienti_VG.serie_vg " +
" FROM x_puddy3_prev_ordini left outer join x_puddy3_prev_intercode_clienti_VG on x_puddy3_prev_ordini.cod_anag = x_puddy3_prev_intercode_clienti_VG.cod_anag and " +
" x_puddy3_prev_ordini.cod_vdes = x_puddy3_prev_intercode_clienti_VG.cod_vdes " +
" x_puddy3_prev_griglie_art_vg on x_puddy3_prev_ordini.cod_mart = x_puddy3_prev_griglie_art_vg.cod_mart , " +
" vtb_clie, " +
" x_puddy3_prev_agenti_info " +
" WHERE x_puddy3_prev_ordini.cod_anag = vtb_clie.cod_anag AND " +
" x_puddy3_prev_agenti_info.codAgente = x_puddy3_prev_ordini.cod_vage AND " +
condWhereRigheOrdine +
"ORDER BY 22, 1, 2, 3";
}
info = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
res = info.executeQuery();
int rows = UtilityDB.countRow(res);
int i = 0;
while (res.next()) {
String codFornTD = res.getString(2);
String codAnag = res.getString(4);
String codVdes = res.getString(5);
String codMart = res.getString(6);
BigDecimal qtaOrd = res.getBigDecimal(7);
BigDecimal qtaOmg = res.getBigDecimal(8);
BigDecimal qtaResi = res.getBigDecimal(9);
String flagTipoReso = res.getString(10);
Date dataCons = res.getDate(11);
String partitaMag = res.getString(12);
String codMdep = res.getString(13);
BigDecimal sconto5 = res.getBigDecimal(14);
BigDecimal sconto6 = res.getBigDecimal(15);
BigDecimal sconto7 = res.getBigDecimal(16);
BigDecimal sconto8 = res.getBigDecimal(17);
String codPromo = res.getString(18);
String codAnagVG = res.getString(19);
String codVdesVG = res.getString(20);
String codVageVG = res.getString(21);
String codMartVG = res.getString(22);
String azienda = res.getString(23);
String serieVG = res.getString(24);
i++;
String codVageAss = codVage;
String codAnagAss = codAnag;
String codVdesAss = codVdes;
String codMartAss = codMart;
String serieAss = serieOrd;
if (azienda.compareTo("VG") == 0){
codVageAss = codVageVG;
codAnagAss = codAnagVG;
codVdesAss = codVdesVG;
codMartAss = codMartVG;
serieAss = serieVG;
}
// Insermento testata ordine
if (codFornTDOld.compareTo(codFornTD) != 0 || azienda.compareTo(aziendaOld) != 0) {
ordT = new DtbOrdt();
ordT.setOperation(OperationType.INSERT);
ordT.setGestione(gestione);
ordT.setCodAnag(codAnagAss);
ordT.setCodVdes(codVdesAss);
ordT.setDataOrd(dataOrdProv);
ordT.setNumOrdProvv(numOrdProv);
ordT.setCodVage(codVageAss);
ordT.setCodMdep(codMdep);
ordT.setSerie(serieAss);
if ("S".equals(flagTD)) {
ordT.setCodFornTd(codFornTD);
}
}
// Inserimento righe ordine
ordR = new DtbOrdr();
ordR.setOperation(OperationType.INSERT);
ordR.setCodMart(codMartAss);
ordR.setPartitaMag(partitaMag);
ordR.setCodPromo(codPromo);
if (qtaOrd.compareTo(BigDecimal.ZERO) != 0) {
/*VENDUTO*/
ordR.setQtaOrd(qtaOrd);
ordR.setSconto5(sconto5);
ordR.setSconto6(sconto6);
ordR.setSconto7(sconto7);
ordR.setSconto8(sconto8);
} else if (qtaOmg.compareTo(BigDecimal.ZERO) != 0) {
/*OMAGGIO*/
ordR.setQtaOrd(qtaOmg);
ordR.setSconto5(scontoMerce);
} else if (qtaResi.compareTo(BigDecimal.ZERO) != 0 && "O".equals(flagTipoReso)) {
/*OMAGGIO RESO*/
ordR.setSconto5(cambioMerce);
ordR.setQtaOrd(qtaResi);
} else if (qtaResi.compareTo(BigDecimal.ZERO) != 0 && "C".equals(flagTipoReso)) {
/*SCONTO FRESCHEZZA*/
ordR.setSconto5(scontoMerce);
ordR.setQtaOrd(qtaResi);
ordR.setCodAliq(null);
ordR.setSconto8(scontoFreschezza);
if (gestioneScontofreschezza.equals("S")){
sql = "SELECT TOP 1 round(importo_riga / qta_doc, 5) " +
"FROM dtb_docr, " +
" dtb_doct, " +
" gtb_divi, " +
" dtb_tipi " +
"WHERE dtb_doct.cod_anag = " + UtilityDB.valueToString(codAnagAss) + " AND " +
"dtb_doct.cod_vdes = " + UtilityDB.valueToString(codVdesAss) + " AND " +
"dtb_docr.cod_mart = " + UtilityDB.valueToString(codMartAss) + " AND " +
"dtb_docr.data_doc > dateadd(day, -30, " + UtilityDB.valueDateToString(dataOrdProv, CommonConstants.DATE_FORMAT_YMD) + ") and " +
"dtb_tipi.prevista_fat = 'S' AND " +
"dtb_tipi.segno_val_scar = 1 AND " +
"dtb_doct.gestione = 'V' AND " +
"dtb_doct.cod_anag = dtb_docr.cod_anag and " +
"dtb_doct.cod_dtip = dtb_docr.cod_dtip and " +
"dtb_doct.data_doc = dtb_docr.data_doc and " +
"dtb_doct.ser_doc = dtb_docr.ser_doc and " +
"dtb_doct.num_doc = dtb_docr.num_doc and " +
"gtb_divi.cod_divi = dtb_doct.cod_divi and " +
"dtb_tipi.cod_dtip = dtb_doct.cod_dtip and " +
"dtb_docr.sconto5 + dtb_docr.sconto6 + dtb_docr.sconto7 + dtb_docr.sconto8 < 100 " +
"order by dtb_doct.data_doc desc, dtb_doct.num_doc desc; ";
BigDecimal valUntNetto = (BigDecimal) getSingleValue(conn, sql);
if (valUntNetto != null && !valUntNetto.equals(BigDecimal.ZERO)){
ordR.setValUnt(valUntNetto);
}
}
} else {
}
ordR.setDataCons(dataCons);
ordT.getDtbOrdr().add(ordR);
codFornTDOld = codFornTD;
aziendaOld = azienda;
if (i < rows) {
res.next();
codFornTD = res.getString(2);
res.previous();
}
if (i == rows || codFornTD.compareTo(codFornTDOld) != 0 || azienda.compareTo(aziendaOld) != 0) {
try {
DtbOrdt retOrd = null;
if (aziendaOld.compareTo("VG") == 0){
retOrd = (DtbOrdt) entityProcessor.processEntity(ordT, true, true, profileDB, multiDBTransactionManager);
} else {
retOrd = (DtbOrdt) entityProcessor.processEntity(ordT, true, true, profileDB, multiDBTransactionManager);
}
if (retOrd == null) {
// Creazione collo di reso con riferimenti ordine di vendita generato per cod_forn_td
importColloReso(multiDBTransactionManager,
serieOrd,
dataOrdProv,
numOrdProv,
codFornTDOld,
ordT.getDataOrd(),
ordT.getNumOrd());
// Assegnazione flag_elaborato = 'S' su righe processione
sql = "UPDATE x_puddy3_prev_ordini SET flag_elaborato = 'S' WHERE " + condWhereRigheOrdine;
conn.createStatement().executeUpdate(sql);
List = new ServiceRestResponse(EsitoType.OK, "", retOrd);
}
} catch (Exception e) {
String msgError = "(AGENTE " + codVage + ") " + "ORDINE PROVV. N. " + numOrdProv + " - " + e.getMessage();
List = new ServiceRestResponse(EsitoType.KO, msgError);
if (flagTD.compareTo("S") == 0) {
erroreMsg = "ERRORE IMPORTAZIONE (Fornitore TD" + codFornTDOld + ")" + e.toString();
} else {
erroreMsg = "ERRORE IMPORTAZIONE " + e.toString();
}
setLog(logList, dataOrdProv, numOrdProv, erroreMsg, "ORDINE AGENTE " + codVage);
return List;
}
}
}
res.close();
info.close();
return List;
}
private ServiceRestResponse importOrdAgenti(MultiDBTransactionManager multiDBTransactionManager, String codVage) throws Exception {
PreparedStatement info = null;
@@ -420,8 +708,10 @@ public class PuddyService {
boolean existAnomalia = false;
ServiceRestResponse resp = new ServiceRestResponse();
Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection();
String registraDistIncassi = UtilityString.streNull(setupGest.getSetup(conn, "W_MLUPDSRV_CONFIG_DLG", "SETUP", "REGISTRA_INCASSI_PUDDY"));
String newVersion = UtilityString.streNull(setupGest.getSetup(conn, "W_MLUPDSRV_CONFIG_DLG", "SETUP", "NEW_VERSION"));
String sql =
"SELECT DISTINCT serie" +
" ,num_ord_provv" +
@@ -443,10 +733,20 @@ public class PuddyService {
Date dataOrdProvv = res.getDate(3);
String flagTD = res.getString(4);
if (newVersion.compareTo("S") == 0){
resp = importOrdine(multiDBTransactionManager, serie, dataOrdProvv, numOrdProv, flagTD, codVage);
} else {
resp = importOrdineOld(multiDBTransactionManager, serie, dataOrdProvv, numOrdProv, flagTD, codVage);
}
if (resp.getEsito() == EsitoType.KO) {
existAnomalia = true;
break;
} else {
if (registraDistIncassi.compareTo("S") == 0){
String whereCond = "(x_puddy3_prev_incassi.cod_vage = '" + codVage + "')";
importDistintaIncassiPrev(whereCond);
}
}
}
res.close();