CREATE TABLE egyedi_54_felvasarlasi_jegyek
(
  kod serial NOT NULL,
  partner_kod integer NOT NULL DEFAULT 0,
  bizonylatszam character varying(60) NOT NULL,
  datum date NOT NULL,
  netto numeric(14,2) DEFAULT 0,
  hozzajarulas numeric(14,2) DEFAULT 0,
  szallitasi_bizonylat_kod integer NOT NULL,
  CONSTRAINT egyedi_54_felvasarlasi_jegyek_pkey PRIMARY KEY (kod)
)
WITH (OIDS=FALSE);

-- Index: egyedi_54_felvasarlasi_jegyek_1_idx

-- DROP INDEX egyedi_54_felvasarlasi_jegyek_1_idx;

CREATE UNIQUE INDEX egyedi_54_felvasarlasi_jegyek_1_idx
  ON egyedi_54_felvasarlasi_jegyek
  USING btree
  (bizonylatszam, datum);


CREATE TABLE egyedi_54_jutalek_tabla
(
  kod serial NOT NULL,
  partner_kod integer NOT NULL DEFAULT 0,
  tetel_kod integer NOT NULL DEFAULT 0,
  mennyisegi_egyseg integer NOT NULL,
  jutalek_egy_egysegre real DEFAULT 0,
  CONSTRAINT egyedi_54_jutalek_tabla_pkey PRIMARY KEY (kod)
)
WITH (OIDS=FALSE);

CREATE TABLE egyedi_54_jutalek_tabla_naplo
(
  kod serial,
  datum timestamp without time zone,
  muvelet character varying(7),
  tetel_kod integer,
  partner_kod integer,
  jutalek_egy_egysegre real,
  mennyisegi_egyseg integer NOT NULL,
  CONSTRAINT egyedi_54_jutalek_tabla_naplo_pkey PRIMARY KEY (kod)
)
WITH (OIDS=TRUE);

CREATE OR REPLACE FUNCTION tr_egyedi_54_jutalek_tabla()
  RETURNS "trigger" AS
'begin
  insert into egyedi_54_jutalek_tabla_naplo
  (kod,
   datum,
   muvelet,
   tetel_kod,
   partner_kod,
   jutalek_egy_egysegre,
   mennyisegi_egyseg)

  values

  (nextval(''egyedi_54_jutalek_tabla_naplo_kod_seq''),
   current_timestamp,
   TG_OP,
   new.tetel_kod,
   new.partner_kod,
   new.jutalek_egy_egysegre,
   new.mennyisegi_egyseg);

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

CREATE TRIGGER trigger_egyedi_54_jutalek_tabla
  AFTER INSERT OR UPDATE
  ON egyedi_54_jutalek_tabla
  FOR EACH ROW
  EXECUTE PROCEDURE tr_egyedi_54_jutalek_tabla();

CREATE TABLE egyedi_54_szamlak
(
  kod serial NOT NULL,
  partner_kod integer NOT NULL DEFAULT 0,
  bizonylatszam character varying(60) NOT NULL,
  datum date NOT NULL,
  netto numeric(14,2) DEFAULT 0,
  afa numeric(14,2) DEFAULT 0,
  szallitasi_bizonylat_kod integer NOT NULL,
  CONSTRAINT egyedi_54_szamlak_pkey PRIMARY KEY (kod)
)
WITH (OIDS=FALSE);

CREATE UNIQUE INDEX egyedi_54_szamlak_1_idx
  ON egyedi_54_szamlak
  USING btree
  (bizonylatszam, datum);

ALTER TABLE _setup_main ADD COLUMN egyedi_54_szallito_bizonylatok_mozgasneme integer;
ALTER TABLE _setup_main ALTER COLUMN egyedi_54_szallito_bizonylatok_mozgasneme SET STORAGE PLAIN;
ALTER TABLE _setup_main ALTER COLUMN egyedi_54_szallito_bizonylatok_mozgasneme SET DEFAULT 0;

CREATE OR REPLACE FUNCTION egyedi_54_jutalek(partner_kod_var bigint, tetel_kod_var bigint, datum_var date)
  RETURNS real AS
'declare

eredmeny float8;

begin
   select jutalek_egy_egysegre into eredmeny     
     from egyedi_54_jutalek_tabla_naplo
    where partner_kod = partner_kod_var
      and tetel_kod = tetel_kod_var
      and datum <= datum_var+1
   order by datum desc
   limit 1;

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