CREATE OR REPLACE FUNCTION sztorno_mozgasnem_frissites()
  RETURNS boolean AS
'
begin

UPDATE mozgasnem SET kapcsolt_mozgas = 0 WHERE (not(kapcsolt_mozgas in (SELECT kod FROM mozgasnem)));

INSERT INTO mozgasnem (lang_00000407, lang_00000409, lang_0000040e, tipus, forras_raktar, cel_raktar, sajat, sztorno, kapcsolt_mozgas, bizonylat_kapcsolat, hasznalatban)
  (select lang_00000407||'' [SZTORNO]'', lang_00000409||'' [SZTORNO]'', lang_0000040e||'' [SZTORNO]'', tipus, forras_raktar, cel_raktar, sajat, 1 as sztorno, kod, bizonylat_kapcsolat, 1 as hasznalatban from mozgasnem where sztorno = 0 and kod <> 0 and ((kapcsolt_mozgas = 0) or (kapcsolt_mozgas IS NULL)));

UPDATE mozgasnem m1 SET kapcsolt_mozgas = (SELECT kod FROM mozgasnem m2 WHERE m2.sztorno = 1 AND m2.kapcsolt_mozgas = m1.kod) WHERE sztorno = 0 AND ((kapcsolt_mozgas = 0) or (kapcsolt_mozgas IS NULL));

UPDATE mozgasnem m1 SET kapcsolt_mozgas = (SELECT kod FROM mozgasnem m2 WHERE m2.sztorno = 0 AND m2.kapcsolt_mozgas = m1.kod) WHERE sztorno = 1 AND ((kapcsolt_mozgas = 0) or (kapcsolt_mozgas IS NULL));

return true;
end;'
  LANGUAGE plpgsql VOLATILE
  COST 100;