falta ordenar por paginas y revisar la busqueda de los selects

This commit is contained in:
2025-10-11 18:16:55 +02:00
parent a1359f37b0
commit 62dcff8869
11 changed files with 287 additions and 70 deletions

View File

@ -583,7 +583,9 @@ public class PresupuestoController {
"presupuesto.plantilla-cubierta",
"presupuesto.plantilla-cubierta-text",
"presupuesto.impresion-cubierta",
"presupuesto.impresion-cubierta-help");
"presupuesto.impresion-cubierta-help",
"presupuesto.exito.guardado",
"presupuesto.add.error.save.title");
Map<String, String> translations = translationService.getTranslations(locale, keys);
model.addAttribute("languageBundle", translations);
@ -592,10 +594,12 @@ public class PresupuestoController {
model.addAttribute("ancho_alto_max", variableService.getValorEntero("ancho_alto_max"));
model.addAttribute("appMode", "add");
if (!mode.equals("public")) {
model.addAttribute("cliente_id", clienteId);
}
model.addAttribute("mode", mode);
return "imprimelibros/presupuestos/presupuesto-form";
}
@ -617,15 +621,24 @@ public class PresupuestoController {
}
}
@GetMapping(value = "/datatable/anonimos", produces = "application/json")
@GetMapping(value = "/datatable/{tipo}", produces = "application/json")
@ResponseBody
public DataTablesResponse<Map<String, Object>> datatableAnonimos(
HttpServletRequest request, Authentication auth, Locale locale) {
public DataTablesResponse<Map<String, Object>> datatable(
HttpServletRequest request, Authentication auth, Locale locale,
@PathVariable("tipo") String tipo) {
DataTablesRequest dt = DataTablesParser.from(request);
return dtService.datatableAnonimos(dt, locale);
if ("anonimos".equals(tipo)) {
return dtService.datatablePublicos(dt, locale);
} else if ("clientes".equals(tipo)) {
return dtService.datatablePrivados(dt, locale);
} else {
throw new IllegalArgumentException("Tipo de datatable no válido");
}
}
@DeleteMapping("/{id}")
@Transactional
public ResponseEntity<?> delete(@PathVariable Long id, Authentication auth, Locale locale) {
@ -709,13 +722,26 @@ public class PresupuestoController {
}
try {
var resumen = presupuestoService.getTextosResumen(presupuesto, serviciosList, locale);
Long cliente_id = objectMapper.convertValue(body.get("cliente_id"), Long.class);
if(id == null && cliente_id != null && !mode.equals("public")) {
presupuesto.setUser(userRepo.findById(cliente_id).orElse(null));
presupuesto.setOrigen(Presupuesto.Origen.privado);
}
if (mode.equals("public")) {
var resumen = presupuestoService.getTextosResumen(presupuesto, serviciosList, locale);
presupuesto = presupuestoService.generateTotalizadores(presupuesto, serviciosList, resumen, locale);
presupuesto.setOrigen(Presupuesto.Origen.publico);
String sessionId = request.getSession(true).getId();
String ip = request.getRemoteAddr();
presupuesto = presupuestoService.getDatosLocalizacion(presupuesto, sessionId, ip);
if (id != null) {
presupuesto.setId(id); // para que actualice, no cree uno nuevo
}
}
presupuesto = presupuestoService.generateTotalizadores(presupuesto, serviciosList, resumen, locale);
Map<String, Object> saveResult = presupuestoService.guardarPresupuesto(presupuesto);
return ResponseEntity.ok(Map.of("id", saveResult.get("presupuesto_id"),
"message", messageSource.getMessage("presupuesto.exito.guardado", null, locale)));