Generátor sestav
Modul generátor sestav je určen pro zpracování libovolných sestav, které uživatel potřebuje ze skladového systému zjistit. Pro vytváření nových sestav je potřebné znát mnoho věcí z oblasti programování, logiky a zpracování relačních databází.
Proto je nutné konzultovat vytváření sestav s programátory a běžní uživatelé by se měli omezit pouze na úpravu výběrové podmínky a na spuštění vytváření sestavy. Přesto je modul Generátor sestav velmi důležitý, protože umožňuje během pár minut vytvořit značně složité sestavy podle momentálních potřeb uživatele.
Spuštění vytvoření sestavy :
- Vyberte z nabízeného seznamu skupin sestav skupinu, ve které se nachází vámi požadovaná sestava a stiskněte Enter
- Po zvolení skupiny sestav program nabídne všechny sestavy ze zvolené skupiny. Vyberte si tu, jež vás zajímá. Výběrovou podmínku lze měnit v rámci opravy definice sestavy (klávesa F2) po stisknutí F6 na údaji "Výběrová podmínka" nebo přímo v textu výrazu pro výběrovou podmínku. Výpočet sestavy se spustí stisknutím Enter na požadované sestavě. Vzhledem k tomu, že program může zpracovávat rozsáhlé databáze, může výpočet trvat dlouhou dobu.
Při vytváření sestav je potřeba znát některé důležité vztahy v databázích. Mezi nejsložitější patří způsob vyhodnocování nákupních cen a s tím související způsob vyhodnocování zisku (nebo lépe řečeno marže z prodeje). Připomínáme, že ke každé operaci, která není nákupní, existuje tzv. nákupní operace. Tuto nákupní operaci program vyhledá při evidování dokladu. Cena v nákupní operaci určuje tzv. nákupní cenu operace, která se v globále za více operací označuje jako prodej v NC (spotřeba).
Schéma vyhodnocování nákupní ceny za jednu operaci:
NÁKUPNÍ CENA | ||
Operace je nákupní | Pokud operace je příjmová | Pokud operace je dodací (dobropis) |
Operace.Cena | Operace.NakupniCena | |
Operace není nákupní tzn. exist. odpovídající nákupní operace | Pokud nákupní operace je příjmová | Pokud nákupní operace je dodací |
NakupniOperace.Cena | NakupniOperace.NakupniCena |
V jazyku generátoru sestav by příslušná položka záhlaví vyjadřující nákupní cenu mohla vypadat takto :
if ( Nakupni, if ( Prijem, Cena, NakupniCena), if ( NAKUP.Prijem, NAKUP.Cena, NAKUP.NakupniCena)
Poznámka |
---|
V uvedeném příkladě by měl být soubor operací zaveden jako hlavní soubor a zároveň by měl být soubor operací jako relační soubor s alias NAKUP s použitím interního klíče 3 a klíčovou položkou Nakup. |
U účtů není nákupní cena sledována (NC=0), proto by účty neměly být dle výše uvedeného schématu vypočítávány |
Schéma vyhodnocování zisku za jednu operaci :
ZISK Z OPERACE | ||
Operace je nákupní | Pokud operace je příjmová | Pokud operace je dodací (dobropis) |
- | Operace.NakupniCena-Operace.Cena | |
Operace není nákupní tzn. exist. odpovídající nákupní operace | Pokud nákupní operace je příjmová nebo operace je příjmová(vrubopis) | Pokud nákupní operace je dodací |
Operace.Cena-NakupniOperace.Cena | Operace.Cena-NakupniOperace.NakupniCena |
V jazyku generátoru sestav by příslušná položka záhlaví vyjadřující zisk za jednu operaci mohla vypadat takto :
if ( Nakupni, if ( Prijem, 0, NakupniCena - Cena ), if ( NAKUP.Prijem OR Prijem, Cena - NAKUP.Cena, Cena - NAKUP.NakupniCena)
Poznámka | ||||
---|---|---|---|---|
V uvedeném příkladě by měl být soubor operací zaveden jako hlavní soubor a zároveň by měl být soubor operací jako relační soubor s alias NAKUP s použitím interního klíče 3 a klíčovou položkou Nakup. | ||||
U účtů není nákupní cena sledována (NC=0)
Zisk u účtů by tedy neměl být dle výše uvedeného schematu vypočítáván |
Poznámka | |
---|---|
V definici relace v generátoru sestav je možné použít neúplné definování klíčové hodnoty pro dohledání relačního záznamu (může chybět definice výrazů pro vyhodnocení koncových segmentů indexu) - v tomto případě se provede dohledání prvního záznamu vyhovující počáteční části klíče (využití pro zrychlení výpočtu např. při sestavách z dokladů v průvodkách). | |
Při definici segmentu klíče v relačních souborech a omezeních dle indexu není nutné pomocí funkce chr() převádět číselné hodnoty na jednoznakové textové klíčové hodnoty - konverze se provede automaticky (např. místo ...;chr(TypDokladu); ... lze použít jen ...;TypDokladu,...) |
Postup při kopírování a načítání sestav
Z vybrané skupiny sestav určíme konkrétní sestavu pro přenos
A provedeme přenos sestavy Přenos sestav
V generátoru sestav lze pro exporty do CSV definovat globální výraz CSV_HDRCP, který určuje kódovou stránku pro hlavičku CSV souboru (např. CSV_HDRCP=4 ).
Kód | Popis |
0 | ASCII |
1 | Kamenický |
2 | ASCII2 |
3 | LATIN2 |
4 | Windows |
Výchozí hodnotou je kód ASCII. Kódovou stránku v ostatních řádcích CSV souboru lze měnit pomocí funkce conv(s,cp) formou výrazů v definici sestavy.
V generátoru sestav existuje funkce FileExists(f), která vrací hodnotu true, pokud specifikovaný soubor existuje. Vhodné využití této funkce je např. pro tisky ceníků s obrázky pro testování existence souboru s obrázkem.
Technická poznámka |
Pro export do CSV lze definovat globální výraz CSV_SEPAR, který určuje oddělovač znaků pro CSV soubor (např. CSV_Separ="/") |