# 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.