DROP FUNCTION dokument_dodaj(integer, integer, integer, timestamp, timestamp, numeric(16,2), integer, numeric(16,2), numeric(16,2), numeric(16,2));
CREATE FUNCTION dokument_dodaj(integer, integer, integer, timestamp, timestamp, numeric(16,2), integer, numeric(16,2), numeric(16,2), numeric(16,2)) RETURNS numeric(16,2) AS 'DECLARE
   broj			ALIAS FOR $1;
   sifra		ALIAS FOR $2;
   komitent		ALIAS FOR $3;
   datum		ALIAS FOR $4;
   valuta		ALIAS FOR $5;
   rabat		ALIAS FOR $6;
   povezivanje		ALIAS FOR $7;
   iznos		ALIAS FOR $8;
   ukupno		ALIAS FOR $9;
   svega		ALIAS FOR $10;
   no			integer;
   operater		integer;
   sledeci		integer;
BEGIN
   -- Provera podataka o ulogovanom korisniku!
   SELECT INTO operater provera_nivoa_pristupa(''DOKUMENTI'');
   IF operater=0 THEN
      RETURN 1;
   END IF;
   -- Dodavanje podataka u tabelu dokumenti ...
   SELECT INTO sledeci COUNT(broj) FROM dokumenti WHERE "sifra"=sifra AND "broj"=broj;
   IF sledeci>0 THEN
      RAISE NOTICE ''Dokument sa datim brojem vec postoji u bazi!'';
   END IF;
   SELECT INTO sledeci NEXTVAL(''dokument_no'');
   INSERT INTO dokumenti VALUES (sledeci, broj, sifra, komitent, NOW(), NOW(), rabat, povezivanje, iznos, ukupno, svega, ''FALSE'', operater, NOW());
   SELECT INTO broj COUNT(broj) FROM dokumenti WHERE no=sledeci;
   IF broj = 0 THEN
      RAISE NOTICE ''Greska pri upisu podataka u bazu.'';
      RETURN 1;
   END IF;
   RETURN 0;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Dodaje tip komitenta
DROP FUNCTION tip_komitenta_dodaj(char);
CREATE FUNCTION tip_komitenta_dodaj(char) RETURNS integer AS 'DECLARE
   a_tip		ALIAS FOR $1;
   operater		integer;
   sledeci		integer;
BEGIN
   -- Provera podataka o ulogovanom korisniku!
   SELECT INTO operater provera_nivoa_pristupa(''KONFIGURACIJA'');
   IF operater=0 THEN
      RETURN 1;
   END IF;
   RAISE NOTICE ''(%)'', a_tip;
   -- Dodavanje podataka u tabelu dokumenti ...
   SELECT INTO sledeci COUNT(no) FROM tip_komitenta WHERE tip=a_tip;
   IF sledeci>0 THEN
      RAISE NOTICE ''Dati tip_komitenta vec postoji u bazi!'';
   END IF;
   SELECT INTO sledeci NEXTVAL(''tip_komitenta_no'');
   INSERT INTO tip_komitenta VALUES (sledeci, a_tip, FALSE, operater, NOW());
   SELECT INTO sledeci COUNT(no) FROM tip_komitenta WHERE no=sledeci;
   IF sledeci = 0 THEN
      RAISE NOTICE ''Greska pri upisu podataka u bazu.'';
      RETURN 1;
   END IF;
   RETURN 0;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Brise tip_komitenta iz baze
DROP FUNCTION tip_komitenta_obrisi(integer, char);
CREATE FUNCTION tip_komitenta_obrisi(integer, char) RETURNS integer AS '
DECLARE
   za_brisanje		ALIAS FOR $1;	-- r/b sloga koji zelimo obrisati
   fleg_brisanja	ALIAS FOR $2;	-- opcija (PROVERI, MARKIRAJ, OBRISI)
   stvarno_brisanje	boolean = FALSE;
   pomocni		integer;
BEGIN

-- Provera podataka o ulogovanom korisniku!
SELECT INTO operater provera_nivoa_pristupa(''KONFIGURACIJA'');
IF operater=0 THEN
   RETURN 1;
END IF;

IF fleg_brisanja=''OBRISI'' THEN
   stvarno_brisanje=TRUE;
END IF;

IF fleg_brisanja=''PROVERI'' OR fleg_brisanja=''MARKIRAJ'' OR fleg_brisanja=''OBRISI'' THEN
   IF fleg_brisanja=''PROVERI'' THEN
      SELECT INTO pomocni COUNT(*) FROM adresar WHERE tip=za_brisanje;
      IF pomocni>0 THEN
         stvarno_brisanje=TRUE;
      END IF;
   END IF
   IF stvarno_brisanje THEN
      DELETE tip_komitenta WHERE no=za_brisanje;
   ELSE
      UPDATE tip_komitenta SET obrisan=TRUE WHERE no=za_brisanje;
   END IF;
ELSE
   RAISE NOTICE ''Opcija za brisanje (%) nije validna! FLAG = PROVERI/MARKIRAJ/OBRISI'', fleg_brisanja;
END IF;

RETURN 0;
END;'
LANGUAGE 'plpgsql';
