Przykładowe dokumenty (test podejścia)
Poniżej po jednym przykładowym dokumencie z każdej przestrzeni (CRM, FK, WHS, HR, EOD) zbudowanym wyłącznie z obiektów Document i DocumentPosition. Format uproszczony (JSON); wartości przykładowe.
W przykładach używane są wyłącznie pola rdzenia Document (identifier, issueDate, participant, relatedDocument, position, attribute, attachment, statusDate, expectedDate, realizationDate). Pola specyficzne dla danej przestrzeni (np. dla FK: paymentMethod, paymentAccount, accountingDate, dueDate, totalAmount, splitPayment, register, ksefAcquisitionDate) należą do profilu i są opisane w Document.md (sekcja 2a).
URL: W przykładach systemy kodów używają adresu platformy api-erp.kamsoft.pl w formacie URL: https://api-erp.kamsoft.pl/ns/ (np. https://api-erp.kamsoft.pl/ns/document-type). Rodzaj identyfikatora wynika z Identifier.system (company, origin, eod itd.).
1. CRM – Zamówienie sprzedaży (Sales Order)
{
"id": "doc-crm-001",
"meta": { "lastModified": "2025-02-20T10:00:00Z" },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "ZO/2025/001" }
],
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-type", "code": "sales-order", "display": "Zamówienie sprzedaży" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-status", "code": "issued", "display": "Wystawione" }] },
"issueDate": "2025-02-20",
"expectedDate": "2025-03-01",
"participant": [
{ "reference": "Party/seller-01", "display": "Firma Sprzedająca Sp. z o.o." },
{ "reference": "Party/customer-01", "display": "Kontrahent ABC" }
],
"position": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "order-line", "display": "Pozycja zamówienia" }] },
"positionNo": 1,
"valueItem": [
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-item-type", "code": "quantity", "display": "Ilość" }] }, "valueQuantity": { "value": 10, "unit": "szt" } },
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-item-type", "code": "unit-price", "display": "Cena jedn." }] }, "valueMoney": { "value": 50, "currency": "PLN" } }
],
"valueReference": [{ "reference": "Product/P-001", "display": "Produkt A" }],
"valueString": "Usługa dostawy"
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "order-line", "display": "Pozycja zamówienia" }] },
"positionNo": 2,
"valueQuantity": { "value": 299.99, "unit": "PLN" },
"valueReference": [{ "reference": "Product/P-002", "display": "Produkt B" }]
}
]
}
Uwaga: expectedDate (rdzeń) – oczekiwana data realizacji zamówienia. Linia 1 używa valueItem (ilość + cena jedn.), linia 2 – valueQuantity. W profilu CRM: attribute z datą dostawy, jednostką; role participant (seller/customer) przez referencję + CodeableConcept w profilu.
2. FK – Faktura (Invoice)
{
"id": "doc-fk-001",
"meta": { "lastModified": "2025-02-19T14:30:00Z" },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "FV/2025/0123" },
{ "system": "https://api-erp.kamsoft.pl/ns/origin", "value": "FK-EXT-456" }
],
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-type", "code": "invoice", "display": "Faktura" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-status", "code": "issued", "display": "Wystawiona" }] },
"issueDate": "2025-02-19",
"participant": [
{ "reference": "Party/supplier-01", "display": "Dostawca XYZ" },
{ "reference": "Party/customer-01", "display": "Odbiorca ABC" }
],
"attachment": [],
"position": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "invoice-line", "display": "Wiersz faktury" }] },
"positionNo": 1,
"valueItem": [
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-item-type", "code": "quantity", "display": "Ilość" }] }, "valueQuantity": { "value": 1, "unit": "szt" } },
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-item-type", "code": "unit-price", "display": "Cena jedn." }] }, "valueMoney": { "value": 1000, "currency": "PLN" } },
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-item-type", "code": "net-amount", "display": "Kwota netto" }] }, "valueMoney": { "value": 1000, "currency": "PLN" } },
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-item-type", "code": "vat-amount", "display": "Kwota VAT" }] }, "valueMoney": { "value": 230, "currency": "PLN" } }
],
"valueCodeableConcept": [
{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/vat-rate", "code": "23", "display": "23%" }] }
],
"valueReference": [{ "reference": "Product/P-001", "display": "Produkt A" }],
"valueString": "Usługa wg umowy"
},
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "vat-summary-line", "display": "Podsumowanie VAT" }] },
"positionNo": 2,
"valueItem": [
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-item-type", "code": "net-amount", "display": "Kwota netto" }] }, "valueMoney": { "value": 1000, "currency": "PLN" } },
{ "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-item-type", "code": "vat-amount", "display": "Kwota VAT" }] }, "valueMoney": { "value": 230, "currency": "PLN" } }
],
"valueCodeableConcept": [
{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/vat-rate", "code": "23", "display": "23%" }] }
]
}
],
"attribute": [
{ "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-attribute-type", "code": "total-net", "display": "Suma netto" }] }, "valueMoney": { "value": 1000, "currency": "PLN" } },
{ "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-attribute-type", "code": "total-vat", "display": "Suma VAT" }] }, "valueMoney": { "value": 230, "currency": "PLN" } },
{ "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-attribute-type", "code": "total-gross", "display": "Suma brutto" }] }, "valueMoney": { "value": 1230, "currency": "PLN" } }
]
}
Uwaga: Wiersz faktury i podsumowanie VAT są w position (valueItem, valueCodeableConcept). Podsumowanie pozycji (suma netto, suma VAT, suma brutto) jest w attribute[] dokumentu – trzy atrybuty z code total-net, total-vat, total-gross i valueMoney. W profilu FK (poza rdzeniem Document) można dodać na poziomie dokumentu: paymentMethod, paymentAccount, accountingDate, dueDate, receiptDate, saleDate, vatDate, statusDate, ksefAcquisitionDate, totalAmount, splitPayment, register. Dekret jako position z code decree-line – konta Wn/Ma przez valueReference do kont księgowych lub valueCodeableConcept.
2b. FK – Faktura z pozycjami alokacji (valueAllocation)
Rozszerzenie przykładu faktury o pozycje alokacji (code allocation-item): kwoty do rozdzielenia w valueItem (allocation-item-type: cost-net-amount, vat-amount-non-deductible, cost-gross-amount), reguły rozkładu w valueAllocation (type KR/KO + weights lub costCarriers). Pozycja 3: koszt netto i VAT nieodliczalny z przypisaniem do rodzaju kosztów (KR) i ośrodka kosztów (KO) przez wagi. Pozycja 4: koszt brutto z KR przez wagi i KO przez nośnik kosztów (powierzchnia). Szczegóły pola valueAllocation w DocumentPosition.
Pełny przykład JSON: Document-Accounting-Example.json
3. WHS – Przyjęcie towaru (PZ, Goods Receipt)
{
"id": "doc-whs-001",
"meta": { "lastModified": "2025-02-18T09:15:00Z" },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "PZ/2025/0044" }
],
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-type", "code": "goods-receipt", "display": "Przyjęcie towaru (PZ)" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-status", "code": "completed", "display": "Zrealizowane" }] },
"issueDate": "2025-02-18",
"realizationDate": "2025-02-18",
"participant": [
{ "reference": "Party/supplier-01", "display": "Dostawca" },
{ "reference": "Party/warehouse-01", "display": "Magazyn Główny" }
],
"position": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "goods-receipt-line", "display": "Pozycja PZ" }] },
"positionNo": 1,
"valueQuantity": { "value": 100, "unit": "szt" },
"valueReference": [
{ "reference": "Product/P-001", "display": "Produkt A" },
{ "reference": "Location/LOC-01", "display": "Strefa A-01" }
],
"valueString": "Partia 20250218"
}
]
}
Uwaga: realizationDate (rdzeń) – data realizacji przyjęcia. W profilu WHS: referencja do magazynu (Warehouse), lokalizacja w valueReference lub attribute; partia, data ważności w attribute.
4. HR – Dokument kadrowy (szkolenie)
{
"id": "doc-hr-001",
"meta": { "lastModified": "2025-02-17T16:00:00Z" },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "HR-SZK/2025/007" }
],
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-type", "code": "training-record", "display": "Dokumentacja szkolenia" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-status", "code": "approved", "display": "Zatwierdzony" }] },
"issueDate": "2025-02-17",
"participant": [
{ "reference": "Party/employee-01", "display": "Jan Kowalski" }
],
"position": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "hr-segment", "display": "Segment HR" }] },
"positionNo": 1,
"valueCodeableConcept": [
{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/hr-segment-type", "code": "training", "display": "Szkolenie" }] },
{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/hr-status", "code": "completed", "display": "Ukończone" }] }
],
"valueReference": [{ "reference": "Training/T-001", "display": "BHP – szkolenie okresowe" }],
"valueString": "Szkolenie okresowe BHP, ważne do 2026-02-17"
}
]
}
Uwaga: W profilu HR: daty ważności, certyfikat, uprawnienia w attribute; valueReference do zasobu Szkolenie / Umowa w zależności od typu dokumentu.
5. EOD – Dokument w obiegu (zatwierdzenie)
{
"id": "doc-eod-001",
"meta": { "lastModified": "2025-02-20T11:00:00Z" },
"identifier": [
{ "system": "https://api-erp.kamsoft.pl/ns/eod", "value": "EOD-789" }
],
"type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-type", "code": "workflow-approval", "display": "Zatwierdzenie w obiegu" }] },
"status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-status", "code": "approved", "display": "Zatwierdzony" }] },
"issueDate": "2025-02-20",
"basedOn": [{ "reference": "Document/doc-fk-001", "display": "Faktura FV/2025/0123" }],
"participant": [
{ "reference": "Party/approver-01", "display": "Anna Nowak" }
],
"position": [
{
"code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "workflow-segment", "display": "Krok obiegu" }] },
"positionNo": 1,
"valueCodeableConcept": [
{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/eod-step-status", "code": "approved", "display": "Zatwierdzono" }] }
],
"valueReference": [{ "reference": "Document/doc-fk-001" }],
"valueString": "Zatwierdzono do księgowania."
}
]
}
Uwaga: basedOn wskazuje na dokument źródłowy (faktura w FK). W profilu EOD: data kroku, użytkownik, komentarz w attribute; relatedDocument do innych wersji lub powiązanych obiegów.
6. Diagramy zależności obiektów Document
6.1. Struktura Document i DocumentPosition
erDiagram
Document ||--|{ DocumentPosition : "position"
Document }o--o{ Party : "participant"
Document }o--o{ Attribute : "attribute"
DocumentPosition }o--o{ Party : "valueReference"
DocumentPosition }o--o{ Product : "valueReference"
DocumentPosition }o--o{ ProductDefinition : "valueReference"
DocumentPosition }o--o{ Location : "valueReference"
Document }o--o{ Document : "relatedDocument, basedOn"
Document {
string id
CodeableConcept type
date issueDate
Reference participant
Attachment attachment
dateTime statusDate
date expectedDate
date realizationDate
}
DocumentPosition {
integer positionNo
CodeableConcept code
Quantity valueQuantity
ValueItem valueItem
CodeableConcept valueCodeableConcept
Reference valueReference
string valueString
}
6.2. Domeny i typy dokumentów
flowchart TB
subgraph Document["Document"]
D[identifier, type, issueDate, participant]
end
D --> CRM[CRM: Zamówienie, oferta, umowa]
D --> FK[FK: Faktura, dekret, dokument kasowy]
D --> WHS[WHS: PZ, WZ, przesunięcie]
D --> HR[HR: Dokument kadrowy, szkolenie]
D --> EOD[EOD: Zatwierdzenie, obieg]
6.3. Position (code) a pola value* w zależności od przestrzeni
flowchart LR
subgraph CRM_pos["CRM: order-line"]
C1[valueReference → Product\nvalueItem: quantity, unit-price]
end
subgraph FK_pos["FK: invoice-line, vat-summary-line"]
C2[valueReference → Product\nvalueItem: quantity, netto, VAT\nattribute: podsumowanie total-net, total-vat, total-gross]
end
subgraph WHS_pos["WHS: goods-receipt-line"]
C3[valueReference → Product, Location, Party\nvalueQuantity: ilość]
end
subgraph HR_pos["HR: hr-segment"]
C4[valueCodeableConcept: typ, status\nvalueReference: szkolenie, umowa]
end
subgraph EOD_pos["EOD: workflow-segment"]
C5[valueReference → Document\nvalueCodeableConcept: status]
end
6.4. Uczestnicy dokumentu (participant) i referencje w position
flowchart TB
Doc[Document]
Doc --> participant[participant: Party, PartyRole\nwystawca, odbiorca, magazyn, dostawca]
Doc --> pos[position]
Doc --> attr[attribute: podsumowanie pozycji\nnp. total-net, total-vat, total-gross]
pos --> ref[valueReference:\nProduct, ProductDefinition,\nLocation, Party]
pos --> qty[valueQuantity / valueItem]
pos --> code[valueCodeableConcept:\nkonto, VAT, status]
Podsumowanie testu
| Przestrzeń | Typ dokumentu | Position (code) | Wykorzystane pola DocumentPosition / attribute |
|---|---|---|---|
| CRM | Zamówienie sprzedaży | order-line | valueItem, valueQuantity, valueReference, valueString, positionNo |
| FK | Faktura | invoice-line, vat-summary-line | valueItem, valueCodeableConcept, valueReference, valueString; attribute: total-net, total-vat, total-gross (podsumowanie pozycji) |
| WHS | PZ | goods-receipt-line | valueQuantity, valueReference, valueString, positionNo |
| HR | Dokument szkolenia | hr-segment | valueCodeableConcept, valueReference, valueString |
| EOD | Zatwierdzenie | workflow-segment | valueCodeableConcept, valueReference, valueString; Document.basedOn |
Wszystkie przykłady korzystają z tego samego rdzenia Document (identifier, type, status, issueDate, participant, relatedDocument, position, attribute, attachment, statusDate, expectedDate, realizationDate) i DocumentPosition (code, positionNo, valueQuantity, valueItem, valueCodeableConcept, valueReference, valueString). Pola specyficzne dla faktury (paymentMethod, totalAmount, splitPayment itd.) są w profilu FK, nie w rdzeniu. Różnice między systemami wynikają z type i code position oraz z wyboru pól value i attribute* – bez definiowania osobnych typów dokumentu per system.