Generátor sestav

Z K.A.P.
Skočit na navigaciSkočit na vyhledávání

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

  1. Vyberte z nabízeného seznamu skupin sestav skupinu, ve které se nachází vámi požadovaná sestava a stiskněte Enter
  2. 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)
proto u účtů v dodacích dokladech platí     Zisk := Operace.Cena,
zatímco u příjmových dokladů platí     Zisk := -Operace.Cena.

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,...)

Přenos sestav

Skupina sestav:
SkupinySestav.PNG

Z vybrané skupiny sestav určíme konkrétní sestavu pro přenos
SkupinyVybSestavy.PNG

A provedeme přenos sestavy
SkupinySestavPrenos.PNG


Kódy

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="/")