Costos
POST
Compras de un insumo
POST /api/costing/list-item-purchase-costs
Descripción
Listado paginado de las compras de un insumo con su costo.
Detalles
Cada compra trae su proveedor, su fecha y el costo pagado por unidad de conteo. Indica si la compra cuenta hoy para el costo, si quedó con alerta y si fue excluida. Viene de la compra más reciente a la más antigua.
Permisos requeridos
costs.module
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| inventoryItemId | int | Sí |
min_value:1
|
Paginación
| defaultLimit | 30 |
| maxLimit | 100 |
| defaultDir | desc |
| withTotal | true |
| allowedSorts | [invoiceDate, purchaseItemId] |
| tieBreak | purchaseItemId desc |
Ejemplo de request
curl -X POST https://restofy.pro/api/costing/list-item-purchase-costs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"inventoryItemId": 1
}'
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-11-02T19:00:57Z
HTTP 200
Request
{
"inventoryItemId": 33
}
Response
{
"success": true,
"message": "Operación realizada correctamente",
"data": {
"purchases": [
{
"purchaseItemId": 6,
"purchaseUuid": "32d351a6-d116-11f1-8bb6-de64ef616b7c",
"invoiceNumber": "FC-6ae8d73d49acd",
"supplierName": "Distribuidora 6ae8d73cda5f6",
"invoiceDate": "2026-11-02",
"quantity": 100,
"unitSymbol": "g",
"unitCostCents": 200,
"hasCostAlert": 1,
"varianceBasisPoints": 90000,
"isCostExcluded": 0,
"excludedReason": null,
"isInWindow": 1
},
{
"purchaseItemId": 5,
"purchaseUuid": "323facee-d116-11f1-8bb6-de64ef616b7c",
"invoiceNumber": "FC-6ae8d73c59631",
"supplierName": "Distribuidora 6ae8d73be8b4f",
"invoiceDate": "2026-11-02",
"quantity": 100,
"unitSymbol": "g",
"unitCostCents": 20,
"hasCostAlert": 1,
"varianceBasisPoints": 10000,
"isCostExcluded": 0,
"excludedReason": null,
"isInWindow": 1
}
],
"pagination": {
"page": 1,
"limit": 30,
"total": 2,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}
}