Uživatelské nástroje

Nástroje pro tento web


progs:obsolete

Přepočty pro starší verze OBIS

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.

Spouštění nevizualních triggerů na serveru

  • PageForm=DataForm&FormLevel=1&MidName=common_triggers
  • Vytvořit uživatel Trigger s právy dokumenty_* RIED, ostatní R
  • Pro tohoto uživatele vytvořit triggery, které mají vyplněny pole Email a Report (lze použít <lua> tagy a v MidString formát Form:MIDDLE)
  • Report může být zapsán relativní cestou k REPORTSDIR() a při použití odpovídajícího Form:MIDDLE lze použít běžný report OpenOffice seznam.
  • Trigger se pak spouští v rámci trvale běžícího obiscserveru (přes daemontools)
  • Nutne ttf fonty pro reporty (Arial): apt-get install ttf-mscorefonts-installer
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

Trigger upozornění na úkol emailem pro řešitele

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é):

  • interval: 5 min
  • detail: Form:UKOLY
  • report: ./ukoly/seznam_ukolu_poznamka.rep
  • email řešitele: (na tento email se pošle upozornění a vyhledává se podle něj IDUzivatele v common_uzivatele)
  • LUA (pro opakované upozorňování pomocí MJOpak a MnOpak): ukoly_ukoly.Opakuj(DSI, "Upozorneni", 1, nil, ClientSession:GetNotify())
  • SQL:
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>')

Trigger na úkol po termínu emailem pro řešitele

  • Nastavení je stejné jako v předchozím případě, liší se SQL
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>')

Trigger na úkol po termínu emailem pro zadavatele

  • Nastavení je stejné jako v předchozím případě. Email je zadavatele.
  • SQL:
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>')

Trigger na firmy v insolvenci

  • interval: 1440 min (1 den)
  • detail: Form:PARTNERI
  • report: ./partneri/fakin.rep
  • email: (na tento email se pošle upozornění)
  • SQL:
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)
progs/obsolete.txt · Poslední úprava: 2016/12/29 13:02 autor: Karel Petrů