ProductPricing
ProductPricing (cennik produktu) to struktura reprezentująca zbiór cen jednego produktu w danym kontekście (sprzedaż, zakup, kanał): tablica price[], gdzie każdy element łączy type (rodzaj ceny) i amount (Money).
Dwa sposoby wymiany:
| Sposób | Gdzie | Pola charakterystyczne |
|---|---|---|
| Osadzony (domyślny) | contained w ProductDefinition | Lokalne id; identifier i product zwykle puste |
| Samodzielny | Poza zakresem API.ERP (brak endpointu); dopuszczony tylko jako element contained |
— |
DocumentPosition i Invoice niosą cenę transakcyjną na dokumencie. Wzorowany na SAP (warunki cenowe), Dynamics (Price/discount), FHIR (MedicationKnowledge.cost).
Rozszerza DomainResource — w trybie osadzonym obowiązują reguły contained.
1. Zakres i zastosowanie
ProductPricing = „ile kosztuje ten produkt”: wiele wpisów w price[] (cena katalogowa, transakcyjna, promocyjna, próg ilościowy).
- ProductDefinition — nadrzędny zasób; ceny w contained[] (źródło detaliczne emituje jeden
ProductPricingna cennik). - DocumentPosition — cena na dokumencie; referencja do produktu (np.
ProductDefinition/pd-001#pp-retail).
2. Zawartość (struktura)
Oprócz elementów DomainResource (id, resourceType, meta, owner, comment, category, status, type, contained, attribute):
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| context | 0..1 | CodeableConcept | Kontekst — słownik product-pricing-context (sale, purchase, channel-retail, channel-b2b) |
| period | 0..1 | Period | Domyślny okres ważności cen |
| applicability | 0..* | CodeableConcept | Segment (grupa klientów, region, kanał) |
| price | 1..* | Price (sekcja 3) | Lista cen (type + amount) |
| vatRate | 0..1 | CodeableConcept | Stawka VAT zestawu — słownik vat-rate |
| vatInclusion | 0..1 | Coding (element coding z CodeableConcept) |
Czy ceny w zestawie są bez VAT (exclusive) czy z VAT (inclusive) — słownik vat-inclusion |
| identifier | 0..* | Identifier | Identyfikator wpisu cenowego w rejestrze |
| product | 0..1 | Reference(ProductDefinition) | Produkt, którego dotyczą ceny |
Schemat wymaga wyłącznie price. id w contained jest lokalny (np. pricing-<id cennika>). status (z DomainResource): API emituje active w systemie https://api-erp.kamsoft.pl/vs/status (adres w rejestrze, słownik nieopublikowany). W contained pola identifier i product są dopuszczalne, ale nie są wypełniane — produkt nadrzędny jest kontekstem.
Waluta
Waluta każdej pozycji jest w price[].amount — Money (value + currency, ISO 4217).
3. Price (zagnieżdżony typ)
Price to element tablicy price[] (Value Object: type + amount).
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| type | 1..1 | CodeableConcept | Rodzaj ceny — słownik price-type (unit, list, transactional, promotional) |
| amount | 1..1 | Money | Kwota (value + currency) |
| vatInclusion | 0..1 | Coding | Czy ta cena jest bez VAT (exclusive) czy z VAT (inclusive) — słownik vat-inclusion; brak → ProductPricing.vatInclusion |
| perQuantity | 0..1 | Quantity | Ilość jednostkowa, której dotyczy cena |
| minQuantity | 0..1 | Quantity | Próg ilościowy |
| period | 0..1 | Period | Okres ważności tej ceny |
| status | 0..1 | CodeableConcept | Status pozycji |
Schemat Price wymaga type i amount. Źródło detaliczne emituje ceny list (przed rabatem) i transactional (po rabacie).
4. Cennik wieloproduktowy
Każda ProductDefinition niesie własne ProductPricing w contained; nie ma osobnego zasobu cennika ani koperty zbiorczej.
5. Przykłady
- ProductPricing-Examples — ceny w contained produktu.
6. Odniesienia
- DomainResource (contained), ProductDefinition
- Money, Period, Reference
- Schematy: ProductPricing.schema.json, Price.schema.json