Pricing

Úloha modulu

pricing drží vše, co souvisí s cenou, regionem, daní a slevami.

Hlavní entity

  • region
  • price_set
  • price
  • tax_rate
  • promotion
  • promotion_product
  • promotion_brand
  • promotion_category

Jak pricing funguje

  • Varianta má vazbu 1:1 na price_set.
  • V price_set je skupina cen pro různé regiony, měny, typy cen nebo množstevní prahy.
  • price drží konkrétní cenové záznamy.
  • tax_rate drží daňovou logiku po regionech.
  • promotion* tabulky určují, na co se akce vztahuje.

Supplier trace

Tabulka pricing.price nově nese i supplier_id, aby bylo možné dohledat, který dodavatel cenu zapsal nebo změnil.

To je důležité hlavně při:

  • importech od více dodavatelů,
  • auditování změn ceny,
  • vysvětlování, proč vznikla konkrétní historická cena.

Proč není cena přímo na variantě

Protože jedna varianta může mít:

  • různé ceny pro různé regiony,
  • původní a akční cenu,
  • časovou platnost,
  • množstevní cenu,
  • speciální cenový typ.

Jedna kolona price by tento model rozbila.

Důležitá implementační poznámka

Migrace explicitně říká, že zápis do pricing.price má jít přes proceduru pricing.price_upsert(), která zavírá konfliktní otevřené záznamy.

Retence historie

Historie cen v pricing.price může při importech a častých změnách růst do milionů řádků.

Proto se uzavřená cenová historie drží jen po omezenou dobu:

  • cleanup maže záznamy starší než 7 dní,
  • provádí ho procedura pricing.price_cleanup(),
  • scheduling je provozní detail podle prostředí deploymentu.