Generátor sestav: Porovnání verzí

Z K.A.P.
Skočit na navigaciSkočit na vyhledávání
Řádek 32: Řádek 32:
 
V jazyku generátoru sestav by příslušná položka záhlaví vyjadřující nákupní cenu mohla vypadat takto :<br/>
 
V jazyku generátoru sestav by příslušná položka záhlaví vyjadřující nákupní cenu mohla vypadat takto :<br/>
 
'''if ( Nakupni, if ( Prijem, Cena, NakupniCena), if ( NAKUP.Prijem, NAKUP.Cena, NAKUP.NakupniCena)'''
 
'''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))'''
 +
 +
Výraz pro vyhodnocení hodnoty prodejní ceny za prodejní operace mimo účty:
 +
'''PohybPC=if(Nakupni,-1,1)*abs(Pocet)*Cena'''
 +
 +
nebo
 +
 +
'''PohybPC=if(TYPDOKLA.Dobropis,-1,1)*Pocet*Cena'''
 +
(tato varianta funguje i pro účty a nákupní operace)
  
 
{| class="wikitable" border=1
 
{| class="wikitable" border=1

Verze z 29. 6. 2011, 00:10

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)

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

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

nebo

PohybPC=if(TYPDOKLA.Dobropis,-1,1)*Pocet*Cena (tato varianta funguje i pro účty a nákupní operace)

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

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.