Przejdź do treści

Przykłady produktów (ProductDefinition i Product)

Przykłady ProductDefinition (pozycja katalogu) i Product (instancja z partią/serią) dla: towaru materialnego, usługi serwisowej, szkolenia. Atrybuty według Attribute (code + value* / valueItem).

System kodów atrybutów: https://api-erp.kamsoft.pl/ns/product-attribute-type.


1. Towar materialny (good) – definicja i instancja

ProductDefinition – pozycja w katalogu: symbol, nazwa, jednostka miary, stawka VAT, producent (Reference do Party), grupa towarowa. Product – konkretna partia z numerem partii i datą ważności.

1.1 ProductDefinition (definicja towaru)

{
  "resourceType": "ProductDefinition",
  "id": "pd-good-001",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-type", "code": "good", "display": "Towar" }] },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active", "display": "Aktywny" }] },
  "identifier": [
    { "system": "https://api-erp.kamsoft.pl/ns/company", "value": "TOW-001" },
    { "system": "https://api-erp.kamsoft.pl/ns/company", "value": "5901234123457" }
  ],
  "name": "Środek czyszczący 5L",
  "attribute": [
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "unit-of-measure", "display": "Jednostka miary" }] },
      "valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/unit", "code": "szt", "display": "Sztuka" }] }]
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "vat-rate", "display": "Stawka VAT" }] },
      "valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/vat-rate", "code": "23", "display": "23%" }] }]
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "producer", "display": "Producent" }] },
      "valueReference": [{ "reference": "Party/party-org-001", "display": "ABC Sp. z o.o." }]
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "product-group", "display": "Grupa towarowa" }] },
      "valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-group", "code": "chematics", "display": "Chemia" }] }]
    }
  ]
}

1.2 Product (instancja – partia)

{
  "resourceType": "Product",
  "id": "prod-batch-001",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "productDefinition": { "reference": "ProductDefinition/pd-good-001", "display": "Środek czyszczący 5L" },
  "identifier": [
    { "system": "https://api-erp.kamsoft.pl/ns/company", "value": "PART-2025-02-001" }
  ],
  "attribute": [
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "batch-number", "display": "Numer partii" }] },
      "valueString": "PART-2025-02-001"
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "expiry-date", "display": "Data ważności" }] },
      "valueString": "2026-06-30"
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "production-date", "display": "Data produkcji" }] },
      "valueString": "2025-02-01"
    }
  ]
}

Uwaga: W dokumentach (PZ, WZ, faktura z partią) valueReference wskazuje na Product/prod-batch-001; gdy partia nie jest wymagana – na ProductDefinition/pd-good-001.


2. Usługa serwisowa (service)

ProductDefinition z type=service: jednostka (usł., godz.), stawka VAT, opcjonalnie kategoria usługi. Brak partii/serii – w dokumentach referuje się tylko definicję.

{
  "resourceType": "ProductDefinition",
  "id": "pd-service-001",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-type", "code": "service", "display": "Usługa" }] },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active", "display": "Aktywny" }] },
  "identifier": [
    { "system": "https://api-erp.kamsoft.pl/ns/company", "value": "USL-SERW-01" }
  ],
  "name": "Serwis urządzeń – przegląd roczny",
  "attribute": [
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "unit-of-measure", "display": "Jednostka miary" }] },
      "valueItem": [
        { "valueCodeableConcept": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/unit", "code": "usl", "display": "Usługa" }] } }
      ]
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "vat-rate", "display": "Stawka VAT" }] },
      "valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/vat-rate", "code": "23", "display": "23%" }] }]
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "product-group", "display": "Grupa" }] },
      "valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/service-category", "code": "maintenance", "display": "Serwis i konserwacja" }] }]
    }
  ]
}

Uwaga: Dla usług zwykle nie tworzy się Product (instancji); w DocumentPosition valueReference wskazuje na ProductDefinition/pd-service-001.


3. Szkolenie (training)

ProductDefinition z type=training: jednostka (godz., os.), czas trwania (Quantity), kategoria (BHP, soft skills). Używane w HR i w ofertach/sprzedaży szkoleń.

{
  "resourceType": "ProductDefinition",
  "id": "pd-training-001",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-type", "code": "training", "display": "Szkolenie" }] },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active", "display": "Aktywny" }] },
  "identifier": [
    { "system": "https://api-erp.kamsoft.pl/ns/company", "value": "SZK-BHP-01" }
  ],
  "name": "Szkolenie okresowe BHP",
  "attribute": [
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "unit-of-measure", "display": "Jednostka miary" }] },
      "valueItem": [
        { "valueCodeableConcept": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/unit", "code": "h", "display": "Godzina" }] } },
        { "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/quantity-type", "code": "per-participant", "display": "Na uczestnika" }] }, "valueCodeableConcept": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/unit", "code": "os", "display": "Osoba" }] } }
      ]
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "training-duration", "display": "Czas trwania" }] },
      "valueQuantity": { "value": 8, "unit": "h" }
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "vat-rate", "display": "Stawka VAT" }] },
      "valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/vat-rate", "code": "0", "display": "0% (zwolnione)" }] }]
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "product-group", "display": "Kategoria" }] },
      "valueCodeableConcept": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/training-category", "code": "bhp", "display": "BHP" }] }]
    }
  ]
}

Uwaga: valueItem z opcjonalnym type pozwala wyrazić „godzina” i „osoba (na uczestnika)”; valueQuantity – czas trwania (8 h). W HR dokumentacja ukończenia szkolenia referuje tę definicję (valueReference → ProductDefinition) oraz pracownika (Party).


4. Diagramy zależności obiektów Product / ProductDefinition

4.1. Relacja definicja → instancja

erDiagram
    ProductDefinition ||--o{ Product : "productDefinition"
    ProductDefinition ||--o{ Attribute : "attribute"
    Product ||--o{ Attribute : "attribute"
    DocumentPosition }o--o{ ProductDefinition : "valueReference"
    DocumentPosition }o--o{ Product : "valueReference"
    Inventory }o--o{ ProductDefinition : "product"
    Inventory }o--o{ Product : "product"

    ProductDefinition {
        string id
        string name
        string type
        Attribute attribute
    }

    Product {
        Reference productDefinition
        Identifier identifier
        Attribute attribute
    }

    Attribute {
        CodeableConcept code
        valueItem value
    }

4.2. Rodzaje ProductDefinition i instancje

flowchart TB
    subgraph Definicje["ProductDefinition"]
        PD1[good – towar\nunit, vat, producer, group]
        PD2[service – usługa\nunit, vat, group]
        PD3[training – szkolenie\nunit, duration, vat, category]
    end

    subgraph Instancje["Product (opcjonalnie)"]
        P1[Product\nbatch-number, expiry-date\nproduction-date]
    end

    PD1 --> P1
    PD2 -.->|"zazwyczaj brak instancji"| N[Document → ProductDefinition]
    PD3 -.->|"zazwyczaj brak instancji"| N

4.3. Użycie w dokumentach i Inventory

flowchart LR
    PD[ProductDefinition]
    P[Product instancja]
    PD --> DC[DocumentPosition\nvalueReference]
    P --> DC
    PD --> INV[Inventory\nproduct – stan zbiorczy]
    P --> INV2[Inventory\nproduct – stan z partią lub serią]

Podsumowanie

Rodzaj ProductDefinition.type Atrybuty definicji (przykład) Product (instancja)
Towar good unit-of-measure, vat-rate, producer, product-group Tak – batch-number, expiry-date, production-date
Usługa service unit-of-measure (usł.), vat-rate, product-group Zazwyczaj nie – referencja do definicji
Szkolenie training unit-of-measure (godz., os.), training-duration, vat-rate, product-group Zazwyczaj nie – referencja do definicji

Model atrybutów (code + valueQuantity, valueMoney, valueItem, valueCodeableConcept, valueReference, valueString) pokrywa cechy materialne (jednostka, VAT, partia, data ważności) i niematerialne (jednostka usługi/szkolenia, czas trwania, kategoria) oraz pozwala uzupełniać dane z systemów ERP – patrz sekcja „Zgodność atrybutów z systemami ERP” w Attribute.