CREATE TABLE _temp_tetel_foglalas
(
  kod serial,
  lekerdezes integer,
  datum date,
  partner_kod integer,
  mennyiseg numeric(16,4),
  CONSTRAINT _temp_tetel_foglalas_pkey PRIMARY KEY (kod)
)
WITHOUT OIDS;



CREATE OR REPLACE FUNCTION public.fill_temp_tetel_foglalas(
    param_tetel_kod integer,
    param_raktar_kod integer)
  RETURNS integer AS
$BODY$declare

tetel_foglalas cursor for

select partner_kod, foglalt
  from tetel_foglalas
  where tetel_kod = param_tetel_kod
    and raktar_kod = param_raktar_kod
 order by partner_kod;

Query              refcursor;
data_partner_kod   integer;
data_lekerdezes    integer;
data_foglalt       numeric;
query_telj_datum   date;
query_mennyiseg    numeric;

begin
  data_lekerdezes := null_to_zero((SELECT max(lekerdezes) FROM _temp_tetel_foglalas)) + 1;
  open tetel_foglalas;

  fetch tetel_foglalas
   into data_partner_kod,data_foglalt;

  while found loop

        OPEN Query FOR

		SELECT raktar_mozgas_fej.telj_datum, raktar_mozgas.mennyiseg 
		FROM raktar_mozgas_fej
		INNER JOIN raktar_mozgas ON raktar_mozgas_fej.kod = raktar_mozgas.fej_kod
		WHERE raktar_mozgas_fej.bizonylat_fajta = 12
		AND raktar_mozgas.tetel_kod = param_tetel_kod
		AND raktar_mozgas.forras_raktar_kod = param_raktar_kod
		AND raktar_mozgas_fej.partner_kod = data_partner_kod		
		ORDER BY telj_datum DESC;

	FETCH Query INTO query_telj_datum, query_mennyiseg;
	if query_mennyiseg > data_foglalt then
	   query_mennyiseg := data_foglalt;
	   data_foglalt := 0;
	else
	   data_foglalt := data_foglalt - query_mennyiseg;
	end if;

	WHILE FOUND LOOP


            INSERT INTO _temp_tetel_foglalas (lekerdezes, datum, partner_kod, mennyiseg)
                  VALUES (data_lekerdezes, query_telj_datum, data_partner_kod, query_mennyiseg);

            FETCH Query INTO query_telj_datum, query_mennyiseg;
	    if query_mennyiseg > data_foglalt then
	       query_mennyiseg := data_foglalt;
	       data_foglalt := 0;
	    else
	       data_foglalt := data_foglalt - query_mennyiseg;
	end if;            
	END LOOP;

	CLOSE Query;	

      fetch tetel_foglalas
        into data_partner_kod,data_foglalt;
  end loop;

  close tetel_foglalas;

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