Repository navigation
Conversation
Any failure of the product save other than the 412 was drawn in the body of the detail page, which the backdrop of the open edit dialog covers. A 409 because a sale or transfer held the stock lock, a 422 or a network failure looked like a save that finished and did nothing. The edit modal now takes a submitError and shows it above the form, where the user is looking, with the typed data intact. The raw English message of the API is replaced by one per status: the stock is busy (409), some data was refused (422), or a generic retry. The 412 keeps its own conflict notice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Revisado. No lo mergearía para esta entrega. El bug es real: cuando el guardado del modal de edición falla con algo que no es el 412, el mensaje se dibuja en el cuerpo de Lo dejo afuera porque es una mejora de presentación de errores en un camino de excepción, no un fallo del sistema: el guardado efectivamente no se hizo y el estado queda consistente. Comparado con lo que sí mergearía —500 en todos los listados, ventas que se pierden sin señal, una pantalla que dice que la empresa no existe cuando la API parpadea— no entra en la misma categoría. Lo agruparía con #71, #74 y #75 en una sola card de pulido de errores de la UI, para después de la entrega. |
Ticket de Jira
https://proyectofinalfrlp.atlassian.net/browse/TESIS-999025
Descripción
Cuando el guardado del modal de edición de producto fallaba con algo que no fuera el 412,
ProductDetailPagedibujaba el mensaje en el cuerpo de la página, que queda tapado por el fondo del diálogo abierto. El usuario veía el botón volver de «Guardando…» y nada más: un 409 porque una venta o una transferencia tenía tomado el stock del producto (ADR-009), un 422 por un dato rechazado o un corte de red parecían un guardado que terminaba sin hacer nada.CreateProductModalya recibíasubmitError;EditProductModalno.Repro en
master: editar el stock de un producto mientras se crea una orden del mismo producto → el PUT responde 409 «stock for this warehouse is being written by another operation, please retry» → el modal queda igual, sin aviso.EditProductModalrecibesubmitErrory lo muestra en unAlertarriba del formulario, donde el usuario está mirando. Lo cargado queda intacto.ProductDetailPagetraduce el rechazo por status —el stock está ocupado (409), algún dato no pasó (422), o un reintento genérico— en lugar del mensaje crudo en inglés, y saca el banner de la página.isConflictpara que no se filtre como error genérico durante el refetch.Evidencia visual
Pendiente de captura.
Cómo probar
Verificación:
npm run test(679 tests, 0 fallas),npm run lint,npm run format:checkynpm run buildlimpios.Impacto y consideraciones
¿Introduce breaking changes?
No
¿Requiere nuevas variables de entorno?
No
¿Afecta la arquitectura o genera un nuevo patrón?
No. Mismo contrato que
CreateProductModal.submitError.Conflicto esperable con proyecto-web#60/#61/#66 (tocan
ProductDetailPage.tsxy el modal de edición en otras zonas).🤖 Generated with Claude Code