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.
Popis na stránce eventy.
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
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
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í
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 < '<lua>return os.date('%d.%m.%Y %H:%M:%S')</lua>' and piduzivatele = '<lua>return ClientSession:GetIDUzivatele()</lua>'
Č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.
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:
<?xml version="1.0" encoding="windows-1250"?> <menu> <menuitem> <caption>Aktualizace ceníkové ceny a nákladů v označeném rozpočtu</caption> <cmdstring>@ local RozpoctyMD=DSI:OwnerMiddleDB() local RozpoctyDS=RozpoctyMD:FindDataSetItem("Rozpocty_rozpocty") RozpoctyDS:SetRangeDetail() RkapDS=RozpoctyMD:FindDataSetItem("Rozpocty_rkap") RpolozkyDS=RozpoctyMD:FindDataSetItem("Rozpocty_rpolozky") RkapDS:LocateFirst() repeat RkapDS:SetRangeDetail() RpolozkyDS:LocateFirst() repeat IDCen=RpolozkyDS:FieldByName("IDCen") if IDCen then Cena=ClientSession:LookupFields("Rozpocty_cenik","IDCen",IDCen,"Cena") Naklady=ClientSession:LookupFields("Rozpocty_cenik","IDCen",IDCen,"Naklady") LuaObj:Print(RpolozkyDS:FieldByName("IDRozp")) RpolozkyDS:Edit() RpolozkyDS:SetFieldByName("CenikCena", Cena) RpolozkyDS:SetFieldByName("Naklady", Naklady) RpolozkyDS:Post() end until not RpolozkyDS:LocateNext() until not RkapDS:LocateNext() </cmdstring> <imageindex>38</imageindex> </menuitem> </menu>
cf.MassChangeID("partneri_partneri:idpartner", "oldid", "newid", DEBUG, nil, true) --posledni param je dryrun