Program přepočtu prepocet.lua:
Test start <EOF/> Login Admin "" data <EOF/> Program --POZOR program nesmi obsahovat pradny radek (kvuli inetd se konci session) dofile(LUADIR().."debug.lua") --DEBUG.Init({typ={"detail2"}}) DEBUG.Init({typ={"detail", "novisible"}}) -- local function PrepocetSkladu() local kartyMD=ClientSession:ActivateMid("SKLKARTY") local kartyDS=kartyMD:FindDataSetItem("") kartyDS:LocateRange("", "") local datumPrepoctu=os.time() --datumPrepoctu=datumPrepoctu+(3600*24) --moznost prepoctu k nasledujicimu dni sklad_prepocet.Karty(kartyDS, cf.tonumber(ClientSession:GetOption("SkladDM.RTvrbCen")), cf.FormatSQLUnixTime(os.time()), nil, DEBUG) kartyMD=ClientSession:Passivate(kartyMD) end -- local function PrepocetZakazek() local zacatek_prepoctu=os.time() if DEBUG_DETAIL then DEBUG_WRITE("Start PrepocetZakazek "..os.date()) end local ZakazkyMD = ClientSession:ActivateMid("ZAKAZKY") local ZakazkyDS = ZakazkyMD:FindDataSetItem("") ZakazkyDS:LocateRange("", "") cf.WalkRecords(ZakazkyDS, ZakazkyDS:GetPrimaryIndex(), nil, function(DSI, ID, ntf) zakazky_zakazky.RecalculateZakazka(ZakazkyMD, os.time(), ntf) end , DEBUG) ZakazkyMD = ClientSession:Passivate(ZakazkyMD) if DEBUG_DETAIL then DEBUG_WRITE("Finish PrepocetZakazek "..os.date()..", cas prepoctu: "..os.date("!%X", os.time()-zacatek_prepoctu)) end end local function InsovRejstrik() local zacatek_prepoctu=os.time() if DEBUG_DETAIL then DEBUG_WRITE("Start InsovRejstrik "..os.date()) end local MD = ClientSession:ActivateMid("PARTNERI") local DSI = MD:FindDataSetItem("") DSI:LocateRange("", "") partneri_partneri.KontrolaInsolvecnihoRejstriku(DSI, os.time(), partneri_partneri.InsolvAkce, "Admin", DEBUG, "") MD = ClientSession:Passivate(MD) if DEBUG_DETAIL then DEBUG_WRITE("Finish InsolvRejstrik "..os.date()..", cas prepoctu: "..os.date("!%X", os.time()-zacatek_prepoctu)) end end local function AktualniDluh() local zacatek_prepoctu=os.time() if DEBUG_DETAIL then DEBUG_WRITE("Start AktualniDluh "..os.date()) end local MD = ClientSession:ActivateMid("PARTNERI") local DSI = MD:FindDataSetItem("") DSI:LocateRange("", "") partneri_partneri.VypocetDluh(DSI, nil, partneri_partneri.DluhAkce, nil, nil, DEBUG) MD = ClientSession:Passivate(MD) if DEBUG_DETAIL then DEBUG_WRITE("Finish AktualniDluh "..os.date()..", cas prepoctu: "..os.date("!%X", os.time()-zacatek_prepoctu)) end end local function ImportKurzu() local zacatek_prepoctu=os.time() if DEBUG_DETAIL then DEBUG_WRITE("Start ImportKurzu "..os.date()) end local MD = ClientSession:ActivateMid("common_kurzy") local DSI = MD:FindDataSetItem("") DSI:LocateRange("", "") common_kurzy.ImportKurzovnihoListku(DSI, {datum=os.date("%d.%m.%Y", common_kurzy.PredchoziPracovniDen()), posun="1", EUR="1"}, DEBUG) MD = ClientSession:Passivate(MD) if DEBUG_DETAIL then DEBUG_WRITE("Finish ImportKurzu "..os.date()..", cas prepoctu: "..os.date("!%X", os.time()-zacatek_prepoctu)) end end local function CleanLogs() if DEBUG_DETAIL then DEBUG_WRITE("CleanLogs "..os.date()) end ClientSession:ExecSQL([[delete from common_syslog where datum < current_timestamp-coalesce((select cast(thevalue as integer) from common_goptions where name='.DeleteLogDays'),90)]]) ClientSession:ExecSQL([[delete from common_log where datum < current_timestamp-coalesce((select cast(thevalue as integer) from common_goptions where name='.DeleteLogDays'),90)]]) end -- PrepocetSkladu() PrepocetZakazek() InsovRejstrik() AktualniDluh() ImportKurzu() CleanLogs() <EOF/> Test Konec <EOF/> Exit <EOF/>
Insolvenční rejstřík je funkční v OBISu sestaveném po 19.10.2009.
Aktuální dluh je funkční v OBISu sestaveném po 12.2.2010.
Import kurzu je funkční v OBISu sestaveném po 2.6.2010.
Mazání logů je funkční v OBISu sestaveném po 14.6.2010.
cd obis5 mkdir service mkdir service/trigger mkdir service/trigger/supervise mkfifo service/trigger/supervise/control mkfifo service/trigger/supervise/ok touch service/trigger/run chmod +x service/trigger/run vim service/trigger/run
export OBISDOC=/mnt/data/obisdoc/ mkdir $OBISDOC/reports/triggers chown obis:users $OBISDOC/reports/triggers
service/trigger/run
#!/bin/bash export LANG="cs_CZ.utf8" ROOTDIR=/mnt/obis/obis5 OBISDOC=/mnt/data/obisdoc/ LOG_DIR=/tmp/obis5/log mkdir -p $LOG_DIR -m 777 chmod 777 $LOG_DIR/.. cd $ROOTDIR cat <<EOF | exec setuidgid obis ./bin64/obiscserver -stdin -noxmlrpc \ -savepid $LOG_DIR/../trigger.pid \ -log $LOG_DIR/log-trigger.$$ -sqllog $LOG_DIR/sql-trigger.$$ -sqlplan \ -documentdir $OBISDOC \ -debug 5 >$LOG_DIR/trigger.log 2>&1 Login Trigger "" datasro <EOF/> Program "osex.dofile(LUADIR()..'server/trigger.lua')" <EOF/> Exit <EOF/> EOF
Vytvoří dokument (v druhu "triggers") se seznamem úkolů, který se následně odešle Mailerem. SQL zajišťuje, že se upozornění pošle jen jednou.
Pro uživatele Trigger vytvořit potřebný počet záznamů upozornění kde se mění se pouze email (SQL je stejné):
SELECT * FROM ukoly_ukoly WHERE ukoly_ukoly.upozorneni<'<lua>return cf.FormatSQLUnixTime(os.time())</lua>' AND ukoly_ukoly.piduzivatele=(SELECT idvyridil FROM common_uzivatele WHERE email='<lua>return Params.Email</lua>') AND <lua>RETURN ukoly_ukoly.FIXFILTER</lua> AND ukoly_ukoly.upozorneni>(SELECT COALESCE(MAX(datum),'1.1.1970') FROM dokumenty_dokumenty WHERE popis containing '[<lua>return Params.IDTrigger</lua>]' AND iddruh='triggers' AND emaily='<lua>return Params.Email</lua>')
SELECT * FROM ukoly_ukoly WHERE ukoly_ukoly.upozorneni<'<lua>return cf.FormatSQLUnixTime(os.time())</lua>' AND ukoly_ukoly.piduzivatele=(SELECT idvyridil FROM common_uzivatele WHERE email='<lua>return Params.Email</lua>') AND <lua>RETURN ukoly_ukoly.FIXFILTER</lua> AND ukoly_ukoly.upozorneni>(SELECT COALESCE(MAX(datum),'1.1.1970') FROM dokumenty_dokumenty WHERE popis containing '[<lua>return Params.IDTrigger</lua>]' AND iddruh='triggers' AND emaily='<lua>return Params.Email</lua>')
SELECT * FROM ukoly_ukoly WHERE ukoly_ukoly.termin<'<lua>return cf.FormatSQLUnixTime(os.time())</lua>' AND ukoly_ukoly.idvyridil=(SELECT idvyridil FROM common_uzivatele WHERE email='<lua>return Params.Email</lua>') AND NOT ukoly_ukoly.piduzivatele=(SELECT idvyridil FROM common_uzivatele WHERE email='<lua>return Params.Email</lua>') AND <lua>RETURN ukoly_ukoly.FIXFILTER</lua> AND ukoly_ukoly.termin>(SELECT COALESCE(MAX(datum),'1.1.1970') FROM dokumenty_dokumenty WHERE popis containing '[<lua>return Params.IDTrigger</lua>]' AND iddruh='triggers' AND emaily='<lua>return Params.Email</lua>')
SELECT * FROM partneri_partneri WHERE EXISTS (SELECT * FROM partneri_akce a2 WHERE partneri_partneri.idpartner=a2.idpartner AND a2.idakce='insolv' AND a2.datumakce>CURRENT_TIMESTAMP-1)