Přeskočit obsah

Technická reference: Ceník

Entita: PriceList

Entita PriceList slouží jako kontejner pro definici specifických cen produktů. Samotné ceny nejsou uloženy v entitě PriceList ani v entitě Product, ale ve vazební tabulce (Join Table).

Pole entity

Název (CZ) Název (System) Typ Popis
Název name Varchar Unikátní název ceníku. Povinné pole.
Popis description Text Interní poznámka.
Vytvořeno createdAt Datetime Datum vytvoření. Klíčové pro určení priority (LIFO).
Vazba Entita Typ Popis
Produkty Product Many-to-Many Obsahuje definici cen. Viz "Ukládání cen" níže.
Organizace Account Many-to-Many Organizace, pro které tento ceník platí.

Ukládání cen (Pivot Columns)

Ceny jsou uloženy v tzv. additionalColumns ve vazbě products (tabulka price_list_product nebo podobná, spravovaná systémem).

  • price (Float): Specifická cena produktu v tomto ceníku.
  • priceCurrency (Varchar): Měna ceny (např. 'CZK', 'EUR').

Logika aplikace ceny (Client-side)

Mechanismus načítání cen je implementován v klientském skriptu (Frontend).

  1. Při změně accountId na dokladu (Nabídka, Objednávka) se načte kolekce PriceList.
  2. Filtr: linkedWith accounts = currentAccountId.
  3. Řazení: createdAt DESC (nejnovější první).
  4. Limit: 1.
  5. Při přidání produktu (onChangeProductId) skript zkontroluje, zda je načtený ceník a zda obsahuje daný produkt.
  6. Pokud ano, nastaví unitPrice na hodnotu z ceníku.

Umístění logiky: * client/src/extensions/views/fields/abstract-items.js * client/src/extensions/handlers/dynamic/abstract-items.js