PurchaseOrder
PurchaseOrder (zamówienie zakupu) to zasób reprezentujący request do dostawcy na dostarczenie towarów lub usług. Zawiera informacje o kupującym, dostawcy, pozycjach zamówienia, wartości oraz statusie. Jest dokumentem źródłowym dla GoodsReceipt (przyjęcie towaru) i Invoice (faktura od dostawcy). Identyfikacja przez Identifier, strony przez PartyRole, pozycje przez specjalizowaną strukturę. Wzorowany na SAP (Purchase Order, PO), Oracle (Requisition + PO), UBL 2.3 (Order).
Rozszerza DomainResource. Zasób z pakietu Kamsoft.FAIR (Fast Adaptive Interoperable Resources).
1. Zakres i zastosowanie
PurchaseOrder = jeden dokument handlowy reprezentujący propozycję kupienia od dostawcy. Cykl życia:
- draft → zatwierdzenie wewnętrzne
- pending → oczekiwanie na potwierdę dostawcy
- approved → akceptacja dostawcy
- partial → częściowa dostawa
- delivered → pełna dostawa (koniec)
- cancelled → anulowanie
Jeden PurchaseOrder może prowadzić do wielu GoodsReceipt (wielokrotne dostawy). Każdy GoodsReceipt referuje źródłowy PO.
2. Zawartość (struktura)
Oprócz elementów DomainResource (id, meta, text, comment, category, status, type, contained, attribute):
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| identifier | 1..* | Identifier | Numer zamówienia (np. PO-2026-001); system = uuid firmy, value = numer |
| issueDate | 1..1 | date | Data wystawienia zamówienia |
| party | 2..* | Reference(PartyRole) | [0] = kupujący (Role: buyer), [1] = dostawca (Role: supplier) |
| position | 1..* | PurchaseOrderPosition | Pozycje zamówienia (towar, ilość, cena) |
| amount | 1..1 | Money | Całkowita wartość netto (suma pozycji) |
| status | 1..1 | CodeableConcept | draft, pending, approved, partial, delivered, cancelled |
| expectedDeliveryDate | 0..1 | date | Oczekiwana data dostawy |
| dueDate | 0..1 | date | Termin płatności (dla PO z warunkami płatności) |
| paymentTerms | 0..1 | CodeableConcept | Net 30, Net 60, Prepay, COD (system: payment-terms) |
| sourceDocument | 0..1 | Reference(Document) | Zapotrzebowanie lub wniosek źródłowy |
| relatedDocument | 0..* | Reference(Document | GoodsReceipt) | Powiązane dokumenty (GoodsReceipt, Amendment) |
| attribute | 0..* | Attribute | Dodatkowe atrybuty (np. total-tax, discount-total) |
3. PurchaseOrderPosition
Pozycja w zamówieniu zakupu (referencja na produkt, ilość, cena).
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| positionNo | 1..1 | integer | Numer pozycji (1, 2, 3, …) |
| product | 1..1 | Reference(ProductDefinition) | Produkty/usługa |
| description | 0..1 | string | Opis towaru (jeśli różny od ProductDefinition.name) |
| quantity | 1..1 | Quantity | Ilość zamawianego towaru |
| unitPrice | 1..1 | Money | Cena jednostkowa netto |
| amount | 1..1 | Money | Wartość netto pozycji (quantity × unitPrice) |
| status | 0..1 | CodeableConcept | pending, confirmed, partial, delivered, cancelled |
| supplierProductId | 0..1 | string | Numer artykułu u dostawcy (SKU) |
| deliverySchedule | 0..* | DeliveryScheduleLine | Harmonogram dostaw (dla zamówień wieloetapowych) |
4. Przepływ biznesowy
1. Pracownik pionu tworzy PurchaseOrder (status=draft)
↓
2. System routuje na zatwierdzenie RBAC
- < €5.000: Kierownik pionu (Duty: approve-purchase-small)
- €5.000–€50.000: Kierownik finansowy (Duty: approve-purchase-medium)
- > €50.000: CFO (Duty: approve-purchase-large)
↓
3. Po zatwierdzeniu status → pending
↓
4. Wysłanie do dostawcy (e-mail, EDI, portal)
↓
5. Dostawca potwierdza → status → approved
↓
6. Dostarczenie towaru → GoodsReceipt (sourceDocument = PO)
↓
7. Invoice od dostawcy (sourceDocument = PO, matchuje GoodsReceipt)
↓
8. Status → delivered (po kompletnej dostawie)
5. Wymagania prawne
Kodeks Handlowy (ustawa o ochronie konkurencji i konsumentów): - PurchaseOrder stanowi ofertę (zmiana oferty wymaga potwierdzenia stron) - Zmiana warunków PO po zatwierdzeniu wymaga Amendment
Audit trail (dla firm zarządzających bezpieczeństwem zasobów): - Każda zmiana: kto, kiedy, co zmieniono (historia w extended resourceHistory)
Procurment Controls (COSO, SOX-equivalent dla ERP): - Zatwierdzające mogą jedynie osoby z przydzieloną Duty/Capability (RBAC) - Kwotowe limity (approval authority matrix)
6. Relacje do pozostałych zasobów
- party[0] → PartyRole (Role: buyer) → Party (kupujący)
- party[1] → PartyRole (Role: supplier) → Party (dostawca)
- position[].product → ProductDefinition
- sourceDocument → Document (Requisition, jeśli istnieje)
- relatedDocument → GoodsReceipt (stworzone na bazie PO), Amendment (zmiana PO)
- attribute → Attribute
7. Zgodność z systemami wzorcowymi
| System | Odpowiednik | Uwagi |
|---|---|---|
| SAP | Purchase Order (PO), tbl. EKKO (header) + EKPO (position) | PurchaseOrder = EKKO/EKPO struktura |
| Oracle | Purchase Order (PO), tbl. PO_HEADERS_ALL + PO_LINES_ALL | Dokument źródłowy dla receipt |
| UBL 2.3 | Order | Wspólna struktura buyer, seller, lines |
| D365 | Purchase Order, tbl. PurchaseOrderEntity | Header + lines, workflow approval |
8. Przykład
{
"resourceType": "PurchaseOrder",
"id": "po-2026-001",
"identifier": [
{
"system": "urn:uuid:kamsoft-erp",
"value": "PO-2026-001"
}
],
"type": {
"coding": [{
"system": "https://api-erp.kamsoft.pl/ns/document-type",
"code": "purchase-order"
}]
},
"status": "approved",
"issueDate": "2026-02-20",
"expectedDeliveryDate": "2026-02-28",
"party": [
{
"reference": "PartyRole/role-buyer-kamsoft",
"display": "KAMSOFT sp. z o.o. (Buyer)"
},
{
"reference": "PartyRole/role-supplier-techsupply",
"display": "TechSupply Ltd (Supplier)"
}
],
"position": [
{
"positionNo": 1,
"product": {
"reference": "ProductDefinition/soft-lic-001",
"display": "Software License (annual subscription)"
},
"description": "Business Intelligence Suite - 1000 seats",
"quantity": {
"value": 1000,
"unit": "seats"
},
"unitPrice": {
"value": 50,
"currency": "EUR"
},
"amount": {
"value": 50000,
"currency": "EUR"
},
"status": {
"coding": [{
"code": "pending"
}]
},
"supplierProductId": "BILS-1000-SEAT"
}
],
"amount": {
"value": 50000,
"currency": "EUR"
},
"paymentTerms": {
"coding": [{
"system": "https://api-erp.kamsoft.pl/ns/payment-terms",
"code": "net-30"
}]
}
}
9. Odniesienia
- DomainResource, PartyRole, Party
- ProductDefinition
- Identifier, CodeableConcept, Reference, Money, Quantity
- Attribute
- GoodsReceipt (Planned) — dokument przyjęcia na bazie PO
- Kodeks Handlowy, COSO framework