====== Úpravy systému OBIS ======
==== Obarvování ====
OBIS umožňuje na základě určité podmínky obarvovat jak písmo tak i pozadí
řádku. Je možné měnit i styl písma.
//Příklad obarvování// - položky rozpočtu obarví červene, pokud je cena
menší než náklady a zeleně, pokud je ceníková cena menší než náklady ale
cena je vetší než náklady. Obarvování dle ceny má prioritu.
ClientSession:AddLUAEvent("rozpocty_rpolozky.PrintRow","RpolozkyCenaNaklady")
function RpolozkyCenaNaklady( DSI, FieldName)
local cena=DSI:FieldByName("cena")
local naklady=DSI:FieldByName("naklady")
local cenikcena=DSI:FieldByName("cenikcena")
if cena and naklady and cena < naklady then
return {FontColor=RGB2Color(255,70,0)}
elseif cenikcena and naklady and cenikcena < naklady then
return {FontColor=RGB2Color(50,170,0)}
end
end
//Příklad obarvování// - dle prvního znaku '*' v hlavičce rozpoctu
ClientSession:AddLUAEvent("rozpocty.rozpocty_rozpocty.PrintRow","RozpoctyPrvniZnak")
function RozpoctyPrvniZnak( DSI, FieldName)
local znak=string.sub(DSI:FieldByName("hlavicka"),1,1)
if znak=="*" then
return
{FontColor=RGB2Color(250,100,0),FontStyle=FontStyleBold,BrushColor=RGB2Color(0,100,250)}
end
end
//FontColor// -- barva písma v řádku
//BrushColor// -- barva pozadí řádku
//FontStyle// -- styl písma
//Obarvování// písma a pozadí využívá funkci //RGB2Color//, která má
tři barevne složky - R (red), G (green), B (blue). Všechny složky se nastavují
v rozmezí 0 -- 255. Např. bílá barva je {(255,255,255)}, černá barva je
//(0,0,0)//, červená barva je //(255,0,0)//.
//Styly písma// mohou být //FontStyleBold// pro tučné písmo,
//FontStyleItalic// pro kurzívu, //FontStyleUnderline// pro podtržené
písmo a //FontStyleStrikeOut// pro písmo přeškrtnuté. Jednotlivé styly se
sčítají. Pokud bychom tedy chtěli použít všechny čtyři styly napíšeme
//FontStyleBold+FontStyleItalic+FontStyleUnderline+FontStyleStrikeOut//.
==== Kopírování, vkládání, potvrzování ====
=== Možné eventy ===
Popis na stránce [[eventy]].
=== Příklady ===
pri kopirovani rozpoctu doplneni aktualniho datumu
ClientSession:AddLUAEvent("rozpocty.rozpocty_rozpocty.AfterCopy", "AktualniDatum")
function AktualniDatum( DSI, FieldName)
DSI:SetFieldByName("Datum",os.date("%d.%m.%Y %X"))
end
pri vytvoreni nove polozky faktury doplneni kodu DPH "0"
ClientSession:AddLUAEvent("faktury.faktury_fpolozky.AfterInsert", "PolozkaFaktury")
function PolozkaFaktury( DSI, FieldName)
DSI:SetFieldByName("iddph","0")
end
pri vytvoreni noveho skladu se doplni IDSklad a Popis dle cisla zakazky
ClientSession:AddLUAEvent("sklady.sklad_sklady.BeforePost", "PopisMeziskladu")
function PopisMeziskladu( DSI, FieldName)
if DSI:FieldByName("idzakaz") then
DSI:SetFieldByName("popis",
ClientSession:LookupFields("zakazky_zakazky","idzakaz",DSI:FieldByName("idzakaz"),"popis"))
DSI:SetFieldByName("idsklad", DSI:FieldByName("idzakaz"))
end
end
pri vytvoreni noveho partnera vyplneni cenove skupiny '2'
ClientSession:AddLUAEvent("partneri.partneri_partneri.AfterInsert", "PolozkaFaktury")
function PolozkaFaktury( DSI, FieldName)
DSI:SetFieldByName("CenSkupina","2")
end
pri zalozeni vyk.protokolu vyplneni druhu 'S'
ClientSession:AddLUAEvent("vykprot.prost_vykprot.AfterInsert", "DruhVykProtokolu")
function DruhVykProtokolu( DSI, FieldName)
DSI:SetFieldByName("idvpdruh","S")
end
po postu vykonu doplneni popisu dle idvyk
ClientSession:AddLUAEvent("prostredky.prost_vykony.BeforePost", "PopisVykonu")
function PopisVykonu( DSI, FieldName)
if DSI:FieldByName("idvyk") then
DSI:SetFieldByName("popis",
ClientSession:LookupFields("prost_vyktext","idvyk",DSI:FieldByName("idvyk"),"popis"))
end
end
pri pridani noveho partnera se automaticky vyplni v partnerech
novy sloupecek 'v_idvyridil' se jmenem uzivatele, ktery partnera zapsal
ClientSession:AddLUAEvent("partneri.partneri_partneri.AfterInsert", "PridaniZapsalPartnera")
function PridaniZapsalPartnera(DSI, FieldName)
DSI:SetFieldByName("v_idvyridil",ClientSession:GetIDUzivatele())
end
==== Cenová politika ====
//Příklad// - když se bude vydávat materiál ze skladu //01//, pak
vydej za //Cenu1// ze skladových karet. Když ze skladu //02//, pak
vydej za //Cenu2// a když ze skladu //03//, pak
vydej za //Cenu3//. Když se bude vydávat z jiných skladů, vždy vydej za
cenu ze sloupce //Cena//
ClientSession:AddLUAEvent("sklkarty_zaklad.sklad_karty.GetCena","CenovaPolitikaKarty")
function CenovaPolitikaKarty( DSI, DestDSI, Params)
local SkladDS=DestDSI:OwnerMiddleDB():FindDataSetItem("sklad_prijemky")
if not SkladDS then return end
local idsklad=SkladDS:FieldByName("idsklad")
if idsklad=="01" then return DSI:FieldByName("Cena1") end
if idsklad=="07" then return DSI:FieldByName("Cena2") end
if idsklad=="13" then return DSI:FieldByName("Cena3") end
return Params.CenikCena
end
==== Upozorňování - budík ====
Upozornování slouží k připomenutí nějaké události, akce na základě výběru
pomocí SQL dotazu. Nastavuje se v Menu -> Ostatní -> Nastavení -> záložka **Upozorňování**
{{lua:nastaveni_budik.png|}}
**Syntaxe**
<{název}>|<{interval_v_minutách}>|<{další_spuštění}>
|{Tablename}|<{SQL_dotaz}>
//Příklad//:
Chceme upozornit na všechny {Akce} partnerů, které mají {Datum
akce} starší, než je aktuální datum.
Akce|10|8.11.2005 8:01:49|partneri_akce|select * from partneri_akce where
datumakce < 'return os.date('%d.%m.%Y %H:%M:%S')' and
piduzivatele = 'return ClientSession:GetIDUzivatele()'
Čas dalšího spuštění se nastaví automaticky po předešlém
spuštění - k času posledního spuštění se přičte interval v minutách.
==== Lokální menu ====
Do //lokálního menu// ve všech hlavních tabulkách lze přidat vlastní
uživatelskou funkci. tyto funkce jsou uloženy v //xml// souborech v
/user/lua a jsou psané pomocí skriptovacího jazyka //lua//.
//Příklad//:
Do lokálního menu v rozpočtech chceme přidat funkci, která u položek
zaktualizuje ceníkovou cenu a náklady dle ceníku.
Výpis souboru //rozpocty.rozpocty_rozpocty_menu.xml// bude tedy vypadat např.
takto:
==== Hromadná změna ID v LUAConsole MassChange ====
* v LUA console, zapnout DEBUG
* master tabulku není nutné opravovat, změní se v MassChange (je ale nutný refresh)
* spustit:
cf.MassChangeID("partneri_partneri:idpartner", "oldid", "newid", DEBUG, nil, true) --posledni param je dryrun