Skip to content

fix: [TESIS-999029] refresh the stock per warehouse after a lack-of-stock 422 - #74

Closed
LauAubert wants to merge 1 commit into
masterfrom
TESIS-999029-refresh-stock-after-insufficient
Closed

LauAubert wants to merge 1 commit into
masterfrom
TESIS-999029-refresh-stock-after-insufficient

Conversation

@LauAubert

Copy link
Copy Markdown
Member

Ticket de Jira

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

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


Descripción

El stock por depósito que muestran el alta manual (paso 2) y la modificación de órdenes queda cinco minutos en caché. Si otra venta o un webhook se llevan esas unidades, confirmar la orden o guardar la modificación responde 422 «Insufficient stock», pero nada refrescaba esa caché:

  • useConfirmDraftOrder no invalidaba nada cuando la orden no había llegado a crearse.
  • useUpdateOrder sólo invalidaba en onSuccess.

Resultado: el paso 2 seguía marcando el mismo depósito como «cubre todo», la edición no avisaba ningún faltante, y reintentar fallaba de la misma forma hasta que vencía la caché.

  • useConfirmDraftOrder invalida ['inventory'] cuando la orden no se creó y el rechazo es un 422.
  • useUpdateOrder suma un onError que invalida ['inventory'] con un 422.
  • Cualquier otra falla (red, 500, 412) no toca la caché: no dice nada del stock.
  • Tests de los dos hooks: el 422 invalida el stock por depósito; un 500 o un 412 no.

Evidencia visual

N/A


Cómo probar

  1. Abrir el alta manual con un producto de 5 unidades en un depósito y llegar al paso 3.
  2. En otra pestaña, vender esas unidades.
  3. «Confirmar orden» → 422. Volver al paso 2 → el depósito ya no aparece como «cubre todo». En master sigue apareciendo durante cinco minutos.

Verificación: npm run test, 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

Conflicto esperable con proyecto-web#71 (card 026): las dos ramas crean useUpdateOrder.test.tsx y tocan useUpdateOrder.ts en la misma mutación. Se resuelve quedándose con los cambios y los casos de las dos.

🤖 Generated with Claude Code

…tock 422

The stock per warehouse that the manual order wizard and the order edition
show is cached for five minutes. When another sale or a webhook took those
units, confirming the order or saving the edition answered 422 for lack of
stock, but nothing refreshed that cache: the wizard kept marking the same
warehouse as covering the whole order, the edition warned of no shortfall,
and retrying failed the same way until the cache expired.

Both mutations now invalidate the inventory queries when the API refuses
them with a 422, so the screen shows the real stock before the next try.
Other failures leave the cache 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 diagnóstico está bien: el stock por depósito se cachea cinco minutos, y si otra venta o un webhook se llevan esas unidades, confirmar la orden o guardar la modificación responde 422 «Insufficient stock» sin que nada refresque esa caché. useConfirmDraftOrder no invalidaba nada cuando la orden no llegaba a crearse.

Es molesto, pero hace falta que el stock se mueva por otro lado mientras el operador está en el formulario, y el sistema no queda mal: el 422 es correcto y la orden no se crea. El usuario puede recargar.

Lo agruparía con #70, #71 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