Skip to content

fix: [TESIS-999026] drop the shipping quote of an order when it is modified - #71

Closed
LauAubert wants to merge 1 commit into
masterfrom
TESIS-999026-fresh-quote-after-order-edit
Closed

LauAubert wants to merge 1 commit into
masterfrom
TESIS-999026-fresh-quote-after-order-edit

Conversation

@LauAubert

Copy link
Copy Markdown
Member

Ticket de Jira

https://proyectofinalfrlp.atlassian.net/browse/TESIS-999026

ID provisorio: se reemplaza por la clave real al cargar la card en Jira. Card: cards/026.md. Sale de una auditoría de código del front (TESIS-89).


Descripción

La cotización de una orden existente (TESIS-134) se cachea un minuto (useOrderQuotes, staleTime: 60_000) bajo quoteKeys.order(orderId, originWarehouseId), una clave que no sabe nada de la versión de la orden. La API cotiza con las líneas y el código postal actuales de la orden, pero guardar una modificación (useUpdateOrder) sólo invalidaba órdenes e inventario.

Repro en master:

  1. En el detalle de una orden, «Despachar» → se cotiza, por ejemplo, $ 2.500.
  2. Cancelar, «Modificar orden», sumar unidades o cambiar el CP, guardar.
  3. Antes de un minuto, «Despachar» de nuevo → el diálogo muestra la cotización de caché y el POST /shipments/:id/dispatch manda el shipping_cost viejo, que el backend guarda en el envío.
  • useUpdateOrder borra (removeQueries) las cotizaciones de esa orden al guardar, de cualquier depósito de origen. Se borran y no sólo se invalidan: el diálogo de despacho está cerrado, y una entrada invalidada se seguiría mostrando hasta que llegue la nueva.
  • Las cotizaciones de otras órdenes no se tocan.
  • Agrega useUpdateOrder.test.tsx (no había): borra las de esa orden, conserva las de otras y sigue invalidando la orden.

Evidencia visual

N/A


Cómo probar

  1. Seguir el repro de arriba → en el paso 3, el diálogo vuelve a cotizar («Cotizando…») con las líneas y el destino nuevos.

Verificación: npm run test (679 tests, 0 fallas), npm run lint, npm run format:check y npm run build limpios.


Impacto y consideraciones

¿Introduce breaking changes?
No

¿Requiere nuevas variables de entorno?
No

¿Afecta la arquitectura o genera un nuevo patrón?
No

🤖 Generated with Claude Code

…dified

The quote of an existing order is cached for a minute and its key only
holds the order and the origin warehouse. The API quotes with the current
lines and destination of the order, but saving a modification invalidated
orders and inventory only: dispatching within that minute showed the old
quote and sent its shipping_cost, which the backend stores on the shipment.

Saving a modification now removes the quotes of that order, so the next
dispatch asks the carriers again with the new lines and address. Quotes of
other orders are left alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@TomasMartin2004

Copy link
Copy Markdown
Contributor

Revisado. No lo mergearía para esta entrega.

El análisis es correcto: useOrderQuotes cachea un minuto bajo una clave que no sabe nada de la versión de la orden, y guardar una modificación invalida órdenes e inventario pero no las cotizaciones, así que durante ese minuto se puede ver una cotización calculada sobre líneas o un código postal que ya cambiaron.

Es un bug de verdad, pero acotado: dura hasta un minuto, se corrige solo y hace falta modificar una orden y volver a cotizar dentro de esa ventana.

Lo agruparía con #70, #74 y #75 en una sola card de pulido para después de la entrega.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants