37 lines
1.8 KiB
Markdown
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. |