Gestione incassi PUDDY e importazione ordini

This commit is contained in:
2025-03-18 18:55:10 +01:00
parent 6f9409769b
commit c90d3d3160
2 changed files with 50 additions and 122 deletions

View File

@@ -28,10 +28,6 @@ public class DistintaIncassiPrevPuddyDTO {
@SqlField("imp_incasso") @SqlField("imp_incasso")
private BigDecimal impPaga; private BigDecimal impPaga;
@SqlField("azienda")
private String azienda;
public String getCodAnag() { public String getCodAnag() {
return codAnag; return codAnag;
} }
@@ -87,12 +83,4 @@ public class DistintaIncassiPrevPuddyDTO {
public void setImpPaga(BigDecimal impPaga) { public void setImpPaga(BigDecimal impPaga) {
this.impPaga = impPaga; this.impPaga = impPaga;
} }
public String getAzienda() {
return azienda;
}
public void setAzienda(String azienda) {
this.azienda = azienda;
}
} }

View File

@@ -941,11 +941,11 @@ public class PuddyService {
private ServiceRestResponse importOrdAgenti(MultiDBTransactionManager multiDBTransactionManager, String codVage) throws Exception { private ServiceRestResponse importOrdAgenti(MultiDBTransactionManager multiDBTransactionManager, String codVage) throws Exception {
PreparedStatement info = null; PreparedStatement info = null;
ResultSet res = null; ResultSet res = null;
boolean existAnomalia = false, existOrdAgente = false; boolean existAnomalia = false;
ServiceRestResponse resp = new ServiceRestResponse(); ServiceRestResponse resp = new ServiceRestResponse();
Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection(); Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection();
String registraDistIncassi = UtilityString.streNull(setupGest.getSetup(conn, "W_MLUPDSRV_CONFIG_DLG", "SETUP", "REGISTRA_INCASSI_PUDDY")); // 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 newVersion = UtilityString.streNull(setupGest.getSetup(conn, "W_MLUPDSRV_CONFIG_DLG", "SETUP", "NEW_VERSION"));
String sql = String sql =
@@ -968,7 +968,6 @@ public class PuddyService {
Integer numOrdProv = res.getInt(2); Integer numOrdProv = res.getInt(2);
Date dataOrdProvv = res.getDate(3); Date dataOrdProvv = res.getDate(3);
String flagTD = res.getString(4); String flagTD = res.getString(4);
existOrdAgente = true;
if (newVersion.compareTo("S") == 0) { if (newVersion.compareTo("S") == 0) {
resp = importOrdine(multiDBTransactionManager, serie, dataOrdProvv, numOrdProv, flagTD, codVage); resp = importOrdine(multiDBTransactionManager, serie, dataOrdProvv, numOrdProv, flagTD, codVage);
@@ -984,12 +983,7 @@ public class PuddyService {
res.close(); res.close();
info.close(); info.close();
if (!existAnomalia) { // Controllo invio esito
if (registraDistIncassi.compareTo("S") == 0) {
String whereCond = "(x_puddy3_prev_incassi.cod_vage = '" + codVage + "')";
importDistintaIncassiPrev(whereCond);
}
} else {
String oggetto = null, messaggio = null; String oggetto = null, messaggio = null;
String emailForLog = setupGest.getSetup("IMPORT_ORDINI", "PUDDY", "EMAIL_FOR_LOG"); String emailForLog = setupGest.getSetup("IMPORT_ORDINI", "PUDDY", "EMAIL_FOR_LOG");
if (existAnomalia) { if (existAnomalia) {
@@ -997,35 +991,23 @@ public class PuddyService {
oggetto = "ERRORE IMPORTAZIONE ORDINI DI VENDITA AGENTE " + codVage; oggetto = "ERRORE IMPORTAZIONE ORDINI DI VENDITA AGENTE " + codVage;
messaggio = resp.getErrorMessage(); messaggio = resp.getErrorMessage();
} }
multiDBTransactionManager.rollbackAll();
} else { } else {
if (!UtilityString.isNullOrEmpty(emailForLog)) { if (!UtilityString.isNullOrEmpty(emailForLog)) {
oggetto = "IMPORTAZIONE ORDINI VENDITA AGENTE " + codVage + " AVVENUTA CON SUCCESSO"; oggetto = "IMPORTAZIONE ORDINI VENDITA AGENTE " + codVage + " AVVENUTA CON SUCCESSO";
messaggio = oggetto + CommonConstants.A_CAPO; messaggio = oggetto + CommonConstants.A_CAPO;
} }
multiDBTransactionManager.commitAll();
} }
mailService.sendMail(emailForLog, null, oggetto, messaggio); mailService.sendMail(emailForLog, null, oggetto, messaggio);
}
return resp; return resp;
} }
public List<EntityBase> importOrdiniFromPuddy() throws Exception { public List<EntityBase> importOrdiniFromPuddy() throws Exception {
VtbAgen vtbAgen = new VtbAgen();
List<EntityBase> response = new ArrayList<EntityBase>(); List<EntityBase> response = new ArrayList<EntityBase>();
String username = requestDataDTO.getUsername(); String whereCond = "";
PreparedStatement info = null;
ResultSet res = null;
ServiceRestResponse resp = new ServiceRestResponse();
List<ServiceRestResponse> respList = new ArrayList<ServiceRestResponse>();
ServiceRestResponse List = new ServiceRestResponse();
Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection(); Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection();
String profileDB = multiDBTransactionManager.getPrimaryDatasource().getProfile(); String registraDistIncassi = UtilityString.streNull(setupGest.getSetup(conn, "W_MLUPDSRV_CONFIG_DLG", "SETUP", "REGISTRA_INCASSI_PUDDY"));
String emailLog = setupGest.getSetup(conn, "PUDDY", "ORDINI_VENDITA", "EMAIL_FOR_LOG");
String sql = String sql =
"SELECT distinct cod_vage" + "SELECT distinct cod_vage" +
@@ -1034,13 +1016,13 @@ public class PuddyService {
condEsclResi + condEsclResi +
"ORDER BY 1"; "ORDER BY 1";
info = conn.prepareStatement(sql); PreparedStatement info = conn.prepareStatement(sql);
res = info.executeQuery(); ResultSet res = info.executeQuery();
while (res.next()) { while (res.next()) {
String codVage = res.getString(1); String codVage = res.getString(1);
vtbAgen = new VtbAgen(); VtbAgen vtbAgen = new VtbAgen();
vtbAgen.setCodVage(codVage); vtbAgen.setCodVage(codVage);
resp = importOrdAgenti(multiDBTransactionManager, codVage); ServiceRestResponse resp = resp = importOrdAgenti(multiDBTransactionManager, codVage);
if (resp.getEsito() == EsitoType.OK) { if (resp.getEsito() == EsitoType.OK) {
response.add(vtbAgen); response.add(vtbAgen);
} }
@@ -1048,58 +1030,28 @@ public class PuddyService {
res.close(); res.close();
info.close(); info.close();
// Verifica esistenza anomalie da segnalare if (registraDistIncassi.compareTo("S") == 0) {
/* try { importDistintaIncassiPrev(whereCond);
if (!logList.isEmpty()) { }
List<FileItem> fileAttachmentList = new ArrayList<FileItem>();
StringWriter writer = new StringWriter();
jsonObjectMapper.writeValue(writer, logList);
String jsonBody = writer.toString();
FileItem fileItem = new FileItem("LogImportOrdiniPuddy.txt", jsonBody, "txt");
fileAttachmentList.add(fileItem);
mailService.sendMail(
null,
null,
emailLog,
null,
null,
"ERRORE IMPORTAZIONE ORDINI PUDDY ",
"Si è verificato il seguente errore durante l'importazione degli ordini",
true,
fileAttachmentList,
false);
} catch (Exception e) {
logger.error("NON E' STATO POSSIBILE INVIARE LA MAIL DI NOTIFICA ERRORE IMPORTAZIONE " + e.toString());
}*/
//respList.add(new ServiceRestResponse(EsitoType.OK, "Importazione completata"));
return response; return response;
} }
public List<EntityBase> importDistintaIncassiPrev(String whereCond) throws Exception { public List<EntityBase> importDistintaIncassiPrev(String whereCond) throws Exception {
Integer numDistinta = 0;
List<EntityBase> listDistIncat = new ArrayList<EntityBase>(); List<EntityBase> listDistIncat = new ArrayList<EntityBase>();
List<EntityBase> listDistIncat2ndDB = new ArrayList<EntityBase>(); List<EntityBase> listDistIncatVG = new ArrayList<EntityBase>();
Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection(); Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection();
MultiDBTransactionManager multiDBTransactionManagerVG = new MultiDBTransactionManager(); MultiDBTransactionManager multiDBTransactionManagerVG = new MultiDBTransactionManager();
PreparedStatement psDistintaAgente = null;
boolean existAssVG = false;
String profileDBVG = setupGest.getSetup("IMPORT_ORDINI", "PUDDY", "PROFILE_DB_VG"); String profileDBVG = setupGest.getSetup("IMPORT_ORDINI", "PUDDY", "PROFILE_DB_VG");
String profileDB = multiDBTransactionManager.getPrimaryDatasource().getProfile();
// Connessione DB VG // Connessione DB VG
String columnTipoAzienda = profileDB; String columnTipoAzienda = multiDBTransactionManager.getPrimaryDatasource().getProfile();
if (!UtilityString.isNullOrEmpty(profileDBVG)){ if (!UtilityString.isNullOrEmpty(profileDBVG)){
DataSource dsSync = new DataSource(); DataSource dsSync = new DataSource();
dsSync.initialize(profileDBVG); dsSync.initialize(profileDBVG);
multiDBTransactionManagerVG.setPrimaryDs(profileDBVG); multiDBTransactionManagerVG.setPrimaryDs(profileDBVG);
existAssVG = true;
columnTipoAzienda = "case when ser_doc like 'S%' then 'ASS_VG' else 'ASS_SEVEN' end"; columnTipoAzienda = "case when ser_doc like 'S%' then 'ASS_VG' else 'ASS_SEVEN' end";
} }
@@ -1107,8 +1059,9 @@ public class PuddyService {
String query = String query =
"SELECT DISTINCT x_puddy3_prev_incassi.data_incasso, " + "SELECT DISTINCT x_puddy3_prev_incassi.data_incasso, " +
" x_puddy3_prev_incassi.cod_vage, " + " x_puddy3_prev_incassi.cod_vage, " +
columnTipoAzienda + " " + columnTipoAzienda + ", " +
" FROM x_puddy3_prev_incassi " + " x_puddy3_prev_intercode_agenti_vg.cod_vage_vg " +
" FROM x_puddy3_prev_incassi left outer join x_puddy3_prev_intercode_agenti_vg on x_puddy3_prev_incassi.cod_vage = x_puddy3_prev_intercode_agenti_vg.cod_vage " +
" WHERE x_puddy3_prev_incassi.flag_elaborato = 'N' " + " WHERE x_puddy3_prev_incassi.flag_elaborato = 'N' " +
" ORDER BY 3 "; " ORDER BY 3 ";
query = UtilityDB.addwhereCond(query, whereCond, false); query = UtilityDB.addwhereCond(query, whereCond, false);
@@ -1118,9 +1071,10 @@ public class PuddyService {
Date dataIncasso = rs.getDate(1); Date dataIncasso = rs.getDate(1);
String codVage = rs.getString(2); String codVage = rs.getString(2);
String azienda = rs.getString(3); String azienda = rs.getString(3);
String codVageVG = rs.getString(4);
// verifica esitenza distinta incassi su DB di competenza // verifica esitenza distinta incassi su DB di competenza
numDistinta = 0; Integer numDistinta = 0;
query = "SELECT num_dist " + query = "SELECT num_dist " +
" FROM vtb_dist_incat " + " FROM vtb_dist_incat " +
" WHERE vtb_dist_incat.data_dist = " + UtilityDB.valueToString(dataIncasso) + " AND " + " WHERE vtb_dist_incat.data_dist = " + UtilityDB.valueToString(dataIncasso) + " AND " +
@@ -1132,47 +1086,41 @@ public class PuddyService {
numDistinta = (Integer) QueryRules.getSingleValue(multiDBTransactionManagerVG.getPrimaryConnection(), query); numDistinta = (Integer) QueryRules.getSingleValue(multiDBTransactionManagerVG.getPrimaryConnection(), query);
} }
// Generazione distinta incassi // Generazione distinta incassi
query = query =
"SELECT x_puddy3_prev_incassi.cod_anag, " + "SELECT case when left(x_puddy3_prev_incassi.ser_doc, 1) = 'S' then x_puddy3_prev_intercode_clienti_VG.cod_anag_vg ELSE x_puddy3_prev_incassi.cod_anag end as cod_anag, " +
" x_puddy3_prev_incassi.cod_vdes, " + " case when left(x_puddy3_prev_incassi.ser_doc, 1) = 'S' then x_puddy3_prev_intercode_clienti_VG.cod_vdes_vg ELSE x_puddy3_prev_incassi.cod_vdes end as cod_vdes, " +
" x_puddy3_prev_incassi.cod_causale, " + " x_puddy3_prev_incassi.cod_causale, " +
" x_puddy3_prev_incassi.data_doc, " + " x_puddy3_prev_incassi.data_doc, " +
" x_puddy3_prev_incassi.ser_doc, " + " case when left(x_puddy3_prev_incassi.ser_doc, 1) = 'S' then SUBSTRING(x_puddy3_prev_incassi.ser_doc, 2, 2) else x_puddy3_prev_incassi.ser_doc end as ser_doc, " +
" x_puddy3_prev_incassi.num_doc, " + " x_puddy3_prev_incassi.num_doc, " +
" x_puddy3_prev_incassi.imp_incasso " + " x_puddy3_prev_incassi.imp_incasso " +
" FROM x_puddy3_prev_incassi " + " FROM x_puddy3_prev_incassi left outer join x_puddy3_prev_intercode_clienti_VG on x_puddy3_prev_incassi.cod_anag = x_puddy3_prev_intercode_clienti_VG.cod_anag and " +
" x_puddy3_prev_incassi.cod_vdes = x_puddy3_prev_intercode_clienti_VG.cod_vdes " +
" WHERE x_puddy3_prev_incassi.flag_elaborato = 'N' AND " + " WHERE x_puddy3_prev_incassi.flag_elaborato = 'N' AND " +
" x_puddy3_prev_incassi.data_incasso = " + UtilityDB.valueToString(dataIncasso) + " AND " + " x_puddy3_prev_incassi.data_incasso = " + UtilityDB.valueToString(dataIncasso) + " AND " +
" x_puddy3_prev_incassi.cod_vage = " + UtilityDB.valueToString(codVage); " x_puddy3_prev_incassi.cod_vage = " + UtilityDB.valueToString(codVage) + " AND " +
columnTipoAzienda + " = " + UtilityDB.valueToString(azienda);
if (!azienda.equals("VG")) { PreparedStatement psDistintaAgente = multiDBTransactionManager.prepareStatement(query);
psDistintaAgente = multiDBTransactionManager.prepareStatement(query);
} else {
psDistintaAgente = multiDBTransactionManagerVG.prepareStatement(query);
}
ResultSet rsDistintaAgente = psDistintaAgente.executeQuery(); ResultSet rsDistintaAgente = psDistintaAgente.executeQuery();
List<DistintaIncassiPrevPuddyDTO> datiDistintaPuddy = new ResultSetMapper() List<DistintaIncassiPrevPuddyDTO> datiDistintaPuddy = new ResultSetMapper().mapResultSetToList(rsDistintaAgente, DistintaIncassiPrevPuddyDTO.class);
.mapResultSetToList(rsDistintaAgente, DistintaIncassiPrevPuddyDTO.class);
psDistintaAgente.close(); psDistintaAgente.close();
String aziendaOld = "";
VtbDistIncat vtbDistIncat = new VtbDistIncat(); VtbDistIncat vtbDistIncat = new VtbDistIncat();
int rows = datiDistintaPuddy.size();
for (int i = 0; i < datiDistintaPuddy.size(); i++) { for (int i = 0; i < datiDistintaPuddy.size(); i++) {
DistintaIncassiPrevPuddyDTO datoDistinta = datiDistintaPuddy.get(i); DistintaIncassiPrevPuddyDTO datoDistinta = datiDistintaPuddy.get(i);
azienda = datoDistinta.getAzienda();
if (azienda.compareTo(aziendaOld) != 0) { if (i == 1) {
vtbDistIncat.setOperation(OperationType.INSERT_OR_UPDATE); vtbDistIncat.setOperation(OperationType.INSERT_OR_UPDATE);
vtbDistIncat.setDataDist(dataIncasso); vtbDistIncat.setDataDist(dataIncasso);
vtbDistIncat.setNumDist(numDistinta); vtbDistIncat.setNumDist(numDistinta);
vtbDistIncat.setCodVage(codVage);
if (!azienda.equals("ASS_VG")){ if (!azienda.equals("ASS_VG")){
vtbDistIncat.setCodVage(codVage);
listDistIncat.add(vtbDistIncat); listDistIncat.add(vtbDistIncat);
} else { } else {
listDistIncat2ndDB.add(vtbDistIncat); // Inserimento elenco distitne nel secondo DB vtbDistIncat.setCodVage(codVageVG);
listDistIncatVG.add(vtbDistIncat); // Inserimento elenco distitne nel secondo DB
} }
} }
@@ -1188,11 +1136,6 @@ public class PuddyService {
vtbDistIncar.setImpIncasso(datoDistinta.getImpPaga()); vtbDistIncar.setImpIncasso(datoDistinta.getImpPaga());
vtbDistIncar.setFlagRegAcc("S"); vtbDistIncar.setFlagRegAcc("S");
vtbDistIncat.getVtbDistIncar().add(vtbDistIncar); vtbDistIncat.getVtbDistIncar().add(vtbDistIncar);
aziendaOld = azienda;
if (i < rows) {
aziendaOld = datiDistintaPuddy.get(i + 1).getAzienda();
}
} }
} }
rs.close(); rs.close();
@@ -1206,11 +1149,12 @@ public class PuddyService {
} }
} }
for (int i = 0; i < listDistIncat2ndDB.size(); i++) { for (int i = 0; i < listDistIncatVG.size(); i++) {
entityProcessor.processEntity(listDistIncat2ndDB.get(i), true, true, multiDBTransactionManagerVG.getPrimaryDatasource().getProfile(), multiDBTransactionManagerVG); entityProcessor.processEntity(listDistIncatVG.get(i), true, true, multiDBTransactionManagerVG.getPrimaryDatasource().getProfile(), multiDBTransactionManagerVG);
if (listDistIncat2ndDB.get(i).getException() != null) { if (listDistIncatVG.get(i).getException() != null) {
multiDBTransactionManager.rollbackAll();
multiDBTransactionManagerVG.rollbackAll(); multiDBTransactionManagerVG.rollbackAll();
throw new Exception(listDistIncat2ndDB.get(i).getException().getMessage()); throw new Exception(listDistIncatVG.get(i).getException().getMessage());
} }
} }
@@ -1220,13 +1164,9 @@ public class PuddyService {
cmd.execute(query); cmd.execute(query);
cmd.close(); cmd.close();
if (existAssVG){
multiDBTransactionManagerVG.commitAll(); multiDBTransactionManagerVG.commitAll();
}
multiDBTransactionManager.commitAll(); multiDBTransactionManager.commitAll();
return listDistIncat; return listDistIncat;
} }