Przejdź do treści

Przykłady WMS (Warehouse, Location, Inventory, InventoryDocument)

Przykłady zasobów z katalogu WMS: Warehouse (jako Party), Location, Inventory, InventoryDocument (kanoniczny dokument ruchu – PZ, WZ, przesunięcie, korekta; model Kamsoft.FAIR). System kodów: https://api-erp.kamsoft.pl/ns/. Standard modeli: Kamsoft.FAIR.


1. Warehouse (magazyn) = Party

Magazyn w modelu nie jest osobnym zasobem – to Party z type=branch, category=warehouse. Pełny przykład w Party-Examples sekcja „Oddział / miejsce (branch)”. Skrót:

  • Party/party-warehouse-01 – type=branch, category=warehouse, identifier (np. MAG-01), display („Magazyn Główny – Warszawa”), address, contactPoint. Używany jako owner w Location i w InventoryDocument.participant.
{
  "resourceType": "Party",
  "id": "party-warehouse-01",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-type", "code": "branch", "display": "Oddział" }] },
  "category": [{ "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/party-category", "code": "warehouse", "display": "Magazyn" }] }],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "MAG-01" }],
  "display": "Magazyn Główny – Warszawa",
  "address": [{ "use": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/address-use", "code": "work" }] }, "line": ["ul. Magazynowa 10"], "city": "Warszawa", "postalCode": "02-001", "country": "PL" }]
}

2. Location (lokalizacja w magazynie)

Hierarchia: strefa → regał → bin. owner lub managingParty = Party (magazyn – firma, oddział); partOf = nadrzędna Location.

Strefa (zone):

{
  "resourceType": "Location",
  "id": "loc-zone-01",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "A" }],
  "name": "Strefa A – regały wysokie",
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/location-type", "code": "storage", "display": "Składowanie" }] },
  "owner": { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

Regał (partOf = strefa):

{
  "resourceType": "Location",
  "id": "loc-rack-01",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "A-01" }],
  "name": "Regał A-01",
  "owner": { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" },
  "partOf": [{ "reference": "Location/loc-zone-01", "display": "Strefa A" }],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

Bin (komórka):

{
  "resourceType": "Location",
  "id": "loc-bin-01",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "A-01-02-15" }],
  "name": "Bin A-01-02-15",
  "owner": { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" },
  "partOf": [{ "reference": "Location/loc-rack-01", "display": "Regał A-01" }],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

2a. Hierarchia magazynów (Location type=warehouse)

Hierarchia magazynów jest modelowana przez Location z type = warehouse: każdy magazyn to jeden Location (węzeł drzewa) z partOf = Location (magazyn nadrzędny) i owner lub managingParty = Party (tożsamość magazynu). Zob. Location sekcja 1a, Warehouse.

Magazyn centralny (szczebel najwyższy):

{
  "resourceType": "Location",
  "id": "loc-wh-central",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "WH-CENTRAL" }],
  "name": "Magazyn centralny",
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/location-type", "code": "warehouse", "display": "Magazyn" }] },
  "owner": { "reference": "Party/party-warehouse-central", "display": "Magazyn centralny – Party" },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

Magazyn regionalny (partOf = magazyn centralny):

{
  "resourceType": "Location",
  "id": "loc-wh-region-1",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "WH-REG-01" }],
  "name": "Magazyn regionalny – Południe",
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/location-type", "code": "warehouse", "display": "Magazyn" }] },
  "owner": { "reference": "Party/party-warehouse-region-01", "display": "Magazyn regionalny 01" },
  "partOf": [{ "reference": "Location/loc-wh-central", "display": "Magazyn centralny" }],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

Uwaga: Party (party-warehouse-central, party-warehouse-region-01) to tożsamość magazynu (identifier, adres); Location z type=warehouse to węzeł w drzewie hierarchii. Strefy/regały/bin wewnątrz danego magazynu to Location z owner = Party (ten magazyn), type = storage/zone/bin (nie warehouse).


3. Location (biuro / oddział)

Location jako miejsce w organizacji: budynek → piętro → pokój. owner lub managingParty = Party (oddział, organizacja); partOf = nadrzędna Location.

{
  "resourceType": "Location",
  "id": "loc-office-301",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "BUD-3-POK-301" }],
  "name": "Biuro 301 – piętro 3",
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/location-type", "code": "office", "display": "Biuro" }] },
  "owner": { "reference": "Party/party-branch-001", "display": "Oddział Kraków" },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

4. Inventory (stan zbiorczy – bez partii/serii)

product → ProductDefinition; location → Location; quantity – ilość.

{
  "resourceType": "Inventory",
  "id": "inv-001",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "INV-001" }],
  "product": { "reference": "ProductDefinition/pd-towar-100", "display": "Towar A – szt." },
  "location": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" },
  "quantity": { "value": 150, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
  "period": { "start": "2025-02-20", "end": "2025-02-20" },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

5. Inventory (stan z partią)

productProduct (productDefinition + attribute batch-number); location → Location; quantity – ilość partii w tej lokalizacji.

{
  "resourceType": "Inventory",
  "id": "inv-002",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "INV-002" }],
  "product": { "reference": "Product/prod-batch-L2025001", "display": "Towar A – partia L-2025-001" },
  "location": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" },
  "quantity": { "value": 50, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

Product (partia):

{
  "resourceType": "Product",
  "id": "prod-batch-L2025001",
  "productDefinition": { "reference": "ProductDefinition/pd-towar-100", "display": "Towar A" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "L-2025-001" }],
  "attribute": [{ "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "batch-number", "display": "Numer partii" }] }, "valueString": "L-2025-001" }]
}

6. Inventory (stan z numerem seryjnym)

productProduct (attribute serial-number); quantity = 1 (typowo jedna szt. na numer seryjny).

{
  "resourceType": "Inventory",
  "id": "inv-003",
  "meta": { "lastModified": "2025-02-20T10:00:00Z" },
  "product": { "reference": "Product/prod-serial-SN123456", "display": "Urządzenie X – SN-123456" },
  "location": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" },
  "quantity": { "value": 1, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "active" }] }
}

Product (numer seryjny):

{
  "resourceType": "Product",
  "id": "prod-serial-SN123456",
  "productDefinition": { "reference": "ProductDefinition/pd-urzadzenie-x", "display": "Urządzenie X" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "SN-123456" }],
  "attribute": [{ "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/product-attribute-type", "code": "serial-number", "display": "Numer seryjny" }] }, "valueString": "SN-123456" }]
}

7. Document (WHS) – przykład referencyjny

Document type=goods-receipt (PZ); participant – magazyn (Party), opcjonalnie dostawca; position – wiersze goods-receipt-line z valueReference (Product lub ProductDefinition, Location, Party magazyn), valueQuantity (ilość). W modelu kanonicznym WMS dokumentem ruchu jest InventoryDocument z movementType=receipt.

{
  "resourceType": "Document",
  "id": "doc-pz-001",
  "meta": { "lastModified": "2025-02-20T12:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "PZ/2025/001" }],
  "type": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-type", "code": "goods-receipt", "display": "Przyjęcie towaru (PZ)" }] },
  "issueDate": "2025-02-20",
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "completed" }] },
  "participant": [
    { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" },
    { "reference": "Party/party-org-001", "display": "Dostawca ABC" }
  ],
  "position": [
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "goods-receipt-line", "display": "Wiersz PZ" }] },
      "positionNo": 1,
      "valueQuantity": { "value": 100, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "valueReference": [
        { "reference": "ProductDefinition/pd-towar-100", "display": "Towar A" },
        { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" },
        { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" }
      ]
    },
    {
      "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/document-position-type", "code": "goods-receipt-line", "display": "Wiersz PZ" }] },
      "positionNo": 2,
      "valueQuantity": { "value": 50, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "valueReference": [
        { "reference": "Product/prod-batch-L2025001", "display": "Towar A – partia L-2025-001" },
        { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" },
        { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" }
      ]
    }
  ]
}

Uwaga: W jednym position valueReference może zawierać produkt (ProductDefinition lub Product), Location i Party (magazyn); kolejność lub konwencja profilu określa, która referencja do czego się odnosi.


8. InventoryDocument (kanoniczny dokument ruchu — model Kamsoft.FAIR)

InventoryDocument to zasób z pakietu Kamsoft.FAIR: reprezentuje zmianę stanu magazynowego (ilość, lokalizacja). movementType: receipt (PZ), issue (WZ), transfer (przesunięcie), adjustment (korekta). Uczestnicy (magazyn, dostawca, odbiorca) w participant; kierunek ruchu przez fromLocation / toLocation na nagłówku lub pozycjach oraz quantity (delta: + przy receipt, − przy issue).

8.1. Receipt (PZ – przyjęcie towaru)

{
  "resourceType": "InventoryDocument",
  "id": "invdoc-pz-001",
  "meta": { "lastModified": "2025-02-20T12:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "PZ/2025/001" }],
  "movementType": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/inventory-movement-type", "code": "receipt", "display": "Przyjęcie towaru (PZ)" }] },
  "effectiveDate": "2025-02-20",
  "participant": [
    { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" },
    { "reference": "Party/party-org-001", "display": "Dostawca ABC" }
  ],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "completed" }] },
  "position": [
    {
      "positionNo": 1,
      "product": { "reference": "ProductDefinition/pd-towar-100", "display": "Towar A" },
      "quantity": { "value": 100, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "toLocation": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" }
    },
    {
      "positionNo": 2,
      "product": { "reference": "Product/prod-batch-L2025001", "display": "Towar A – partia L-2025-001" },
      "quantity": { "value": 50, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "toLocation": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" }
    }
  ]
}

8.2. Issue (WZ – wydanie towaru)

{
  "resourceType": "InventoryDocument",
  "id": "invdoc-wz-001",
  "meta": { "lastModified": "2025-02-21T09:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "WZ/2025/001" }],
  "movementType": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/inventory-movement-type", "code": "issue", "display": "Wydanie towaru (WZ)" }] },
  "effectiveDate": "2025-02-21",
  "fromLocation": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" },
  "participant": [
    { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" },
    { "reference": "Party/party-org-002", "display": "Odbiorca XYZ" }
  ],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "completed" }] },
  "position": [
    {
      "positionNo": 1,
      "product": { "reference": "ProductDefinition/pd-towar-100", "display": "Towar A" },
      "quantity": { "value": -30, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "fromLocation": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" }
    }
  ]
}

8.3. Transfer (przesunięcie między lokalizacjami)

{
  "resourceType": "InventoryDocument",
  "id": "invdoc-transfer-001",
  "meta": { "lastModified": "2025-02-22T14:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "MM/2025/001" }],
  "movementType": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/inventory-movement-type", "code": "transfer", "display": "Przesunięcie" }] },
  "effectiveDate": "2025-02-22",
  "participant": [{ "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" }],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "completed" }] },
  "position": [
    {
      "positionNo": 1,
      "product": { "reference": "ProductDefinition/pd-towar-100", "display": "Towar A" },
      "quantity": { "value": 20, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "fromLocation": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" },
      "toLocation": { "reference": "Location/loc-bin-02", "display": "Bin A-01-02-16" }
    }
  ]
}

8.4. Adjustment (korekta stanu)

Korekta ilości na jednej lokalizacji (np. inwentaryzacja, poprawka). movementType = adjustment; pozycje z toLocation lub fromLocation (jedna lokacja) i quantity (delta: + uzupełnienie, − ubytek).

{
  "resourceType": "InventoryDocument",
  "id": "invdoc-adj-001",
  "meta": { "lastModified": "2025-02-23T10:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "KOR/2025/001" }],
  "movementType": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/inventory-movement-type", "code": "adjustment", "display": "Korekta stanu" }] },
  "effectiveDate": "2025-02-23",
  "participant": [{ "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" }],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "completed" }] },
  "position": [
    {
      "positionNo": 1,
      "product": { "reference": "ProductDefinition/pd-towar-100", "display": "Towar A" },
      "quantity": { "value": -2, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "toLocation": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" }
    }
  ]
}

8.5. PZ z magazynem na nagłówku i binami na pozycjach

Na nagłówku toLocation = Location oznaczająca magazyn (np. Location z type=warehouse, jak w sekcji 2a); na pozycjach toLocation = konkretny bin (regał, półka). Lokalizacje na pozycjach powinny być w hierarchii magazynu z nagłówka (partOf lub ten sam owner). Dostawca w participant.

{
  "resourceType": "InventoryDocument",
  "id": "invdoc-pz-002",
  "meta": { "lastModified": "2025-02-24T08:00:00Z" },
  "identifier": [{ "system": "https://api-erp.kamsoft.pl/ns/company", "value": "PZ/2025/002" }],
  "movementType": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/inventory-movement-type", "code": "receipt", "display": "Przyjęcie towaru (PZ)" }] },
  "effectiveDate": "2025-02-24",
  "toLocation": { "reference": "Location/loc-wh-central", "display": "Magazyn centralny" },
  "participant": [
    { "reference": "Party/party-warehouse-01", "display": "Magazyn Główny" },
    { "reference": "Party/party-org-001", "display": "Dostawca ABC" }
  ],
  "status": { "coding": [{ "system": "https://api-erp.kamsoft.pl/ns/status", "code": "completed" }] },
  "position": [
    {
      "positionNo": 1,
      "product": { "reference": "ProductDefinition/pd-towar-100", "display": "Towar A" },
      "quantity": { "value": 80, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "toLocation": { "reference": "Location/loc-bin-01", "display": "Bin A-01-02-15" }
    },
    {
      "positionNo": 2,
      "product": { "reference": "ProductDefinition/pd-towar-200", "display": "Towar B" },
      "quantity": { "value": 25, "unit": "szt", "system": "http://unitsofmeasure.org", "code": "EA" },
      "toLocation": { "reference": "Location/loc-bin-02", "display": "Bin A-01-02-16" }
    }
  ]
}

9. Diagramy zależności obiektów WMS

9.1. Zależności między zasobami (relacje referencyjne)

erDiagram
    Party ||--o{ Location : "owner"
    Party ||--o{ Location : "managingParty"
    Location ||--o{ Location : "partOf"
    Party ||--o{ Inventory : "warehouse via Location"
    ProductDefinition ||--o{ Inventory : "product"
    Product ||--o{ Inventory : "product"
    Location ||--o{ Inventory : "location"
    Party ||--o{ Document : "participant"
    Document ||--o{ DocumentPosition : "position"
    ProductDefinition ||--o{ DocumentPosition : "valueReference"
    Product ||--o{ DocumentPosition : "valueReference"
    Location ||--o{ DocumentPosition : "valueReference"
    Party ||--o{ DocumentPosition : "valueReference"

    Party {
        string id
        string display
        string type
        string category
    }

    Location {
        string id
        string name
        Reference owner
        Reference managingParty
        Reference partOf
        Attribute attribute
    }

    Inventory {
        string id
        Reference product
        Reference location
        Quantity quantity
    }

    Document {
        string id
        string type
        Reference participant
    }

    DocumentPosition {
        CodeableConcept code
        Quantity valueQuantity
        Reference valueReference
    }

    Product {
        Reference productDefinition
        Attribute batchSerial
    }

    ProductDefinition {
        string id
        string name
    }

9.2. Hierarchia magazynów (Location type=warehouse)

flowchart TB
    C[Location: Magazyn centralny\ntype=warehouse\nowner → Party]
    R1[Location: Magazyn regionalny 1\ntype=warehouse\npartOf → centralny]
    R2[Location: Magazyn regionalny 2\ntype=warehouse\npartOf → centralny]
    C --> R1
    C --> R2

9.3. Hierarchia Location w magazynie (strefa → regał → bin)

flowchart TB
    subgraph Magazyn["Party (Warehouse)"]
        P[Party/party-warehouse-01\nMagazyn Główny]
    end

    subgraph Lokalizacje["Location"]
        Z[Strefa A\nloc-zone-01\nowner → Party]
        R[Regał A-01\nloc-rack-01\npartOf → Strefa A]
        B[Bin A-01-02-15\nloc-bin-01\npartOf → Regał A-01]
    end

    P --> Z
    Z --> R
    R --> B

9.4. Przepływ: InventoryDocument → Inventory

flowchart LR
    subgraph Document_WHS["Document (PZ/WZ)"]
        D[Document PZ/2025/001]
        C1[position: goods-receipt-line]
        C2[position: goods-receipt-line]
    end

    subgraph Referencje["valueReference w position"]
        PD[ProductDefinition]
        Prod[Product batch]
        Loc[Location]
        Party[Party warehouse]
    end

    subgraph Stan["Inventory"]
        I1[Inventory product+location+qty]
        I2[Inventory product+location+qty]
    end

    D --> C1
    D --> C2
    C1 --> PD
    C1 --> Loc
    C1 --> Party
    C2 --> Prod
    C2 --> Loc
    C2 --> Party
    C1 -.->|"aktualizuje / tworzy"| I1
    C2 -.->|"aktualizuje / tworzy"| I2

9.5. Podsumowanie: zasoby WMS i ich powiązania

Zasób Zależności (odniesienia) Użycie w WMS
Party (Warehouse) Magazyn; owner w Location; participant w Document WHS
Location owner (Party), managingParty (Party), partOf → Location, attribute[] Strefa, regał, bin; location w Inventory; valueReference w Document position
Inventory product → ProductDefinition lub Product; location → Location Stan: co, gdzie, ile; opcjonalnie period
Product productDefinition → ProductDefinition; attribute (batch-number, serial-number) Partia/seria w Inventory i w Document component
ProductDefinition Katalog; product w Inventory (stan zbiorczy); valueReference w Document
InventoryDocument movementType (receipt, issue, transfer); position (product, quantity delta, fromLocation, toLocation) Kanoniczny dokument ruchu – PZ, WZ, przesunięcie, korekta
Document (WHS) participant → Party; position → DocumentPosition Zasób pomocniczy dla powiązań dokumentowych
DocumentPosition valueReference → Product, ProductDefinition, Location, Party; valueQuantity (ilość) Wiersz PZ/WZ: produkt, lokalizacja, magazyn, ilość

Przykłady i diagramy zgodne z Resources: WMS/README, Location, WMS/Inventory, WMS/Warehouse, Document, DocumentPosition. Data: 2026-02-20.