Voorraad
Base path: /api/inventory
Producten
GET /inventory/products
Alle producten ophalen met categorie- en leveranciersdata.
Auth: Ingelogd
Query parameters: search, supplier_id, page, limit
POST /inventory/products
Nieuw product aanmaken. article_number wordt automatisch gegenereerd. Als geen vat_rate_id opgegeven, wordt het standaard BTW-tarief toegepast.
Auth: Admin
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
name | string | Ja | Productnaam |
sku | string | Ja | Artikelcode |
price | number | Ja | Verkoopprijs (>= 0) |
purchase_price | number | Ja | Inkoopprijs (verplicht voor kostberekeningen) |
quantity_on_hand | integer | Ja | Huidige voorraad |
low_stock_threshold | integer | Nee | Alertdrempel (standaard 5) |
category_id | integer | Nee | Productcategorie ID |
supplier_id | integer | Nee | Leverancier ID |
vat_rate_id | integer | Nee | BTW-tarief ID |
ean_code | string | Nee | EAN barcode |
PUT /inventory/products/:id
Product bijwerken. Bij uitgeschakelde inkooporders kan quantity_on_hand hier direct bijgewerkt worden.
Auth: Admin
DELETE /inventory/products/:id
Product verwijderen.
Auth: Admin
Productcategorieën
GET /inventory/categories / POST / PUT /:id / DELETE /:id
Productcategorieën beheren (naam, kleur, positie).
Voorraadtransacties
GET /inventory/transactions
Voorraadmutaties ophalen (inkomende leveringen, verkopen, correcties, intern verbruik).
Auth: Ingelogd
Query parameters: product_id, from, to
Elke transactie heeft een delta (positief = in, negatief = uit) en een reason tekst.
Leveranciers
Base path: /api/suppliers
GET /suppliers
Alle leveranciers ophalen gesorteerd op naam.
Auth: Ingelogd
Query parameters: active=true, page, limit
POST /suppliers
Nieuwe leverancier aanmaken. creditor_number wordt automatisch gegenereerd via de CRED reeks.
Auth: Admin
| Veld | Type | Verplicht |
|---|---|---|
name | string | Ja |
contact_person | string | Nee |
email | string | Nee |
phone | string | Nee |
address | string | Nee |
notes | string | Nee |
website | string | Nee |
GET /suppliers/:id
Leverancier ophalen met 20 meest recente inkooporders.
PUT /suppliers/:id / DELETE /suppliers/:id
Leverancier bijwerken of verwijderen.
Inkooporders
Base path: /api/suppliers (inkooporder endpoints)
GET /suppliers/orders
Alle inkooporders ophalen met leveranciersnaam en aantal artikelen.
Auth: Ingelogd
Query parameters: status, page, limit
POST /suppliers/orders
Nieuwe inkooporder aanmaken. order_number wordt automatisch gegenereerd via de IO reeks. Nieuwe orders hebben status created.
Auth: Admin
| Veld | Type | Verplicht |
|---|---|---|
supplier_id | integer | Ja |
staff_id | integer | Nee |
notes | string | Nee |
order_date | datum | Nee |
expected_date | datum | Nee |
PUT /suppliers/orders/:id/items
Artikelen op een inkooporder instellen (vervangt bestaande artikelen). Alleen bij status created of ordered.
Auth: Admin
{
"items": [
{ "product_id": 5, "quantity": 10, "unit_cost": 4.50 }
]
}
PUT /suppliers/orders/:id
Status of metadata van inkooporder bijwerken. Bij overgang naar received wordt voorraad automatisch bijgewerkt.
POST /suppliers/orders/:id/packing-slip
Pakbonbestand uploaden (max 10MB).
GET /suppliers/orders/:id/packing-slip
Pakbon downloaden.
GET /suppliers/packing-slips/zip
Alle pakbonnen voor een jaar downloaden als ZIP.
Query parameters: year
DELETE /suppliers/orders/:id
Inkooporder verwijderen. Werkt voor alle statussen.
Auth: Admin
| Orderstatus | Voorraadeffect |
|---|---|
created | Geen wijziging |
ordered | Geen wijziging |
received | Voorraad wordt verlaagd; corrigerende transacties aangemaakt; pakbonbestand verwijderd |
cancelled | Geen wijziging |
Response: { "ok": true }
Inkooporder statussen
| Status | Beschrijving |
|---|---|
created | Order aangemaakt, artikelen worden toegevoegd |
ordered | Bestelling verstuurd naar leverancier |
received | Goederen ontvangen; voorraad bijgewerkt |
cancelled | Order geannuleerd |
Automatische nummering
| Reeksprefix | Entiteit | Voorbeeld |
|---|---|---|
IO | Inkooporders | IO2601, IO2602 |
CRED | Leverancier crediteurennummers | CRED001, CRED002 |
ART_PRODUCT | Product artikelnummers | ART_PRODUCT001 |