Vytvoření tlačítka "Kalkulace" a volání reportu

Top  Previous  Next

Nyní přizpůsobíme prohlížeč "Položky nabídky" a pomocí události onCreateDialog

 

vytvoříme na formu tlačítko pro vyvolání reportu "Kalkulace"

 

 

Tlačítko vytvoříme standardně viz. následující skript:

 

Nyní ještě vytvoříme proceduru pro událost OnClick právě vloženého tlačítka:

 

 

na řádku 4 deklarujeme proceduru která se zavolá na klik tlačítka "Kalkulace". Protože agenda "Nabídky" používá jako primární klíč autoincrement zavoláme na řádku 12 SaveChanges formu, které zajistí vytvoření primárního klíče i u nově vkládané položky nabídky. Na řádcích  14 a 15 si uložíme primární klíč položky u které provádíme kalkulaci a na řádku 16 uložíme hodnotu kód materiálu z komponenty BrLEditMatAgreg, která zároveň poslouží k odlišení, kterou šablonu následně použijeme. Pokud tedy budeme chtít využít šablony vyplníme při pořizování kódu položky: v32, v32LE, v32LESS nebo v32SS, tedy tak jak jsme pojmenovali šablony.

 

 

Na řádku 19 vytvoříme Form MIS reportů. Protože z MIS budeme ukládat jednotlivé položky do nabídek předáme si primární klíč položky nabídky do MIS pomocí params a proměnné ReportParams k pozdějšímu použití.

 

 

K uložení celého obrazu MIS reportu nám postačí pouze jeden field v tabulce onabit. Nyní jej tedy přidáme do tabulky onabit a pojmenujeme jej např. misXML s typem dat long binary. Do tohoto fieldu budeme ukládat modifikovaný MIS Report.

 

 

Pokud už byl nějaký report do fieldu misXML uložen načteme jej z databáze. Na řádku 34 vytvoříme stream a pomocí Fld.SaveToStream jej naplníme uloženým MISReportem (řádek 47). Ostatní kód je jen načtení misXML z databáze.

 

 

Procedura SetTemplate (řádek 58) zajistí to, že MIS Report se nejprve podívá jestli Stream není prázdný. Pokud ne byl tedy již nějaký report uložen, použije MIS k editaci tento uložený report. Při ukončení editace reportu je jeho nově modifikovaný obsah opět k dispozici k uložení ve Stream. Pokud je Stream prázdý, ještě nebyl žádný report uložen a MIS tedy použije k editaci některou "prázdnou" šablonu, kterou jsme v předchzím kroku vytvořili v adresáři Šablony\Nabídky a jako kód/název šablony použije sTemplate tedy proměnnou z LookupEditu "Kód"

 

 

Nyní už stačí zavolat zobrazení formu MIS pomocí ShowModal (řádek 60). Protože šablona MIS při uložení vkládá položky do onabitsluz zavoláme refresh BrowserDetailu aby se vložené položky správně zobrazili (řádek 63) (uložení položek v MISReportu budeme řešit v další kapitole). Řádek 64 spočítá celkovou cenu bez dph a aktualizuje položku BrNEditCenaBez na Formu položky nabídky.

Řádky 67-80 řeší uložení obrazu MIS reportu do filedu misXML, konkrétně řádek 76 loadfromstream.

 

V této kapitole jsme si tedy vysvětlili, jak uložit MIS do libovolné tabulky v DB a naučili jsme se jak použít SetTemplate

 

V další kapitole se vrátíme k šablonám a modifikujeme je tak, abychom při ukončení MISreportu vložily rádky z reportu do DB do tabulky onabitsluz.