Generátor sestav: Porovnání verzí

Z K.A.P.
Skočit na navigaciSkočit na vyhledávání
Řádek 120: Řádek 120:
 
|'''Položka''' || '''Popis'''
 
|'''Položka''' || '''Popis'''
 
|-
 
|-
|Uložit sestavu ||  
+
|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 ||  
+
|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 || 
+
|Načíst sestavu do nové skupiny || Sestava je naimportována do nové skupiny sestav.
 
|}
 
|}
  

Verze z 1. 7. 2011, 00:07

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 (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

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

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.



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