CREATE OR REPLACE FUNCTION tr_raktar_mozgas_polc_afterinsert()
  RETURNS trigger AS
$BODY$declare

  v_forras_raktar_kod      raktar_mozgas_fej.forras_raktar_kod%type;
  v_cel_raktar_kod         raktar_mozgas_fej.cel_raktar_kod%type;
  v_tetel_kod              raktar_mozgas.tetel_kod%type;
  v_csak_fobizonylat_tetel raktar_mozgas.csak_fobizonylat_tetel%type;
begin

  SELECT rmf.forras_raktar_kod, rmf.cel_raktar_kod, rm.tetel_kod, rm.csak_fobizonylat_tetel INTO v_forras_raktar_kod, v_cel_raktar_kod, v_tetel_kod, v_csak_fobizonylat_tetel
     FROM raktar_mozgas rm
     LEFT JOIN raktar_mozgas_fej rmf ON rmf.kod = rm.fej_kod
     WHERE rm.kod = new.rm_kod;

  IF (v_csak_fobizonylat_tetel = 0) THEN
     IF (v_forras_raktar_kod <> 0) THEN
        IF (SELECT count(*) FROM tetel_raktar_polc WHERE raktar_kod = v_forras_raktar_kod AND tetel_kod = v_tetel_kod AND polc_cim = new.polc_cim) = 0 THEN
            INSERT INTO tetel_raktar_polc (raktar_kod,tetel_kod,polc_cim,mennyiseg) VALUES (v_forras_raktar_kod,v_tetel_kod,new.polc_cim,0);
        END IF;

        UPDATE tetel_raktar_polc 
           SET mennyiseg = mennyiseg - new.mennyiseg 
         WHERE raktar_kod = v_forras_raktar_kod AND tetel_kod = v_tetel_kod AND polc_cim = new.polc_cim;
     END IF;

     IF (v_cel_raktar_kod <> 0) THEN
        IF (SELECT count(*) FROM tetel_raktar_polc WHERE raktar_kod = v_cel_raktar_kod AND tetel_kod = v_tetel_kod AND polc_cim = new.polc_cim) = 0 THEN
           INSERT INTO tetel_raktar_polc (raktar_kod,tetel_kod,polc_cim,mennyiseg) VALUES (v_cel_raktar_kod,v_tetel_kod,new.polc_cim,0);
        END IF;

        UPDATE tetel_raktar_polc 
           SET mennyiseg = mennyiseg + new.mennyiseg 
         WHERE raktar_kod = v_cel_raktar_kod AND tetel_kod = v_tetel_kod AND polc_cim = new.polc_cim;
     END IF;
  END IF;  

  return new;
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;