Formuły cenowe
Składnia wyrażeń, dostępne zmienne i funkcje, zaokrąglanie oraz odwołania do innych grup cenowych.
Formuła to wyrażenie z tokenami {zmienna} i działaniami arytmetycznymi. Przykłady:
{base_price} * 1.23
{base_price} * {currency_rate} * 1.10
{base_price} + ({product.weight} * 2.50)Wyrażenia liczone są na liczbach dziesiętnych, nie zmiennoprzecinkowych — nie gubią groszy przy zaokrągleniach.
Krok po kroku: nowa formuła
- Wejdź w Katalog → Ceny, zakładka Formuły.
- Kliknij + nad listą. Po prawej otworzy się edytor z napisem Nowa formuła w miejscu nazwy.
- Wpisz nazwę w nagłówku edytora.
- Na zakładce Wyrażenie wpisz wyrażenie. Zmienne podświetlają się w polu. Przycisk Zmienna nad polem wstawia zmienną w miejsce kursora; są tam też ceny innych grup (
{base_price_KOD}). - Poczekaj chwilę — formuła sprawdza się sama w trakcie pisania. Gdy jest poprawna, zobaczysz zdanie w rodzaju „Dla ceny bazowej 100,00 i innych grup po 120,00 daje 130,00.”, a gdy nie — czerwony komunikat z serwera. Przy błędzie nie zapiszesz.
- Na zakładce Zaawansowane sprawdź Kod (wymagany, unikalny w firmie; tylko litery, cyfry i
_; uzupełnia się sam z nazwy, dopóki nie wpiszesz własnego; po zapisaniu możesz go poprawić), ustaw Zaokrąglenia i Miejsca po przecinku (0–10). Opis możesz pominąć. - Kliknij Zapisz w stopce.
- Formuła niczego nie wycenia, dopóki grupa jej nie użyje: w edytorze grupy, na zakładce Wyliczanie, wybierz sposób Formuła i wskaż ją jako Formułę grupy (Ceny — ekran i grupy cenowe). Zakładka Grupy edytora formuły pokazuje, które grupy już jej używają.
Pola Waluta źródłowa i Waluta docelowa na zakładce Zaawansowane są tylko opisem — przeliczenie ich nie czyta. Kurs {currency_rate} to zawsze kurs z waluty grupy, z której formuła bierze cenę, na walutę grupy, którą wycenia.
Krok po kroku: sprawdzenie formuły na produkcie
Zdanie pod wyrażeniem liczy na przykładowych liczbach. Na prawdziwym produkcie sprawdzisz zapisaną formułę w ramce Sprawdź na produkcie na zakładce Wyrażenie.
- Zapisz formułę — przed zapisem ramka prosi: Zapisz formułę, aby sprawdzić ją na produkcie.
- W polu produktu wpisz nazwę, SKU albo EAN i wybierz produkt z listy.
- Wybierz Grupę cenową, w której liczysz.
- Kliknij Sprawdź.
- Odczytaj Wyliczona teraz (wynik formuły na obecnych danych), Zapisana cena (to, co produkt ma dziś w tej grupie) i Cenę bazową. Gdy produkt nie ma ceny w grupie, zobaczysz Brak ceny w tej grupie.
Sprawdzenie niczego nie zapisuje — zapisane ceny zmieni dopiero przeliczenie grupy.
Zmienne
| Zmienna | Znaczenie |
|---|---|
{base_price} | Cena bazowa tego wiersza |
{currency_rate} | Kurs przeliczenia walut |
{product.weight}, {product.weight_kg} | Waga produktu |
{price_group.decimal_places} | Liczba miejsc po przecinku grupy |
Kosztu produktu nie da się użyć w formule — produkt nie ma kolumny z kosztem, a formuła odwołująca się do niego jest odrzucana przy zapisie.
Sięganie po inne pola obiektów jest zablokowane — dopuszczona jest tylko powyższa lista. To zabezpieczenie: formuła nie może być użyta do wyciągnięcia dowolnych danych z systemu.
Odwołania do innych grup cenowych
Formuła może wziąć cenę z innej grupy cenowej dla tego samego produktu, używając jej nazwy lub kodu:
{base_price_HURT} * 1.15Pobierana jest cena skuteczna tamtej grupy, czyli po zastosowaniu kolejności nadpisanie → wyliczona → bazowa.
Zmiana ceny w grupie źródłowej pociąga automatyczne przeliczenie grup, które się na nią powołują — także wtedy, gdy trzeba przy okazji utworzyć brakujący wiersz ceny. Wzajemne odwołania (A pyta B, B pyta A) są wykrywane i nie zapętlają systemu.
Nazwa ani kod grupy nie przesłonią zmiennych base_price i currency_rate — te są zarezerwowane.
Funkcje i działania
Dostępne działania: +, -, *, /, **, % oraz minus jednoargumentowy. Wykładnik jest ograniczony, żeby nie dało się zawiesić systemu jedną formułą.
Funkcje: abs, round, min, max, ceil, floor, round99, ceil99, floor99.
Zaokrąglanie
Metody: brak, matematyczne, w górę, w dół, do najbliższych 5 groszy oraz do końcówki ,99. Cena ma zawsze 2 miejsca po przecinku, więc ustawienie 3 i więcej miejsc liczy się jak 2 — dzięki temu „w górę” zostaje w górę. Liczy się je na liczbach dziesiętnych — to nie jest ozdobnik: przy zmiennoprzecinkowych czysta cena 48,00 potrafiła wylądować jako 48,99 zamiast 47,99.
Brak kursu waluty to błąd, nie domysł
Jeśli formuła potrzebuje kursu, a nie ma go ani wprost, ani odwrotnie, formuła zgłasza błąd. System nie podstawia w takiej sytuacji kursu 1 — bo cena bazowa 100 PLN zapisana cicho jako 100 EUR jest gorsza niż nieprzeliczona cena i widoczny błąd.
Kursu szuka się tylko wtedy, gdy wyrażenie używa {currency_rate}. Formuła ze stałym przelicznikiem (np. {base_price_MAIN_PLN} / 4.3) działa także bez zapisanego kursu. Po imporcie kursów (codziennie z EBC) ceny grup w obu walutach pary przeliczają się same.
Wyłączona formuła nie wycenia
Przełącznik Aktywna w edytorze formuły zatrzymuje ją: grupa, która jej używa, zgłasza nieudane przeliczenie i zachowuje dotychczasową cenę, a reguła workflow z wyłączoną formułą jest pomijana.
Testowanie przed użyciem
Formułę można sprawdzić na produkcie, zanim zostanie użyta przez grupę — procedura wyżej. Walidacja odrzuca też wyrażenia z niebezpiecznymi konstrukcjami i niezamkniętymi nawiasami.
Komunikaty błędów przychodzą po angielsku, prosto z serwera. Najczęstsze: Expression cannot be empty, Unbalanced braces in expression, Undefined formula variable: '…', Dangerous keyword '…' not allowed, a przy braku kursu — No exchange rate configured for PLN -> EUR.
To nie to samo co formuły atrybutów
Atrybuty wyliczane mają osobny język formuł, z funkcjami tekstowymi. Składnia i dostępne funkcje są inne — nie przenoś wyrażeń między jednym a drugim.
Chcesz zobaczyć to na swoich zamówieniach? Pokażemy NOXTI na Twoich kanałach sprzedaży i Twoim magazynie.
Umów prezentację