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 Umístění tlačítka schvalovacího postupu v agendě nabídky V některých agendách jsou schvalovací postupy umístěny i v přídavném panelu prohlížeče (např. Nabídky) Zpřístupnění panelu schvalovacích postupů z kontextového menu nad prohlížečem nabídek 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 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ů 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 Dialogové okno konkrétního kroku schvalovacího postupu Parametry kroku schvalovacího postupu: Počáteční krok - pouze jeden z kroků schvalovacího postupu lze označit jako počáteční. Takto označený krok je vytvořen automaticky systémem při pořízení dokladu do evidence, která má přiřazen schvalovací postup (viz níže) Předdefinovaný směr postupu - hodnota toho parametru bude přednastavena ve schvalovacím postupu při realizaci tohoto kroku Návratové kroky - návratové kroky (tzn. kroky, na které lze vrátit prováděný schvalovací postup v dané agendě) program generuje automaticky na základě kroků, které byly doposud ve schvalovacím postupu realizovány. Takto vytvořenou množinu kroků lze upravit tak, že ze všech možných předchozích kroků vyberete jen některé. Výsledná množina možných návratových kroků vznikne průnikem doposud realizovaných kroků a kroků zapsaných do tohoto parametru Dnů k provedení - slouží k přednastavení dnů, do kdy má být daný úkol realizován (posunut na další krok) Po termínu vrátit odesílateli Pokud řešitel (garant) nesplní úkol v požadovaném termínu, vrátí se krok odesílateli. Tato funkce je pouze předpřipravena. Podrobněji je popsána v oddíle Vrácení úkolu odesílateli. Uživatel nebo skupina, která provede akci - pomocí tohoto parametru lze nastavit, zda krok provede konkrétní uživatel/skupina uživatelů nebo ho budou moci provést všichni uživatelé systému se zaškrtnutým parametrem použití ve workflow v číselníku kontaktů. K tomuto parametru se váží i následující zaškrtávátka
Osobu převzít z kroku - tento parametr zajistí, že jako řešitel bude vybrán uživatel, který provedl vybraný krok Následující kroky schvalovacího postupu - zde jsou umístěny všechny kroky, které mohou následovat po provedení daného kroku. K dispozici je přepínač, který určuje, kolik následujících kroků a v jaké kombinaci se bude provádět. Pokud v tomto seznamu není uveden žádný krok následující, jedná se o krok, kterým se daný schvalovací postup ukončí. 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 Vyplnění schvalovacího postupu v řadě nabídek V projektovém řízení lze navíc vyplnit schvalovací postup do typu prvku Vyplnění schvalovacího postupu u typu prvku Prohlížeč nabídek lze upravit tak, aby obsahoval údaje ze schvalovacího procesu 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 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í, zobrazí informativní okno s popisem 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. Dialogové okno schvalovacího procesu V tomto okně lze nastavit další průběh schvalovacího procesu. Přepínač Schvalovací postup 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, ve které jsou zobrazeny všechny doposud vytvořené kroky schvalovacího procesu. Historie schvalovacího procesu Funkce je implementována ve formě databázové procedury wfpostupy_vratit_poterminu(@cas datetime), kterou je třeba zavolat prostřednictvím skriptu spuštěného z plánované události. Umístění prohlížeče plánovaných událostí v menu Výběrem z menu se otevře prohlížeč plánovaných událostí, do kterého je potřeba vložit novou plánovanou událost, která zajistí spuštění procedury pro návrat neprovedených kroků schvalovacích postupů Prohlížeč plánovaných událostí se záznamem Vrácení úkolů nevyřízených v termínu Dialogové okno plánované události se správně vyplněným typem případu Plánovaná událost musí mít správně vyplněny následující parametry:
Nastavení periody a čas spouštění plánované události Nastavení uživatele systému pro použití ve Workflow Aby uživatel systému mohl aktivně využívat schvalovací postupy, je nutno provést následující nastavení: - uživatel systému musí mít přiřazen záznam z číselníku kontaktů vlastní firmy. To lze provést ze Správce uživatelských účtů, který je přístupný pro administrátory systému v menu Konfigurace. Umístění funkce Správce uživatelských účtů v menu Konfigurace - po otevření uživatelského účtu je potřeba na záložce Obecné kliknout na tlačítko Podrobnosti... a po otevření dalšího dialogového okna (Možnosti programu - osobní) vyplnit Propojení s evidencí kontaktů. Tím se vytvoří vazba mezi uživatelem systému a evidencí kontaktů. Propojení uživatelského účtu s evidencí kontaktů - v evidenci kontaktů je pak potřeba u daného záznamu nastavit jeho použití ve Workflow Parametr Účastník workflow na záložce Zařazení pracovníka v dialogu kontaktu 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
|