Generátor sestav

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

Menu: Výpočty/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.

Všechny sestavy je možné exportovat do formátu RTF ( jedná se o formát, který lze číst pomocí MS Word, MS Word Viewer, WordPad, Write, Open Office...), s možností rovnou otevřít vyexportovaný dokument. V generátoru sestav existuje podpora přímého exportu do souborů ve formátu MS Excel (tabulky XLS). Soubory jsou čitelné i v programu Open Office.


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á.

SestDefinice.PNG
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ě (Shift + Enter umožní volbu typu sestavy např. text. sest., Excel, SLK atd.). 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í počtu prodaných měrných jednotek za prodejní operace mimo účty/služby:
if(Nakupni,-1,1)*abs(Pocet)

Výraz pro vyhodnocení hodnoty prodejní ceny za prodejní operace mimo účty/služby:
if(Nakupni,-1,1)*abs(Pocet)*Cena

nebo

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)
proto u účtů v dodacích dokladech platí     Zisk := Operace.Cena * if(TYPDOKLA.Dobropis,-1,1) * Pocet,
zatímco u příjmových dokladů platí     Zisk := -Operace.Cena * if(TYPDOKLA.Dobropis,-1,1) * Pocet.

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, poslední sestava

Skupina sestav:
SkupinySestav.PNG

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

Zde můžeme provést buď přenos/načtení sestavy (kl. Alt+F5) nebo vyvolat poslední vytvořenou sestavu (kl. F8).

1. Přenos sestavy
SkupinySestavPrenos.PNG

Položka Popis
Uložit sestavu Uloží sestavu do přenosového souboru. V jednom přenosovém souboru může být i více sestav (musí mít různé číslo sestavy nebo název)
Načíst sestavu Umožní načtení sestavy z přenosového souboru. Je možné určit číslo sestavy, do které se má provést import. Sestava s daným číslem nesmí v dané skupině sestav existovat. Import musí být prováděn do skupiny sestav, která má stejný hlavní soubor jako importovaná sestava. Pokud se hlavní soubor liší, tak se nabídne import do nové skupiny sestav (číslo je určeno automaticky).
Načíst sestavu do nové skupiny Sestava je naimportována do nové skupiny sestav.

2. Vyvolání poslední sestavy Obrázek po F8

Položka Popis
O.K. návrat zpět
Otevřít zobrazí poslední sestavu nebo databázi
Poslat emailem sestava/databáze je předána aktuálnímu poštovnímu programu. Zde vyplníme emailové adresy, případně upravíme předmět nebo text emailu a odešleme.

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)
Povolit automatickou předalokaci dat pokud je přepínač zapnut a počet stránek není určen, pak je počet předalokovaných stránek dočasných tabulek určen automaticky (default nastavení). Přepínač je vhodné vypnout hlavně u sestav, které zpracovávají rozsáhlé databáze, ale výsledkem je malé množství vyfiltrovaných záznamů.

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 Jméno firmy z inicializačních hodnot
INI_Jmeno2 Jméno 2 firmy z inicializačních hodnot
INI_Ulice Ulice firmy z inicializačních hodnot
INI_Mesto Město firmy z inicializačních hodnot
INI_PSC PSČ firmy z inicializačních hodnot
INI_ICO IČO firmy z inicializačních hodnot
INI_DIC DIČ firmy z inicializačních hodnot
INI_Ucet Bankovní účet firmy z inicializačních hodnot
KFG_Datum aktuální datum
G_Vystavil Identifikace aktuálně přihlášeného uživatele (max. 10 znaků)
INI_Sklad Označení skladu, kde je uživatel aktuálně přihlášen (max. 25 znaků)
INI_KodSkl Číslo skladu, kde je uživatel aktuálně přihlášen
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.