falta el update carrito del backend

This commit is contained in:
2025-10-29 13:31:25 +01:00
parent c272fd7b9b
commit 5e9631073e
17 changed files with 516 additions and 162 deletions

View File

@ -19,6 +19,9 @@ import java.security.Principal;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@Controller
@RequestMapping("/cart")
@ -48,7 +51,13 @@ public class CartController {
"cart.shipping.select-placeholder",
"cart.shipping.new-address",
"cart.shipping.errors.noAddressSelected",
"cart.shipping.enter-units",
"cart.shipping.units-label",
"cart.shipping.errors.units-error",
"cart.shipping.ud",
"cart.shipping.uds",
"app.yes",
"app.aceptar",
"app.cancelar");
Map<String, String> translations = translationService.getTranslations(locale, keys);
@ -56,6 +65,8 @@ public class CartController {
var items = service.listItems(Utils.currentUserId(principal), locale);
model.addAttribute("items", items);
var summary = service.getCartSummary(items, locale);
model.addAttribute("cartSummary", summary);
model.addAttribute("cartId", service.getOrCreateActiveCart(Utils.currentUserId(principal)));
return "imprimelibros/cart/cart"; // crea esta vista si quieres (tabla simple)
@ -126,4 +137,14 @@ public class CartController {
return "imprimelibros/direcciones/direccionCard :: direccionCard(direccion=${direccion})";
}
@PostMapping("/update/{id}")
public String postMethodName(@PathVariable Long id, @RequestBody String entity) {
return entity;
}
}

View File

@ -23,7 +23,6 @@ public class CartService {
private final CartRepository cartRepo;
private final CartItemRepository itemRepo;
private final MessageSource messageSource;
private final PresupuestoFormatter presupuestoFormatter;
private final PresupuestoRepository presupuestoRepo;
private final Utils utils;
@ -33,7 +32,6 @@ public class CartService {
this.cartRepo = cartRepo;
this.itemRepo = itemRepo;
this.messageSource = messageSource;
this.presupuestoFormatter = presupuestoFormatter;
this.presupuestoRepo = presupuestoRepo;
this.utils = utils;
}
@ -152,4 +150,29 @@ public class CartService {
return resumen;
}
public Map<String, Object> getCartSummary(List<Map<String, Object>> cartItems, Locale locale) {
double base = 0.0;
double iva4 = 0.0;
double iva21 = 0.0;
for (Map<String, Object> item : cartItems) {
Presupuesto p = presupuestoRepo.findById((Long) item.get("presupuestoId"))
.orElseThrow(() -> new IllegalStateException("Presupuesto no encontrado: " + item.get("presupuestoId")));
base += p.getBaseImponible().doubleValue();
iva4 += p.getIvaImporte4().doubleValue();
iva21 += p.getIvaImporte21().doubleValue();
}
double total = base + iva4 + iva21;
Map<String, Object> summary = new HashMap<>();
summary.put("base", Utils.formatCurrency(base, locale));
summary.put("iva4", Utils.formatCurrency(iva4, locale));
summary.put("iva21", Utils.formatCurrency(iva21, locale));
summary.put("total", Utils.formatCurrency(total, locale));
return summary;
}
}

View File

@ -0,0 +1,28 @@
package com.imprimelibros.erp.pedido;
import org.springframework.stereotype.Service;
@Service
public class PedidoService {
public int hasDescuentoFidelidad() {
// descuento entre el 1% y el 6% para clientes fidelidad (mas de 1500€ en el ultimo año)
double totalGastado = 1600.0; // Ejemplo, deberías obtenerlo del historial del cliente
if(totalGastado < 1200) {
return 0;
} else if(totalGastado >= 1200 && totalGastado < 1999) {
return 1;
} else if(totalGastado >= 2000 && totalGastado < 2999) {
return 2;
} else if(totalGastado >= 3000 && totalGastado < 3999) {
return 3;
} else if(totalGastado >= 4000 && totalGastado < 4999) {
return 4;
} else if(totalGastado >= 5000 && totalGastado < 9999) {
return 5;
} else if(totalGastado >= 10000) {
return 6;
}
return 0;
}
}