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();
String sql = Query.format(
"SELECT gtb_anag.cod_anag,\n" +
" gtb_anag.rag_soc\n" +
"FROM gtb_anag\n" +
" INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag\n" +
"WHERE gtb_anag.part_iva IN (SELECT gtb_anag.part_iva\n" +
" FROM gtb_anag\n" +
" INNER JOIN atb_forn ON gtb_anag.cod_anag = atb_forn.cod_anag\n" +
" WHERE gtb_anag.cod_anag = %s)\n" +
" AND vtb_clie.flag_stato = 'A'\n" +
" AND vtb_clie.flag_td = 'N'",
viaggio.getCodFornTrasp()
);
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",
if (!UtilityString.isNullOrEmpty(viaggio.getCodFornTrasp())) {
String sql = Query.format(
"SELECT gtb_anag.cod_anag,\n" +
" gtb_anag.rag_soc\n" +
"FROM gtb_anag\n" +
" INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag\n" +
"WHERE gtb_anag.part_iva IN (SELECT gtb_anag.part_iva\n" +
" FROM gtb_anag\n" +
" INNER JOIN atb_forn ON gtb_anag.cod_anag = atb_forn.cod_anag\n" +
" WHERE gtb_anag.cod_anag = %s)\n" +
" AND vtb_clie.flag_stato = 'A'\n" +
" AND vtb_clie.flag_td = 'N'",
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(
"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);
if (datiClienteFornTrasp == null) {
throw new Exception(String.format(
"Attenzione nessun codice cliente trovato per il fornitore %s",
viaggio.getCodFornTrasp()
));
}
} else if (dtbDoct.getNumDoc() != null) {
dtbDoct.setOperation(OperationType.DELETE);
}
if (dtbDoct.getOperation() != null) {
entityProcessor.processEntity(dtbDoct, true, multiDBTransactionManager);
String tipoDocResi = setupGest.getSetup("DTB_DOCT", "FATTURA_PEDANE", "TIPO_DOC_RESI");
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();