Przejdź do treści

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.