Schvalovací postupy |
Top Previous Next |
Seznam témat: Funkce pro práci se schvalovacími postupy (schvalovací proces) je umístěna v jednotlivých agendách (viz bod Popis funkce) většinou v dialogovém okně a spouští se kombinací kláves Ctrl+F2 (obr. 1). Obr. 1 Umístění tlačítka schvalovacího postupu v agendě nabídky V některých agendách jsou schvalovací postupy umístěny v přídavném panelu prohlížeče (např. Nabídky) - viz obr. 2: Obr. 2 Umístění schvalovacího postupu v přídavném panelu prohlížeče nabídek Schvalovací procesy jsou součástí řízení toku práce. Funkce slouží typicky k tomu, aby bylo možné předem stanovit způsob (postup), jakým bude konkrétní doklad vypořádán a aby bylo možno zjistit, ve které fázi se doklad právě nachází. Funkce současně umožňuje zobrazení množiny dokladů, které jsou právě přiřazeny jednomu uživateli. Vedlejším efektem jsou záznamy o zpracování jednotlivých kroků, kdo je zpracoval, kdy a jakým způsobem. Tato funkce je implementována do úloh:
Vytvoření schvalovacího postupu Aby bylo možno se schvalovacími postupy v jednotlivých agendách pracovat, je potřeba je nejdříve vytvořit. To lze provést v menu Workflow | Schvalovací postupy (viz obr. 3) Obr. 3 Umístění schvalovacích postupů v menu systému Vision ERP Po výběru položky menu se otevře prohlížeč nadefinovaných schvalovacích postupů (obr. 4) Obr. 4 Prohlížeč schvalovacích postupů Po výběru konkrétního postupu se otevře dialogové okno schvalovacího postupu (obr. 5) Obr. 5 Dialogové okno schvalovacího postupu Kromě polí jednoznačně identifikujících schvalovací postup obsahuje dialogové okno posloupnost kroků, které je potřeba absolvovat, aby byl dokument dané agendy řádně zpracován. Každý krok schvalovacího postupu obsahuje tyto informace (obr. 6) Obr. 6 Dialogové okno konkrétního kroku schvalovacího postupu Popis položek:
Přiřazení schvalovacího postupu vybrané agendě Ve většině případů stačí v příslušné řadě dokladů dané agendy vyplnit sloupec schvalovací postup (obr. 7) Obr. 7 Vyplnění schvalovacího postupu v řadě nabídek V projektovém řízení lze navíc vyplnit schvalovací postup do typu prvku (obr. 8) Obr. 8 Vyplnění schvalovacího postupu u typu prvku Prohlížeč nabídek lze upravit tak, aby obsahoval údaje ze schvalovacího procesu (obr. 9) Obr. 9 Přidané sloupce do prohlížeče nabídek Příklad: ukázka skriptu, pomocí kterého byly přidány sloupce do prohlížeče nabídek v obrázku 9 SELECT h.rada, h.dokl, (SELECT FIRST f.nazev1 || ', ' || f.obec || ', ' || f.ulice FROM DBA.gfinfo as f WHERE f.ico = h.ico AND f.multi = h.multi AND f.platiod <= cast (h.zalozeno as date) AND (f.platido >= cast (h.zalozeno as date) OR f.platido IS NULL)) as _poptavajici, h.stav, h.nazev, h.terminnab, h.datplatnab, h.termin, h.terminzac, h.zaruka, h.cena, h.oprada || substring ('000000', 1, 6-length (h.opdokl)) || h.opdokl as _oop, h.ico, h.multi, h.obchodnik, h.zalozeno, h.zalozil, s.color, s.bgcolor, // přidané sloupce Dalsi_krok, Termin, Povereny_prac (select first nazev from dba.wfukoly as w where (cast(h.dokl as char)||';'||h.rada) = w.doklad and w.typ_vazby=1 order by w.id DESC) as Dalsi_krok,
(select first termin from dba.wfukoly as w where (cast(h.dokl as char)||';'||h.rada) = w.doklad and w.typ_vazby=1 order by w.id DESC) as Termin,
(select p.Prijmeni||' '||p.Jmeno from dba._mzosobnikarty as p where p.ai = (select first osoba_id from dba.wfukoly as w where (cast(h.dokl as char)||';'||h.rada) = w.doklad and w.typ_vazby=1 order by w.id DESC) and data_id = (select first osoba_data_id from dba.wfukoly as w where (cast(h.dokl as char)||';'||h.rada) = w.doklad and w.typ_vazby=1 order by w.id DESC)) as Povereny_prac
FROM DBA.onabhd as h, DBA.onabstavy as s WHERE h.stav = s.stav and (h.stav not like 'Prodán%') and (h.stav not like 'Zamít%') and h.obchodnik = (select fullname from dba._gusers) ORDER BY h.rada, h.dokl DESC Použití schvalovacího postupu V případě, že jsou splněny výše uvedené podmínky - tzn. schvalovací postup je vytvořen a přiřazen dané řadě agendy, lze vybraný schvalovací postup používat k vypořádání dokladů dané agendy. Při vytvoření nového dokladu dané agendy (např. nové nabídky) program na pozadí vytvoří první úkol schvalovacího postupu (obr. 10) Obr. 10 Vytvoření prvního úkolu schvalovacího postupu při vytvoření nové nabídky nebo se při otevření nabídky, pokud je v položce schvalovacího postupu vyplněno pole Zobrazit zprávu při prvním otevření tak, jako na obr. 6, zobrazí informační okno (obr. 11) Obr. 11 Informativní okno o úkolu, který se má provést Pokud chcete daný doklad agendy postoupit k dalšímu zpracování, je potřeba buď kliknout na zvýrazněný obdélník v panelu schvalovacího postupu, nebo otevřít dialogové okno agendy a kliknout na tlačítko Ctrl+F2 Předání, schválení... Otevře se okno kroku schvalovacího procesu (viz obr. 12). Obr. 12 Dialogové okno schvalovacího procesu V tomto okně lze nastavit další průběh schvalovacího procesu. Přepínač Schvalovací proces určuje směr, kterým se bude proces ubírat. V případě, že seznam možných následujících kroků obsahuje víc než jeden záznam, lze kliknutím na sloupec Použít nebo stisknutím mezerníku vybrat kroky, kterými se bude schvalovací proces ubírat. U každého z následujících kroků lze zvolit konkrétního uživatele a termín, do kdy je třeba daný krok provést. Tato pole lze měnit jak myší, tak i pomocí klávesnice. Pokud nepatříte do skupiny uživatelů, která může ukončit daný krok, otevře se dialogové okno kroku schvalovacího procesu v omezeném zobrazí - pouze se záložkou Historie (viz obr. 13), ve které jsou zobrazeny všechny doposud vytvořené kroky schvalovacího procesu. Obr. 13 Historie schvalovacího procesu Hromadné schvalování záznamů Zkušení uživatelé se mohou pokusit nastavit agendu schvalovacích postupů tak, aby bylo možno schvalovat více označených záznamů v agendě naráz. K tomu je potřeba splnit několik podmínek: 1. Hromadně schvalovat záznamy lze pouze v těch agendách, u který lze v prohlížeči zobrazit přídavný panel (obr. 2) 2. Ve skriptu před ošetřit, zda vybraný záznam může být hromadně zpracován. K tomu lze použít proměnnou Iterace, která je naplněna pořadovým číslem průchodu cyklem. Při prvním průchodu se uloží parametry, které musí splňovat každý následující průchod cyklem. 3. Programově je hlídáno, aby vybrané záznamy byly ve stejném stupni zpracování (stejný krok schvalovacího postupu) Nastavení adresáta prvního kroku schvalovacího procesu V každém kroku schvalovacího postupu, tedy i v prvním, může být předem určeno, který uživatel daný krok provede. Při předávání schvalovacího procesu do dalšího kroku si uživatel, pokud je to v definici schvalovacího postupu umožněno, může zvolit adresáta, který následující krok provede. Výjimkou je první (počáteční) krok schvalovacího procesu, který se zakládá v databázovém triggeru dané agendy. Pro zkušenější uživatele zde existuje možnost, jak tohoto adresáta prvního kroku zvolit. Lze toho dosáhnout nastavením proměnné workflow_start_user v dočasné tabulce oparams (ukládá se zde sysname uživatele). Zastavení procesu Kliknutím na tlačítko Zastavení procesu dojde k "násilném" přerušení schvalovacího procesu. Ve skriptu po lze tuto skutečnost zjistit tak, že proměnná SelectedStepId má hodnotu -1. Restart procesu Tlačítko Restart procesu restartuje schvalovací proces tím, že znovu založí první krok. Ve skriptech schvalovacích postupů lze pracovat s následujícími proměnnými:
Kromě proměnných se ve skriptech schvalovacích postupů používají dočasné tabulky: wtfschvalproces, která je naplněna všemi kroky pro daný směr. Při změně směru schvalovacího procesu program tuto tabulku vymaže a znovu naplní všemi přípustnými kroky dle definice schvalovacího postupu. Tato tabulka slouží jako datový zdroj pro DBGrid zobrazující následující kroky schvalovacího procesu. Klíčový sloupec pouzit slouží k označení kroků, kterými bude schvalovací proces pokračovat (pouzit=1). wtfukoly_osoby, která slouží pro výběr osoby, která provede následující krok. Program tuto tabulku předvyplní dle nastavení sloupce "Uživatel nebo skupina, která provede akci" v položce schvalovacího postupu (viz obr. 6). V případě, že sloupec bude vyplněn konkrétním uživatelem systému Vision ERP, dočasná tabulka bude obsahovat pouze tohoto uživatele a nebude možno jej změnit. Pokud sloupec bude obsahovat skupinu uživatelů, program dočasnou tabulku naplní všemi členy skupiny. Pokud sloupec nebude vyplněn, dočasná tabulka bude obsahovat všechny uživatele systému Vision ERP. Část skriptu po provedení akce (mění stav projektu): var RadaCtrl: TBrowserStatic; DoklCtrl: TBrowserStatic; PoradiCtrl: TBrowserStatic; StavCtrl: TBrowserLookupEdit; Rada, Stav: string; Dokl, Poradi: Integer;
if Dialog <> nil then // voláno z dialogového okna projektů begin StavCtrl:= TBrowserLookupEdit(Dialog.FindComponent('BrLEditStav')); RadaCtrl:= TBrowserStatic(Dialog.FindComponent('BrStaticRada')); DoklCtrl:= TBrowserStatic(Dialog.FindComponent('BrStaticdokl')); PoradiCtrl:= TBrowserStatic(Dialog.FindComponent('BrStaticPoradi'));
if (StavCtrl = nil) or (RadaCtrl = nil) or (DoklCtrl = nil) or (PoradiCtrl = nil) then RaiseException('Nenalezen potřebný editační prvek.');
Rada:= RadaCtrl.text; Dokl:= StrToInt(DoklCtrl.text); Poradi:= StrToInt(PoradiCtrl.text); Stav:= StavCtrl.Text; end else // voláno z přídavného panelu prohlížeče projektů begin Rada:= BrowserData.FieldByName('rada_id').AsString; Dokl:= BrowserData.FieldByName('id_dokl').AsInteger; Poradi:= BrowserData.FieldByName('id_poradi').AsInteger; Stav:= BrowserData.FieldByName('stav').AsString; end;
case SelectedStepUserId of
23: begin Stav:= 'Nový požadavek'; ExecuteSQL('UPDATE dba.omarkakce SET stav =:stav WHERE rada_id =:rada_id AND id_dokl =:id_dokl AND id_poradi =:id_poradi', [Stav, Rada, Dokl, Poradi]); end; end; Související témata
|