terminando pdf de facturas

This commit is contained in:
2026-01-02 21:47:06 +01:00
parent bf823281a5
commit 6bea279066
30 changed files with 7112 additions and 6245 deletions

View File

@ -24,6 +24,7 @@ import com.imprimelibros.erp.presupuesto.service.PresupuestoService;
import com.imprimelibros.erp.users.UserService;
import com.imprimelibros.erp.direcciones.DireccionService;
import com.imprimelibros.erp.externalApi.skApiClient;
import com.imprimelibros.erp.facturacion.dto.DireccionFacturacionDto;
import com.imprimelibros.erp.pedidos.PedidoLinea.Estado;
@Service
@ -59,11 +60,10 @@ public class PedidoService {
this.messageSource = messageSource;
}
public Pedido getPedidoById(Long pedidoId) {
return pedidoRepository.findById(pedidoId).orElse(null);
}
public PedidoDireccion getPedidoDireccionFacturacionByPedidoId(Long pedidoId) {
return pedidoDireccionRepository.findByPedidoIdAndFacturacionTrue(pedidoId);
}
@ -95,10 +95,11 @@ public class PedidoService {
}
// Auditoría mínima
/*Long userId = cart.getUserId();
pedido.setCreatedBy(userService.findById(userId));
pedido.setUpdatedBy(userService.findById(userId));
*/
/*
* Long userId = cart.getUserId();
* pedido.setCreatedBy(userService.findById(userId));
* pedido.setUpdatedBy(userService.findById(userId));
*/
// Se obtiene el usuario del primer presupuesto del carrito
Long userId = null;
List<CartItem> cartItems = cart.getItems();
@ -108,7 +109,7 @@ public class PedidoService {
userId = firstPresupuesto.getUser().getId();
}
}
if(userId == null){
if (userId == null) {
userId = cart.getUserId();
}
pedido.setCreatedBy(userService.findById(userId));
@ -116,7 +117,6 @@ public class PedidoService {
pedido.setCreatedAt(Instant.now());
pedido.setDeleted(false);
pedido.setUpdatedAt(Instant.now());
// Guardamos el pedido
Pedido pedidoGuardado = pedidoRepository.save(pedido);
@ -186,6 +186,36 @@ public class PedidoService {
return pedidoRepository.findById(pedidoId).orElse(null);
}
@Transactional
public Boolean upsertDireccionFacturacion(Long pedidoId, DireccionFacturacionDto direccionData) {
try {
Pedido pedido = pedidoRepository.findById(pedidoId).orElse(null);
if (pedido == null) {
return false;
}
PedidoDireccion direccionPedido = pedidoDireccionRepository.findByPedidoIdAndFacturacionTrue(pedidoId);
if (direccionPedido == null) {
// crear
direccionPedido = direccionData.toPedidoDireccion();
direccionPedido.setPedido(pedido);
} else {
// actualizar en la existente (NO crees una nueva, para conservar ID)
direccionData.applyTo(direccionPedido); // si implementas applyTo()
direccionPedido.setFacturacion(true); // por si acaso
}
pedidoDireccionRepository.save(direccionPedido);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/** Lista de los items del pedido preparados para la vista */
@Transactional
public List<Map<String, Object>> getLineas(Long pedidoId, Locale locale) {
@ -334,7 +364,6 @@ public class PedidoService {
return files;
}
public byte[] getFerroFileContent(Long pedidoLineaId, Locale locale) {
return downloadFile(pedidoLineaId, "ferro", locale);
}
@ -365,7 +394,6 @@ public class PedidoService {
return true;
}
public Boolean cancelarPedido(Long pedidoId) {
Pedido pedido = pedidoRepository.findById(pedidoId).orElse(null);
@ -387,8 +415,6 @@ public class PedidoService {
return true;
}
/***************************
* MÉTODOS PRIVADOS
***************************/