Restofy Docs
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. * La compra es de contado: la plata sale de una caja abierta, un banco o una caja fuerte. * Si sale de un banco o una caja fuerte, se frena cuando no tiene saldo para cubrirla. * La línea queda con alerta si su costo se aleja demasiado del vigente o de la última compra. * 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, una unidad o el origen del pago 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
paidFromAccountId int Sí
min_value:1
cashRegisterSessionId int No
min_value:1
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>" \
  -d '{
    "supplierId": 1,
    "invoiceNumber": "string",
    "invoiceDate": "string",
    "paidFromAccountId": 1,
    "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-11-02T19:00:57Z
HTTP 200

Request

{
    "supplierId": 2,
    "invoiceNumber": "FC-6ae8d72fa62c9",
    "invoiceDate": "2026-11-02",
    "items": [
        {
            "inventoryItemId": 27,
            "storageLocationId": 4,
            "unitId": 2,
            "quantity": 500,
            "unitCostCents": 160
        }
    ]
}

Response

{
    "success": true,
    "message": "Compra registrada",
    "data": {
        "purchaseId": "3"
    }
}