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