Pricing schema

Tabulky

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

Klíčové vazby

  • price_set.variant_id -> catalog.product_variant.id
  • price.price_set_id -> price_set.id
  • price.region_id -> region.id
  • tax_rate.region_id -> region.id
  • promo vazby směřují na produkt, brand nebo kategorii

Klíčová pravidla

  • price_set je 1:1 na variantu,
  • amount je integer v minor units,
  • tax_rate.rate je numeric(5,2),
  • jen jedna defaultní daňová sazba na region,
  • valid_to musí být později než valid_from.

Procedura

pricing.price_upsert() je součást databázové logiky. Dnes zavírá konfliktní otevřené cenové záznamy a vkládá nový zápis.

pricing.price_cleanup(p_days int DEFAULT 7) maže staré uzavřené cenové záznamy, které už přesahují retenční okno.

Retence a cleanup

Cleanup lze spouštět ručně nebo plánovaně:

  • ručně nebo přes DB scheduler:
  • CALL pricing.price_cleanup(7);
  • přes externí cron:
  • psql -c "CALL pricing.price_cleanup(7);"

Samotná procedura je čistá databázová logika a funguje nezávisle na způsobu schedulingu. To, jestli se použije pg_cron, system cron, nebo jiný deployment scheduler, je provozní rozhodnutí podle možností hostingu.