
*** Modified files in JOE when it aborted on Mon Sep 30 12:15:47 2002
*** JOE was aborted by signal 1

*** File 'funkcije'
---------------------------------------------------------------------------------------------------------------
-- Daje sledeci broj dokumenta ...
--
DROP FUNCTION sledeci_broj_dokumenta(integer);
CREATE FUNCTION sledeci_broj_dokumenta(integer) RETURNS integer AS 'DECLARE
   a_tip		ALIAS FOR $1;
   operater		integer;
   sledeci		integer;
BEGIN
   -- Sledeci broj dokumenta ...
   SELECT MAX(broj_dokumenta) INTO sledeci FROM dokumenti WHERE sifra_dokumenta=a_tip;
   IF sledeci ISNULL THEN
      sledeci=0;
   END IF;
   sledeci=sledeci + 1;
--   RAISE NOTICE ''--- Sledeci broj dokumenta (tip) ... KRAJ ... ---'';
   RETURN sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Zauzima broj dokumenta ...
--
DROP FUNCTION zauzmi_broj_dokumenta(integer, integer, char);
CREATE FUNCTION zauzmi_broj_dokumenta(integer, integer, char) RETURNS integer AS 'DECLARE
   a_tip		ALIAS FOR $1;
   a_broj		ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   operater		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   -- Dozvoli mi da koristim sledeci broj dokumenta ...
   SELECT dozvoli_broj_dokumenta(a_tip, a_broj, a_operater) INTO sledeci;
   -- Zauzmi broj dokumenta ...
   INSERT INTO rezervisani_brojevi_dokumenata VALUES (a_tip, sledeci, operater, NOW());

   RETURN sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Vraca broj dokumenta ...
--
DROP FUNCTION vrati_broj_dokumenta(integer, integer);
CREATE FUNCTION vrati_broj_dokumenta(integer, integer) RETURNS integer AS 'DECLARE
   a_tip		ALIAS FOR $1;
   a_broj		ALIAS FOR $2;
   sledeci		integer;
BEGIN
   -- Zauzmi broj dokumenta ...
   DELETE FROM rezervisani_brojevi_dokumenata WHERE sifra_dokumenta=a_tip AND broj_dokumenta=a_broj;
   RETURN 0;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Definise tip izjave za dokument ...
--
DROP FUNCTION postavi_tip_izjave(integer, integer, varchar);
CREATE FUNCTION postavi_tip_izjave(integer, integer, varchar) RETURNS integer AS 'DECLARE
   a_sifra		ALIAS FOR $1;
   a_broj		ALIAS FOR $2;
   a_izjava		ALIAS FOR $3;
   sledeci		integer;
BEGIN
   -- 
   SELECT sifra INTO sledeci FROM tip_izjave WHERE naziv=a_izjava;
   UPDATE dokumenti SET izjava=sledeci WHERE sifra_dokumenta=a_sifra AND broj_dokumenta=a_broj;
   RETURN sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Zauzima broj dokumenta ...
--
DROP FUNCTION dozvoli_broj_dokumenta(integer, integer, char);
CREATE FUNCTION dozvoli_broj_dokumenta(integer, integer, char) RETURNS integer AS 'DECLARE
   a_tip		ALIAS FOR $1;
   a_broj		ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   operater		integer;
   sledeci		integer;
   b_broj		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
--   RAISE NOTICE ''--- Zauzmi broj dokumenta (tip, broj) ---'';
   b_broj=a_broj;
   SELECT COUNT(broj_dokumenta) INTO sledeci FROM dokumenti WHERE sifra_dokumenta=a_tip AND broj_dokumenta=b_broj;
   IF sledeci>0 THEN
      SELECT MAX(broj_dokumenta) INTO sledeci FROM dokumenti WHERE sifra_dokumenta=a_tip;
      IF sledeci ISNULL THEN
         sledeci=0;
      END IF;
      IF ( b_broj > sledeci ) THEN
         sledeci = b_broj;
      ELSE
         b_broj = sledeci + 1;
         SELECT dozvoli_broj_dokumenta(a_tip, b_broj, a_operater) INTO sledeci;
      END IF;
   b_broj=sledeci;
   END IF;

   SELECT COUNT(broj_dokumenta) INTO sledeci FROM rezervisani_brojevi_dokumenata WHERE sifra_dokumenta=a_tip AND broj_dokumenta=b_broj;
   -- Ako nije nasao dokument pod tim brojem .. proverava da li je broj vec zauzet ...
   IF sledeci=0 THEN
      sledeci=b_broj;
   ELSE
      b_broj = b_broj + 1;
--      RAISE NOTICE ''%'', b_broj;
      SELECT dozvoli_broj_dokumenta(a_tip, b_broj, a_operater) INTO sledeci;
   END IF;

--   RAISE NOTICE ''--- Zauzmi broj dokumenta (tip, broj) ... KRAJ ... ---'';
   RETURN sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Dodaj stavku dokumenta
--
DROP FUNCTION DodajStavkuDokumenta(integer, integer, integer, char, char, numeric, numeric, numeric, char, numeric, integer, char);
CREATE FUNCTION DodajStavkuDokumenta(integer, integer, integer, char, char, numeric, numeric, numeric, char, numeric, integer, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   broj_doc		ALIAS FOR $2;
   broj_stavke		ALIAS FOR $3;
   sifra_robe		ALIAS FOR $4;
   jm			ALIAS FOR $5;
   kolicina		ALIAS FOR $6;
   cena_jm		ALIAS FOR $7;
   cena_snv		ALIAS FOR $8;
   naziv		ALIAS FOR $9;
   rabat		ALIAS FOR $10;
   tip			ALIAS FOR $11;
   a_operater		ALIAS FOR $12;
   operater		integer;
   sledeci		integer;
BEGIN
--RAISE EXCEPTION ''ABUUUUUUUUUUUUUU'';
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   IF sif_doc=1 THEN
      INSERT INTO dokument_1 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=2 THEN
      INSERT INTO dokument_2 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=3 THEN
      INSERT INTO dokument_3 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=4 THEN
      INSERT INTO dokument_4 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=5 THEN
      INSERT INTO dokument_5 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=6 THEN
      INSERT INTO dokument_6 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=7 THEN
      INSERT INTO dokument_7 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());   
   END IF;
   IF sif_doc=8 THEN
      INSERT INTO dokument_8 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=9 THEN
      INSERT INTO dokument_9 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=10 THEN
      INSERT INTO dokument_10 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=11 THEN
      INSERT INTO dokument_11 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=12 THEN
      INSERT INTO dokument_12 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=13 THEN
      INSERT INTO dokument_13 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=14 THEN
      INSERT INTO dokument_14 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=15 THEN
      INSERT INTO dokument_15 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=16 THEN
      INSERT INTO dokument_16 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=17 THEN
      INSERT INTO dokument_17 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=18 THEN
      INSERT INTO dokument_18 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=19 THEN
      INSERT INTO dokument_19 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=20 THEN
      INSERT INTO dokument_20 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());   
   END IF;
   IF sif_doc=21 THEN
      INSERT INTO dokument_21 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=22 THEN
      INSERT INTO dokument_22 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=23 THEN
      INSERT INTO dokument_23 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=24 THEN
      INSERT INTO dokument_24 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=25 THEN
      INSERT INTO dokument_25 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=26 THEN
      INSERT INTO dokument_26 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=27 THEN
      INSERT INTO dokument_27 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=28 THEN
      INSERT INTO dokument_28 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=29 THEN
      INSERT INTO dokument_29 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=30 THEN
      INSERT INTO dokument_30 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=31 THEN
      INSERT INTO dokument_31 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());
   END IF;
   IF sif_doc=32 THEN
      INSERT INTO dokument_32 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());   
   END IF;
   IF sif_doc=33 THEN
      INSERT INTO dokument_33 VALUES (broj_doc, broj_stavke, sifra_robe, naziv, NULL, kolicina, jm, cena_jm, cena_snv, rabat, NULL, tip, FALSE, operater, NOW());   
   END IF;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Promeni stavku dokumenta
--
DROP FUNCTION PromeniStavkuDokumenta(integer, integer, integer, char, char, numeric, numeric, numeric, numeric, char, numeric, numeric, numeric, numeric, numeric, integer);
CREATE FUNCTION PromeniStavkuDokumenta(integer, integer, integer, char, char, numeric, numeric, numeric, numeric, char, numeric, numeric, numeric, numeric, numeric, integer) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   br_stavke		ALIAS FOR $3;
   val_sr		ALIAS FOR $4;
   val_jm		ALIAS FOR $5;
   val_kolicina		ALIAS FOR $6;
   val_cpjm		ALIAS FOR $7;
   val_fc		ALIAS FOR $8;
   val_nc		ALIAS FOR $9;
   val_nr		ALIAS FOR $10;
   val_nv		ALIAS FOR $11;
   val_dilerski_rabat	ALIAS FOR $12;
   val_rabat		ALIAS FOR $13;
   val_carina		ALIAS FOR $14;
   val_zavtr		ALIAS FOR $15;
   val_status		ALIAS FOR $16;
   sledeci		integer;
BEGIN
  
--   RETURN ''--- PromeniStavkuDokumenta  ( ... ) ---'';
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Obrisi stavku dokumenta
--
DROP FUNCTION ObrisiStavkuDokumenta(integer, integer, integer, boolean, char);
CREATE FUNCTION ObrisiStavkuDokumenta(integer, integer, integer, boolean, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_stavka		ALIAS FOR $3;
   da_brisem		ALIAS FOR $4;
   a_operater		ALIAS FOR $5;
   operater		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   -- Brisanje stavke dokumenta
   IF sif_doc=1 THEN
      DELETE FROM dokument_1 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=2 THEN
      DELETE FROM dokument_2 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=3 THEN
      DELETE FROM dokument_3 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=4 THEN
      DELETE FROM dokument_4 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=5 THEN
      DELETE FROM dokument_5 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=6 THEN
      DELETE FROM dokument_6 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=7 THEN
      DELETE FROM dokument_7 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=8 THEN
      DELETE FROM dokument_8 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=9 THEN
      DELETE FROM dokument_9 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=10 THEN
      DELETE FROM dokument_10 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=11 THEN
      DELETE FROM dokument_11 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=12 THEN
      DELETE FROM dokument_12 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=13 THEN
      DELETE FROM dokument_13 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=14 THEN
      DELETE FROM dokument_14 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=15 THEN
      DELETE FROM dokument_15 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=16 THEN
      DELETE FROM dokument_16 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=17 THEN
      DELETE FROM dokument_17 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=18 THEN
      DELETE FROM dokument_18 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=19 THEN
      DELETE FROM dokument_19 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=20 THEN
      DELETE FROM dokument_20 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=21 THEN
      DELETE FROM dokument_21 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=22 THEN
      DELETE FROM dokument_22 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=23 THEN
      DELETE FROM dokument_23 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=24 THEN
      DELETE FROM dokument_24 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=25 THEN
      DELETE FROM dokument_25 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=26 THEN
      DELETE FROM dokument_26 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=27 THEN
      DELETE FROM dokument_27 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=28 THEN
      DELETE FROM dokument_28 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=29 THEN
      DELETE FROM dokument_29 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=30 THEN
      DELETE FROM dokument_30 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=31 THEN
      DELETE FROM dokument_31 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=32 THEN
      DELETE FROM dokument_32 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=33 THEN
      DELETE FROM dokument_33 WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;

   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Komercijalni uslovi
--
DROP FUNCTION KomercijalniUslovi(integer, integer, char);
CREATE FUNCTION KomercijalniUslovi(integer, integer, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_uslovi		ALIAS FOR $3;
   operater		integer;
BEGIN
   --
   UPDATE dokumenti SET uslovi=a_uslovi WHERE sifra_dokumenta=sif_doc AND broj_dokumenta=br_doc;  
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Napomena
--
DROP FUNCTION Napomena(integer, integer, char);
CREATE FUNCTION Napomena(integer, integer, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_napomena		ALIAS FOR $3;
   operater		integer;
BEGIN
   --
   UPDATE dokumenti SET napomena=a_napomena WHERE sifra_dokumenta=sif_doc AND broj_dokumenta=br_doc;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- DodajDokument
--
DROP FUNCTION DodajDokument(integer, integer, integer, char, char, numeric, boolean, numeric, numeric, numeric, varchar, integer, integer, char);
CREATE FUNCTION DodajDokument(integer, integer, integer, char, char, numeric, boolean, numeric, numeric, numeric, varchar, integer, integer, char) RETURNS char AS 'DECLARE
   sifra_doc		ALIAS FOR $1;
   broj_doc		ALIAS FOR $2;
   sifra_kom		ALIAS FOR $3;
   dok_datum		ALIAS FOR $4;
   dok_valuta		ALIAS FOR $5;
   spec_rabat		ALIAS FOR $6;
   povezivanje		ALIAS FOR $7;
   iznos		ALIAS FOR $8;
   ukupno		ALIAS FOR $9;
   svega		ALIAS FOR $10;
   naslov		ALIAS FOR $11;
   magacin_iz		ALIAS FOR $12;
   magacin_u		ALIAS FOR $13;
   a_operater		ALIAS FOR $14;
   operater		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   --
   INSERT INTO dokumenti VALUES (broj_doc, sifra_doc,sifra_kom,DateTime(dok_datum),DateTime(dok_valuta), spec_rabat, povezivanje, NULL, NULL, NULL, NULL, NULL, NULL, NULL, naslov, NULL, NULL, magacin_iz, magacin_u, 1, FALSE, operater, NOW());
   SELECT vrati_broj_dokumenta(sifra_doc, broj_doc) INTO sledeci;
--   RETURN ''--- DodajDokument  ( ... ) ---'';
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Update specijalnog rabata
--
DROP FUNCTION UpdateSR(integer, integer, numeric);
CREATE FUNCTION UpdateSR(integer, integer, numeric) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_sr			ALIAS FOR $3;
   operater		integer;
   sledeci		integer;
BEGIN
   --
   UPDATE dokumenti SET spec_rabat=a_sr WHERE sifra_dokumenta=sif_doc AND broj_dokumenta=br_doc;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Pdate rabata stavke
--
DROP FUNCTION UpdateR(integer, integer, integer, numeric);
CREATE FUNCTION UpdateR(integer, integer, integer, numeric) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_stavka		ALIAS FOR $3;
   a_rabat		ALIAS FOR $4;
   operater		integer;
   sleeci		integer;
   tablica		char(30);
BEGIN
--   SELECT CAST(''dokument_'' AS CHAR(20)) + CAST(sif_doc AS CHAR(10)) INTO tablica;
   IF sif_doc=1 THEN
      UPDATE dokument_1 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=2 THEN
      UPDATE dokument_2 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=3 THEN
      UPDATE dokument_3 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=4 THEN
      UPDATE dokument_4 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=5 THEN
      UPDATE dokument_5 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=6 THEN
      UPDATE dokument_6 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=7 THEN
      UPDATE dokument_7 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=8 THEN
      UPDATE dokument_8 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=9 THEN
      UPDATE dokument_9 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=10 THEN
      UPDATE dokument_10 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=11 THEN
      UPDATE dokument_11 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=12 THEN
      UPDATE dokument_12 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=13 THEN
      UPDATE dokument_13 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=14 THEN
      UPDATE dokument_14 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=15 THEN
      UPDATE dokument_15 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=16 THEN
      UPDATE dokument_16 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=17 THEN
      UPDATE dokument_17 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=18 THEN
      UPDATE dokument_18 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=19 THEN
      UPDATE dokument_19 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=20 THEN
      UPDATE dokument_20 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=21 THEN
      UPDATE dokument_21 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=22 THEN
      UPDATE dokument_22 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=23 THEN
      UPDATE dokument_23 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=24 THEN
      UPDATE dokument_24 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=25 THEN
      UPDATE dokument_25 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=26 THEN
      UPDATE dokument_26 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=27 THEN
      UPDATE dokument_27 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=28 THEN
      UPDATE dokument_28 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=29 THEN
      UPDATE dokument_29 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=30 THEN
      UPDATE dokument_30 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=31 THEN
      UPDATE dokument_31 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=32 THEN
      UPDATE dokument_32 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=33 THEN
      UPDATE dokument_33 SET rabat=a_rabat WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Update kolicine stavke
--
DROP FUNCTION UpdateK(integer, integer, integer, numeric);
CREATE FUNCTION UpdateK(integer, integer, integer, numeric) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_stavka		ALIAS FOR $3;
   a_kolicina		ALIAS FOR $4;
   operater		integer;
   sleeci		integer;
   tablica		char(30);
BEGIN

   IF sif_doc=1 THEN
      UPDATE dokument_1 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=2 THEN
      UPDATE dokument_2 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=3 THEN
      UPDATE dokument_3 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=4 THEN
      UPDATE dokument_4 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=5 THEN
      UPDATE dokument_5 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=6 THEN
      UPDATE dokument_6 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=7 THEN
      UPDATE dokument_7 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=8 THEN
      UPDATE dokument_8 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=9 THEN
      UPDATE dokument_9 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=10 THEN
      UPDATE dokument_10 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=11 THEN
      UPDATE dokument_11 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=12 THEN
      UPDATE dokument_12 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=13 THEN
      UPDATE dokument_13 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=14 THEN
      UPDATE dokument_14 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=15 THEN
      UPDATE dokument_15 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=16 THEN
      UPDATE dokument_16 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=17 THEN
      UPDATE dokument_17 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=18 THEN
      UPDATE dokument_18 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=19 THEN
      UPDATE dokument_19 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=20 THEN
      UPDATE dokument_20 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=21 THEN
      UPDATE dokument_21 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=22 THEN
      UPDATE dokument_22 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=23 THEN
      UPDATE dokument_23 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=24 THEN
      UPDATE dokument_24 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=25 THEN
      UPDATE dokument_25 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=26 THEN
      UPDATE dokument_26 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=27 THEN
      UPDATE dokument_27 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=28 THEN
      UPDATE dokument_28 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=29 THEN
      UPDATE dokument_29 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=30 THEN
      UPDATE dokument_30 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=31 THEN
      UPDATE dokument_31 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=32 THEN
      UPDATE dokument_32 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=33 THEN
      UPDATE dokument_33 SET kolicina=a_kolicina WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Update jedinicne cene stavke
--
DROP FUNCTION UpdateJC(integer, integer, integer, numeric);
CREATE FUNCTION UpdateJC(integer, integer, integer, numeric) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_stavka		ALIAS FOR $3;
   a_cena_jm		ALIAS FOR $4;
   operater		integer;
   sleeci		integer;
   tablica		char(30);
BEGIN

   IF sif_doc=1 THEN
      UPDATE dokument_1 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=2 THEN
      UPDATE dokument_2 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=3 THEN
      UPDATE dokument_3 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=4 THEN
      UPDATE dokument_4 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=5 THEN
      UPDATE dokument_5 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=6 THEN
      UPDATE dokument_6 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=7 THEN
      UPDATE dokument_7 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=8 THEN
      UPDATE dokument_8 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=9 THEN
      UPDATE dokument_9 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=10 THEN
      UPDATE dokument_10 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=11 THEN
      UPDATE dokument_11 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=12 THEN
      UPDATE dokument_12 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=13 THEN
      UPDATE dokument_13 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=14 THEN
      UPDATE dokument_14 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=15 THEN
      UPDATE dokument_15 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=16 THEN
      UPDATE dokument_16 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=17 THEN
      UPDATE dokument_17 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=18 THEN
      UPDATE dokument_18 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=19 THEN
      UPDATE dokument_19 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=20 THEN
      UPDATE dokument_20 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=21 THEN
      UPDATE dokument_21 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=22 THEN
      UPDATE dokument_22 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=23 THEN
      UPDATE dokument_23 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=24 THEN
      UPDATE dokument_24 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=25 THEN
      UPDATE dokument_25 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=26 THEN
      UPDATE dokument_26 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=27 THEN
      UPDATE dokument_27 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=28 THEN
      UPDATE dokument_28 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=29 THEN
      UPDATE dokument_29 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=30 THEN
      UPDATE dokument_30 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=31 THEN
      UPDATE dokument_31 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=32 THEN
      UPDATE dokument_32 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   IF sif_doc=33 THEN
      UPDATE dokument_33 SET cena_jm=a_cena_jm WHERE broj_dokumenta=br_doc AND stavka=a_stavka;
   END IF;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Zamena mesta stavki
--
DROP FUNCTION ZameniStavke(integer, integer, integer, integer);
CREATE FUNCTION ZameniStavke(integer, integer, integer, integer) RETURNS integer AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_stavka1		ALIAS FOR $3;
   a_stavka2		ALIAS FOR $4;
   operater		integer;
   stavkica		integer;
BEGIN

   IF sif_doc=1 THEN
      UPDATE dokument_1 SET stavka=111111 WHERE broj_dokumenta=br_doc AND stavka=a_stavka2;
      UPDATE dokument_1 SET stavka=a_stavka2 WHERE broj_dokumenta=br_doc AND stavka=a_stavka1;
      UPDATE dokument_1 SET stavka=a_stavka1 WHERE broj_dokumenta=br_doc AND stavka=111111;
   END IF;
   IF sif_doc=2 THEN
      UPDATE dokument_2 SET stavka=111111 WHERE broj_dokumenta=br_doc AND stavka=a_stavka2;
      UPDATE dokument_2 SET stavka=a_stavka2 WHERE broj_dokumenta=br_doc AND stavka=a_stavka1;
      UPDATE dokument_2 SET stavka=a_stavka1 WHERE broj_dokumenta=br_doc AND stavka=111111;
   END IF;
   IF sif_doc=3 THEN
      UPDATE dokument_3 SET stavka=111111 WHERE broj_dokumenta=br_doc AND stavka=a_stavka2;
      UPDATE dokument_3 SET stavka=a_stavka2 WHERE broj_dokumenta=br_doc AND stavka=a_stavka1;
      UPDATE dokument_3 SET stavka=a_stavka1 WHERE broj_dokumenta=br_doc AND stavka=111111;
   END IF;
   IF sif_doc=32 THEN
      UPDATE dokument_32 SET stavka=111111 WHERE broj_dokumenta=br_doc AND stavka=a_stavka2;
      UPDATE dokument_32 SET stavka=a_stavka2 WHERE broj_dokumenta=br_doc AND stavka=a_stavka1;
      UPDATE dokument_32 SET stavka=a_stavka1 WHERE broj_dokumenta=br_doc AND stavka=111111;
   END IF;
   IF sif_doc=33 THEN
      UPDATE dokument_33 SET stavka=111111 WHERE broj_dokumenta=br_doc AND stavka=a_stavka2;
      UPDATE dokument_33 SET stavka=a_stavka2 WHERE broj_dokumenta=br_doc AND stavka=a_stavka1;
      UPDATE dokument_33 SET stavka=a_stavka1 WHERE broj_dokumenta=br_doc AND stavka=111111;
   END IF;

   Return 0;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novi proizvod
--
DROP FUNCTION DodajProizvod(char, char, integer, integer, numeric, numeric, numeric, char, numeric, integer, char, integer, char);
CREATE FUNCTION DodajProizvod(char, char, integer, integer, numeric, numeric, numeric, char, numeric, integer, char, integer, char) RETURNS char AS 'DECLARE
   a_sifra		ALIAS FOR $1;
   a_naziv		ALIAS FOR $2;
   a_grupa		ALIAS FOR $3;
   a_podgrupa		ALIAS FOR $4;
   a_c1			ALIAS FOR $5;
   a_c2			ALIAS FOR $6;
   a_c3			ALIAS FOR $7;
   a_jm			ALIAS FOR $9;
   a_rabat		ALIAS FOR $10;
   a_komitent		ALIAS FOR $11;
   a_sifdob		ALIAS FOR $12;
   a_vidljiv		ALIAS FOR $13;
   a_operater		ALAIS FOR $14;
   sledeci		integer;
   bolko		boolean;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   -- Sledeci broj proizvoda
      IF a_vidljiv=0 THEN
         bolko=FALSE;
      ELSE
         bolko=TRUE;
      END IF;
   SELECT COUNT(sifra) INTO sledeci FROM sifre_artikala WHERE sifra=a_sifra;
-- RAISE EXCEPTION ''Ja, ja, ja ... %'', a_sifra;
   IF sledeci=0 THEN
      INSERT INTO sifre_artikala VALUES (a_sifra, a_grupa, a_podgrupa, a_naziv, a_jm, NULL, a_komitent, a_sifdob, NULL, a_c1, a_c2, a_c3, a_rabat, NULL, 1, bolko, FALSE, 1, NOW());
   ELSE
      UPDATE sifre_artikala SET naziv=a_naziv, jed_mere=a_jm, dobavljac=a_komitent, sifra_dob=a_sifdob, cena1=a_c1, cena2=a_c2, cena3=a_c3, rabat=a_rabat, operater=1, vidljiv=bolko, datum=NOW() WHERE sifra=a_sifra;
   END IF;
   RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Napomena
--
DROP FUNCTION NaslovDokumenta(integer, integer, char);
CREATE FUNCTION NaslovDokumenta(integer, integer, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_napomena		ALIAS FOR $3;
   operater		integer;
BEGIN
   UPDATE dokumenti SET naslov=a_napomena WHERE sifra_dokumenta=sif_doc AND broj_dokumenta=br_doc;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Daje broj stavki dokumenta
--
DROP FUNCTION BrojStavkiDokumenta(integer, integer);
CREATE FUNCTION BrojStavkiDokumenta(integer, integer) RETURNS integer AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   stavki		integer;
   tablica		char(30);
BEGIN

   IF sif_doc=1 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_1 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=2 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_2 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=3 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_3 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=4 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_4 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=5 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_5 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=6 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_6 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=7 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_7 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=8 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_8 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=9 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_9 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=10 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_10 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=11 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_11 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=12 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_12 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=13 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_13 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=14 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_14 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=15 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_15 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=16 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_16 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=17 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_17 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=18 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_18 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=19 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_19 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=20 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_20 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=21 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_21 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=22 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_22 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=23 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_23 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=24 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_24 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=25 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_25 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=26 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_26 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=27 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_27 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=28 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_28 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=29 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_29 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=30 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_30 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=31 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_31 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=32 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_32 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=33 THEN
      SELECT COUNT(broj_dokumenta) INTO stavki FROM dokument_33 WHERE broj_dokumenta=br_doc;
   END IF;
   RETURN stavki;
END;'
LANGUAGE 'plpgsql';


---------------------------------------------------------------------------------------------------------------
-- Brise odredjeni dokument
--
DROP FUNCTION ObrisiDokument(integer, integer, char);
CREATE FUNCTION ObrisiDokument(integer, integer, char) RETURNS integer AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   stavki		integer;
   tablica		char(30);
   operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;

   IF sif_doc=1 THEN
      DELETE FROM dokument_1 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=2 THEN
      DELETE FROM dokument_2 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=3 THEN
      DELETE FROM dokument_3 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=4 THEN
      DELETE FROM dokument_4 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=5 THEN
      DELETE FROM dokument_5 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=6 THEN
      DELETE FROM dokument_6 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=7 THEN
      DELETE FROM dokument_7 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=8 THEN
      DELETE FROM dokument_8 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=9 THEN
      DELETE FROM dokument_9 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=10 THEN
      DELETE FROM dokument_10 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=11 THEN
      DELETE FROM dokument_11 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=12 THEN
      DELETE FROM dokument_12 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=13 THEN
      DELETE FROM dokument_13 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=14 THEN
      DELETE FROM dokument_14 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=15 THEN
      DELETE FROM dokument_15 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=16 THEN
      DELETE FROM dokument_16 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=17 THEN
      DELETE FROM dokument_17 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=18 THEN
      DELETE FROM dokument_18 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=19 THEN
      DELETE FROM dokument_19 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=20 THEN
      DELETE FROM dokument_20 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=21 THEN
      DELETE FROM dokument_21 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=22 THEN
      DELETE FROM dokument_22 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=23 THEN
      DELETE FROM dokument_23 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=24 THEN
      DELETE FROM dokument_24 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=25 THEN
      DELETE FROM dokument_25 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=26 THEN
      DELETE FROM dokument_26 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=27 THEN
      DELETE FROM dokument_27 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=28 THEN
      DELETE FROM dokument_28 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=29 THEN
      DELETE FROM dokument_29 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=30 THEN
      DELETE FROM dokument_30 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=31 THEN
      DELETE FROM dokument_31 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=32 THEN
      DELETE FROM dokument_32 WHERE broj_dokumenta=br_doc;
   END IF;
   IF sif_doc=33 THEN
      DELETE FROM dokument_33 WHERE broj_dokumenta=br_doc;
   END IF;

   DELETE FROM dokumenti WHERE broj_dokumenta=br_doc AND sifra_dokumenta=sif_doc; 
   RETURN stavki;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Vraca neku default vrednost ...
--
DROP FUNCTION DefaultVrednost(varchar, char);
CREATE FUNCTION DefaultVrednost(varchar, char) RETURNS varchar AS 'DECLARE
   a_polje		ALIAS FOR $1;
   a_operater		ALIAS FOR $2;
   operater		integer;
   pomocni		varchar(1000);
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   --
   SELECT vrednost INTO pomocni FROM default_vrednosti WHERE polje=a_polje;
   RETURN pomocni;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Zamena mesta dve stavke dokumenta
--
DROP FUNCTION ZameniBrojStavke(integer, integer, integer, integer, char);
CREATE FUNCTION ZameniBrojStavke(integer, integer, integer, integer, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_stavka		ALIAS FOR $3;
   a_stavka_orig	ALIAS FOR $4;
   a_operater		ALIAS FOR $5;
BEGIN

   IF sif_doc=1 THEN
      UPDATE dokument_1 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=2 THEN
      UPDATE dokument_2 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=3 THEN
      UPDATE dokument_3 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=4 THEN
      UPDATE dokument_4 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=5 THEN
      UPDATE dokument_5 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=6 THEN
      UPDATE dokument_6 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=7 THEN
      UPDATE dokument_7 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=8 THEN
      UPDATE dokument_8 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=9 THEN
      UPDATE dokument_9 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=10 THEN
      UPDATE dokument_10 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=11 THEN
      UPDATE dokument_11 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=12 THEN
      UPDATE dokument_12 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=13 THEN
      UPDATE dokument_13 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=14 THEN
      UPDATE dokument_14 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=15 THEN
      UPDATE dokument_15 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=16 THEN
      UPDATE dokument_16 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=17 THEN
      UPDATE dokument_17 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=18 THEN
      UPDATE dokument_18 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=19 THEN
      UPDATE dokument_19 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=20 THEN
      UPDATE dokument_20 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=21 THEN
      UPDATE dokument_21 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=22 THEN
      UPDATE dokument_22 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=23 THEN
      UPDATE dokument_23 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=24 THEN
      UPDATE dokument_24 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=25 THEN
      UPDATE dokument_25 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=26 THEN
      UPDATE dokument_26 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=27 THEN
      UPDATE dokument_27 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=28 THEN
      UPDATE dokument_28 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=29 THEN
      UPDATE dokument_29 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=30 THEN
      UPDATE dokument_30 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=31 THEN
      UPDATE dokument_31 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=32 THEN
      UPDATE dokument_32 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   IF sif_doc=33 THEN
      UPDATE dokument_33 SET stavka=a_stavka WHERE broj_dokumenta=br_doc AND stavka=a_stavka_orig;
   END IF;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Update broja izjave
--
DROP FUNCTION UpdateBrojaIzjave(integer, integer, char);
CREATE FUNCTION UpdateBrojaIzjave(integer, integer, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_broj		ALIAS FOR $3;
   operater		integer;
   sledeci		integer;
BEGIN
   --
   UPDATE dokumenti SET broj_izjave=a_broj WHERE sifra_dokumenta=sif_doc AND broj_dokumenta=br_doc;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Update datuma izjave
--
DROP FUNCTION UpdateDatumaIzjave(integer, integer, char);
CREATE FUNCTION UpdateDatumaIzjave(integer, integer, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_datum		ALIAS FOR $3;
   dajaja		date;
BEGIN
   --
   dajaja = Date(a_datum);
   UPDATE dokumenti SET datum_izjave=dajaja WHERE sifra_dokumenta=sif_doc AND broj_dokumenta=br_doc;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Update NR
--
DROP FUNCTION UpdateNR(integer, integer, char);
CREATE FUNCTION UpdateNR(integer, integer, char) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   a_nr			ALIAS FOR $3;
BEGIN
   --
   UPDATE dokumenti SET komitent_nr=a_nr WHERE sifra_dokumenta=sif_doc AND broj_dokumenta=br_doc;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Dodaj vezu dokumenta
--
DROP FUNCTION DodajVezuDokumenta(integer, integer, integer, integer);
CREATE FUNCTION DodajVezuDokumenta(integer, integer, integer, integer) RETURNS char AS 'DECLARE
   sif_doc		ALIAS FOR $1;
   br_doc		ALIAS FOR $2;
   sif_veza		ALIAS FOR $3;
   br_veza		ALIAS FOR $4;
BEGIN
   INSERT INTO veze_dokumenata VALUES(sif_doc, br_doc, sif_veza, br_veza);
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Dodaj Sifru Magacina
--
DROP FUNCTION DodajSifruMagacina(int, char, char, char, varchar, char, char, char, char);
CREATE FUNCTION DodajSifruMagacina(int, char, char, char, varchar, char, char, char, char) RETURNS char AS 'DECLARE
   a_sifra		ALIAS FOR $1;
   a_naziv		ALIAS FOR $2;
   a_tip		ALIAS FOR $3;
   a_lokacija		ALIAS FOR $4;
   a_opstina		ALIAS FOR $5;
   a_poslovodja		ALIAS FOR $6;
   a_telefon		ALIAS FOR $7;
   a_fax		ALIAS FOR $8;
   a_operater		ALIAS FOR $9;
   operater		integer;
   i_opstina		integer;
   s_tip		char(2);
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO a_operater FROM operateri WHERE username=a_operater;
   -- Nadji opstinu
   SELECT sifra INTO i_opstina FROM opstine WHERE opstina=a_opstina;
   -- Nadji tip_magacina
   SELECT tip INTO s_tip FROM tip_magacina WHERE naziv=a_tip;
   --
   INSERT INTO sifre_magacina VALUES(a_sifra, a_naziv, s_tip, a_lokacija, i_opstina, a_poslovodja, a_telefon, a_fax, FALSE, operater, NOW());
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Dodaj Sifru Magacina
--
DROP FUNCTION PromeniSifruMagacina(integer, char, char, char, varchar, char, char, char, char);
CREATE FUNCTION PromeniSifruMagacina(integer, char, char, char, varchar, char, char, char, char) RETURNS char AS 'DECLARE
   a_sifra		ALIAS FOR $1;
   a_naziv		ALIAS FOR $2;
   a_tip		ALIAS FOR $3;
   a_lokacija		ALIAS FOR $4;
   a_opstina		ALIAS FOR $5;
   a_poslovodja		ALIAS FOR $6;
   a_telefon		ALIAS FOR $7;
   a_fax		ALIAS FOR $8;
   a_operater		ALIAS FOR $9;
   operater		integer;
   i_opstina		integer;
   s_tip		char(2);
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   -- Nadji opstinu
   SELECT sifra INTO i_opstina FROM opstine WHERE opstina=a_opstina;
   -- Nadji tip_magacina
   SELECT tip INTO s_tip FROM tip_magacina WHERE naziv=a_tip;
   --
   UPDATE sifre_magacina SET naziv=a_naziv, tip_magacina=s_tip, lokacija=a_lokacija, poslovodja=a_poslovodja, telefon=a_telefon, fax=a_fax, opstina=i_opstina WHERE sifra=a_sifra;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Dodaj U Magacin
--
DROP FUNCTION PrimiUMagacin(char, integer, numeric, numeric, char);
CREATE FUNCTION PrimiUMagacin(char, integer, numeric, numeric, char) RETURNS char AS 'DECLARE
   a_sifra_artikla	ALIAS FOR $1;
   a_sifra_magacina	ALIAS FOR $2;
   a_kolicina		ALIAS FOR $3;
   a_cena_jm		ALIAS FOR $4;
   a_operater		ALIAS FOR $5;
   operater		integer;
   n_snv		numeric(16, 2);
   n_stanje		numeric(16, 2);
   n_minz		numeric(16, 2);
   n_maxz		numeric(16, 2);
   n_optz		numeric(16, 2);
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   SELECT cena_snv, stanje, minimum_zaliha, maximum_zaliha, optimum_zaliha INTO n_snv, n_stanje, n_minz, n_maxz, n_optz FROM magacin WHERE sifra_artikla=a_sifra_artikla AND sifra_magacina=a_sifra_magacina ORDER BY datum DESC LIMIT 1;
   IF NOT FOUND THEN
      n_snv    = 0;
      n_stanje = 0;
   END IF;
   n_snv=(n_snv * n_stanje + a_kolicina * a_cena_jm) / (n_stanje + a_kolicina);
   n_stanje = n_stanje + a_kolicina;
   INSERT INTO magacin VALUES (a_sifra_artikla, a_sifra_magacina, a_cena_jm, a_kolicina, n_snv, n_stanje, n_minz, n_maxz, n_optz, operater, NOW());
   UPDATE sifre_artikala SET na_lageru=1 WHERE sifra=a_sifra_artikla;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Iskladistenje iz Magacina
--
DROP FUNCTION OtpremiIzMagacina(char, integer, numeric, char);
CREATE FUNCTION OtpremiIzMagacina(char, integer, numeric, char) RETURNS char AS 'DECLARE
   a_sifra_artikla	ALIAS FOR $1;
   a_sifra_magacina	ALIAS FOR $2;
   a_kolicina		ALIAS FOR $3;
   a_operater		ALIAS FOR $4;
   operater		integer;
   n_kolicina		numeric(16, 2);
   n_snv		numeric(16, 2);
   n_stanje		numeric(16, 2);
   n_minz		numeric(16, 2);
   n_maxz		numeric(16, 2);
   n_optz		numeric(16, 2);
BEGIN
return null;
   -- Nadji operatera ...
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   IF a_kolicina <= 0 THEN
      RETURN ''Kolicina proizvoda koji se otpremaju mora biti veca od nule!'';
   END IF;
   SELECT cena_snv, stanje, minimum_zaliha, maximum_zaliha, optimum_zaliha INTO n_snv, n_stanje, n_minz, n_maxz, n_optz FROM magacin WHERE sifra_artikla=a_sifra_artikla AND sifra_magacina=a_sifra_magacina ORDER BY datum DESC LIMIT 1;
   IF NOT FOUND THEN
      RETURN ''Otpremanje robe nije moguce uraditi! Zahtevanih artikala nema na stanju!'';
   END IF;
   n_stanje = n_stanje - a_kolicina;
   IF n_stanje<0 THEN
      RETURN ''Otpremanje robe nije moguce uraditi! Zahtevanih artikala nema na stanju!'';
   END IF;
   n_kolicina = a_kolicina * (-1);
   INSERT INTO magacin VALUES (a_sifra_artikla, a_sifra_magacina, n_snv, n_kolicina, n_snv, n_stanje, n_minz, n_maxz, n_optz, operater, NOW());
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Provera za iskladistenje iz magacina
--
DROP FUNCTION PokusajOtpremanjeIzMagacina(char, integer, numeric, char);
CREATE FUNCTION PokusajOtpremanjeIzMagacina(char, integer, numeric, char) RETURNS char AS 'DECLARE
   a_sifra_artikla	ALIAS FOR $1;
   a_sifra_magacina	ALIAS FOR $2;
   a_kolicina		ALIAS FOR $3;
   a_operater		ALIAS FOR $4;
   operater		integer;
   n_snv		numeric(16, 2);
   n_stanje		numeric(16, 2);
BEGIN
   -- Nadji operatera ...
Return null;
   SELECT sifra INTO operater FROM operateri WHERE username=a_operater;
   SELECT cena_snv, stanje INTO n_snv, n_stanje FROM magacin WHERE sifra_artikla=a_sifra_artikla AND sifra_magacina=a_sifra_magacina ORDER BY datum DESC LIMIT 1;
   IF NOT FOUND THEN
      RETURN ''Otpremanje robe nije moguce uraditi! Zahtevanih artikala nema na stanju!'';
   END IF;
   n_stanje = n_stanje - a_kolicina;
   IF n_stanje<0 THEN
      RETURN ''Otpremanje robe nije moguce uraditi! Zahtevanih artikala nema na stanju!'';      
   END IF;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Provera za iskladistenje iz magacina
--
DROP FUNCTION PokusajOtpremanje(char, numeric);
CREATE FUNCTION PokusajOtpremanje(char, numeric) RETURNS char AS 'DECLARE
   a_sifra_artikla	ALIAS FOR $1;
   a_kolicina		ALIAS FOR $2;
   operater		integer;
   n_snv		numeric(16,2);
   n_stanje		numeric(16,2);
BEGIN
Return null;
   SELECT cena_snv, stanje INTO n_snv, n_stanje FROM magacin WHERE sifra_artikla=a_sifra_artikla ORDER BY datum DESC LIMIT 1;
   IF NOT FOUND THEN
      RETURN ''Zahtevanih artikala nema na stanju!'';
   END IF;
   n_stanje = n_stanje - a_kolicina;
   IF n_stanje<0 THEN
      RETURN ''Zahtevane koliine nema na stanju!'';      
   END IF;
   Return NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajKomitenta(char, char, char, char, char, char, char);
CREATE FUNCTION DodajKomitenta(char, char, char, char, char, char, char) RETURNS char AS 'DECLARE
   a_naziv		ALIAS FOR $1;
   a_kontakt		ALIAS FOR $2;
   a_tip		ALIAS FOR $3;
   a_ulica		ALIAS FOR $4;
   a_mesto		ALIAS FOR $5;
   a_fax		ALIAS FOR $6;
   a_operater		ALIAS FOR $7;
   i_operater		integer;
   i_tip		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT NEXTVAL(''sifre_komitenata_sifra'') INTO sledeci;
   SELECT sifra INTO i_tip FROM tip_komitenta WHERE tip=a_tip;
   IF i_tip IS NULL THEN
      RAISE EXCEPTION ''Tip komitenta mora biti izabran!'';
--      i_tip=1;
   END IF;
   -- Sledeci broj proizvoda
   INSERT INTO sifre_komitenata (sifra, naziv, kontakt, tip, ulica, mesto, fax, operater, datum) VALUES (sledeci, a_naziv, a_kontakt, i_tip, a_ulica, a_mesto, a_fax, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Menja podatke komitenta
--
DROP FUNCTION PromeniKomitenta(integer, char, char, char, char, char, char, char);
CREATE FUNCTION PromeniKomitenta(integer, char, char, char, char, char, char, char) RETURNS char AS 'DECLARE
   a_sifra		ALIAS FOR $1;
   a_naziv		ALIAS FOR $2;
   a_kontakt		ALIAS FOR $3;
   a_tip		ALIAS FOR $4;
   a_ulica		ALIAS FOR $5;
   a_mesto		ALIAS FOR $6;
   a_fax		ALIAS FOR $7;
   a_operater		ALIAS FOR $8;
   i_operater		integer;
   i_tip		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT sifra INTO i_tip FROM tip_komitenta WHERE tip=a_tip;
   IF i_tip IS NULL THEN
      RAISE EXCEPTION ''Tip komitenta mora biti izabran!'';
--      i_tip=1;
   END IF;
   -- Sledeci broj proizvoda
   UPDATE sifre_komitenata SET naziv=a_naziv, kontakt=a_kontakt, tip=i_tip, ulica=a_ulica, mesto=a_mesto, fax=a_fax WHERE sifra=a_sifra;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Menja ostale podatke komitenta
--
DROP FUNCTION PromeniKomitentaOstalo(integer, decimal, char, char, char, char, char, char, char, integer, char, char, char, char, integer, char);
CREATE FUNCTION PromeniKomitentaOstalo(integer, decimal, char, char, char, char, char, char, char, integer, char, char, char, char, integer, char) RETURNS char AS 'DECLARE
   a_sifra		ALIAS FOR $1;
   a_rabat		ALIAS FOR $2;
   a_pbroj		ALIAS FOR $3;
   a_drzava		ALIAS FOR $4;
   a_telefon_1		ALIAS FOR $5;
   a_telefon_2		ALIAS FOR $6;
   a_mobilni		ALIAS FOR $7;
   a_maticni_broj	ALIAS FOR $8;
   a_reg_broj		ALIAS FOR $9;
   a_sifra_del		ALIAS FOR $10;
   a_ziro_racun_1	ALIAS FOR $11;
   a_ziro_racun_2	ALIAS FOR $12;
   a_ziro_racun_3	ALIAS FOR $13;
   a_vlasnik		ALIAS FOR $14;
   a_napomena		ALIAS FOR $15;
   a_operater		ALIAS FOR $16;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE sifre_komitenata SET rabat=a_rabat, pbroj=a_pbroj, drzava=a_drzava, telefon_1=a_telefon_1, telefon_2=a_telefon_2, 
          mobilni=a_mobilni, maticni_broj=a_maticni_broj, reg_broj=a_reg_broj, 
          ziro_racun_1=a_ziro_racun_1, ziro_racun_2=a_ziro_racun_2, ziro_racun_3=a_ziro_racun_3, vlasnik=a_vlasnik 
   	  WHERE sifra=a_sifra;       
   IF a_sifra_del <> '''' THEN
      UPDATE sifre_komitenata SET sifra_del=a_sifra_del WHERE sifra=a_sifra;
   END IF;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Proveri sifru delatnosti ...
--
DROP FUNCTION ProveriSifruDelatnosti(integer);
CREATE FUNCTION ProveriSifruDelatnosti(integer) RETURNS char AS 'DECLARE
   a_delatnost		ALIAS FOR $1;
   a_sta		integer;
BEGIN
   SELECT COUNT(*) INTO a_sta FROM sifre_delatnosti WHERE sifra=a_delatnost;
   IF a_sta>0 THEN
      RETURN NULL;
   END IF;
   Return ''Uneta sifra delatnosti ne postoji u sifarniku!'';
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajOperatera(char, char, char, char, char, char);
CREATE FUNCTION DodajOperatera(char, char, char, char, char, char) RETURNS char AS 'DECLARE
   a1			ALIAS FOR $1;
   a2			ALIAS FOR $2;
   a3			ALIAS FOR $3;
   a4			ALIAS FOR $4;
   a5			ALIAS FOR $5;
   a_operater		ALIAS FOR $6;
   i_operater		integer;
   i_privilegije	integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT NEXTVAL(''operateri_sifra'') INTO sledeci;
   SELECT sifra INTO i_privilegije FROM nivo_privilegija WHERE naziv=a5;
   IF i_privilegije IS NULL THEN
      RAISE EXCEPTION ''Privilegije komitenta se moraju uneti!'';
   END IF;
   INSERT INTO operateri (sifra, username, password, ime, prezime, privilegije, operater, datum) VALUES (sledeci, a1, a2, a3, a4, i_privilegije, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Menja operatera ...
--
DROP FUNCTION PromeniOperatera(integer, char, char, char, char, char, char);
CREATE FUNCTION PromeniOperatera(integer, char, char, char, char, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a2			ALIAS FOR $3;
   a3			ALIAS FOR $4;
   a4			ALIAS FOR $5;
   a5			ALIAS FOR $6;
   a_operater		ALIAS FOR $7;
   i_operater		integer;
   i_privilegije	integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT sifra INTO i_privilegije FROM nivo_privilegija WHERE naziv=a5;
   IF i_privilegije IS NULL THEN
      RAISE EXCEPTION ''Privilegije komitenta se moraju uneti!'';
   END IF;
   UPDATE operateri SET username=a1, password=a2, ime=a3, prezime=a4, privilegije=i_privilegije WHERE sifra=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajNivoPrivilegija(char, char, char);
CREATE FUNCTION DodajNivoPrivilegija(char, char, char) RETURNS char AS 'DECLARE
   a1			ALIAS FOR $1;
   a2			ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   i_operater		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT NEXTVAL(''nivo_privilegija_sifra'') INTO sledeci;
   INSERT INTO nivo_privilegija (sifra, naziv, opis, operater, datum) VALUES (sledeci, a1, a2, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniNivoPrivilegija(integer, char, char, char);
CREATE FUNCTION PromeniNivoPrivilegija(integer, char, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a2			ALIAS FOR $3;
   a_operater		ALIAS FOR $4;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE nivo_privilegija SET naziv=a1, opis=a2 WHERE sifra=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniNivoPrivilegijaOstalo(integer, boolean, boolean, boolean, boolean, boolean, char);
CREATE FUNCTION PromeniNivoPrivilegijaOstalo(integer, boolean, boolean, boolean, boolean, boolean, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a2			ALIAS FOR $3;
   a3			ALIAS FOR $4;
   a4			ALIAS FOR $5;
   a5			ALIAS FOR $6;
   a_operater		ALIAS FOR $7;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE nivo_privilegija SET KONFIGURACIJA=a1, CENOVNIK=a2, MAGACIN=a3, DOKUMENTI=a4, KNJIZENJE=a5 WHERE sifra=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniTipKomitenta(integer, char, char);
CREATE FUNCTION PromeniTipKomitenta(integer, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE tip_komitenta SET tip=a1 WHERE sifra=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajTipKomitenta(char, char);
CREATE FUNCTION DodajTipKomitenta(char, char) RETURNS char AS 'DECLARE
   a1			ALIAS FOR $1;
   a_operater		ALIAS FOR $2;
   i_operater		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT NEXTVAL(''tip_komitenta_sifra'') INTO sledeci;
   INSERT INTO tip_komitenta (sifra, tip, operater, datum) VALUES (sledeci, a1, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniSifruDelatnosti(integer, integer, char, char);
CREATE FUNCTION PromeniSifruDelatnosti(integer, integer, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $3;
   a_operater		ALIAS FOR $4;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE sifre_delatnosti SET delatnost=a1 WHERE sifra=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniSifruDelatnostiOstalo(integer, char, char);
CREATE FUNCTION PromeniSifruDelatnostiOstalo(integer, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE sifre_delatnosti SET napomena=a1 WHERE sifra=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajSifruDelatnosti(int, char, char);
CREATE FUNCTION DodajSifruDelatnosti(int, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   INSERT INTO sifre_delatnosti (sifra, delatnost, operater, datum) VALUES (sledeci, a1, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajTipDokumenta(char, char);
CREATE FUNCTION DodajTipDokumenta(char, char) RETURNS char AS 'DECLARE
   a1			ALIAS FOR $1;
   a_operater		ALIAS FOR $2;
   i_operater		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT NEXTVAL(''tip_dokumenta_sifra'') INTO sledeci;
   INSERT INTO tip_dokumenta (tip, naziv, operater, datum) VALUES (sledeci, a1, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniTipDokumenta(integer, char, char);
CREATE FUNCTION PromeniTipDokumenta(integer, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE tip_dokumenta SET naziv=a1 WHERE tip=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajTipIzjave(char, char, char);
CREATE FUNCTION DodajTipIzjave(char, char, char) RETURNS char AS 'DECLARE
   a1			ALIAS FOR $1;
   a2			ALIAS FOR $2;
   a_operater		ALIAS FOR $3;
   i_operater		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT NEXTVAL(''izjave_sifra'') INTO sledeci;
   INSERT INTO tip_izjave (sifra, naziv, pun_naziv, operater, datum) VALUES (sledeci, a1, a2, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniTipIzjave(integer, char, char, char);
CREATE FUNCTION PromeniTipIzjave(integer, char, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a2			ALIAS FOR $3;
   a_operater		ALIAS FOR $4;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE tip_izjave SET naziv=a1, pun_naziv=a2 WHERE sifra=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajDefaultVrednosti(char, varchar, char, char);
CREATE FUNCTION DodajDefaultVrednosti(char, varchar, char, char) RETURNS char AS 'DECLARE
   a1			ALIAS FOR $1;
   a2			ALIAS FOR $2;
   a3			ALIAS FOR $3;
   a_operater		ALIAS FOR $4;
   i_operater		integer;
   sledeci		integer;
   i_dokument		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT sifra INTO i_dokument FROM sifre_dokumenata WHERE naziv=a2;
   SELECT NEXTVAL(''default_vrednosti_sifra'') INTO sledeci;
   INSERT INTO default_vrednosti (pozicija, polje, sif_dok, vrednost, operater, datum) VALUES (sledeci, a1, i_dokument, a3, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniDefaultVrednosti(integer, char, varchar, char, char);
CREATE FUNCTION PromeniDefaultVrednosti(integer, char, varchar, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a2			ALIAS FOR $3;
   a3			ALIAS FOR $4;
   a_operater		ALIAS FOR $5;
   i_operater		integer;
   i_dokument		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT sifra INTO i_dokument FROM sifre_dokumenata WHERE naziv=a2;
   UPDATE default_vrednosti SET polje=a1, sif_dok=i_dokument, vrednost=a3 WHERE pozicija=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION DodajOpstine(char, char, char, char, char);
CREATE FUNCTION DodajOpstine(char, char, char, char, char) RETURNS char AS 'DECLARE
   a1			ALIAS FOR $1;
   a2			ALIAS FOR $2;
   a3			ALIAS FOR $3;
   a4			ALIAS FOR $4;
   a_operater		ALIAS FOR $5;
   i_operater		integer;
   sledeci		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT NEXTVAL(''opstine_sifra'') INTO sledeci;
   INSERT INTO opstine (sifra, opstina, adresa, grad, pbroj, operater, datum) VALUES (sledeci, a1, a2, a3, a4, i_operater, NOW());
RETURN ''OK: '' || sledeci;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- Snima novog komitenta
--
DROP FUNCTION PromeniOpstine(integer, char, char, char, char, char);
CREATE FUNCTION PromeniOpstine(integer, char, char, char, char, char) RETURNS char AS 'DECLARE
   sledeci		ALIAS FOR $1;
   a1			ALIAS FOR $2;
   a2			ALIAS FOR $3;
   a3			ALIAS FOR $4;
   a4			ALIAS FOR $5;
   a_operater		ALIAS FOR $6;
   i_operater		integer;
BEGIN
   -- Nadji operatera ...
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   UPDATE opstine SET opstina=a1, adresa=a2, grad=a3, pbroj=a4 WHERE sifra=sledeci;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- 
--
DROP FUNCTION PromeniKurs(integer, decimal);
CREATE FUNCTION PromeniKurs(integer, decimal) RETURNS char AS 'DECLARE
   a_gde		ALIAS FOR $1;
   a_kurs		ALIAS FOR $2;
BEGIN
   UPDATE radna_sesija SET kurs=a_kurs WHERE sesija=a_gde;
RETURN NULL;
END;'
LANGUAGE 'plpgsql';

---------------------------------------------------------------------------------------------------------------
-- 
--
DROP FUNCTION UlogujOperatera(char);
CREATE FUNCTION UlogujOperatera(char) RETURNS char AS 'DECLARE
   a_operater		ALIAS FOR $1;
   i_operater		integer;
   i_ima		integer;
BEGIN
   SELECT sifra INTO i_operater FROM operateri WHERE username=a_operater;
   SELECT COUNT(*) INTO i_ima FROM radna_sesija a, operateri b WHERE a.operater=b.sifra AND b.username=a_operater AND kraj IS NULL;
   IF i_ima>0 THEN
      RAISE EXCEPTION ''Izabrani operater vec je ulogovan.'';
   END IF;
   INSERT INTO radna_sesija () VALUES ();

RETURN NULL;
END;'
LANGUAGE 'plpgsql';
