Files
mercadodevida/work/artifacts/F-134/implementer.md
2026-08-21 18:47:00 +02:00

37 lines
1.8 KiB
Markdown

# F-134 — Permitir edición de precio/stock/EAN/peso en estado pending
## Cambios
### `apps/admin/src/features/products/components/sections/PriceStockSection.tsx`
- Removido `pending` del prop `disabled` de los 4 inputs editables:
- Stock input: `disabled={savingStock || pending}``disabled={savingStock}`
- EAN input: `disabled={savingEan || pending}``disabled={savingEan}`
- Peso unitario (Gr): `disabled={savingProductMeta || pending}``disabled={savingProductMeta}`
- Compra mínima: `disabled={savingProductMeta || pending}``disabled={savingProductMeta}`
- Los **botones** Guardar precio siguen disabled cuando pending (`disabled={savingPrice || pending}`) — no se puede forzar la persistencia sin productId.
- Los **handlers** `saveStock`, `saveEan`, `saveProductMeta` ya hacían early return cuando `pending || !productId`, así que aunque el input ya no esté disabled, las llamadas API no se disparan hasta que existe productId.
## Comportamiento resultante
### Modo pending (`/products/new`, sin productId)
- Inputs PVP / Coste / Oferta / Neto / Stock / EAN / Peso unitario / Compra mínima: **editables**
- Botón "Guardar precio": disabled, caption "Se guardará al crear el producto" sigue mostrándose
- onBlur / Enter: handlers early-return sin llamar API
- Estado local se mantiene
### Modo edit (`/products/:id`, con productId)
- Todos los inputs editables
- Botones Guardar habilitados
- onBlur / Enter disparan API como antes
- Sin cambios respecto a F-123
## Verificación
- `cd apps/admin && npx tsc --noEmit` → exit 0.
- `cd apps/admin && NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 npm run build` → exit 0.
## Notas
- Sin cambios en backend ni en handlers de save.
- Operador reinicia admin (`./scripts/monolith.sh prod restart`) para desplegar.