trbajando en las funciones de leer los estados

This commit is contained in:
2025-12-27 10:50:09 +01:00
parent b94a099e01
commit 3a00702bb1
7 changed files with 213 additions and 3596 deletions

View File

@ -229,7 +229,7 @@ public class skApiClient {
Long id = ((Integer) responseBody.get("id")).longValue();
if (success != null && id != null && success) {
return Map.of("data", id);
} else {
// Tu lógica actual: si success es true u otra cosa → error 2
@ -307,7 +307,7 @@ public class skApiClient {
else {
int ancho = (int) tamanio.get("ancho");
return Map.of(
"maxSolapas", (int) (ancho * 0.8 ),
"maxSolapas", (int) (ancho * 0.8),
"lomo", 0.0);
}
}
@ -395,18 +395,46 @@ public class skApiClient {
}
/*
public Map<String, Object> checkPedidoEstado(Long presupuestoId){
public Map<String, Object> checkPedidoEstado(Long presupuestoId, Locale locale) {
try{
try {
}
catch(Exception e){
e.printStackTrace();
return Map.of("error", "Internal Server Error: 1"); // Fallback en caso de error
String jsonResponse = performWithRetry(() -> {
String url = this.skApiUrl + "api/estado-pedido/" + presupuestoId;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(authService.getToken()); // token actualizado
HttpEntity<Void> entity = new HttpEntity<>(headers);
ResponseEntity<String> response = restTemplate.exchange(
url,
HttpMethod.GET,
entity,
String.class);
return response.getBody();
});
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(jsonResponse);
if (root.get("data") == null || !root.get("data").isInt()) {
throw new RuntimeException(
"Sin respuesta desde el servidor del proveedor");
}
String estado = root.get("estado").asText();
return Map.of(
"estado", estado);
} catch (JsonProcessingException e) {
// Fallback al 80% del ancho
return Map.of(
"estado", null);
}
}
*/
/******************
* PRIVATE METHODS

View File

@ -16,9 +16,10 @@ public class PedidoLinea {
aprobado("pedido.estado.aprobado", 4),
maquetacion("pedido.estado.maquetacion", 5),
haciendo_ferro("pedido.estado.haciendo_ferro", 6),
ferro_cliente("pedido.estado.ferro_cliente", 7),
produccion("pedido.estado.produccion", 8),
cancelado("pedido.estado.cancelado", 9);
esperando_aceptacion_ferro("pedido.estado.esperando_aceptacion_ferro", 7),
ferro_cliente("pedido.estado.ferro_cliente", 8),
produccion("pedido.estado.produccion", 9),
cancelado("pedido.estado.cancelado", 10);
private final String messageKey;
private final int priority;

View File

@ -154,7 +154,6 @@ public class PedidoService {
return pedidoRepository.findById(pedidoId).orElse(null);
}
/** Lista de los items del pedido preparados para la vista */
@Transactional
public List<Map<String, Object>> getLineas(Long pedidoId, Locale locale) {
@ -216,7 +215,7 @@ public class PedidoService {
if (referenciasProveedor.isEmpty()) {
return false;
}
// Save pedido in SK
ArrayList<Long> presupuestoSkIds = new ArrayList<>();
for (Map<String, Object> presData : referenciasProveedor) {
@ -237,12 +236,39 @@ public class PedidoService {
return true;
}
public Boolean actualizarEstado(Long pedidoId) {
Pedido pedido = pedidoRepository.findById(pedidoId).orElse(null);
if (pedido == null) {
return false;
}
pedidoRepository.save(pedido);
return true;
}
public Boolean markPedidoAsMaquetacionDone(Long pedidoId) {
Pedido pedido = pedidoRepository.findById(pedidoId).orElse(null);
if (pedido == null) {
return false;
}
List<PedidoLinea> lineas = pedidoLineaRepository.findByPedidoId(pedidoId);
for (PedidoLinea linea : lineas) {
if (linea.getEstado() == Estado.maquetacion) {
linea.setEstado(Estado.haciendo_ferro);
pedidoLineaRepository.save(linea);
}
}
return true;
}
/***************************
* MÉTODOS PRIVADOS
***************************/
@Transactional
private Map<String, Object> savePresupuestoSK(Long pedidoLineaId, Presupuesto presupuesto, Integer counter, Integer total) {
private Map<String, Object> savePresupuestoSK(Long pedidoLineaId, Presupuesto presupuesto, Integer counter,
Integer total) {
Map<String, Object> data_to_send = presupuestoService.toSkApiRequest(presupuesto, true);
data_to_send.put("createPedido", 0);
@ -476,6 +502,7 @@ public class PedidoService {
}
}
private PedidoDireccion saveDireccion(
String email,
Boolean palets,

View File

@ -0,0 +1,37 @@
databaseChangeLog:
- changeSet:
id: 0022-add-estados-pago-to-pedidos-lineas-3
author: jjo
changes:
- modifyDataType:
tableName: pedidos_lineas
columnName: estado
newDataType: >
enum(
'pendiente_pago',
'procesando_pago',
'denegado_pago',
'aprobado',
'maquetacion',
'haciendo_ferro',
'esperando_aceptacion_ferro',
'produccion',
'terminado',
'cancelado'
)
rollback:
- modifyDataType:
tableName: pedidos_lineas
columnName: estado
newDataType: >
enum(
'pendiente_pago',
'procesando_pago',
'denegado_pago',
'aprobado',
'maquetacion',
'haciendo_ferro',
'produccion',
'terminado',
'cancelado'
)

View File

@ -24,6 +24,7 @@ pedido.estado.denegado_pago=Pago denegado
pedido.estado.aprobado=Aprobado
pedido.estado.maquetacion=Maquetación
pedido.estado.haciendo_ferro=Haciendo ferro
pedido.estado.esperando_aceptacion_ferro=Esperando aceptación de ferro
pedido.estado.ferro_cliente=Esperando aprobación de ferro
pedido.estado.produccion=Producción
pedido.estado.terminado=Terminado
@ -34,6 +35,11 @@ pedido.pedido=Pedido
pedido.fecha-entrega=Fecha de entrega
pedido.cancelar=Cancelar pedido
pedido.update-estado=Actualizar estado
pedido.maquetacion_finalizada=Maquetación finalizada
pedido.ferro=Ferro
pedido.cubierta=Cubierta
pedido.tapa=Tapa
pedido.aceptar_ferro=Aceptar ferro
pedido.shipping-addresses=Direcciones de envío
pedido.prueba=Prueba

View File

@ -121,6 +121,13 @@
th:text="#{pedido.update-estado}">Cancelar Pedido</span></i>
</a>
</div>
<div th:if="${item.estado == 'maquetacion'}">
<a href="javascript:void(0);" class="d-block text-body p-1 px-2 maquetacion-ok"
th:attr="data-linea-id=${item.lineaId}">
<i class="ri-check-double-line text-muted align-bottom me-1"><span
th:text="#{pedido.maquetacion_finalizada}"> Maquetación finalizada</span></i>
</a>
</div>
</div>
</div>