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). |
Vazby (Links)¶
| 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).
- Při změně
accountIdna dokladu (Nabídka, Objednávka) se načte kolekcePriceList. - Filtr:
linkedWith accounts = currentAccountId. - Řazení:
createdAt DESC(nejnovější první). - Limit: 1.
- Při přidání produktu (
onChangeProductId) skript zkontroluje, zda je načtený ceník a zda obsahuje daný produkt. - Pokud ano, nastaví
unitPricena hodnotu z ceníku.
Umístění logiky:
* client/src/extensions/views/fields/abstract-items.js
* client/src/extensions/handlers/dynamic/abstract-items.js