Stanovenie východiskovej predajnej ceny na dokladoch

Ako bolo povedané v kap. Typy riadkov na dokladoch, na niektorých dokladoch je možné zadávať rôzne typy riadkov. Na zadávanie skladových položiek do dokladov existuje typ 3-Skladový riadok. Pokiaľ ide o doklad, na ktorom má zmysel i zadanie predajných cien, sú k dispozícii tiež položky Jednotková a Celková cena. Tu budeme hovoriť o dokladoch, v prípade ktorých ide o predajné ceny (tzn. napr. faktúra vydaná, pokladňa príjem, objednávka prijatá, ...) a o spôsobe výpočtu tzv. východiskovej predajnej ceny, tzn. ceny, ktorá sa predvyplní do vystavovaného dokladu do položky jednotková cena.

Přestože je systém prodejních ceníků, definovatelných cen a kombinace řady slev, které nabízí systém ABRA Gen veliký, může se stát, že není s to uspokojit nějaký specifický požadavek klienta na tvorbu prodejních cen. Proto kromě řešení defaultně dodávaného, nabízí systém ABRA Gen řešení těchto specifických požadavků na stanovení výchozí prodejní ceny pomocí externího DLL přidaného k instalaci systému.

V ďalšom texte je uvedené:

Pre pokladničný a reštauračný predaj viď Stanovenie východiskovej predajnej ceny v pokladničnom maloobchodnom a reštauračnom predaji.

Faktory ovplyvňujúce východiskovú predajnú cenu

Na výpočet východiskovej predajnej ceny, ktorá sa predvyplní do položky jednotková cena skladového riadka, môže mať vplyv niekoľko faktorov:

Z vyššie uvedeného vyplýva, že faktorov, ktoré ovplyvňujú výpočet výslednej predajnej ceny, je viac. V praxi pravdepodobne nebudete využívať naraz všetky možnosti, ktoré systém poskytuje (kombinácia všetkých možností by bola nielen zbytočná, ale mohla by byť až nezmyselná). Naopak vyberiete si určite len tie, ktoré najlepšie vyhovejú vašim potrebám, výpočet predajnej ceny popísaný ďalej sa tak samozrejme podstatne zjednoduší.

V agende definície cien môžeme mať nadefinovaných cez sto definícií cien (môžeme ich pre účely ďalšieho textu nazvať predajné ceny), ku každej je potom špecifikované, v akej je mene (viď mena definície ceny). Jedna z predajných cien sa zvolí ako hlavná, ta má potom určité výsady pri použití, viď ďalej.

Poznámka pre užívateľov predchádzajúceho systému ABRA Gold: V ABRA Gold sa predajné ceny zadávali k čiastkovým kartám. Ku každej čiastkovej karte bolo možné definovať maximálne 5 predajných cien, a pre jednu čiastkovú kartu nebolo možné kombinovať rôzne meny pri týchto predajných cenách. V ABRA Gen byl zvolen jiný systém: prodejní ceny se nezadávají "na kartách", ale v cenících - viz dále. Pojmy "predajná cena číslo - až 5" boli nahradené pojmami "definícia ceny číslo - 1 až 99", je možné mať ich viac a meny je možné kombinovať.

V agende cenníky môže byť nadefinované teoreticky neobmedzené množstvo cenníkov. Do cenníka sú zaradené vybrané skladové položky - hlavné karty (cenník teda nemusí nutne obsahovať všetky položky skladu). Pre každú skladovú položku, ktorá je v danom cenníku zaradená, je možné zadať konkrétne ceny do jednotlivých definícií cien (ale nemusia byť nutne zadané všetky nadefinované, dokonca nemusí byť zadaná ani jedna). Ceny je možné do každej definície cien zadať pre každú jednotku iné, tzn. napr. v rámci "definície ceny 1" je možné mať iné ceny pre kusy a iné pre balenia a pod. Takto nadefinovaný cenník môže potom platiť všeobecne pre všetky v ňom obsiahnuté položky bez ohľadu na sklad alebo bez ohľadu na firmu, ktorá je uvedená na predajnom doklade. Alebo naopak môže byť priradený len niektorým firmám, alebo len niektorým skladom, alebo dokonca nemusí byť priradený nikam (tzn. že daný cenník už vyšiel z platnosti a nepoužíva sa).

Automatické vyčíslenie predajnej ceny teda spočíva najskôr v stanovení toho, ktorá definícia ceny má byť použitá ako východisková definícia ceny (závisí od množstva faktorov, viď ďalej) a ďalej vo vyhľadaní a príp. dopočítaní konkrétnej východiskovej predajnej ceny pre danú definíciu ceny v cenníkoch.

Algoritmus stanovenia východiskovej predajnej ceny

V ďalšom texte podrobne popíšeme postup, ako program túto cenu stanoví. Vychádzame z toho, že užívateľ vystavuje predajný doklad, zadal jeho hlavičkové údaje a do riadka dokladu typu 3 - skladový riadok zadá skladovú kartu, sklad a jednotku. Kvôli úplnosti výkladu predpokladajme, že skladová karta má nadefinovaných viacero jednotiek. Program jednotkovú cenu predvyplní východiskovou predajnou cenou. Ako stanoví, ktorá predajná cena to bude, je podrobne popísané ďalej:

  1. Hlavné body algoritmu:
    1. Stanovenie východiskovej definície ceny
    2. Hľadanie v akčných cenníkoch
    3. Hľadanie v bežných cenníkoch
      1. Vo firemnom
      2. V skladovom/hlavnom
    4. Predvyplnená cena a následná aplikácia zliav
  2. Príklady

Interne sa vyvolá funkcia NxGetStorecardUnitPrice, ktorá na základe odovzdaných parametrov východiskovú predajnú cenu stanoví tak, ako je popísané ďalej.

Jelikož Ceníky v systému ABRA Gen podporují časové platnosti, pro dále popsaný postup platí: Vo všetkých miestach, kedy sa zisťuje cena z cenníka pre určitú skladovú položku, sa zohľadňuje i dátum, ku ktorému sa chce cena v cenníku zistiť.

  1. Stanovenie východiskovej definície ceny

    Na stanovenie východiskovej predajnej ceny je nielen dôležité určiť, v akom cenníku sa cena bude hľadať, viď ďalej, ale tiež, aká definícia predajnej ceny sa bude hľadať (tzn. je potrebné stanoviť východiskovú definíciu ceny). Pričom jedno môže ovplyvňovať druhé (tzn. s ohľadom na nastavenie sa môže stať, že ak nie je dohľadaná adekvátna predajná cena v jednom cenníku, môže sa začať hľadať v inom cenníku, alebo sa môže začať hľadať iná definícia ceny v tom istom cenníku a pod., viď ďalej).

    Ktorá definícia ceny sa má v cenníku (cenníkoch) hľadať, závisí jednak od toho, či firma z hlavičky dokladu má v položke Preferovaná definícia ceny zadanú vlastnú preferovanú definíciu ceny a ďalej od nastavenia parametrov Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme a Predvoľba predajnej ceny vo Firemných údajoch (resp. ak ide o predaj v hotovosti, tak nastavenie adekvátnych parametrov Pri predaji v hotovosti - Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme a Pri predaji v hotovosti - Predvoľba predajnej ceny). Platí:

    1. Ak má firma zadanú položku Preferovaná definícia ceny, tak sa táto definícia ceny použije prednostne, a to buď vždy alebo len vtedy, ak vedie na nenulovú predajnú cenu, a to s ohľadom na hodnotu parametra Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme (resp. ak ide o predaj v hotovosti, tak adekvátneho parametra Pri predaji v hotovosti - Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme). Ak je jeho hodnota:
      1. "Vždy"
        Pak program jako výchozí definici ceny použije preferovanou definici ceny zadanou na firmě a to vždy, tedy bez ohledu na to, vede-li na nulovou prodejní cenu či nikoli. Program bude pracovať len s ňou, inou definíciou ceny hľadať nebude.

        Ako bude uvedené ďalej, v tomto prípade potom platí: Ak skladová karta v príslušnom cenníku existuje, ale pre preferovanú definíciu predajnej ceny nemá v príslušnom cenníku zadanú nenulovú predajnú cenu (ani pre inú jednotku, menu, ...), tak:

        1. program vyčíslenie východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu

          V tomto případě se tedy na rozdíl od bodu 1.A.b. nepokračuje ani pokusem dohledat nenulovou prodejní cenu pro tutéž definici ceny v jiném ceníku ani dalším "kolečkem" hledání pro jinou výchozí definici ceny.

      2. "Jen s nenulovou cenou"
        Pak program jako výchozí definici ceny přednostně použije preferovanou definici ceny zadanou na firmě, ale jen tehdy, pokud tato nevede na nulovou prodejní cenu. Vede-li na nulovou prodejní cenu, pak ji nepoužije a provede druhé "kolečko" hledání pro jinou výchozí definici ceny a to tu, která vyplyne z hodnoty parametru Předvolba prodejní ceny (resp. jedná-li se o prodej v hotovosti, pak z hodnoty adekvátního parametru Při prodeji v hotovosti - Předvolba prodejní ceny). Tzn., že východisková definícia ceny pre druhé "kolečko" hľadania bude stanovená rovnako, ako keby firma nemala preferovanú definíciu ceny zadanú (viď bod 1.B).

        Ako bude uvedené ďalej, v tomto prípade potom platí: Ak skladová karta v príslušnom cenníku existuje, ale pre preferovanú definíciu predajnej ceny nemá v príslušnom cenníku zadanú nenulovú predajnú cenu (ani pre inú jednotku, menu, ...), tak:

        1. buď program pokračuje priamo hľadaním inej definície ceny (podľa bodu 1.B) v tom istom cenníku (tzn. v iných cenníkoch už nehľadá)
        2. alebo sa najprv pokúsi dohľadať nenulovú predajnú cenu pre preferovanú definíciu ceny v inom cenníku (v ďalšom v poradí) a až potom, ak je toto neúspešné, pokračuje hľadaním inej definície ceny (tzn. vykoná druhé "kolečko" hľadania pre rovnaké cenníky, v akých hľadal preferovanú definíciu ceny)

          Ak sa pôjde bodom i. alebo ii., závisí to na tom, v akom cenníku táto skutočnosť nastala, viď ďalej.

          K postupu podľa bodu i. dôjde napr. v akčnom cenníku (viď bod 2.b.ii.III.b.a). K postupu podľa bodu ii. dôjde napr. vo firemnom cenníku (viď bod 3.A.b.ii.III.b).

    2. Ak nemá firma zadanú položku Preferovaná definícia ceny alebo táto vedie na nulovú cenu a s ohľadom na predchádzajúci parameter sa teda nepoužije, viď bod 1.A.b., potom program hľadanú definíciu predajnej ceny stanoví podľa nastavenia parametra Predvoľba predajnej ceny (resp. ak ide o predaj v hotovosti, tak nastavenie adekvátneho parametra Pri predaji v hotovosti - Predvoľba predajnej ceny).

      Ak je jeho hodnota:

      1. "Hlavná cena"

        Tak program vyberie ako východiskovú definíciu ceny tú, ktorá je v agende definícií cien nadefinovaná ako hlavná definícia ceny.
         

      2. "Podľa dílerských tried z adresára"

        Tak program vyberie ako východiskovú definíciu ceny tú, ktorej kód zodpovedá kódu dílerskej triedy, prebranej na doklad z adresára firiem. Ak sa bude díl. trieda preberať z údajov firmy alebo prevádzkarne zadanej v hlavičke vystavovaného dokladu, záleží na hodnote parametra Dílerskú triedu preberať.

        Firmu je možné zaradiť do dílerskej triedy v agende Adresáre firiem, v subzáložke Ďalšie údaje v položke Dílerská trieda, prevádzkareň v subzáložke Prevádzkarne v položke Dílerská trieda.

        Ak je firma resp. prevádzkareň zaradená do dílerskej triedy, ktorej kód nezodpovedá žiadnemu kódu existujúcich definícií cien, tak sa použije existujúca definícia cien s kódom najbližším nižším. Objasníme na príklade:

        Majme definície cien s kódmi 1,2,3,6 a 8. Pre dílerskú triedu s kódmi 1 a 2 bude vybraná definícia ceny 1 resp. 2. Pre dílerské triedy 3, 4 a 5 bude vybraná definícia cien 3. Pre dílerské triedy 6 a 7 bude vybraná definícia cien 6 a pre dílerskú triedu 8 až 99 by bola vybraná definícia cien 8.

        Ak firma resp. prevádzkareň nie je zaradená do žiadnej dílerskej triedy, nie je podľa čoho vyberať definíciu cien, program vyčíslenie východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
         

      3. "Podľa tabuľky dílerských zliav"

        Tu je situácia zložitejšia, keďže oproti predchádzajúcej hodnote parametra vstupuje do hry ešte skladová karta a skutočnosť, či je k tejto karte priradená nejaká tabuľka dílerských zliav a ako je táto tabuľka nadefinovaná.

        K skladovej karte je možné priradiť tabuľku dílerských zliav v agende skladových kariet v záložke Zoznam funkciou Hromadná oprava alebo v záložke Detail v položke Dílerské zľavy.

        Pre tento prípad existuje v tabuľkách dílerských zliav možnosť zadať pre jednotlivé dílerské triedy definície cien, ktoré im majú zodpovedať. Každá skladová karta tak môže mať priradenú nejakú z nadefinovaných tabuliek dílerských zliav. Program teda skontroluje, či je karta, vybraná v riadku vystavovaného dokladu, priradená k nejakej tabuľke díl. zliav a potom v tejto tabuľke vyhľadá, aká definícia cien je priradená dílerskej triede, prebranej na doklad z adresára firiem. Túto definíciu cien potom použije ako východiskovú definíciu cien. Ak sa bude díl. trieda preberať z údajov firmy alebo prevádzkarne zadanej v hlavičke vystavovaného dokladu, záleží na hodnote parametra Dílerskú triedu preberať.

        Výsledná predajná cena sa teda v tomto prípade môže líšiť nielen podľa toho, do akej dílerskej triedy zákazník patrí, ale aj podľa jednotlivých skladových komodít, tzn. pre rovnakú dílerskú triedu môže byť pre každú kartu, resp. skupinu kariet s rovnakou tabuľkou dílerských zliav vybraná iná definícia predajnej ceny a tým pádom vyčíslená iná jednotková predajná cena. Teda pre skupinu kariet zo skladového sortimentu, ktoré majú priradenú danú tabuľku zliav, sa pre dílerskú triedu X berie Y-tá predajná cena. Ide teda v podstate o vylepšený predchádzajúci variant, kedy kód dílerskej triedy a kód definície predajnej ceny museli byť rovnaké a nezáležalo na type karty.

        Pokiaľ firma resp. prevádzkareň nie je zaradená do žiadnej dílerskej kategórie alebo skladová karta nie je zaradená do žiadnej tabuľky díl. zliav, alebo príslušná dílerská trieda nemá priradenú definíciu ceny,nie je podľa čoho vybrať definíciu cien, program vyčíslenie východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
         

      4. "Podľa tabuľky kusových zliav"

        Podobne ako predošlá voľba, ale definíciu cien vyberá podľa príslušnosti skladovej karty do tabuľky kusových zliav a podľa definície tejto tabuľky.

        Pre tento prípad existuje v tabuľkách kusových zliav možnosť zadať pre jednotlivé hraničné počty kusov definície cien, ktoré im majú zodpovedať. Obdobne ako v predchádzajúcom variante potom každá skladová karta môže mať priradenú jednu z nadefinovaných tabuliek kusových zliav. Program teda skontroluje, či je karta, vybraná v riadku vystavovaného dokladu, priradená k nejakej tabuľke kusových zliav a potom v tejto tabuľke vyhľadá, aká definícia cien je priradená počtu kusov zadanému na riadku dokladu. Túto definíciu cien potom použije ako východiskovú definíciu cien.

        Vybraná predajná cena sa teda potom podľa zadaného počtu kusov na skladovom riadku dokladu môže líšiť podľa jednotlivých skladových komodít, tzn. pre rovnaký počet kusov môže byť pre každú kartu, resp. skupinu kariet s rovnakou tabuľkou kusových zliav vybraná iná predajná cena. Teda pre skupinu kariet zo skladového sortimentu, ktoré majú priradenú danú tabuľku zliav, určíte, že pre interval kusov A až B (napr. 1-50) sa berie Y-tá predajná cena. Opäť je tu závislosť vybranej ceny na skupine kariet.
         

      5. "Podľa sortimentných zliav"

        Podobne ako v predchádzajúcom prípade vstupuje do hry skladová karta a skutočnosť, či je táto karta priradená do nejakej sortimentnej skupiny a aká je nadefinovaná zľava pre danú sortimentnú skupinu pri konkrétnej firme v subzáložke Sortimentné zľavy v adresári firiem.

        K skladovej karte je možné priradiť sortimentnú skupinu v agende skladových kariet v záložke Zoznam funkciou Hromadná oprava alebo v záložke Detail v položke Sortimentná skupina. Výšku zľavy pre jednotlivé sortimentné skupiny je možné zadať pre každú firmu individuálne v subzáložke Sortimentné zľavy v agende Adresár firiem.

        Pre tento prípad existuje v adresári firiem v subzáložke Sortimentné zľavy možnosť zadať pre jednotlivé sortimentné skupiny definície cien, ktoré im majú zodpovedať. Každá skladová karta môže mať priradenú niektorú z nadefinovaných sortimentných skupín. Program teda skontroluje, či je karta, vybraná v riadku vystavovaného dokladu, priradená k nejakej sortimentnej skupine, a následne vyhľadá, aká definícia cen je priradená k tejto sortimentnej skupine v subzáložke Sortimentné zľavy pre firmu uvedenú v hlavičke dokladu. Túto definíciu cien potom použije ako východiskovú definíciu cien. Či sa použije nadriadená sortimentná skupina, ak nie je v subzáložke Sortimentné zľavy nadefinovaná priamo tá sortimentná skupina, ktorá je uvedená na skladovej karte, a nadriadená skupina tam nadefinovaná je, záleží na hodnote parametra Použiť aj nadriadené sortimentné skupiny.

        Výsledná predajná cena sa teda v tomto prípade môže líšiť jednak podľa toho, do akej sortimentnej skupiny je zaradená konkrétna skladová komodita, a jednak podľa toho, akú definíciu predajnej ceny má zákazník nadefinovanú pre konkrétnu sortimentnú skupinu. Tzn. pre rovnakú skladovú kartu, resp. pre karty zaradené do rovnakej sortimentnej skupiny, môže byť v závislosti od firmy uvedenej v hlavičke dokladu vybraná iná definícia predajnej ceny a tým pádom vyčíslená iná jednotková predajná cena. Teda pre skupinu kariet zo skladového sortimentu, ktoré sú zaradené do danej sortimentnej skupiny, sa pre konkrétneho zákazníka berie Y-tá predajná cena. Opäť je tu závislosť vybranej ceny na skupine kariet a navyše na konkrétnom zákazníkovi.

        Ak firma nemá nadefinované žiadne sortimentné zľavy alebo príslušná sortimentná zľava nemá priradenú definíciu ceny alebo skladová karta nie je zaradená do žiadnej sortimentnej skupiny, nemá sa podľa čoho vybrať definícia cien, program vyčíslenie východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
         

  2. Hľadanie v akčných cenníkoch

    Ak je možné stanoviť východiskové definície cien (teda nejde o prípady popísané v bodoch 1.B.b až 1.B.e, kedy nie je podľa čoho vybrať definíciu cien a hľadanie sa potom ukončí predvyplnením nuly), môže sa začať hľadať zodpovedajúca predajná cena v cenníkoch.

    Ako prvé sa najprv hľadá, či existujú akčné cenníky, ktoré sú aktuálne platné (tzn. do ktorých časovej platnosti spadá dátum a príp. i čas vystavovaného dokladu a ktoré platia pre daný deň v týždni). Pritom sa kontrolujú prípadné obmedzenia použitia daného akčného cenníka zadané v jeho záložke Obmedzenie použitia. Tzn. či je použiteľný pre firmu, ktorej sa predáva, a pre sklad, z ktorého sa predáva. Ak je vyhovujúcich akčných cenníkov viac, vezmú sa postupne od najvyššej priority k najnižšej a zisťuje sa, či sa v danom akčnom cenníku daná skladová položka nachádza a má zadanú aspoň pre jednu jednotku nenulovú cenu. (Ak sa v danom mieste programu nemá pracovať s časovo obmedzenými akčnými cenníkmi, ignorujú sa všetky akčné cenníky obsahujúce časové obmedzenie.)

    Pokiaľ ide o stanovenie ceny pre B2B export skl. kariet do dodávateľského cenníka, môže byť hľadanie v akčných cenníkoch potlačené parametrom B2B exportu Zohľadniť platné akčné cenníky.

     

    1. Pokud NEEXISTUJE žádný akční ceník vyhovující pro danou časovou platnost, sklad a firmu, program pokračuje hledáním v běžných cenících. Tzn. bodom 3.
       
    2. Ak EXISTUJÚ vyhovujúce akčné cenníky, tak program hľadá, či v nich je daná karta obsiahnutá, teda inak povedané, či daný cenník má medzi položkami dotyčnú kartu (pritom zohľadňuje prioritu cenníkov):

      1. Ak skladová karta NIE JE položkou žiadneho vyhovujúceho akčného cenníka, program pokračuje hľadaním v bežných cenníkoch. Tzn. bodom 3.
      2. Ak skladová karta JE položkou niektorého z vyhovujúcich akčných cenníkov, a ak má parameter Akčný cenník hodnotu "Vždy", tak v ňom hľadá tú definíciu predajnej ceny, ktorá bola stanovená ako východisková definícia ceny, viď bod 1. Vyčíslenie jednotkovej predajnej ceny teda pokračuje nasledovne:
        1. V rámci hľadanej definície ceny program vyberie konkrétnu predajnú cenu pre jednotku, zadanú v riadku vystavovaného dokladu. Ak je táto cena nenulová a ak má parameter Preberať z cenníka zápornú sumu hodnotu:
          1. "Ano"- pak ji program dle potřeby upraví na shodnou měnu/DPH a použije jako výchozí, čímž vyčíslení výchozí prodejní ceny ukončí.
          2. "Nie" - tak ju program berie, ako keby bola nulová, a pokračuje bodom II.
        2. Ak je predajná cena podľa predchádzajúceho bodu nulová, tak sa program pokúsi dopočítať cenu z nenulovej ceny zadanej pre inú jednotku. Ak je dopočítaná cena nenulová, tak ju opäť s ohľadom na parameter Preberať z cenníka zápornú sumu buď použije ako východiskovú alebo pokračuje bodom III.
        3. Ak sa nepodarilo dopočítať nenulovú cenu ani z ceny pre inú jednotku, program pokračuje takto:

          Ak má parameter Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme (resp. adekvátny parameter pri predaji v hotovosti) hodnotu:

          1. "Vždy" (viď bod 1.A.a), tak program vyčíslenia východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
          2. "Len s nenulovou cenou" (viď bod 1.A.b) a súčasne:
            1. ak je východiskovou definíciou ceny preferovaná definícia ceny zadaná na firme (tzn. ide o 1.kolečko hľadania), tak program vykoná druhé "kolečko" hľadania pre inú východiskovú definíciu ceny v akčných cenníkoch (tzn. vykoná znova bod 2 pre definíciu ceny stanovenú podľa bodu 1.B).
            2. ak nie je východiskovou definíciou ceny preferovaná definícia ceny zadaná na firme (tzn. prefer. definícia neexistuje alebo už ide o druhé "kolečko" hľadania), tak program vyčíslenia východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.

            Inými slovami: ak prefer. definícia neexistuje alebo už ide o "kolečko" hľadania a cena opäť vyjde nulová, tak sa hľadanie ukončí. Tzn. ak vyhovujúci akčný cenník existuje a karta v ňom je, hľadá sa len v akčnom cenníku a hľadaním v bežných cenníkoch (tzn. bodom 3) sa nepokračuje, aj keď je výsledkom nulová cena. Program to chápe tak, že ak si užívateľ kartu do akčného cenníka dal, ale ponechal na nej nulovú cenu, tak to urobil zámerne a pravdepodobne chce daný tovar v danej akcii poskytovať ZDARMA.

            Neboli hledání v akčních cenících jde dle postupu:
            - 1.kolečko = hledá se pref. definice ceny - Kde:  v akčních cenících
            - 2.kolečko (je-li v 1. kolečku nalezena nula a je nechtěná) = hledá se definice ceny dle 1.B - Kde: v akčních cenících

         

      3. Ak skladová karta JE položkou niektorého z vyhovujúcich akčných cenníkov a ak má parameter Akčný cenník hodnotu "Uprednostniť nižšiu cenu", tak
        1. najprv vykoná skúšobný výpočet východiskovej predajnej ceny z akčného cenníka (tzn. podľa bodu 2.b.ii)
        2. následne vykoná skúšobný výpočet východiskovej predajnej ceny, ako keby akčný cenník neexistoval, tzn. podľa bodu 3.
        3. na takto zkušebně získanou prodejní cenu aplikuje případnou dealerskou slevu (dle nastavení slev na daném prodejním dokladu) a výsledek porovná s cenou získanou z akčního ceníku (tj. podle bodu 2.b.ii)
        4. ak vychádza nižšia cena z akčného cenníka podľa bodu 2.b.ii, tak tú použije ako východiskovú, čím vyčíslenie východiskovej predajnej ceny ukončí, v opačnom prípade použije cenu z bežných cenníkov podľa bodu 3.

          Pozor! Stanovená východisková predajná cena je samozrejme bez aplikovaných dílerských zliav. Prípadné zľavy (či už dílerské či iné) sa na získanú východiskovú predajnú cenu aplikujú štandardným spôsobom až po jej predvyplnení do dokladu, viď bod 4.

          Viď tiež Príklad 2 a Príklad 3.

  3. Hľadanie v bežných cenníkoch

    Pri hľadaní v bežných cenníkoch sa podľa dodaného dátumu najprv dohľadá najbližší nižší dátum v zozname časových platností cenníka a k nemu sa dohľadajú položky a ich ceny.

    Ak v danej časovej platnosti nemá hľadaná skladová karta zadané ceny, pokúsi sa systém dohľadať cenu pre túto skladovú kartu ešte postupne v starších časových platnostiach. Ak ani v jednej zo starších časových platností daného cenníka nie je položka nájdená, pokračuje sa prehľadávaním ďalšieho cenníka. Ak pri prehľadávaní cien pre dané platnosti je v ktoromkoľvek kroku nájdené, že daná položka bola k danej platnosti ukončená (je v záložke Ukončené položky), potom sa hľadanie v tomto cenníku zastaví a má sa za to, že cena v tomto cenníku neexistuje a pokračuje sa prípadne v hľadaní v ďalšom cenníku.

    Poradie hľadania v bežných cenníkoch: prednostne firemný, následne skladový/hlavný podle nastavení v parametroch vo Firemných údajoch.

    1.  Hledání ve firemním ceníku

      Najprv sa skontroluje, či pre firmu, zadanú v hlavičke vystavovaného dokladu, existuje jej individuálny FIREMNÝ cenník.
       

      1. Ak NEEXISTUJE firemný cenník pre firmu z hlavičky dokladu, tak program pokračuje hľadaním v ďalších bežných cenníkoch v poradí podľa stavu parametra "Pre predajné ceny použiť cenník", tzn. bodom 3.B.
      2. Ak EXISTUJE firemný cenník, potom program hľadá, či daná karta je v tomto cenníku obsiahnutá, teda inak povedané, či tento cenník má medzi položkami dotyčnú kartu.
        1. Ak skladová karta NIE JE položkou firemného cenníka pre danú firmu, program pokračuje tak, ako keby firemný cenník pre danú firmu neexistoval, tzn. bodom 3.B.
        2. Ak skladová karta JE položkou firemného cenníka pre danú firmu, tak v ňom hľadá tú definíciu predajnej ceny, ktorá bola stanovená ako východisková definícia ceny, viď bod 1. Vyčíslenie jednotkovej predajnej ceny teda pokračuje nasledovne:
          1. V rámci hľadanej definície ceny program vyberie konkrétnu predajnú cenu pre jednotku, zadanú v riadku vystavovaného dokladu. Ak je táto cena nenulová a ak má parameter Preberať z cenníka zápornú sumu hodnotu:
            1. "Ano"- pak ji program dle potřeby upraví na shodnou měnu/DPH a použije jako výchozí, čímž vyčíslení výchozí prodejní ceny ukončí.
            2. "Nie" - tak ju program berie, ako keby bola nulová, a pokračuje bodom II.
          2. Ak je predajná cena podľa predchádzajúceho bodu nulová, tak sa program pokúsi dopočítať cenu z nenulovej ceny zadanej pre inú jednotku. Ak je dopočítaná cena nenulová, tak ju opäť s ohľadom na parameter Preberať z cenníka zápornú sumu buď použije ako východiskovú alebo pokračuje bodom III.
          3. Ak sa nepodarilo dopočítať nenulovú cenu ani z ceny pre inú jednotku, program pokračuje takto:

            Ak má parameter Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme (resp. adekvátny parameter pri predaji v hotovosti) hodnotu:

            1. "Vždy" (viď bod 1.A.a), tak program vyčíslenia východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
            2. "Len s nenulovou cenou" (viď bod 1.A.b), tak sa pokúsi dohľadať nenulovú predajnú cenu pre tú istú východiskovú definíciu ceny v ďalších bežných cenníkoch v poradí (tzn. skladovom/hlavnom), tzn. bodom 3.B.

              Tu teda obe prípadné "kolečká" hľadania prebiehajú zhodne (ako pre prefer. definíciu ceny podľa bodu 1.A.a a 1.A.b, tak pre inú definíciu ceny podľa bodu 1.B). Teda ak nájde sa cena nulová, tak sa buď rovno použije (s ohľadom na vyššie uvedený parameter ) a ďalej sa nepokračuje, alebo sa pokračuje pokusom nájsť nenulovú cenu pre tú istú definíciu ceny v cenníku skladovom/hlavnom. Ak ide o prvé kolečko hľadania (tzn. pre preferovanú definíciu ceny, ak je taká na firme zadaná) a aj hľadanie v skladovom/hlavnom vedie na nechcenú nulovú cenu, až následne potom sa pokračuje ďalším kolečkom pre inú definíciu ceny podľa bodu 1.B, a to opäť najprv vo firemnom cenníku, následne skladovom/hlavnom.

              Teda hľadanie v bežných cenníkoch ide podľa postupu:
              - 1.kolečko = hledá se pref. definice ceny (viz 1.A) - Kde:  ve firemním ceníku -> pak skladovém/hlavním
              - 2.kolečko (je-li v 1. kolečku nalezena nula a je nechtěná) = hledá se jiná definice ceny dle 1.B - Kde: ve firemním ceníku -> pak skladovém/hlavním

              Srovnejte s akčními ceníky, kdy se hledá jen v akčních a hledáním v žádných dalších cenících se nepokračuje.

    2. Hľadanie v skladovom/hlavnom cenníku

      Ak neexistuje firemný cenník pre firmu z hlavičky dokladu (viď bod 3.A.a) alebo sklad. karta nie je položkou tohto firemného cenníka (viď bod 3.A.b.i) alebo sa v ňom dohľadala nulová predajná cena a tá je nechcená (viď bod 3.A.b.ii.III.b.), potom program postupuje podľa stavu parametra "Pre predajné ceny použiť cenník" vo Firemných údajoch. Tzn. hľadá tú istú východiskovú definíciu ceny v ďalších bežných cenníkoch v poradí, a to takto:

      1. Ak je hodnota parametra "Len skladový" program kontroluje, či pre sklad zadaný v riadku vystavovaného dokladu existuje individuálny SKLADOVÝ cenník, teda inak povedané, či niektorý z cenníkov je priradený danému skladu.
         
        1. Ak NEEXISTUJE skladový cenník pre daný sklad, tak program vyčíslenie východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
        2. Pokud EXISTUJE skladový ceník pro daný sklad , pak program hledá, zda daná karta je v tomto ceníku obsažena, tedy jinak řečeno, zda tento ceník má mezi položkami dotyčnou kartu:
          1. Ak skladová karta NIE JE položkou skladového cenníka pre daný sklad, program vyčíslenie východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
          2. Ak skladová karta JE položkou skladového cenníka pre daný sklad, tak v ňom hľadá tú definíciu predajnej ceny, ktorá bola stanovená ako východisková definícia ceny, viď bod 1. Vyčíslenie jednotkovej predajnej ceny teda pokračuje nasledovne:
            1. V rámci hľadanej definície ceny program vyberie konkrétnu predajnú cenu pre jednotku, zadanú v riadku vystavovaného dokladu. Ak je táto cena nenulová a ak má parameter Preberať z cenníka zápornú sumu hodnotu:
              1. "Ano"- pak ji program dle potřeby upraví na shodnou měnu/DPH a použije jako výchozí, čímž vyčíslení výchozí prodejní ceny ukončí.
              2. "Nie" - tak ju program berie, ako keby bola nulová, a pokračuje bodom II.
            2. Ak je predajná cena podľa predchádzajúceho bodu nulová, tak sa program pokúsi dopočítať cenu z nenulovej ceny zadanej pre inú jednotku. Ak je dopočítaná cena nenulová, tak ju opäť s ohľadom na parameter Preberať z cenníka zápornú sumu buď použije ako východiskovú alebo pokračuje bodom III.
            3. Ak sa nepodarilo dopočítať nenulovú cenu ani z ceny pre inú jednotku, program pokračuje takto:

              Ak má parameter Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme (resp. adekvátny parameter pri predaji v hotovosti) hodnotu:

              1. "Vždy" (viď bod 1.A.a), tak program vyčíslenia východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
              2. "Len s nenulovou cenou" (viď bod 1.A.b) a súčasne:
                1. ak je východiskovou definíciou ceny preferovaná definícia ceny zadaná na firme (tzn. ide o 1.kolečko hľadania), tak program vykoná druhé "kolečko" hľadania pre inú východiskovú definíciu ceny, a to v bežných cenníkoch (tzn. vykoná znova bod 3 pre definíciu ceny stanovenú podľa bodu 1.B).
                2. ak nie je východiskovou definíciou ceny preferovaná definícia ceny zadaná na firme (tzn. prefer. definícia neexistuje alebo už ide o druhé "kolečko" hľadania), tak program vyčíslenia východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.

             

      2. Ak je hodnota parametra "Len hlavný cenník" program kontroluje, či existuje HLAVNÝ cenník, teda inak povedané, či niektorý z cenníkov je nastavený ako hlavný.
        1. Ak NEEXISTUJE hlavný cenník, tak program vyčíslenie východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
        2. Ak EXISTUJE hlavný cenník, potom program hľadá, či daná karta je v tomto cenníku obsiahnutá, teda inak povedané, či tento cenník má medzi položkami dotyčnú kartu:
          1. Ak skladová karta NIE JE položkou hlavného cenníka, program vyčíslenie východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
          2. Ak skladová karta JE položkou hlavného cenníka, tak v ňom hľadá tú definíciu predajnej ceny, ktorá bola stanovená ako východisková definícia ceny, viď bod 1. Vyčíslenie jednotkovej predajnej ceny teda pokračuje podobne ako v prípade existencie karty v skladovom cenníku, teda body 3.B.I.b.ii.I. až 3.B.I.b.ii.III. s tým, že namiesto skladového cenníka pracuje s cenníkom hlavným.

         

      3. Ak je hodnota parametra "Postupne skladový a hlavný", ide o kombináciu dvoch predchádzajúcich možností, tzn. program najprv hľadá v individuálnom SKLADOVOM cenníku (podobne ako v bode 3.B.1) a ak je hľadanie v ňom neúspešné, tak pokračuje v HLAVNOM cenníku.
        1. Ak NEEXISTUJE skladový cenník pre daný sklad, tak program pokračuje hľadaním v ďalšom bežnom cenníku v poradí, tzn. v tomto prípade v hlavnom cenníku. Postup je zhodný ako bol uvedený v bode 3.B.II.
        2. Pokud EXISTUJE skladový ceník pro daný sklad , pak program hledá, zda daná karta je v tomto ceníku obsažena, tedy jinak řečeno, zda tento ceník má mezi položkami dotyčnou kartu:
          1. Ak skladová karta NIE JE položkou skladového cenníka pre daný sklad, tak program pokračuje hľadaním v ďalšom bežnom cenníku v poradí, tzn. v tomto prípade v hlavnom cenníku. Postup je zhodný ako bol uvedený v bode 3.B.II.
          2. Ak skladová karta JE položkou skladového cenníka pre daný sklad, tak v ňom hľadá tú definíciu predajnej ceny, ktorá bola stanovená ako východisková definícia ceny, viď bod 1. Vyčíslenie jednotkovej predajnej ceny teda pokračuje nasledovne:
            1. V rámci hľadanej definície ceny program vyberie konkrétnu predajnú cenu pre jednotku, zadanú v riadku vystavovaného dokladu. Ak je táto cena nenulová a ak má parameter Preberať z cenníka zápornú sumu hodnotu:
              1. "Ano"- pak ji program dle potřeby upraví na shodnou měnu/DPH a použije jako výchozí, čímž vyčíslení výchozí prodejní ceny ukončí.
              2. "Nie" - tak ju program berie, ako keby bola nulová, a pokračuje bodom II.
            2. Ak je predajná cena podľa predchádzajúceho bodu nulová, tak sa program pokúsi dopočítať cenu z nenulovej ceny zadanej pre inú jednotku. Ak je dopočítaná cena nenulová, tak ju opäť s ohľadom na parameter Preberať z cenníka zápornú sumu buď použije ako východiskovú alebo pokračuje bodom III.
            3. Ak sa nepodarilo dopočítať nenulovú cenu ani z ceny pre inú jednotku, program pokračuje takto:
              Ak má parameter Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme (resp. adekvátny parameter pri predaji v hotovosti) hodnotu:
              1. "Vždy" (viď bod 1.A.a), tak program vyčíslenia východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
              2. "Len s nenulovou cenou" (viď bod 1.A.b) a súčasne:
                1. ak je východiskovou definíciou ceny preferovaná definícia ceny zadaná na firme (tzn. ide o 1.kolečko hľadania), tak program vykoná druhé "kolečko" hľadania pre inú východiskovú definíciu ceny, a to vo všetkých bežných cenníkoch podľa poradia (tzn. vykoná znova bod 3 pre inú definíciu ceny stanovenú podľa bodu 1.B).
                2. ak nie je východiskovou definíciou ceny preferovaná definícia ceny zadaná na firme (tzn. prefer. definícia neexistuje alebo už ide o druhé "kolečko" hľadania), tak program vyčíslenia východiskovej predajnej ceny ukončí a do položky jednotková cena predvyplní nulu.
  4. Predvyplnená cena a následná aplikácia zliav

    Predvyplnenú východiskovú cenu je samozrejme možné zmeniť. Môžete buď zadať ľubovoľnú inú cenu priamo z klávesnice alebo si môžete vybrať inú z ponúkaných predajných cien. Spôsob ponúkania predajných cien používa rovnaké princípy ako boli uvedené v tejto kapitole.

    Či bude možné na doklade uložiť riadok s nulovou predajnou cenou (ak taká bola predvyplnená a ak ste ju nezmenili), závisí pri niektorých dokladoch na stave parametra Povoliť zadať na riadku dokladu nulovú predajnú cenu.

    Aplikácia zliav: Na získanú predvyplnenú predajnú cenu sa potom môžu aplikovať zľavy, ak je ich použitie na danom doklade nastavené, štandardne tak, ako bolo vysvetlené v samostatnej kap. Zľavový systém. (Aplikované zľavy je možné prehliadať pomocou tlačidla Info v lište Navigátora v spodnej časti záložky Obsah). Cena po zľave sa pričíta do položky Cena Celkom za daný doklad zobrazovanej v hornej časti záložky Detail vystavovaného dokladu.

    Pokud se jedná o stanovzalozka_prilohy.htmení ceny pro B2B export skl. karet do dodavatelského ceníku, pak se slevy nijak neaplikují.

Vo vyššie uvedenom algoritme sa niektoré postupy opakujú, preto ich popíšeme tu a z popisu vyššie sa na nich budeme len odvolávať:

Dopočítanie ceny z nenulovej ceny zadanej pre inú jednotku

  1. Ak je v danom cenníku pre vybranú časovú platnosť cenníka predajná cena pre hľadanú definíciu ceny a hľadanú jednotku nulová (tzn. v danom cenníku pri hľadanej definícii ceny nie je pre danú jednotku zadaná nenulová predajná cena, potom sa program pokúsi dopočítať cenu z nenulovej predajnej ceny zadanej pre inú jednotku (ak nejaká taká jednotka existuje), a to podľa prevodného vzťahu jednotiek. Použije na to prvú jednotku v poradí ich zadania na skladovej karte, ktorá má zadanú predajnú cenu pre danú definíciu cien.

    Tento prepočet platí nielen pre hlavnú definíciu ceny, ale aj pre všetky ostatné zadané definície cien, ako bolo uvedené v kap. Typy riadkov na dokladoch v rámci popisu výberu jednotkovej ceny z ponuky, vrátane príkladov, s ktorými odporúčame sa zoznámiť.

Úprava získanej nenulovej predajnej ceny na zhodnú menu/DPH

  1. Ak program získal nenulovú predajnú cenu pre hľadanú východiskovú definíciu ceny (viď bod 1) a jednotku, potom ďalej skontroluje menu zadanej predajnej ceny (viď mena definície ceny) oproti menej zadanej v hlavičke dokladu. Pokiaľ sa meny líšia, program predajnú cenu automaticky prepočíta na menu dokladu. Akým kurzom, je objasnené na príklade v popise položky jednotková cena skladového riadka dokladu. Konkrétny spôsob prepočtu medzi cudzími menami samozrejme závisí od toho, z akej meny na akú menu sa prevod uskutočňuje.
     
  2. Program ďalej skontroluje, či je daná definícia predajnej ceny s DPH alebo nie (viď popis položky "s DPH" danej definície ceny) a porovnáva s nastavením zadaným v hlavičke dokladu (či ceny v riadkoch majú byť uvedené s DPH alebo nie, viď popis položky "s DPH" v hlavičkách dokladov). Ak je to potrebné, tak ceny s DPH prevedie na cenu bez DPH, prípadne naopak.
     
  3. Takto získanú cenu predvyplní do položky jednotková cena ako Východiskovú predajnú cenu.

S akou presnosťou sa zobrazujú predajné ceny ovplyvňuje parameter Počet desatinných miest na zadanie sumy na riadkoch dokladov.

Príklady

Stanovenie východiskovej ceny s ohľadom na rôzne nastavené parametre a existenciu preferovanej definície ceny pre firmu objasníme na príkladoch:

 

Príklad 1: Príklad demonštruje hľadanie v bežných cenníkoch (podľa bodu 3.) a vplyv nastavenia parametra Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme.

Majme niekoľko skladových kariet (s kódmi 01, 02 atď. podľa tabuľky), 3 definícia ceny (def1 až def3, pričom def2 nech je hlavná) a 3 cenníky (hlavný (HLAV), skladový (SKL) priradený hlavnému skladu, z ktorého budeme v našom príklade predávať, a Firemný (FIR) priradený firme ABC. Pre jednoduchosť nech neexistujú akčné cenníky a ceny nech sú zadané pre jednotku, v ktorej sa karta predáva a v lokálnej mene a zhodne, čo sa týka nastavenia s DPH/bez DPH. Dále nechť karta má jen jednu jednotku (tj. má-li v ceníku 0, je to definitivní, nelze dopočítat nenulovou cenu z nenulové ceny od jiné jednotky). Vystavujeme FV na firmu ABC z hlavného skladu. Firma ABC nech má nastavenú preferovanú definíciu ceny na 03. Ceny nech sú pre aktuálnu platnosť cenníkov zadané nasledovne:
 

Skl.karta 01 02 03 04 05 06 07
Cenník
Definícia ceny
HLAV SKL FIR HLAV SKL FIR HLAV SKL FIR HLAV SKL FIR HLAV SKL FIR HLAV SKL FIR HLAV SKL FIR
def1 10000 9999 9500 1000 999 950 100 99 - 10 9,9 - 5 4,9 - 5 - - 10000 9999 9500
def2 (hlavná) 9900 8888 9400 990 888 940 90 88 - 9 8,8 - 4 0 - 4 - - 9900 8888 9400
def3 9800 7777 0 980 0 930 80 77 - 8 0 - 0 0 - 0 - - 9800 0 0

Nech je v parametroch nastavené:
- Pre predajné ceny použiť cenník = Postupne skladový a hlavný
- Predvoľba predajnej ceny = Hlavné ceny

a) Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme = Vždy (tzn. aj vtedy, ak vedie na nulovú predajnú cenu)

Skl.karta Východisková cena Komentár
01 0 Hľadá sa def3 (ako preferovaná pre fy ABC), a to prednostne vo firemnom cenníku FIR. Karta 01 v ňom je, ale cenu def3 v ňom má nulovú. Ale keďže je parameter Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme nastavený na "Vždy", tzn. použiť túto definíciu ceny, aj keď vedie na nulovú predajnú cenu, nulová predajná cena nájdená v def3 sa vyberie ako východisková v inom cenníku ani iná definícia ceny sa nehľadá.
02 930 Opäť sa hľadá def3, a to prednostne z cenníka FIR. Karta 02 v ňom je, cenu def3 v ňom má nenulovú, takže sa táto vyberie ako východisková.
03 77 Opäť sa hľadá def3, a to prednostne z cenníka FIR. Karta 03 v ňom ale nie je. Teda sa cena def3 hľadá v ďalších cenníkoch, a to najprv v skladovom (keďže parameter Pre predajné ceny použitý cenník = Postupne skladový a hlavný). Karta 03 v cenníku SKL je, cenu def3 v ňom má nenulovú, takže sa táto vyberie ako východisková.
04 0 Opäť sa hľadá def3, a to prednostne z cenníka FIR. Karta 04 v ňom ale nie je. Takže sa cena def3 hľadá v ďalších cenníkoch, a to opäť najprv v skladovom. Karta 04 v cenníku SKL je, ale cenu def3 v ňom má nulovú. Ale z rovnakého dôvodu ako pri karte 01 sa táto nulová predajná cena vyberie ako východisková a iná definícia ceny sa nehľadá.
05 0 Ide o rovnaký prípad ako pri karte 04. Opäť sa hľadá def3, a to prednostne z cenníka FIR. Karta 05 v ňom ale nie je. Takže sa cena def3 hľadá v ďalších cenníkoch, a to opäť najprv v skladovom. Karta 05 v cenníku SKL je, ale cenu def3 v ňom má nulovú. Ale z rovnakého dôvodu ako pri karte 01 sa táto nulová predajná cena vyberie ako východisková a iná definícia ceny sa nehľadá.
06 0 Opäť sa hľadá def3, a to prednostne z cenníka FIR. Karta 06 v ňom ale nie je. Takže sa cena def3 hľadá v ďalších cenníkoch, a to opäť najprv v skladovom. Karta 06 v cenníku SKL ale tiež nie je. Takže sa hľadá v cenníku HLAV. Karta 06 v cenníku HLAV je, ale cenu def3 v ňom má nulovú. Ale z rovnakého dôvodu ako pri karte 01 sa táto nulová predajná cena vyberie ako východisková.
07 0 Opäť sa hľadá def3, a to prednostne z cenníka FIR. Karta 07 v cenníku FIR je, ale cenu def3 v ňom má nulovú. Ale z rovnakého dôvodu ako pri karte 01 sa táto nulová predajná cena vyberie ako východisková.

b) Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme = Len s nenulovou cenou

Skl.karta Východisková cena Komentár
01 7777 Prednostne sa hľadá def3 (ako preferovaná pre fy ABC), a to prednostne vo firemnom cenníku FIR. Karta 01 v ňom je, ale cenu def3 v ňom má nulovú. Keďže je parameter Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme nastavený na "Len s nenulovou cenou", tak sa táto nulová cena v def3 z tohto cenníka nepoužije. Teda sa cena def3 hľadá v ďalších cenníkoch, a to najprv v skladovom (keďže parameter Pre predajné ceny použitý cenník = Postupne skladový a hlavný). Karta 01 v cenníku SKL je, cenu def3 v ňom má nenulovú, takže sa táto vyberie ako východisková.
02 930 Opäť sa prednostne hľadá def3, a to prednostne z cenníka FIR. Karta 02 v ňom je, cenu def3 v ňom má nenulovú, takže sa táto vyberie ako východisková a nič ďalšie sa nerieši.
03 77 Opäť sa prednostne hľadá def3, a to prednostne z cenníka FIR. Karta 03 v ňom ale nie je. Teda sa cena def3 hľadá v ďalších cenníkoch, a to najprv v skladovom (keďže parameter Pre predajné ceny použitý cenník = Postupne skladový a hlavný). Karta 03 v cenníku SKL je, cenu def3 v ňom má nenulovú, takže sa táto vyberie ako východisková.
04 8,8

Opäť sa hľadá prednostne def3, a to prednostne z cenníka FIR. Karta 04 v ňom ale nie je. Teda sa cena def3 hľadá v ďalších cenníkoch, a to opäť najprv v skladovom (keďže parameter Pre predajné ceny použitý cenník = Postupne skladový a hlavný). Karta 04 v cenníku SKL je, ale cenu def3 v ňom má nulovú. Z rovnakého dôvodu ako pri karte 01 sa táto nulová cena v def3 z tohto cenníka nepoužije. (V cenníku HLAV sa už v tomto prípade nehľadá.)

Takže sa hľadá nenulová predajná cena znovu pre inú definíciu ceny, a to pre def2 (keďže def2 je hlavná a keďže je v parametroch nastavené Predvoľba predajnej ceny = Hlavné ceny), a to opäť prednostne vo FIR, následne v SKL. Karta 04 vo FIR nie je. V cenníku SKL je, cenu def3 v ňom má nenulovú, takže sa táto vyberie ako východisková.

05 0

Opäť sa hľadá prednostne def3, a to prednostne z cenníka FIR. Karta 05 v ňom ale nie je. Takže sa cena def3 hľadá v ďalších cenníkoch, a to opäť najprv v skladovom. Karta 05 v cenníku SKL je, ale cenu def3 v ňom má nulovú. Z rovnakého dôvodu ako pri karte 01 sa táto nulová cena v def3 z tohto cenníka nepoužije. (V cenníku HLAV sa už v tomto prípade nehľadá.)

Takže sa hľadá nenulová predajná cena znovu pre inú definíciu ceny, a to pre def2, a to opäť prednostne vo FIR, následne v SKL. Karta 05 vo FIR nie je. V cenníku SKL je, ale aj cenu def2 v ňom má nulovú. Táto cena sa použije ako východisková. (V cenníku HLAV sa už v tomto prípade nehľadá.)

06 4

Opäť sa hľadá prednostne def3, a to prednostne z cenníka FIR. Karta 06 v ňom ale nie je. Takže sa cena def3 hľadá v ďalších cenníkoch, a to opäť najprv v skladovom. Karta 06 v cenníku SKL nie je. (V cenníku HLAV sa už v tomto prípade nehľadá.)

Takže sa hľadá nenulová predajná cena znovu pre inú definíciu ceny, a to pre def2, a to opäť prednostne vo FIR, následne v SKL. Karta 05 vo FIR nie je. V cenníku SKL tiež nie je, teda sa hľadá ďalej v HLAV. Karta 06 v cenníku HLAV je, cenu def2 v ňom má nenulovú, teda sa táto vyberie ako východisková.

07 9400

Opäť sa hľadá prednostne def3, a to prednostne z cenníka FIR. Karta 07 v cenníku FIR je, ale cenu def3 v ňom má nulovú. Takže sa cena def3 hľadá v ďalších cenníkoch, a to opäť najprv v skladovom. Karta 06 v cenníku SKL je, ale cenu def3 v ňom má tiež nulovú. (V cenníku HLAV sa už v tomto prípade nehľadá.)

Takže sa hľadá nenulová predajná cena znovu pre inú definíciu ceny, a to pre def2, a to opäť prednostne vo FIR, následne v SKL. Karta 07 v cenníku FIR je, cenu def2 v ňom má nenulovú, teda sa táto vyberie ako východisková.

 

Príklad 2: Príklad demonštruje hľadanie pri existencii akčného cenníka (podľa bodu 2.) a vplyv rôzneho nastavenia parametra Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme

Majme podobne ako v predchádzajúcom príklade niekoľko skladových kariet, 3 definície ceny (def1 až def3, pričom def2 nech je hlavná) a 3 cenníky (hlavný (HLAV), skladový (SKL) priradený hlavnému skladu, z ktorého budeme v našom príklade predávať, a Firemný (FIR) priradený firme ABC. Ďalej nech teraz existuje akčný cenník (AKC), ktorý nech je v dobe predaja aktuálne platný a v Obmedzenie použitia má zadanú firmu ABC a obsahuje spomenuté skladové karty. Pre jednoduchosť nech sú ceny zadané pre jednotku, v ktorej sa karta predáva a v lokálnej mene a zhodne, čo sa týka nastavenia s DPH/bez DPH. Dále nechť karta má jen jednu jednotku (tj. má-li v ceníku 0, je to definitivní, nelze dopočítat nenulovou cenu z nenulové ceny od jiné jednotky).

Ceny nech sú pre aktuálnu platnosť cenníkov zadané nasledovne:

Skl.karta 01 02 03
Cenník
Definícia ceny
AKC HLAV SKL FIR AKC HLAV SKL FIR AKC HLAV SKL FIR
def1 0 10000 9999 9500 0 1000 999 950 70 100 99 -
def2 (hlavná) 6000 9900 8888 9400 700 990 888 940 0 90 88 -
def3 5000 9800 7777 0 0 980 0 930 0 80 77 -

Nech je v parametroch nastavené:
- Pro prodejní ceny použít ceník = Postupně skladový a hlavní
- Předvolba prodejní ceny = Hlavní ceny
- Akční ceník = Uplatňovat vždy

Vystavujeme FV na firmu ABC z hlavného skladu. Firma ABC nech má nastavenú preferovanú definíciu ceny na 03.

a) Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme = Vždy (tzn. aj vtedy, ak vedie na nulovú predajnú cenu)

Skl.karta Východisková cena Komentár
01 5000 Hľadá sa def3 (ako preferovaná pre fy ABC). Platný akčný cenník existuje a pre firmu ABC platí, teda sa hľadá skôr v ňom. Karta 01 v ňom je a cenu def3 v ňom má nenulovú. Predajná cena nájdená v def3 sa vyberie ako východisková.
02 0 Opäť sa hľadá def3, a to najprv z cenníka AKC. Karta 02 v ňom je, ale cenu def3 v ňom má nulovú. Ale keďže je parameter Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme nastavený na "Vždy", tzn. použiť túto definíciu ceny, aj keď vedie na nulovú predajnú cenu, nulová predajná cena nájdená v def3 sa vyberie ako východisková v inom cenníku ani iná definícia ceny sa nehľadá.
03 0 Opäť sa hľadá def3, a to najprv z cenníka AKC. Karta 03 v ňom je, ale cenu def3 v ňom má nulovú. Ale z rovnakého dôvodu ako pri karte Y sa táto nulová predajná cena vyberie ako východisková a v inom cenníku ani iná definícia ceny sa nehľadá.

b) Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme = Len s nenulovou cenou

Skl.karta Východisková cena Komentár
01 5000 Hľadá sa def3 (ako preferovaná pre fy ABC). Platný akčný cenník existuje a pre firmu ABC platí, teda sa hľadá skôr v ňom. Karta 01 v ňom je a cenu def3 v ňom má nenulovú. Predajná cena nájdená v def3 sa vyberie ako východisková.
02 700 Opäť sa hľadá def3, a to najprv z cenníka AKC. Karta 02 v ňom je, ale cenu def3 v ňom má nulovú. Keďže je parameter Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme nastavený na "Len s nenulovou cenou", tak sa táto nulová cena v def3 z tohto cenníka nepoužije.
Takže sa hľadá nenulová predajná cena znovu pre inú definíciu ceny, a to pre def2, a to opäť v AKC. Karta 02 v ňom má cenu def2 nenulovú, takže sa táto vyberie ako východisková.
03 0

Opäť sa hľadá def3, a to najprv z cenníka AKC. Karta 03 v ňom je, ale cenu def3 v ňom má nulovú. Ale z rovnakého dôvodu ako pri karte 02 sa táto nulová predajná cena nepoužije.
Takže sa hľadá nenulová predajná cena znovu pre inú definíciu ceny, a to pre def2, a to opäť v AKC. Karta 02 v ňom má ale i cenu def2 nulovú. Táto cena sa použije ako východisková.

Teda táto cena sa použije, aj keď je nulová - avšak program to chápe tak, že je táto nula chcená. (Odberateľ má dostať daný tovar zdarma tak, ako je uvedené v platnom akčnom cenníku, viď poznámka pri bode 2.b.ii.III.b.b. (Teda v bežných cenníkoch sa už v tomto prípade nehľadá. Viď bod 2.b.ii.III.b.b.)

 

Príklad 3: Príklad demonštruje hľadanie pri existencii akčného cenníka (podľa bodu 2.) a vplyv nastavenia parametra Akčný cenník = Uprednostniť nižšiu cenu, kedy sa potom naviac porovnáva, či cena z akčného cenníka vyjde nižšia ako z bežných (viď bod 2.b.iii)

Majme podobne ako v predchádzajúcom príklade niekoľko skladových kariet, 3 definície ceny (def1 až def3, pričom def2 nech je hlavná) a 3 cenníky (hlavný (HLAV), skladový (SKL) priradený hlavnému skladu, z ktorého budeme v našom príklade predávať, a Firemný (FIR) priradený firme ABC. Ďalej nech teraz existuje akčný cenník (AKC), ktorý nech je v dobe predaja aktuálne platný a v Obmedzenie použitia má zadanú firmu ABC a obsahuje spomenuté skladové karty. Pre jednoduchosť nech sú ceny zadané pre jednotku, v ktorej sa karta predáva a v lokálnej mene a zhodne, čo sa týka nastavenia s DPH/bez DPH. Dále nechť karta má jen jednu jednotku (tj. má-li v ceníku 0, je to definitivní, nelze dopočítat nenulovou cenu z nenulové ceny od jiné jednotky).

Ceny nech sú pre aktuálnu platnosť cenníkov zadané nasledovne:

Skl.karta 01 02 03
Cenník
Definícia ceny
AKC HLAV SKL FIR AKC HLAV SKL FIR AKC HLAV SKL FIR
def1 0 10000 9999 9500 0 1000 999 950 70 100 99 -
def2 (hlavná) 6000 9900 8888 9400 700 990 888 940 0 90 88 -
def3 5000 9800 7777 0 0 980 0 930 0 80 77 -

Nech je v parametroch nastavené:
- Pro prodejní ceny použít ceník = Postupně skladový a hlavní
- Předvolba prodejní ceny = Hlavní ceny
- Akční ceník = Upřednostnit nižší cenu

Vystavujeme FV na firmu ABC z hlavného skladu. Firma ABC nech má nastavenú preferovanú definíciu ceny na 03. Dílerské percento nech má 30% a na FV nech je zapnuté použitie dílerských zliav percentom z adresára. Akčný cenník AKC nech je z díl. zliav vylúčený (ceny v ňom sú už akčné a užívateľ si nepraje na ne aplikovať ešte nejaké ďalšie zľavy).

a) Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme = Vždy

Skl.karta Východisková cena Komentár
01 0

Platný akčný cenník existuje a pre firmu ABC platí, teda sa hľadá skôr v ňom. Karta 01 v ňom je a cenu def3 v ňom má nenulovú. Keďže parameter Akčný cenník má hodnotu "Uprednostniť nižšiu cenu" vykoná sa najprv skúšobné zistenie, ktorá z cien (či z akčného či bežných cenníkov po aplikácii príp. dílerské zľavy) vychádza nižšia a tá sa potom použije:

  • Predajná cena nájdená v akčných cenníkoch za toho istého nastavenia vychádza 5000 (viď Príklad 2a) pre kartu 01), z díl. zliav je AKC vylúčený, teda žiadne ďalšie zníženie vďaka díl. zľave nenastáva.
  • Predajná cena nájdená v bežných cenníkoch za toho istého nastavenia vychádza 0 (viď Príklad 1a) pre kartu 01).

    5000 > 0 => Koncová cena z akčních ceníků NEvychází nižší, tudíž se jako výchozí prodejní cena použije cena dohledaná v běžných cenících, tj. 0.

02 0

Opäť sa hľadá najprv z cenníka AKC. Karta 02 v ňom je. Opäť sa najprv vykoná porovnanie, z ktorého cenníka vyjde nižšia výsledná koncová cena:

  • Predajná cena nájdená v akčných cenníkoch za toho istého nastavenia vychádza 0 (viď Príklad 2a) pre kartu 02).
  • Predajná cena nájdená v bežných cenníkoch za toho istého nastavenia vychádza 930 (viď Príklad 1a) pre kartu 02), po aplikácii 30% díl. zľavy je to potom 651.

    0 < 651 => Koncová cena z akčných cenníkov vychádza nižšia, teda sa ako východisková predajná cena použije cena dohľadaná v akčných cenníkoch, tzn. 0.

03 0

Opäť sa hľadá najprv z cenníka AKC. Karta 03 v ňom je. Opäť sa najprv vykoná porovnanie, z ktorého cenníka vyjde nižšia výsledná koncová cena. Situácia je tu zhodou okolností úplne rovnaká ako pri karte 02:

  • Predajná cena nájdená v akčných cenníkoch za toho istého nastavenia vychádza 0 (viď Príklad 2a) pre kartu 03).
  • Predajná cena nájdená v bežných cenníkoch za toho istého nastavenia vychádza 77 (viď Príklad 1a) pre kartu 03), po aplikácii 30% díl. zľavy je to potom 53,9.

    0 < 53,9 => Koncová cena z akčných cenníkov vychádza nižšia, teda sa ako východisková predajná cena použije cena dohľadaná v akčných cenníkoch, tzn. 0.

b) Predvoľba predajnej ceny - uprednostniť definíciu predajnej ceny na firme = Len s nenulovou cenou

Skl.karta Východisková cena Komentár
01 5000

Platný akčný cenník existuje a pre firmu ABC platí, teda sa hľadá skôr v ňom. Karta 01 v ňom je a cenu def3 v ňom má nenulovú. Keďže parameter Akčný cenník má hodnotu "Uprednostniť nižšiu cenu" vykoná sa najprv skúšobné zistenie, ktorá z cien (či z akčného či bežných cenníkov po aplikácii príp. dílerské zľavy) vychádza nižšia a tá sa potom použije:

  • Predajná cena nájdená v akčných cenníkoch za toho istého nastavenia vychádza 5000 (viď Príklad 2b) pre kartu 01), z díl. zliav je AKC vylúčený, teda žiadne ďalšie zníženie vďaka díl. zľave nenastáva.
  • Predajná cena nájdená v bežných cenníkoch za toho istého nastavenia vychádza 7777 (viď Príklad 1b) pre kartu 01), po aplikácii 30% díl. zľavy je to potom 5443,9.

    5000 < 5443,9 => Koncová cena z akčných cenníkov vychádza nižšia, teda sa ako východisková predajná cena použije cena dohľadaná v akčných cenníkoch, tzn. 5000.

02 930

Opäť sa hľadá najprv z cenníka AKC. Karta 02 v ňom je. Opäť sa najprv vykoná porovnanie, z ktorého cenníka vyjde nižšia výsledná koncová cena:

  • Predajná cena nájdená v akčných cenníkoch za toho istého nastavenia vychádza 700 (viď Príklad 2b) pre kartu 02), z díl. zliav je AKC vylúčený, teda žiadne ďalšie zníženie vďaka díl. zľave nenastáva.
  • Predajná cena nájdená v bežných cenníkoch za toho istého nastavenia vychádza 930 (viď Príklad 1b) pre kartu 02), po aplikácii 30% díl. zľavy je to potom 651.

    700 > 651 => Koncová cena z akčních ceníků NEvychází nižší, tudíž se jako výchozí prodejní cena použije cena dohledaná v běžných cenících, tj. 930.

03 0

Opäť sa hľadá najprv z cenníka AKC. Karta 03 v ňom je. Opäť sa najprv vykoná porovnanie, z ktorého cenníka vyjde nižšia výsledná koncová cena:

  • Predajná cena nájdená v akčných cenníkoch za toho istého nastavenia vychádza 0 (viď Príklad 2b) pre kartu 03).
  • Predajná cena nájdená v bežných cenníkoch za toho istého nastavenia vychádza 77 (viď Príklad 1b) pre kartu 03), po aplikácii 30% díl. zľavy je to potom 53,9.

    0 < 53,9 => Koncová cena z akčných cenníkov vychádza nižšia, teda sa ako východisková predajná cena použije cena dohľadaná v akčných cenníkoch, tzn. 0.

 

Ceny odkazom:

Vyššie popísaný algoritmus platí aj pre prípad, kedy ide o Objednávku prijatú, kde sú predajné ceny zadávané len odkazom. Potom sa samozrejme nevyčísluje konkrétna východisková jednotková predajná cena konkrétnym číslom, ale len východiskové definície cien, tzn. odkaz na jednu z definícií cien. Automatické vyčíslenie a predvyplnenie východiskovej definície cien podľa tohto algoritmu však je možné na objednávke potlačiť v položke Predvypĺňať predajnú cenu.

Pri importe objednávky do následného predajného dokladu sa k zadanej definícii cien vyhľadá konkrétna predajná cena v cenníkoch podobne, ako bolo uvedené vyššie - tzn. prednostne vo firemnom cenníku pre firmu, potom v skladovom resp. hlavnom cenníku. A príp. sa upraví pre zadanú jednotku, menu atď. podľa rovnakých pravidiel.

Riešenie špecifických požiadaviek stanovenia východiskovej ceny (riešenie "cenotvorby na mieru")

Aby bolo možné ošetriť aj špecifické požiadavky klientov na stanovenie predajných cien, je k dispozícii funkcia, ktorá umožňuje na riadok predajného dokladu dosadzovať cenu definovanú v externej aplikácii. Tj. tvorba prodejních cen je otevřená tak, že je možné ji libovolně určovat pomocí algoritmu ve formě externí funkce v dynamicky linkované knihovně DLL připojené k instalaci systému ABRA Gen. Potom na všech místech, kde systém ABRA Gen určuje prodejní cenu na základě globálního nastavení a tabulek předvoleb prodejních cen z prodejních ceníků atd. tak, jak je dáno defaultně v systému ABRA Gen, se tato externí funkce zavolá a její implementace může navrhovanou prodejní cenu změnit. Ide v zásade o riešenie "cenotvorby na mieru".

Užívateľ si objedná u oddelenia zákazkového programovania cenotvorbu, svoje požiadavky špecifikuje napr. takto: pokiaľ je na riadku dokladu použitá zákazka začínajúca kódom A, všetky skladové karty sa budú predávať za nákupné ceny. Autor DLL implementuje požadovanú funkčnosť a súbor DLLHooks.dll odovzdá zákazníkovi. Zákazník pouze tento soubor zkopíruje do instalačního adresáře ABRA Gen a po dalším spuštění se mu ceny automaticky upravují.

Predajná cena tovaru sa automaticky zisťuje napr. na nasledujúcich miestach systému:

  • počas vystavovania predajných dokladov FV, PP, OP (s cenami absolútnymi alebo aj odkazom) a NV pri zadávaní jej riadkov (výber skladu, skladu, sklad. karty), príp. po vyvolaní funkcie Aktualizácia predajných cien, ktorá je dostupná v editácii takých dokladov
  • pri predaji prostredníctvom pokladničného predaja alebo reštauračného predaja
  • pri vyvolaní funkcie na zistenie jedn. predajnej ceny sklad. karty z tlačových zostáv a iných výstupov, tzn. vyvolaní z QuickReports funkcie NxGetStoreCardUnitPrice

V týchto miestach sa stanoví jednotková predajná cena postupom popísaným vyššie. Poté systém zjistí, jestli v adresáři instalace ABRA Gen existuje soubor DLLHooks.dll, a pokud ano, zavede jej do paměti a vyhledá v něm entrypoint GetStoreCardUnitPrice. Pokiaľ DLL nepôjde zaviesť alebo nebude obsahovať požadovaný entrypoint, poprípade sa v priebehu vyvolania tejto externej funkcie vyskytne výnimka, DLL sa uvoľní a až do ukončenia programu sa budú blokovať ďalšie pokusy o to isté. Dále se vytvoří instance objektu Class_AbraOLEWrapper, která se inicializuje kontextem a požádá se pomocí GetAbraOLEApplication o IDispatch rozhraní na běžící ABRA Gen. Toto rozhranie (interface) sa bude odovzdávať do externej funkcie ako jej parameter.

DLL s funkciou je možné vytvárať vo všetkých vývojových prostrediach, ktoré umožňujú preklad do tejto formy, avšak výrobcom je odporúčaný nástroj Borland Delphi. Tento nástroj je považovaný za referenčný vprípade riešenia problémov s touto funkcionalitou.

Knihovna DLL se zavede do paměti běžícího procesu ABRA Gen při prvním požadavku na cenotvorbu a od té doby se neuvolní až do ukončení ABRA Gen.

Trvalé zavedenie DLL do pamäte je výhodné, pretože sa informácie v DLL môžu zadržiavať. Pozor, toto může vést v případě špatně napsané knihovny k nestabilitě ABRA Gen.

Externá funkcia má množstvo parametrov:

  • APrice: navrhnutá cena (vstup i výstup)
  • ACurrency: kód meny
  • APricesWithVat: príznak, či je cena s DPH alebo bez (len vstup)
  • AXMLCata: XML reťazec s tzv. neuloženým kontextom. (V prípade DLL háčika volaného zvnútra Business objektu, tzn. napr. z predajného dokladu FV, PP, ..., to sú dáta hlavičky daného dokladu a práve spracovávaného riadka uložené do XML (aby mala volaná funkcia v DLL nejaký "kontext", je jej odovzdaný v XML aktuálny stav objektu, ktorý ju vyvolal (teda hlavička a práve spracovávaný riadok)). V miestach, kde nejde o vyvolávanie zvnútri Business objektu (napr. vyvolanie z QR funkcie alebo z pokladničného predaja), a kde sa tým pádom neodovzdávajú dôležité údaje, ako napr. množstvo z daného objektu, sa "vymyslí" XML so základnými údajmi, ktoré sú v danom mieste známe (napr. množstvo).
  • AAbraOLE: IDispatch interface na interné ABRA OLE rozhranie (viď iAbraOLE) a. i.).

V prípade zavolania si z dát vo formáte XML z práve editovaného dokladu zistí údaje, ktoré potrebuje na stanovenie predajnej ceny (kód skladu, kód skladovej karty, jednotku, ale napríklad aj obchodný prípad a. i. (podľa toho, z akých údajov užívateľ ceny stanovuje)). Môže tiež využiť kontakt na bežiacej aplikácii (viď napojenie cez iAbraOLE), pokiaľ potrebuje zistiť nejaké dodatočné informácie potrebné na výpočet ceny. Vypočíta predajnú cenu a nastaví ju, zároveň vráti ako návratovú hodnotu integer. Pokud je návratová hodnota nenulové číslo, převezme si ABRA Gen novou jednotkovou prodejní cenu a pracuje s ní stejně jako kdyby byla stanovena bez volání DLL. V případě, že externí aplikace individuální cenu nedohledá, dosadí se na řádek cena dle standardních pravidel ABRA Gen.

Bezchybné vytvorenie požadovaného DLL vyžaduje hĺbkovú znalosť systému. Preto podrobnejší popis aktuálne platných parametrov funkcie GetStoreCardUnitPrice a jej ďalšieho použitia nie je predmetom tohto helpu! V případě zájmu o tuto funkcionalitu kontaktujte servisní síť výrobce.