Článek: AN0001854Aktualizováno::
Standardní obrazovka pro úkol obsahuje panel s tlačítkem, ve kterém uživatel potvrzuje dokončení úkolu. V řadě případů to znamená rozhodnutí uživatele (např. schváleno/zamítnuto, implementováno/neimplementováno). V takových případech do třídy pro evidenci úkolů přidáme sloupec typu odkaz na jinou třídu, sloupec označíme jako povinný a necháme uživatele před uložením záznamu vybrat některou z hodnot.
Popis funkcionality
V těchto případech můžeme zvýšit komfort uživatele nahrazením standardního panelu dvěma tlačítky s odpovídajícími názvy a ikonami. např. Schválit a Zamítnout. V případě kliku na Zamítnout a nevyplnění pole Komentář, upozorníme uživatele lokalizovanou hláškou, že při zamítnutí musí vyplnit komentář s popisem důvodu zamítnutí.
Popis řešení
Ve třídě obsahující workflow úkoly vytvoříme dvě tlačítka typu Skript. Oběma nastavíme Zobrazit v detailu na toolbaru a Zobrazit při změně záznamu.
Tlačítko Schválit
// Set column wf_action to value 1 and save the task
var cApp = OG.Column.GetByCode( OGActualDataRowParentId, 'wf_action');
OGForm.GetControl( cApp.Id).SetData(1);
OGDataDetailForm.SaveTask();
Tlačítko Zamítnout
Ve skriptu uvedená funkce OG.Messageloc.GetText vrací jazykovou variantu hlášení s kódem reject_task (podle nastavení jazyka aktuálního uživatele). Hlášení se nastavují pod Správa - Lokalizace - Hlášení.
// If column comment is null, return error message reject_task. Otherwise, set column wf_action to value 2 and save the task
var cCom = OG.Column.GetByCode( OGActualDataRowParentId, 'comment');
var com =OGForm.GetControl(cCom.Id).GetData();
if ( !System.String.IsNullOrEmpty(com))
{
var cApp = OG.Column.GetByCode( OGActualDataRowParentId, 'wf_action');
OGForm.GetControl( cApp.Id).SetData(2);
OGDataDetailForm.SaveTask();
}
else
{
OGForm.SetError( OG.MessageLoc.GetText( OGModel.Id, 'reject_task'));
}
Dále chceme skrýt standardní panel pro dokončení workflow úkolů. Ve skriptu pro detail záznamu třídy pro workflow úkoly použijeme skript:
function OnLoad()
{
OGDataDetailForm.ShowApproveTaskPanel = false;
}