Generátor sestav: Porovnání verzí
Řádek 49: | Řádek 49: | ||
! bgcolor="#FFE68C" align =left |Poznámka | ! bgcolor="#FFE68C" align =left |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. Alias KARTAZAS je definován s použitím interního klíče 1 a klíčovou položkou Sklad;DelRight(Kod)<br/> | + | |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. Alias KARTAZAS je definován pro relační soubor SKLADZAS.BTR s použitím interního klíče 1 a klíčovou položkou Sklad;DelRight(Kod)<br/> |
|- | |- | ||
|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 | |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 |
Verze z 29. 6. 2011, 00:06
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.
Obsah
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 (platí, pokud se nepoužívá prodej do mínusu) | 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)
Výraz pro vyhodnocení hodnoty nákupní ceny za prodejní operace (účty/služby mají nulovou hodnotu):
if(TypKarty=0, 0, if(Nakupni, -NakupniCen, if(NAKUP.Autokod=0, KARTAZAS.NakupCena, if(NAKUP.Prijem, NAKUP.Cena, NAKUP.NakupniCen)))*abs(Pocet))
Relační výraz KARTZAS.NakupCena se použije v případě, že k prodejní operaci není definována nákupní operace (obvykle to může vzniknout při povoleném prodeji do mínusu nebo ve skladech s řízeným procesem vyskladňování).
Výraz pro vyhodnocení hodnoty prodejní ceny za prodejní operace mimo účty/služby:
PohybPC=if(Nakupni,-1,1)*abs(Pocet)*Cena
nebo
PohybPC=if(TYPDOKLA.Dobropis,-1,1)*Pocet*Cena
(tato varianta funguje i pro účty a je shodná i pro vyhodnocení hodnoty příjmových operací)
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. Alias KARTAZAS je definován pro relační soubor SKLADZAS.BTR s použitím interního klíče 1 a klíčovou položkou Sklad;DelRight(Kod) |
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,...) |
Přenos sestav
Z vybrané skupiny sestav určíme konkrétní sestavu pro přenos
Položka | Popis |
Uložit sestavu | |
Načíst sestavu | |
Načíst sestavu do nové skupiny |
Kódy a přepínače
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.
Přepínač | Popis |
Netisknout záhlaví sestav | umožňuje vytvářet textové databáze s pevnou strukturou věty |
Postupné vytváření indexů | pokud je vypnuto, pak se indexy vytvářejí až na závěr přípravy indexových souborů, což urychlí vytváření sestav se značným objemem vyhledaných dat |
Povolit používání rozšíř. operací | povolí tzv. extended operace při vytváření hlavního indexového souboru (InsertExtended) |
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="/") |
Globální proměnné generátoru sestav
Proměnná | Popis |
INI_Jmeno | |
INI_Jmeno2 | |
INI_Ulice | |
INI_Mesto | |
INI_PSC | |
INI_ICO | |
INI_DIC | |
INI_Ucet | |
KFG_Datum | aktuální datum |
G_Vystavil | |
INI_Sklad | |
INI_KodSkl | |
KFG_Datum0 | datum začátku aktuálního roku |
KFG_Datum1 | datum začátku aktuálního měsíce |
Použití těchto proměnných je stejné jako u jiných ručně definovaných proměnných v sestavě. Redefinováním proměnné v [Texty a proměnné] lze změnit popisky.