Fix salvataggio viaggi senza cod forn trasp

This commit is contained in:
2025-05-05 12:19:27 +02:00
parent 03d2b6fa4e
commit 9b581e851b

View File

@@ -53,75 +53,77 @@ public class ViaggiService {
List<CreaViaggioDTO.PedanaDTO> pedane = creaViaggioDTO.getPedane(); List<CreaViaggioDTO.PedanaDTO> pedane = creaViaggioDTO.getPedane();
String sql = Query.format( if (!UtilityString.isNullOrEmpty(viaggio.getCodFornTrasp())) {
"SELECT gtb_anag.cod_anag,\n" + String sql = Query.format(
" gtb_anag.rag_soc\n" + "SELECT gtb_anag.cod_anag,\n" +
"FROM gtb_anag\n" + " gtb_anag.rag_soc\n" +
" INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag\n" + "FROM gtb_anag\n" +
"WHERE gtb_anag.part_iva IN (SELECT gtb_anag.part_iva\n" + " INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag\n" +
" FROM gtb_anag\n" + "WHERE gtb_anag.part_iva IN (SELECT gtb_anag.part_iva\n" +
" INNER JOIN atb_forn ON gtb_anag.cod_anag = atb_forn.cod_anag\n" + " FROM gtb_anag\n" +
" WHERE gtb_anag.cod_anag = %s)\n" + " INNER JOIN atb_forn ON gtb_anag.cod_anag = atb_forn.cod_anag\n" +
" AND vtb_clie.flag_stato = 'A'\n" + " WHERE gtb_anag.cod_anag = %s)\n" +
" AND vtb_clie.flag_td = 'N'", " AND vtb_clie.flag_stato = 'A'\n" +
viaggio.getCodFornTrasp() " AND vtb_clie.flag_td = 'N'",
);
GtbAnag datiClienteFornTrasp = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GtbAnag.class);
if (datiClienteFornTrasp == null) {
throw new Exception(String.format(
"Attenzione nessun codice cliente trovato per il fornitore %s",
viaggio.getCodFornTrasp() viaggio.getCodFornTrasp()
)); );
}
String tipoDocResi = setupGest.getSetup("DTB_DOCT", "FATTURA_PEDANE", "TIPO_DOC_RESI"); GtbAnag datiClienteFornTrasp = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GtbAnag.class);
sql = Query.format( if (datiClienteFornTrasp == null) {
"SELECT ddt.cod_anag,\n" + throw new Exception(String.format(
" ddt.cod_dtip,\n" + "Attenzione nessun codice cliente trovato per il fornitore %s",
" ddt.data_doc,\n" + viaggio.getCodFornTrasp()
" ddt.ser_doc,\n" + ));
" ddt.num_doc\n" +
"FROM dtb_doct ddt\n" +
"WHERE ddt.cod_dtip = %s\n" +
" AND id_viaggio = %s",
tipoDocResi,
viaggio.getIdViaggio()
);
DtbDoct dtbDoct = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class);
if (dtbDoct == null) {
dtbDoct = new DtbDoct();
}
if (!UtilityList.isNullOrEmpty(pedane)) {
dtbDoct
.setCodDtip(tipoDocResi)
.setCodMdep(creaViaggioDTO.getCodMdep())
.setCodAnag(datiClienteFornTrasp.getCodAnag())
.setIdViaggio(viaggio.getIdViaggio())
.setDtbDocr(new ArrayList<>());
dtbDoct.setOperation(OperationType.DELETE_THEN_INSERT);
for (CreaViaggioDTO.PedanaDTO pedana : pedane) {
DtbDocr dtbDocr = new DtbDocr()
.setCodMart(pedana.getCodMart())
.setQtaDoc(pedana.getQtaDoc());
dtbDocr.setOperation(OperationType.INSERT);
dtbDoct.getDtbDocr().add(dtbDocr);
} }
} else if (dtbDoct.getNumDoc() != null) {
dtbDoct.setOperation(OperationType.DELETE);
}
if (dtbDoct.getOperation() != null) { String tipoDocResi = setupGest.getSetup("DTB_DOCT", "FATTURA_PEDANE", "TIPO_DOC_RESI");
entityProcessor.processEntity(dtbDoct, true, multiDBTransactionManager);
sql = Query.format(
"SELECT ddt.cod_anag,\n" +
" ddt.cod_dtip,\n" +
" ddt.data_doc,\n" +
" ddt.ser_doc,\n" +
" ddt.num_doc\n" +
"FROM dtb_doct ddt\n" +
"WHERE ddt.cod_dtip = %s\n" +
" AND id_viaggio = %s",
tipoDocResi,
viaggio.getIdViaggio()
);
DtbDoct dtbDoct = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class);
if (dtbDoct == null) {
dtbDoct = new DtbDoct();
}
if (!UtilityList.isNullOrEmpty(pedane)) {
dtbDoct
.setCodDtip(tipoDocResi)
.setCodMdep(creaViaggioDTO.getCodMdep())
.setCodAnag(datiClienteFornTrasp.getCodAnag())
.setIdViaggio(viaggio.getIdViaggio())
.setDtbDocr(new ArrayList<>());
dtbDoct.setOperation(OperationType.DELETE_THEN_INSERT);
for (CreaViaggioDTO.PedanaDTO pedana : pedane) {
DtbDocr dtbDocr = new DtbDocr()
.setCodMart(pedana.getCodMart())
.setQtaDoc(pedana.getQtaDoc());
dtbDocr.setOperation(OperationType.INSERT);
dtbDoct.getDtbDocr().add(dtbDocr);
}
} else if (dtbDoct.getNumDoc() != null) {
dtbDoct.setOperation(OperationType.DELETE);
}
if (dtbDoct.getOperation() != null) {
entityProcessor.processEntity(dtbDoct, true, multiDBTransactionManager);
}
} }
multiDBTransactionManager.commitAll(); multiDBTransactionManager.commitAll();