Importazione ordini di vendita sevenbar
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user