Compras de insumos
POST
Registrar compra
POST /api/purchases/create-purchase
Descripción
Registra la factura de un proveedor e ingresa los insumos a bodega.
Detalles
* Cada insumo entra a la bodega indicada en su unidad de compra y suma stock. * El costo de cada insumo se recalcula con un promedio ponderado de sus compras recientes. * El total se calcula en el servidor a partir de las líneas; no se acepta un total del cliente. * Falla si el proveedor, un insumo, una bodega o una unidad no son válidos.
Permisos requeridos
purchases.module
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| supplierId | int | Sí |
min_value:1
|
| invoiceNumber | string | Sí |
min:1
max:100
|
| invoiceDate | string | Sí |
min:10
max:10
|
| description | string | No |
max:500
|
| items | array | Sí | — |
| items[].inventoryItemId | int | Sí |
min_value:1
|
| items[].storageLocationId | int | Sí |
min_value:1
|
| items[].unitId | int | Sí |
min_value:1
|
| items[].quantity | string | Sí |
decimal
min_value:0
|
| items[].unitCostCents | int | Sí |
min_value:0
|
Ejemplo de request
curl -X POST https://restofy.pro/api/purchases/create-purchase \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-H "X-Tenant-Key: <tenantKey>" \
-d '{
"supplierId": 1,
"invoiceNumber": "string",
"invoiceDate": "string",
"items": [
{
"inventoryItemId": 1,
"storageLocationId": 1,
"unitId": 1,
"quantity": "string",
"unitCostCents": 1
}
]
}'
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-09-08T16:35:34Z
HTTP 200
Request
{
"supplierId": 2,
"invoiceNumber": "FAC-6aa0392032b6a",
"invoiceDate": "2026-09-04",
"items": [
{
"inventoryItemId": 27,
"storageLocationId": 4,
"unitId": 2,
"quantity": 1000,
"unitCostCents": 100
}
]
}
Response
{
"success": true,
"message": "Compra registrada",
"data": {
"purchaseId": "3"
}
}