arreglados problemas presupuesto, botones css etc

This commit is contained in:
2025-10-16 14:24:24 +02:00
parent f26f96a490
commit 060b435388
16 changed files with 278 additions and 169 deletions

View File

@ -478,14 +478,19 @@ public class PresupuestoController {
Presupuesto p = objectMapper.convertValue(body.get("presupuesto"), Presupuesto.class);
Boolean save = objectMapper.convertValue(body.get("save"), Boolean.class);
String mode = objectMapper.convertValue(body.get("mode"), String.class);
@SuppressWarnings("unchecked")
List<Map<String, Object>> serviciosList = (List<Map<String, Object>>) body.getOrDefault("servicios", List.of());
@SuppressWarnings("unchecked")
Map<String, Object> datosMaquetacion = (Map<String, Object>) objectMapper
.convertValue(body.get("datosMaquetacion"), Map.class);
@SuppressWarnings("unchecked")
Map<String, Object> datosMarcapaginas = (Map<String, Object>) objectMapper
.convertValue(body.get("datosMarcapaginas"), Map.class);
String sessionId = request.getSession(true).getId();
String ip = IpUtils.getClientIp(request);
var resumen = presupuestoService.getResumen(p, serviciosList, save, mode, locale, sessionId, ip);
var resumen = presupuestoService.getResumen(p, serviciosList, datosMaquetacion, datosMarcapaginas, save, mode, locale, sessionId, ip);
return ResponseEntity.ok(resumen);
}
@ -705,7 +710,7 @@ public class PresupuestoController {
}
}
@PostMapping(path = "api/save")
@PostMapping(path = "/api/save")
public ResponseEntity<?> save(
@RequestBody Map<String, Object> body,
Locale locale, HttpServletRequest request) {

View File

@ -119,13 +119,11 @@ public class PresupuestoService {
opcionColorHq.setSelected(true);
opciones.add(opcionColorHq);
} else {
if (!this.isPOD(presupuesto)) {
// POD solo negro premium
ImagenPresupuesto opcionNegro = this.presupuestadorItems.getImpresionNegro(locale);
if (Presupuesto.TipoImpresion.negro.equals(presupuesto.getTipoImpresion()))
opcionNegro.setSelected(true);
opciones.add(opcionNegro);
}
ImagenPresupuesto opcionNegro = this.presupuestadorItems.getImpresionNegro(locale);
if (Presupuesto.TipoImpresion.negro.equals(presupuesto.getTipoImpresion()))
opcionNegro.setSelected(true);
opciones.add(opcionNegro);
ImagenPresupuesto opcionNegroHq = this.presupuestadorItems.getImpresionNegroPremium(locale);
if (Presupuesto.TipoImpresion.negrohq.equals(presupuesto.getTipoImpresion()))
opcionNegroHq.setSelected(true);
@ -148,12 +146,14 @@ public class PresupuestoService {
List<ImagenPresupuesto> opciones = new ArrayList<>();
opciones.add(this.presupuestadorItems.getPapelOffsetBlanco(locale));
if (presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.negro ||
if ((presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.negro
&& !this.isPOD(presupuesto)) ||
presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.color) {
opciones.add(this.presupuestadorItems.getPapelOffsetBlancoVolumen(locale));
}
opciones.add(this.presupuestadorItems.getPapelOffsetAhuesado(locale));
if (presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.negro ||
if ((presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.negro
&& !this.isPOD(presupuesto)) ||
presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.color) {
opciones.add(this.presupuestadorItems.getPapelOffsetAhuesadoVolumen(locale));
}
@ -226,7 +226,8 @@ public class PresupuestoService {
gramajes.add("100");
gramajes.add("115");
}
if (presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.negro ||
if ((presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.negro
&& !this.isPOD(presupuesto)) ||
presupuesto.getTipoImpresion() == Presupuesto.TipoImpresion.color) {
gramajes.add("120");
}
@ -812,6 +813,11 @@ public class PresupuestoService {
for (Map<String, Object> servicio : servicios) {
HashMap<String, Object> servicioData = new HashMap<>();
servicioData.put("id", servicio.get("id"));
if (servicio.get("id").equals("marcapaginas")) {
} else {
}
servicioData.put("descripcion", servicio.get("label"));
servicioData.put("precio", servicio.get("id").equals("marcapaginas")
? Double.parseDouble(servicio.get("price").toString())
@ -834,6 +840,8 @@ public class PresupuestoService {
public Map<String, Object> getResumen(
Presupuesto presupuesto,
List<Map<String, Object>> servicios,
Map<String, Object> datosMaquetacion,
Map<String, Object> datosMarcapaginas,
Boolean save,
String mode,
Locale locale,
@ -841,6 +849,15 @@ public class PresupuestoService {
String ip) {
// 1) Calcula el resumen (como ya haces)
try {
presupuesto.setDatosMaquetacionJson(
datosMaquetacion != null ? new ObjectMapper().writeValueAsString(datosMaquetacion) : null);
presupuesto.setDatosMarcapaginasJson(
datosMarcapaginas != null ? new ObjectMapper().writeValueAsString(datosMarcapaginas) : null);
} catch (Exception e) {
System.out.println("Error guardando datos adicionales: " + e.getMessage());
}
Map<String, Object> resumen = getTextosResumen(presupuesto, servicios, locale);
if (resumen.containsKey("error"))
return resumen;
@ -876,6 +893,7 @@ public class PresupuestoService {
entidad = mergePresupuesto(entidad, presupuesto);
if (save != null && save) {
// Si NO es para guardar (solo calcular resumen), devolver sin persistir
presupuestoRepository.saveAndFlush(presupuesto);
}