← Zpět na články
Kapitola 2: Pravidla oceňování
Publikováno: 31. 3. 2026 Autor: Michal Keller pravidlapricing-rulesbilling-categoryAPI

Kapitola 2: Pravidla oceňování

Pravidla oceňování propojují zákazníky a skupiny s ceníky. Zjistěte, jak funguje matchování, co je billing_category, jak pracuje priorita a proč může jeden datový záznam dostat více ohodnocení najednou.


Co jsou pravidla oceňování?

Pravidla oceňování (pricing rules) jsou záznamy, které říkají enginu: „Pro tohoto zákazníka (nebo skupinu), v tomto časovém okně, použij tento ceník." Propojují zákazníka nebo skupinu zákazníků s konkrétním ceníkem a určují kategorii ceny — například zda jde o maloobchodní cenu, velkoobchodní sazbu nebo interní nákladovou cenu.

Pravidlo neobsahuje žádné podmínky nad atributy datového záznamu. Výběr konkrétní položky ceníku provede rating engine automaticky podle kódu (code) datového záznamu.

Struktura pravidla oceňování

Pravidlo oceňování se skládá z těchto polí:

PolePovinnéPopis
nameSrozumitelný název pravidla
codeKód pravidla (identifikuje kategorii služby)
billing_categoryTyp ceny: cost, retail, wholesale, reseller
price_list_idID ceníku, který se použije
valid_fromZačátek platnosti pravidla (ISO datum)
valid_toKonec platnosti (NULL = platí neomezeně)
customer_idID konkrétního zákazníka (NULL = platí pro všechny)
group_idID skupiny zákazníků
priorityCelé číslo, výchozí 0 — vyšší číslo = vyšší priorita
scopeself (výchozí), children, subtree
is_activeBoolean, výchozí true

Příklad vytvoření pravidla přes API:

POST /api/v1/pricing-rules
Content-Type: application/json

{
  "name": "VIP zákazníci — maloobchodní ceny 2026",
  "code": "VIP-RETAIL-2026",
  "billing_category": "retail",
  "price_list_id": "uuid-cenik-vip",
  "group_id": "uuid-skupina-vip",
  "priority": 100,
  "valid_from": "2026-01-01",
  "valid_to": null
}

Jak engine vybírá pravidla?

Při ohodnocování každého datového záznamu (DR) engine projde tyto kroky:

1. Načte skupiny zákazníka Zjistí, do kterých skupin zákazník patří.

2. Načte všechna aktivní pravidla partnera Filtruje jen pravidla s is_active = true.

3. Vyfiltruje applicable pravidla Pravidlo se považuje za aplikovatelné, pokud splňuje jedno z těchto kritérií:

A zároveň musí být DR v časovém okně pravidla:

4. Seřadí podle priority sestupně Pravidlo s nejvyšším číslem priority se zpracuje jako první.

5. Pro každé applicable pravidlo zkusí najít ceníkovou položku Hledá položku ceníku se stejným code jako má datový záznam (dr.code → price_list_item.code). Pokud existuje, vypočítá cenu a vytvoří ohodnocený záznam. Pokud ne, přeskočí na další pravidlo.

Více ohodnocení jednoho záznamu

Důležitá vlastnost: engine nepřestane po prvním matchujícím pravidle. Projde všechna applicable pravidla a pro každé, kde nalezne odpovídající ceníkovou položku, vytvoří samostatný ohodnocený záznam.

To umožňuje, aby jeden DR dostal zároveň:

Oba záznamy vzniknou z téhož DR, každý s jiným pravidlem a jiným ceníkem.

Billing category

Pole billing_category definuje typ cenové hladiny. Podporované hodnoty:

HodnotaPoužití
costNákladová cena — co operátor platí dodavateli
retailMaloobchodní cena — co zákazník platí operátorovi
wholesaleVelkoobchodní cena — pro B2B prodej
resellerCena pro prodejce (resellery)

Typická konfigurace pro telekomunikačního operátora má pro každý typ záznamu dvě pravidla: jedno cost (odkaz na nákladový ceník) a jedno retail (odkaz na zákaznický ceník). Tím vzniká kompletní pohled na marži.

Priorita

Priorita je celé číslo — vyšší číslo znamená vyšší prioritu, pravidla se vyhodnocují sestupně. Výchozí hodnota je 0.

Příklad hierarchie:

PrioritaZákazník / skupinaBilling categoryCeník
200konkrétní zákazníkretailIndividuální ceník
100skupina VIPretailVIP ceník
10(výchozí)retailStandardní ceník
5(výchozí)costNákladový ceník

Zákazník s individuálním pravidlem dostane prioritu 200 před skupinovým pravidlem s prioritou 100.

Časová platnost pravidla

Na rozdíl od ceníkových verzí má pravidlo oceňování vlastní časové okno: valid_from a valid_to. Díky tomu lze:

Kombinace valid_from/valid_to na pravidle a valid_from/valid_to na verzi ceníku umožňuje velmi přesné řízení toho, která cena platí v jakém čase.

Deaktivace pravidla

Pokud potřebujete pravidlo dočasně vypnout bez smazání, nastavte is_active: false:

PUT /api/v1/pricing-rules/{id}
Content-Type: application/json

{ "is_active": false }

Deaktivované pravidlo engine při načítání přeskočí. Reaktivace je symetrická: is_active: true.

Výchozí pravidlo (fallback)

Pravidlo bez customer_id i group_id platí pro všechny zákazníky partnera. Slouží jako záchytná síť pro zákazníky, kteří nejsou v žádné specifické skupině:

{
  "name": "Standardní retail — všichni zákazníci",
  "code": "DEFAULT-RETAIL",
  "billing_category": "retail",
  "price_list_id": "uuid-standardni-cenik",
  "customer_id": null,
  "group_id": null,
  "priority": 0,
  "valid_from": "2026-01-01"
}

Doporučené postupy

Vždy mějte výchozí pravidlo. Zákazník bez jakéhokoliv matchujícího pravidla dostane prázdné ohodnocení — to se projeví jako chyba v reportingu. Výchozí pravidlo s prioritou 0 tuto situaci zachytí.

Nastavujte priority systematicky. Doporučujeme definovat konvenci: např. 1–9 výchozí, 10–99 skupinová, 100+ individuální zákaznická pravidla.

Používejte valid_to místo mazání. Pravidlo s valid_to v minulosti je historicky dohledatelné. Smazané pravidlo v historii chybí.

Pojmenovávejte pravidla srozumitelně. Název "VIP skupina — retail Q1 2026" je za rok stále pochopitelný. "pravidlo_42" není.

Testujte kombinace. Při více applicable pravidlech zkontrolujte, zda kombinace billing categories a ceníků dává smysl — zejména zda každý DR dostane právě jedno retail ohodnocení.

Závěr

Pravidla oceňování jsou flexibilním nástrojem pro přiřazení ceníků zákazníkům a skupinám s podporou více cenových kategorií, časové platnosti a priority. Na rozdíl od systémů s dynamickými podmínkami fungují na principu přímého propojení zákazník/skupina → ceník — jednoduše, přehledně a bez vedlejších efektů. V Kapitole 3 se podíváme na skupiny zákazníků, které tvoří základ segmentace.

← Zpět na články Zpět na hlavní stránku