Actualiza la información de un producto existente. Permite modificar precios, stock, categoría, unidad e imagen.
Autenticación
Requiere token Bearer y permiso productos.edit.
Token de autenticación Bearer
multipart/form-data (si se incluye imagen) o application/json
Path Parameters
ID del producto a actualizar
Body Parameters
Todos los campos son opcionales. Solo se actualizan los campos enviados.
Código interno del producto
Categorización
ID de la unidad de medida
Precios
Stock
Stock actual del producto
Configuración
Código del catálogo SUNAT
Si utiliza código de barras
Si tiene múltiples niveles de precio
Nueva imagen del producto. Si se proporciona, reemplaza la imagen anterior.
IMPORTANTE: No puedes cambiar el campo almacen de un producto existente. Si necesitas mover un producto a otro almacén, debes crear uno nuevo.
Respuesta Exitosa
true si el producto se actualizó exitosamente
“Producto actualizado exitosamente”
Producto actualizado con sus relaciones
Siempre false en esta implementación. Campo legacy para compatibilidad.
Ejemplo de Solicitud
{
"nombre": "Mouse Inalámbrico Logitech M720 Triathlon",
"precio": 125.00,
"precio_mayor": 115.00,
"costo": 88.00,
"cantidad": 75,
"stock_minimo": 15,
"usar_multiprecio": true
}
Ejemplo de Respuesta
{
"success": true,
"message": "Producto actualizado exitosamente",
"data": {
"id_producto": 456,
"codigo": "PROD-A1-00123",
"nombre": "Mouse Inalámbrico Logitech M720 Triathlon",
"precio": 125.00,
"precio_mayor": 115.00,
"costo": 88.00,
"cantidad": 75,
"stock_minimo": 15,
"usar_multiprecio": true,
"categoria": {
"id": 15,
"nombre": "PERIFÉRICOS"
},
"unidad": {
"id": 3,
"nombre": "UNIDAD",
"codigo": "NIU"
}
},
"sincronizado": false
}
Actualización de Imagen
Si envías una nueva imagen:
- La imagen anterior se elimina automáticamente de
storage/app/public/productos/
- La nueva imagen se guarda con formato:
{timestamp}_{nombre_original}
- El campo
imagen se actualiza con la nueva ruta
Códigos de Error
Errores de validación de datos
Error interno al actualizar el producto
Actualización de Stock
IMPORTANTE: Actualizar el campo cantidad directamente modifica el stock sin generar movimientos de auditoría. Para cambios de stock con trazabilidad, usa los endpoints de movimientos de stock o crea ajustes mediante compras/ventas.
Para gestionar stock con trazabilidad:
- Entrada de stock: Registra una compra (
POST /api/compras)
- Salida de stock: Registra una venta con
afecta_stock = true
- Consultar movimientos:
GET /api/movimientos-stock?id_producto={id}
Notas de Implementación
- Solo se actualizan los campos enviados en el request (actualización parcial)
- El campo
updated_at se actualiza automáticamente
- Las relaciones (
categoria y unidad) se recargan después de la actualización
- Para eliminar (soft delete) un producto, usa:
DELETE /api/productos/{id}