CostCarrier
CostCarrier (nośnik kosztów) to zasób reprezentujący obiekt zbierający koszty – projekt, zlecenie wewnętrzne, produkt, usługa lub centrum kosztów. Służy jako cel alokacji kosztów w rachunkowości zarządczej i controllingu. Koszty są przypisywane do nośnika przez CostAssignment. Hierarchia nośników przez partOf (np. projekt → faza → zadanie). Właściciel/odpowiedzialny przez owner (PartyRole lub OrganizationUnit). Wzorowany na SAP (Cost Center, Internal Order), Oracle (Cost Center segment), Workday (Cost Center).
Rozszerza DomainResource.
1. Zakres i zastosowanie
CostCarrier = obiekt do którego przypisuje się koszty w celu analizy rentowności, budżetowania i raportowania zarządczego. Typy nośników (pole type z DomainResource):
- project – projekt (np. wdrożenie systemu, inwestycja, kampania marketingowa)
- internal-order – zlecenie wewnętrzne (np. zlecenie serwisowe, działanie jednorazowe)
- cost-center – centrum kosztów/MPK (miejsce powstawania kosztów organizacyjnych)
- product – produkt (kalkulacja kosztów wytworzenia)
- service – usługa (kalkulacja kosztów świadczenia)
Koszty przypisywane są przez CostAssignment, który referuje do CostCarrier i zawiera position[] z referencjami do źródeł kosztów (Document, LedgerEntry, Product, Party). CostCarrier nie zawiera referencji do CostAssignment – relacja jednokierunkowa (CostAssignment → CostCarrier).
Hierarchia: partOf (Reference do nadrzędnego CostCarrier) – np. projekt zawiera fazy, faza zawiera zadania; centrum kosztów ma podcentra. Pozwala na agregację kosztów na wyższych poziomach.
Właściciel: owner (Reference do PartyRole lub OrganizationUnit) – osoba/jednostka odpowiedzialna za nośnik kosztów (np. kierownik projektu, manager działu).
Okres: period (Period) – okres funkcjonowania nośnika (start/end) – dla projektów, zleceń czasowych, budżetów okresowych.
2. Zawartość (struktura)
Oprócz elementów DomainResource (id, meta, text, comment, category, status, type, contained, attribute):
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| identifier | 0..* | Identifier | Identyfikatory nośnika (kod projektu, numer zlecenia, symbol MPK – rodzaj w type) |
| name | 0..1 | string | Nazwa nośnika (np. „Wdrożenie ERP 2026", „Kampania Q1", „Dział IT") |
| type | 0..1 | CodeableConcept | Typ nośnika: project, internal-order, cost-center, product, service (system https://api-erp.kamsoft.pl/ns/cost-carrier-type) – pole dziedziczone z DomainResource |
| status | 0..1 | CodeableConcept | Status nośnika: active, inactive, closed, completed (system https://api-erp.kamsoft.pl/ns/status) |
| owner | 0..1 | Reference(PartyRole | OrganizationUnit) | Właściciel/odpowiedzialny za nośnik – osoba w roli (kierownik projektu) lub jednostka organizacyjna |
| partOf | 0..1 | Reference(CostCarrier) | Nośnik nadrzędny – hierarchia (projekt → faza, centrum → podcentrum); puste dla nośnika najwyższego poziomu |
| period | 0..1 | Period | Okres funkcjonowania nośnika (start/end) – dla projektów, zleceń czasowych, budżetów okresowych |
| attribute | 0..* | Attribute | Cechy nośnika (budżet, kategoria, priorytet, kod MPK, faza, typ projektu itd.) – code + value* (wzorzec Attribute) |
Uwaga: type (z DomainResource) – rodzaj nośnika (project, internal-order, cost-center, product, service); category (z DomainResource) – dodatkowe klasyfikacje (branża, region, departament). partOf – hierarchia: projekt zawiera fazy (CostCarrier z type=project → CostCarrier z type=project-phase), centrum kosztów zawiera podcentra. owner – PartyRole (osoba w roli kierownika) lub OrganizationUnit (jednostka odpowiedzialna). period – opcjonalne dla nośników czasowych (projekty, zlecenia); puste dla trwałych (centra kosztów, produkty). attribute – rozszerzenia: budżet (valueQuantity/valueMoney), kod MPK (valueString), priorytet (valueCodeableConcept).
3. Relacje
- CostAssignment – przypisanie kosztów referuje do CostCarrier (pole costCarrier); CostCarrier nie zawiera listy przydziałów.
- PartyRole – właściciel nośnika (osoba w roli, np. kierownik projektu): CostCarrier.owner → PartyRole.
- OrganizationUnit – jednostka odpowiedzialna za nośnik (dział, oddział): CostCarrier.owner → OrganizationUnit; powiązanie z centrum kosztów/MPK (OrganizationUnit.attribute z code=cost-center).
- Hierarchia: CostCarrier.partOf → CostCarrier (nadrzędny) – drzewo nośników (projekt → faza → zadanie; centrum → podcentrum).
- Document, Product – źródła kosztów nie mają bezpośredniej referencji do CostCarrier; połączenie poprzez CostAssignment.position[].resource.
4. Zgodność z systemami wzorcowymi
| System | Odpowiednik | Uwagi |
|---|---|---|
| SAP | Cost Center (CSKS/CSKT), Internal Order (AUFK/AUFT), WBS Element (PRPS) | CostCarrier z type=cost-center/internal-order/project; hierarchia przez partOf; owner odpowiada Responsible Person |
| Oracle | Cost Center (segment), Project (PA_PROJECTS), Task | CostCarrier z type; Oracle używa segmentu konta dla MPK, projekt jako osobna encja; mapowanie przez identifier + type |
| Dynamics 365 | Cost Center (Financial Dimension), Project (Project Accounting) | CostCarrier z type=cost-center/project; Financial Dimensions jako analytical attributes |
| Workday | Cost Center (Organization type), Spend Category | CostCarrier z type=cost-center; owner → Supervisory Organization |
5. Odniesienia
- DomainResource, CostAssignment (CostAssignment.costCarrier referuje CostCarrier), PartyRole (owner), OrganizationUnit (owner, powiązanie z MPK), Attribute (attribute[])
- Identifier, CodeableConcept, Reference, Period