Registrar merma
POST /api/inventory/create-waste
Descripción
Registra insumos o platos que se perdieron, con su motivo y su costo.
Detalles
Cada línea es un insumo con su cantidad y unidad, o un plato de la carta que descuenta su receta completa. Todo sale de la bodega elegida con el costo vigente de cada insumo. No se frena por falta de stock: la pérdida ya pasó. Falla si el motivo está pausado o un plato no tiene receta.
Permisos requeridos
inventory.waste.create
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| storageLocationId | int | Sí |
min_value:1
|
| wasteReasonId | int | Sí |
min_value:1
|
| notes | string | No |
max:500
|
| items | array | Sí | — |
| items[].inventoryItemId | int | No |
min_value:1
|
| items[].productId | int | No |
min_value:1
|
| items[].unitId | int | No |
min_value:1
|
| items[].quantity | string | Sí |
decimal
min_value:0
|
Ejemplo de request
curl -X POST https://restofy.pro/api/inventory/create-waste \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"storageLocationId": 1,
"wasteReasonId": 1,
"items": [
{
"quantity": "string"
}
]
}'
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-11-02T19:00:57Z
HTTP 200
Request
{
"storageLocationId": 4,
"wasteReasonId": 1,
"notes": "Se venció en el cuarto frío",
"items": [
{
"inventoryItemId": 27,
"productId": null,
"unitId": 2,
"quantity": 150
}
]
}
Response
{
"success": true,
"message": "Merma registrada",
"data": {
"wasteUuid": "08e3cb45-86fe-433b-8ccf-56c5460bcbcc",
"totalCostCents": 1500
}
}