feat(F-134): completed feature
This commit is contained in:
37
work/artifacts/F-134/implementer.md
Normal file
37
work/artifacts/F-134/implementer.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user