Článek: AN0002407Aktualizováno:: 28.12.2019
Poměrně častou potřebou je vyjádřit, zda určitý záznam (požadavek, faktura, úkol, projekt) byl schválen nebo zamítnut. Vhodným řešením je použití sloupce typu číselníková hodnota, který může nabývat hodnot Null, Schváleno a Neschváleno, popř. Ano/Ne atd. Při použití lokalizované hodnoty se nám pak budou zobrazovat příslušné jazykové varianty těchto textů. Uživatel pak vybírá z comboboxu z těcht hodnot.
V níže uvedeném příkladě si ukážeme, jak toto řešení vylepšíme schvalováním záznamu tlačítky, která zpřístupníme pouze uživateli, který je určen ve sloupci 'responsible_for_assessment' jako schvalovatel.
V detailu třídy (Skript pro seznam záznamů) nastavíme sloupec se stavem pouze ke čtení. Zároveň zobrazíme tlačítka ke schválení a zamítnutí, pouze pokud záznam není ve stavu 'uzavřený' a pokud ve sloupci 'responsible_for_assessment' je uveden aktuální uživatel. Jiným uživatelům se tedy tlačítka nezobrazí.
function OnAfterLoadColumns()
{
OGColumns['status'].ReadOnly = true;
}
function OnPreRender()
{
OGColumns['responsible_for_assessment'].ColumnUI.ShowSelectMe = true;
var colResponsible_for_assessment = OGClassDef.Columns['responsible_for_assessment'];
var colStatus = OGClassDef.Columns['status'];
var Responsible_for_assessment = OGForm.GetControl( colResponsible_for_assessment.Id).GetData();
var status = OGForm.GetControl( colStatus.Id).GetData();
//tlacitka zobrazit, pokud je stav jiný než closed (Id=4) a ve sloupci responsible_for_assessment je přihlášený uživatel
var Display = status != 4 // uzavřený
&&
(Responsible_for_assessment != null && Responsible_for_assessment.Id == OG.Person.GetLoginPerson().Id)
OGControlOperations['approve'].Visible = Display;
OGControlOperations['reject'].Visible = Display;
}
Dále vytvoříme v dané třídě dvě tlačítka s kódem 'approve' a 'reject'.
Tlačítko Schválit nastaví status na hodnotu Schváleno (Id=2).
// Nastavit Status na Approved a uložit
var ht = OG.CreateHashtable();
ht['status'] = 2;
OGDataDetailForm.Save(false, ht);
Tlačítko Zamítnout nastaví status na hodnotu Zamítnuto (Id=2).
// Nastavit Status na Rejected a uložit
var ht = OG.CreateHashtable();
ht['status'] = 3;
OGDataDetailForm.Save(false, ht);