CREATE SEQUENCE tetel_egysegar_naplo_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;


create table tetel_egysegar_naplo
(naplo_id        integer,
 datum           timestamp,
 muvelet         varchar(7),
 tetel_kod       integer,
 egysegar_kod    integer,
 egysegar_brutto double precision,
 afa_kulcs       integer,
 egysegar        double precision,

 primary key (naplo_id));

create index tetel_egysegar_naplo_i1 on tetel_egysegar_naplo (tetel_kod);


-- Alapertelmezett feltoltes

insert into tetel_egysegar_naplo
(naplo_id,
 datum,
 muvelet,
 tetel_kod,
 egysegar_kod,
 egysegar_brutto,
 afa_kulcs,
 egysegar)

select nextval('tetel_egysegar_naplo_seq'),
       to_timestamp('2000.01.01','yyyy.mm.dd'),
       'INSERT',
       tetel_kod,
       egysegar_kod,
       egysegar_brutto,
       afa_kulcs,
       egysegar
  from tetel_egysegar;



-- Function: tr_tetel_egysegar()

-- DROP FUNCTION tr_tetel_egysegar();

CREATE OR REPLACE FUNCTION tr_tetel_egysegar()
  RETURNS "trigger" AS
'begin
  insert into tetel_egysegar_naplo
  (naplo_id,
   datum,
   muvelet,
   tetel_kod,
   egysegar_kod,
   egysegar_brutto,
   afa_kulcs,
   egysegar)

  values

  (nextval(''tetel_egysegar_naplo_seq''),
   current_timestamp,
   TG_OP,
   new.tetel_kod,
   new.egysegar_kod,
   new.egysegar_brutto,
   new.afa_kulcs,
   new.egysegar);

  return new;
end;
'
  LANGUAGE 'plpgsql' VOLATILE;


-- Trigger: trigger_tetel_egysegar on tetel_egysegar

-- DROP TRIGGER trigger_tetel_egysegar ON tetel_egysegar;

CREATE TRIGGER trigger_tetel_egysegar
  AFTER INSERT OR UPDATE
  ON tetel_egysegar
  FOR EACH ROW
  EXECUTE PROCEDURE tr_tetel_egysegar();


-- Function: get_kiskerar(date, int8)

-- DROP FUNCTION get_kiskerar(date, int8);

CREATE OR REPLACE FUNCTION get_kiskerar(date, int8)
  RETURNS float8 AS
'declare

  v_egysegar float8;
  v_naplo_id integer;

begin
  select max(n.naplo_id)
    into v_naplo_id
    from tetel_egysegar_naplo n,
         egysegarak e
   where n.egysegar_kod = e.kod
     and e.alapertelmezett = 1
     and n.datum<=$1+1
     and n.tetel_kod = $2;

  select n.egysegar
    into v_egysegar
    from tetel_egysegar_naplo n
   where n.naplo_id = v_naplo_id;

  return v_egysegar;
end;
'
  LANGUAGE 'plpgsql' VOLATILE;