-- C:\Radni\pra_rec_rm.pkb -- -- Generated for Oracle 10g on Fri Feb 07 10:58:18 2025 by Server Generator 6.5.96.5.6 PROMPT Creating Package Body 'PRA_REC_RM' CREATE OR REPLACE PACKAGE BODY PRA_REC_RM IS FUNCTION SJ_KOR_NAZIV (SJ_ID_P IN T_GOSTI.SJ_ID%TYPE ,DATUM_P IN T_GOSTI.DAT_ODLASKA%TYPE ) RETURN VARCHAR2 IS /* Naziv agencije kojoj pripada najviše gostiju koji borave u promatranoj SJ promatranog dana ili prezime i ime prvospremljenog gosta (ako gost nije agencijski) koji boravi u promatranoj SJ promatranog dana. */ CURSOR gost_age_c IS SELECT age_id, COUNT (age_id) AS br_redaka FROM t_gosti WHERE sj_id = sj_id_p AND dat_dolaska <= datum_p AND (dat_odlaska > datum_p OR (dat_odlaska = datum_p AND dat_odlaska = dat_dolaska)) GROUP BY age_id ORDER BY 2 DESC, 1 DESC; gost_age_c_l gost_age_c%ROWTYPE; CURSOR age_c IS SELECT naziv FROM m_agencije WHERE id = gost_age_c_l.age_id; CURSOR gost_prezime_c IS SELECT prezime || ', ' || ime FROM t_gosti WHERE sj_id = sj_id_p AND dat_dolaska <= datum_p AND (dat_odlaska > datum_p OR (dat_odlaska = datum_p AND dat_odlaska = dat_dolaska)) ORDER BY id; sj_kor_naziv_l VARCHAR2(50); BEGIN IF sj_id_p IS NULL OR datum_p IS NULL THEN RETURN (NULL); END IF; OPEN gost_age_c; FETCH gost_age_c INTO gost_age_c_l; CLOSE gost_age_c; IF gost_age_c_l.age_id IS NOT NULL THEN OPEN age_c; FETCH age_c INTO sj_kor_naziv_l; CLOSE age_c; ELSE OPEN gost_prezime_c; FETCH gost_prezime_c INTO sj_kor_naziv_l; CLOSE gost_prezime_c; END IF; RETURN (sj_kor_naziv_l); END; PROCEDURE IZRACUNAJ_TU18 (SO_ID_P IN T_ZAKUP.SO_ID%TYPE ,DAT_POC_P IN T_ZAKUP.DAT_POC%TYPE ,DAT_ZAV_P IN T_ZAKUP.DAT_ZAV%TYPE ) IS rowid_l ROWID; zadnjidan_l T_ZAKUP.DAT_POC%TYPE; mm_l VARCHAR2(2); month_l VARCHAR2(30); BEGIN -- tab2 = tablica 2 (BROJ PLOVILA U LUCI...), tab3 = tablica 3 (KORIŠTENJE VEZOVA U MORU PO MJESECIMA) iz TU-18 -- id1, id2, opis1, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8 -- tab2, more, zemlja, ugovori 201, izr_c.zemlja u m j o -- tab2, more, duljina, ugovori 202 izr_c.duljina u m j o -- tab2, suhi, ugovori 210 u m j o -- tab2, more, zemlja, stat 201, izr_c.zemlja u m j o -- tab2, more, duljina, stat 202 izr_c.duljina u m j o -- tab2, suhi, stat 210 u m j o -- tab3, mm, month, ugovori 3 mm month x -- tab3, mm, month, stat 3 mm month x x x --------------------------------------------------------------------------------------------------------------------------------------------------- -- tab2, ugovori FOR izr_c IN ( SELECT plovila.vrsta vrstaplovila, plovila.zem_id zemlja, pra_rec_s2.zmpdplo_id (plovila.duljina) duljina, tzp.ozn_suhi_vez suhivez FROM trec_zak_plovila tzp, t_zak_sj tzaksj, t_zakup ugo, mrec_plovila plovila WHERE tzp.zaksj_id = tzaksj.id AND tzaksj.zak_id = ugo.id AND tzp.recplo_id = plovila.id AND ugo.so_id = SO_ID_P AND ugo.dat_poc <= dat_zav_p AND ugo.dat_zav > dat_zav_p AND ugo.oznaka = 'V') LOOP IF izr_c.suhivez = 0 THEN -- more, zemlja BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 201 AND id2 = izr_c.zemlja; IF izr_c.vrstaplovila = 1 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos2 = (iznos2 + 1) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 2 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos3 = (iznos3 + 1) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 3 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos4 = (iznos4 + 1) WHERE rowid = rowid_l; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF izr_c.vrstaplovila = 1 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (201, izr_c.zemlja, 1, 1, 0, 0, 0, 0, 0, 0); ELSIF izr_c.vrstaplovila = 2 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (201, izr_c.zemlja, 1, 0, 1, 0, 0, 0, 0, 0); ELSIF izr_c.vrstaplovila = 3 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (201, izr_c.zemlja, 1, 0, 0, 1, 0, 0, 0, 0); END IF; END; -- more, duljina BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 202 AND id2 = izr_c.duljina; IF izr_c.vrstaplovila = 1 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos2 = (iznos2 + 1) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 2 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos3 = (iznos3 + 1) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 3 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos4 = (iznos4 + 1) WHERE rowid = rowid_l; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF izr_c.vrstaplovila = 1 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (202, izr_c.duljina, 1, 1, 0, 0, 0, 0, 0, 0); ELSIF izr_c.vrstaplovila = 2 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (202, izr_c.duljina, 1, 0, 1, 0, 0, 0, 0, 0); ELSIF izr_c.vrstaplovila = 3 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (202, izr_c.duljina, 1, 0, 0, 1, 0, 0, 0, 0); END IF; END; ELSE -- suhi vez BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 210; IF izr_c.vrstaplovila = 1 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos2 = (iznos2 + 1) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 2 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos3 = (iznos3 + 1) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 3 THEN UPDATE prec_global SET iznos1 = (iznos1 + 1), iznos4 = (iznos4 + 1) WHERE rowid = rowid_l; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF izr_c.vrstaplovila = 1 THEN INSERT INTO prec_global (id1, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (210, 1, 1, 0, 0, 0, 0, 0, 0); ELSIF izr_c.vrstaplovila = 2 THEN INSERT INTO prec_global (id1, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (210, 1, 0, 1, 0, 0, 0, 0, 0); ELSIF izr_c.vrstaplovila = 3 THEN INSERT INTO prec_global (id1, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (210, 1, 0, 0, 1, 0, 0, 0, 0); END IF; END; END IF; END LOOP; -- COMMIT; -- tab 3 po mjesecima na zadnji dan u mjesecu - ugovori zadnjidan_l := LAST_DAY (dat_poc_p); mm_l := TO_CHAR (zadnjidan_l, 'MM'); month_l := TO_CHAR (zadnjidan_l, 'MONTH'); WHILE zadnjidan_l <= dat_zav_p LOOP FOR izr_c IN ( SELECT ugo.dat_poc, ugo.dat_zav FROM trec_zak_plovila tzp, t_zak_sj tzaksj, t_zakup ugo, mrec_plovila plovila WHERE tzp.zaksj_id = tzaksj.id AND tzaksj.zak_id = ugo.id AND tzp.recplo_id = plovila.id AND tzp.ozn_suhi_vez = 0 AND ugo.so_id = so_id_p AND ugo.dat_poc <= zadnjidan_l AND ugo.dat_zav > zadnjidan_l AND ugo.oznaka = 'V') LOOP BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 3 AND id2 = mm_l AND opis1 = month_l; UPDATE prec_global SET iznos1 = (iznos1 + 1) WHERE rowid = rowid_l; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO prec_global (id1, id2, opis1, iznos1, iznos2, iznos3, iznos4) VALUES (3, mm_l, month_l, 1, 0, 0, 0); END; END LOOP; zadnjidan_l := zadnjidan_l + 1; zadnjidan_l := LAST_DAY (zadnjidan_l); mm_l := TO_CHAR (zadnjidan_l, 'MM'); month_l := TO_CHAR (zadnjidan_l, 'MONTH'); END LOOP; -- COMMIT; -- tab 2 statistika FOR izr_c IN ( SELECT stav.vrsta_plovila vrstaplovila, stav.zem_id zemlja, stav.zmpdplo_id duljina, stav.ozn_suhi_vez suhivez, stav.br_dolazaka dolazaka FROM irec_nocenja zag, irec_noc_plo stav WHERE zag.id = stav.recnoc_id AND zag.datum BETWEEN dat_poc_p AND dat_zav_p AND zag.so_id = so_id_p AND stav.vrsta_veza = 1) LOOP IF izr_c.suhivez = 0 THEN -- + dolazaka -- more, zemlja BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 201 AND id2 = izr_c.zemlja; IF izr_c.vrstaplovila = 1 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos6 = (iznos6 + izr_c.dolazaka) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 2 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos7 = (iznos7 + izr_c.dolazaka) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 3 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos8 = (iznos8 + izr_c.dolazaka) WHERE rowid = rowid_l; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF izr_c.vrstaplovila = 1 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (201, izr_c.zemlja, 0, 0, 0, 0, izr_c.dolazaka, izr_c.dolazaka, 0, 0); ELSIF izr_c.vrstaplovila = 2 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (201, izr_c.zemlja, 0, 0, 0, 0, izr_c.dolazaka, 0, izr_c.dolazaka, 0); ELSIF izr_c.vrstaplovila = 3 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (201, izr_c.zemlja, 0, 0, 0, 0, izr_c.dolazaka, 0, 0, izr_c.dolazaka); END IF; END; -- more, duljina BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 202 AND id2 = izr_c.duljina; IF izr_c.vrstaplovila = 1 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos6 = (iznos6 + izr_c.dolazaka) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 2 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos7 = (iznos7 + izr_c.dolazaka) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 3 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos8 = (iznos8 + izr_c.dolazaka) WHERE rowid = rowid_l; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF izr_c.vrstaplovila = 1 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (202, izr_c.duljina, 0, 0, 0, 0, izr_c.dolazaka, izr_c.dolazaka, 0, 0); ELSIF izr_c.vrstaplovila = 2 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (202, izr_c.duljina, 0, 0, 0, 0, izr_c.dolazaka, 0, izr_c.dolazaka, 0); ELSIF izr_c.vrstaplovila = 3 THEN INSERT INTO prec_global (id1, id2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (202, izr_c.duljina, 0, 0, 0, 0, izr_c.dolazaka, 0, 0, izr_c.dolazaka); END IF; END; ELSE -- suhi vez BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 210; IF izr_c.vrstaplovila = 1 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos6 = (iznos6 + izr_c.dolazaka) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 2 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos7 = (iznos7 + izr_c.dolazaka) WHERE rowid = rowid_l; ELSIF izr_c.vrstaplovila = 3 THEN UPDATE prec_global SET iznos5 = (iznos5 + izr_c.dolazaka), iznos8 = (iznos8 + izr_c.dolazaka) WHERE rowid = rowid_l; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF izr_c.vrstaplovila = 1 THEN INSERT INTO prec_global (id1, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (210, 0, 0, 0, 0, izr_c.dolazaka, izr_c.dolazaka, 0, 0); ELSIF izr_c.vrstaplovila = 2 THEN INSERT INTO prec_global (id1, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (210, 0, 0, 0, 0, izr_c.dolazaka, 0, izr_c.dolazaka, 0); ELSIF izr_c.vrstaplovila = 3 THEN INSERT INTO prec_global (id1, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8) VALUES (210, 0, 0, 0, 0, izr_c.dolazaka, 0, 0, izr_c.dolazaka); END IF; END; END IF; END LOOP; -- COMMIT; -- tab 3 - col 2, 3, 4 FOR izr_c IN ( SELECT zag.datum datum, stav.vrsta_veza vrsta_veza, stav.br_dolazaka dolazaka, stav.br_nocenja nocenja FROM irec_nocenja zag, irec_noc_plo stav WHERE zag.id = stav.recnoc_id AND zag.datum BETWEEN dat_poc_p AND dat_zav_p AND zag.so_id = so_id_p AND stav.ozn_suhi_vez = 0) LOOP mm_l := TO_CHAR (izr_c.datum, 'MM'); month_l := TO_CHAR (izr_c.datum, 'MONTH'); IF izr_c.vrsta_veza = 2 THEN -- stalni -- nocenja BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 3 AND id2 = mm_l AND opis1 = month_l; UPDATE prec_global SET iznos2 = (iznos2 + izr_c.nocenja) WHERE rowid = rowid_l; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO prec_global (id1, id2, opis1, iznos1, iznos2, iznos3, iznos4) VALUES (3, mm_l, month_l, 0, izr_c.nocenja, 0, 0); END; ELSE -- tranzit -- dolasci BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 3 AND id2 = mm_l AND opis1 = month_l; UPDATE prec_global SET iznos3 = (iznos3 + izr_c.dolazaka) WHERE rowid = rowid_l; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO prec_global (id1, id2, opis1, iznos1, iznos2, iznos3, iznos4) VALUES (3, mm_l, month_l, 0, 0, izr_c.dolazaka, 0); END; -- tranzit -- nocenja BEGIN SELECT rowid INTO rowid_l FROM prec_global WHERE id1 = 3 AND id2 = mm_l AND opis1 = month_l; UPDATE prec_global SET iznos4 = (iznos4 + izr_c.nocenja) WHERE rowid = rowid_l; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO prec_global (id1, id2, opis1, iznos1, iznos2, iznos3, iznos4) VALUES (3, mm_l, month_l, 0, 0, 0, izr_c.nocenja); END; END IF; END LOOP; -- COMMIT; END; FUNCTION USL_IMA_OBROKE (USL_ID_P IN S_USLUGE.ID%TYPE ) RETURN NUMBER IS /* Usluga ima sastojke koji pripadaju grupi sastojaka gdje je ozn_obroka postavljena na Da. */ br_redaka_l NUMBER; BEGIN IF usl_id_p IS NULL THEN RETURN (0); END IF; SELECT COUNT (uslsas.rowid) INTO br_redaka_l FROM s_usl_sas uslsas, s_sastojci sas, m_gsastojaka gsas WHERE uslsas.usl_id = usl_id_p AND uslsas.sas_id = sas.id AND sas.gsas_id = gsas.id AND gsas.ozn_obroka = -1; IF br_redaka_l > 0 THEN RETURN (-1); ELSE RETURN (0); END IF; END; FUNCTION SAS_ZAV_ID (USL_ID_P IN S_USL_SAS.USL_ID%TYPE ,SAS_ID_P IN S_USL_SAS.SAS_ID%TYPE ) RETURN s_sastojci.id%TYPE IS -- završni sastojak promatrane usluge i početnog sastojka br_redaka_l NUMBER; sas_id_l s_sastojci.id%TYPE; CURSOR uslsas_c IS SELECT sas_id FROM s_usl_sas WHERE usl_id = usl_id_p AND sas_id = sas_id_p; CURSOR uslsaspz_c IS SELECT uslsas_z.sas_id FROM s_usl_saspz uslsaspz, s_usl_sas uslsas_p, s_usl_sas uslsas_z WHERE uslsaspz.uslsasp_id = uslsas_p.id AND uslsaspz.uslsasz_id = uslsas_z.id AND uslsas_p.usl_id = usl_id_p AND uslsas_z.usl_id = usl_id_p AND uslsas_p.sas_id = sas_id_p; BEGIN IF usl_id_p IS NULL OR sas_id_p IS NULL THEN RETURN (NULL); END IF; SELECT COUNT (ROWID) INTO br_redaka_l FROM s_usl_sas WHERE usl_id = usl_id_p; IF br_redaka_l = 0 THEN -- usluga nema dopuštenih sastojaka RETURN (NULL); ELSIF br_redaka_l = 1 THEN -- usluga ima samo jedan dopušteni sastojak OPEN uslsas_c; FETCH uslsas_c INTO sas_id_l; CLOSE uslsas_c; ELSIF br_redaka_l > 1 THEN -- usluga ima više dopuštenih sastojaka OPEN uslsaspz_c; FETCH uslsaspz_c INTO sas_id_l; CLOSE uslsaspz_c; END IF; RETURN (sas_id_l); END; PROCEDURE IZRACUNAJ_REC51207 (SO_ID_P IN T_REZERVACIJE.SO_ID%TYPE ,DAT_POC_P IN T_REZ_USL.DAT_POC%TYPE ,DAT_ZAV_P IN T_REZ_USL.DAT_ZAV%TYPE ) IS /* Popis rezervacija (puni prec_global) id1 => ozn_vboravaka: 1 = dolazak, 2 = boravak, 3 = odlazak, 4 = rezervacije prostora id2 => ms_id id3 => age_id id4 => usl_id id5 => sas_id (početni) id6 => sas_id (završni) opis1 => prezime, ime opis2 => recrj_naziv (samo ako se radi o rezervaciji prostora) opis3 => napomena (samo ako se radi o rezervaciji prostora) opis4 => napomena (iz rezervacije odnosno uz gosta) 11.05.2006. G.J. iznos1 => količina (usluge) datum1 => datum ("kalendarski") datum2 => dat_poc usluge datum3 => dat_zav usluge datum4 => sat_poc rezervacije prostora datum5 => sat_zav rezervacije prostora opis8 1 = jedini dan (sat_poc - sat_zav) opis8 2 = prvi dan (sat_poc - zav_dat) opis8 3 = ni prvi ni zadnji (dat_poc - dat_zav) opis8 4 = zadnji dan (dat_poc - sat_zav) */ datum_l DATE; ozn_vboravaka_l NUMBER(1,0); BEGIN FOR c1 IN ( -- rezervacije SELECT rez.ms_id AS ms_id, rez.age_id AS age_id, rez.prezime || ', ' || rez.ime AS prezime, rezusl.usl_id AS usl_id, NVL (rezusl.dat_poc, rez.dat_dolaska) AS dat_poc, rezusl.sas_id AS sas_id, NVL (rezusl.dat_zav, rez.dat_odlaska) AS dat_zav, pra_rec_rm.sas_zav_id (rezusl.usl_id, rezusl.sas_id) AS sas_zav_id, (rezvsj.br_osoba - NVL (rezvsj.br_osobaz, 0)) AS kolicina, usl.obr_zdana AS obr_zdana, rez.dat_dolaska AS dat_dolaska, rez.dat_odlaska AS dat_odlaska, rez.napomena AS napomena FROM t_rez_vsj rezvsj, t_rez_usl rezusl, t_rezervacije rez, s_usluge usl WHERE rezvsj.rez_id = rez.id AND rezusl.rez_id = rez.id AND rezusl.usl_id = usl.id AND rez.oznaka = 'V' AND rez.ozn_vstorna IS NULL AND (pra_rec_rm.usl_ima_obroke (rezusl.usl_id) = -1 OR usl.ozn_osnovna = -1) AND (NVL (rezusl.dat_zav, rez.dat_odlaska) - NVL (rezusl.dat_poc, rez.dat_dolaska) - usl.obr_zdana) > 0 AND rez.so_id = so_id_p AND NVL (rezusl.dat_poc, rez.dat_dolaska) <= dat_zav_p AND NVL (rezusl.dat_zav, rez.dat_odlaska) >= dat_poc_p UNION ALL -- rezervacije usluga SELECT rez.ms_id AS ms_id, rez.age_id AS age_id, rez.prezime || ', ' || rez.ime AS prezime, rezgusl.usl_id AS usl_id, NVL (rezgusl.dat_poc, rez.dat_dolaska) AS dat_poc, rezgusl.sas_id AS sas_id, NVL (rezgusl.dat_zav, rez.dat_odlaska) AS dat_zav, pra_rec_rm.sas_zav_id (rezgusl.usl_id, rezgusl.sas_id) AS sas_zav_id, 1 AS kolicina, usl.obr_zdana AS obr_zdana, rez.dat_dolaska AS dat_dolaska, rez.dat_odlaska AS dat_odlaska, rez.napomena AS napomena FROM t_rez_gusl rezgusl, t_rez_gost rezgost, t_rez_vsj rezvsj, t_rezervacije rez, s_usluge usl WHERE rezgusl.rezgost_id = rezgost.id AND rezgost.rezvsj_id = rezvsj.id AND rezvsj.rez_id = rez.id AND rezgusl.usl_id = usl.id AND rez.oznaka = 'V' AND rez.ozn_vstorna IS NULL AND (pra_rec_rm.usl_ima_obroke (rezgusl.usl_id) = -1 OR usl.ozn_osnovna = -1) AND (NVL (rezgusl.dat_zav, rez.dat_odlaska) - NVL (rezgusl.dat_poc, rez.dat_dolaska) - usl.obr_zdana) > 0 AND rez.so_id = so_id_p AND NVL (rezgusl.dat_poc, rez.dat_dolaska) <= dat_zav_p AND NVL (rezgusl.dat_zav, rez.dat_odlaska) >= dat_poc_p UNION ALL -- gosti SELECT gost.ms_id AS ms_id, gost.age_id AS age_id, gost.prezime || ', ' || gost.ime AS prezime, tro.usl_id AS usl_id, NVL (tro.dat_poc, gost.dat_dolaska) AS dat_poc, tro.sas_id AS sas_id, NVL (tro.dat_zav, gost.dat_odlaska) AS dat_zav, pra_rec_rm.sas_zav_id (tro.usl_id, tro.sas_id) AS sas_zav_id, tro.kol_usluge AS kolicina, usl.obr_zdana AS obr_zdana, gost.dat_dolaska AS dat_dolaska, gost.dat_odlaska AS dat_odlaska, gost.napomena AS napomena FROM t_troskovi tro, t_gosti gost, s_usluge usl, m_sj sj WHERE tro.gost_id = gost.id AND tro.usl_id = usl.id AND gost.sj_id = sj.id AND (pra_rec_rm.usl_ima_obroke (tro.usl_id) = -1 OR usl.ozn_osnovna = -1) AND (tro.dat_zav - tro.dat_poc - usl.obr_zdana) > 0 AND sj.so_id = so_id_p AND tro.dat_poc <= dat_zav_p AND tro.dat_zav >= dat_poc_p ) LOOP FOR dan IN 0 .. (c1.dat_zav - c1.dat_poc) LOOP datum_l := c1.dat_poc + dan; IF c1.dat_dolaska <> c1.dat_odlaska THEN IF datum_l = c1.dat_dolaska THEN ozn_vboravaka_l := 1; -- dolazak ELSIF datum_l = c1.dat_odlaska THEN ozn_vboravaka_l := 3; -- odlazak ELSE ozn_vboravaka_l := 2; -- boravak END IF; ELSE IF datum_l = c1.dat_dolaska THEN ozn_vboravaka_l := 1; -- dolazak END IF; END IF; INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( ozn_vboravaka_l, c1.ms_id, c1.age_id, c1.usl_id, c1.sas_id, c1.sas_zav_id, c1.prezime, NULL, NULL, c1.napomena, c1.kolicina, datum_l, c1.dat_poc, c1.dat_zav, TO_DATE (NULL), TO_DATE (NULL)); END LOOP; -- svaki dan razdoblja usluge END LOOP; -- FOR c1 IN -- rezervacije prostora FOR c2 IN ( SELECT recrez2.datum AS datum, DECODE (recrez2.naz_korisnika, NULL, pra_rec_s.platitelj ('2', recrez2.gost_id, recrez2.age_id, recrez2.pkaadr_id), recrez2.naz_korisnika) AS prezime, recrez2.kolicina AS kolicina, recrez2.sat_poc AS sat_poc, recrez2.sat_zav AS sat_zav, recrj.naziv AS recrj_naziv, recrez2.napomena AS napomena FROM trec_rezervacije2 recrez2, mrec_rj recrj WHERE recrez2.oznaka = 'V' AND recrez2.recrj_id = recrj.id AND recrez2.datum BETWEEN dat_poc_p AND dat_zav_p AND recrj.oj_id IN ( SELECT oj_id FROM m_so WHERE id = so_id_p UNION SELECT ojr_id FROM m_so WHERE id = so_id_p) ) LOOP INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 4, NULL, NULL, NULL, NULL, NULL, c2.prezime, c2.recrj_naziv, c2.napomena, TO_CHAR (NULL), c2.kolicina, c2.datum, TO_DATE (NULL), TO_DATE (NULL), c2.sat_poc, c2.sat_zav); END LOOP; -- rezervacije prostora 2 - prostori FOR c3 IN ( SELECT recrez2pro.dat_poc AS dat_poc, recrez2pro.dat_zav - recrez2pro.dat_poc + 1 dana, DECODE (recrez2pro.naz_korisnika,NULL, DECODE (recrez2pro.ponpros_id,NULL, DECODE (recrez2pro.rez_id,NULL,pra_rec_s.platitelj ('2', recrez2pro.gost_id, recrez2pro.age_id, recrez2pro.pkaadr_id), 'R' || ' ' || rez.rbr || ' ' || rez.god_poslovna || ' ' || rez.prezime), 'P' || ' ' || pon.rbr || ' ' || pon.god_poslovna || ' ' || nvl(pon.naz_grupe, age.naziv)), recrez2pro.naz_korisnika) AS prezime, recrez2pro.kolicina AS kolicina, recrez2pro.sat_poc AS sat_poc, recrez2pro.sat_zav AS sat_zav, zmppros.naziv AS recrj_naziv, recrez2pro.napomena AS napomena FROM trec_rez2_pros recrez2pro, mzmp_prostori zmppros, t_rezervacije rez, t_pon_pros ponpros, t_pon_ojr ponojr, t_ponude pon, m_agencije age WHERE rez.id (+) = recrez2pro.rez_id AND ponpros.id (+) = recrez2pro.ponpros_id AND ponpros.ponojr_id = ponojr.id (+) AND ponojr.pon_id = pon.id (+) AND age.id (+) = pon.age_id AND recrez2pro.oznaka = 'V' AND recrez2pro.zmppros_id = zmppros.id -- AND recrez2pro.dat_poc BETWEEN dat_poc_p AND dat_zav_p AND recrez2pro.dat_poc <= dat_zav_p AND recrez2pro.dat_zav >= dat_poc_p AND zmppros.oj_id IN ( SELECT oj_id FROM m_so WHERE id = so_id_p UNION SELECT ojr_id FROM m_so WHERE id = so_id_p) ) LOOP IF c3.dana = 1 THEN -- jedini dan INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, opis8, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 5, NULL, NULL, NULL, NULL, NULL, c3.prezime, c3.recrj_naziv, c3.napomena, TO_CHAR (NULL),1, c3.kolicina, c3.dat_poc, TO_DATE (NULL), TO_DATE (NULL), c3.sat_poc, c3.sat_zav); ELSE FOR i IN 1..c3.dana LOOP IF i = 1 THEN -- prvi dan INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, opis8, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 5, NULL, NULL, NULL, NULL, NULL, c3.prezime, c3.recrj_naziv, c3.napomena, TO_CHAR (NULL),2, c3.kolicina, c3.dat_poc, TO_DATE (NULL), TO_DATE (NULL), c3.sat_poc, c3.sat_zav); ELSE IF i = c3.dana THEN -- zadnji dan INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, opis8, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 5, NULL, NULL, NULL, NULL, NULL, c3.prezime, c3.recrj_naziv, c3.napomena, TO_CHAR (NULL),4, c3.kolicina, (c3.dat_poc + i - 1), TO_DATE (NULL), TO_DATE (NULL), c3.sat_poc, c3.sat_zav); ELSE -- ni prvi ni zadnji INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, opis8, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 5, NULL, NULL, NULL, NULL, NULL, c3.prezime, c3.recrj_naziv, c3.napomena, TO_CHAR (NULL),3, c3.kolicina, (c3.dat_poc + i - 1), TO_DATE (NULL), TO_DATE (NULL), c3.sat_poc, c3.sat_zav); END IF; END IF; END LOOP; END IF; END LOOP; -- rezervacije prostora 2 - oprema FOR c4 IN ( SELECT recrez2opr.dat_poc AS dat_poc, recrez2opr.dat_zav - recrez2opr.dat_poc + 1 dana, DECODE (recrez2opr.naz_korisnika,NULL, DECODE (recrez2opr.ponopr_id,NULL, DECODE (recrez2opr.rez_id,NULL,pra_rec_s.platitelj ('2', recrez2opr.gost_id, recrez2opr.age_id, recrez2opr.pkaadr_id), 'R' || ' ' || rez.rbr || ' ' || rez.god_poslovna || ' ' || rez.prezime), 'P' || ' ' || pon.rbr || ' ' || pon.god_poslovna || ' ' || nvl(pon.naz_grupe, age.naziv)), recrez2opr.naz_korisnika) AS prezime, recrez2opr.kolicina AS kolicina, recrez2opr.sat_poc AS sat_poc, recrez2opr.sat_zav AS sat_zav, zmpopr.naziv AS recrj_naziv, recrez2opr.napomena AS napomena FROM trec_rez2_opr recrez2opr, mzmp_oprema zmpopr, t_rezervacije rez, t_pon_opr ponopr, t_pon_ojr ponojr, t_ponude pon, m_agencije age WHERE rez.id (+) = recrez2opr.rez_id AND ponopr.id (+) = recrez2opr.ponopr_id AND ponopr.ponojr_id = ponojr.id (+) AND ponojr.pon_id = pon.id (+) AND age.id (+) = pon.age_id AND recrez2opr.oznaka = 'V' AND recrez2opr.zmpopr_id = zmpopr.id -- AND recrez2opr.dat_poc BETWEEN dat_poc_p AND dat_zav_p AND recrez2opr.dat_poc <= dat_zav_p AND recrez2opr.dat_zav >= dat_poc_p AND zmpopr.oj_id IN ( SELECT oj_id FROM m_so WHERE id = so_id_p UNION SELECT ojr_id FROM m_so WHERE id = so_id_p) ) LOOP IF c4.dana = 1 THEN -- jedini dan INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, opis8, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 6, NULL, NULL, NULL, NULL, NULL, c4.prezime, c4.recrj_naziv, c4.napomena, TO_CHAR (NULL),1, c4.kolicina, c4.dat_poc, TO_DATE (NULL), TO_DATE (NULL), c4.sat_poc, c4.sat_zav); ELSE FOR i IN 1..c4.dana LOOP IF i = 1 THEN -- prvi dan INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, opis8, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 6, NULL, NULL, NULL, NULL, NULL, c4.prezime, c4.recrj_naziv, c4.napomena, TO_CHAR (NULL),2, c4.kolicina, c4.dat_poc, TO_DATE (NULL), TO_DATE (NULL), c4.sat_poc, c4.sat_zav); ELSE IF i = c4.dana THEN -- zadnji dan INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, opis8, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 6, NULL, NULL, NULL, NULL, NULL, c4.prezime, c4.recrj_naziv, c4.napomena, TO_CHAR (NULL),4, c4.kolicina, (c4.dat_poc + i - 1), TO_DATE (NULL), TO_DATE (NULL), c4.sat_poc, c4.sat_zav); ELSE -- ni prvi ni zadnji INSERT INTO prec_global ( id1, id2, id3, id4, id5, id6, opis1, opis2, opis3, opis4, opis8, iznos1, datum1, datum2, datum3, datum4, datum5) VALUES ( 6, NULL, NULL, NULL, NULL, NULL, c4.prezime, c4.recrj_naziv, c4.napomena, TO_CHAR (NULL),3, c4.kolicina, (c4.dat_poc + i - 1), TO_DATE (NULL), TO_DATE (NULL), c4.sat_poc, c4.sat_zav); END IF; END IF; END LOOP; END IF; END LOOP; END; FUNCTION BR_OSOBA_UGO (OZN_GRUPE_P IN NUMBER ,DATUM_P IN I_BOOKING.DATUM%TYPE ,SO_ID_P IN M_SO.ID%TYPE ,ID_GRUPE_P IN NUMBER ,OZN_RAZDOBLJA_P IN VARCHAR2 ,ID_GRUPE_DODATNE_P IN M_MSEGMENTI.ID%TYPE ) RETURN NUMBER IS /* Ugovoren broj osoba po 1 = zemdzs, 2 = ms, 3 = age, 4 = recgdgost, 5 = vsj. Funkcija se koristi u izvještaju Pregled dolazaka/noćenja turista (REC5320.rdf i REC5321.rdf). zc 4/2012 Parametar id_grupe_dodatne_p (ms_id) dodan za grupirano po MS,Agencijama */ br_osoba_l NUMBER; dat_zav_l i_booking.datum%TYPE; BEGIN IF datum_p IS NULL THEN RETURN 0; END IF; IF ozn_razdoblja_p = 'M' THEN -- za mjesec dat_zav_l := LAST_DAY (datum_p); ELSE -- za godinu dat_zav_l := LAST_DAY (ADD_MONTHS (datum_p, 11)); END IF; IF ozn_grupe_p = 1 THEN -- po zemdzs SELECT SUM (book.br_osoba) INTO br_osoba_l FROM i_booking book, m_agencije age, s_zemlje zem WHERE ( (so_id_p IS NOT NULL AND book.so_id = so_id_p) OR (so_id_p IS NULL AND book.so_id IN (SELECT DISTINCT (so_id) FROM i_nocenja WHERE datum BETWEEN datum_p AND dat_zav_l)) ) AND book.ozn_sprodaje IN ('A','U','Z') AND book.datum BETWEEN datum_p AND dat_zav_l AND age.id(+) = book.age_id AND zem.id(+) = age.zem_id AND zem.zemdzs_id = id_grupe_p; ELSIF ozn_grupe_p = 2 THEN -- po ms SELECT SUM (book.br_osoba) INTO br_osoba_l FROM i_booking book WHERE ( (so_id_p IS NOT NULL AND book.so_id = so_id_p) OR (so_id_p IS NULL AND book.so_id IN (SELECT DISTINCT (so_id) FROM i_nocenja WHERE datum BETWEEN datum_p AND dat_zav_l)) ) AND book.ozn_sprodaje IN ('A','U','Z') AND book.datum BETWEEN datum_p AND dat_zav_l AND book.ms_id = id_grupe_p; ELSE -- po age SELECT SUM (book.br_osoba) INTO br_osoba_l FROM i_booking book WHERE ( (so_id_p IS NOT NULL AND book.so_id = so_id_p) OR (so_id_p IS NULL AND book.so_id IN (SELECT DISTINCT (so_id) FROM i_nocenja WHERE datum BETWEEN datum_p AND dat_zav_l)) ) AND book.ozn_sprodaje IN ('A','U','Z') AND book.datum BETWEEN datum_p AND dat_zav_l AND NVL (book.age_id, 0) = NVL (id_grupe_p, 0) AND (id_grupe_dodatne_p IS NULL OR (id_grupe_dodatne_p = book.ms_id)); END IF; RETURN br_osoba_l; END; FUNCTION KAPACITET (OZN_SP_P IN VARCHAR2 ,OZN_JM_P IN VARCHAR2 ,VUO_ID_P IN M_SO.VUO_ID%TYPE ,SO_ID_P IN M_SJ.SO_ID%TYPE ,VSJ_ID_P IN M_SJ.VSJ_ID%TYPE ,SSJ_ID_P IN S_VSJ.SSJ_ID%TYPE ,DAT_POC_P IN DATE ,DAT_ZAV_P IN DATE ) RETURN NUMBER IS -- kapacitet odnosno količina valjanih SJ u upotrebi dat_zav_c CONSTANT DATE := TO_DATE ('31.12.9999', 'DD.MM.YYYY'); datum_l DATE; kolicina_l NUMBER := 0; kol_dan_l NUMBER := 0; kol_sjiu_l NUMBER := 0; BEGIN IF ozn_sp_p IN ('01', '08') THEN -- valjane SJ datum_l := dat_poc_p; WHILE datum_l <= dat_zav_p LOOP kol_dan_l := 0; SELECT DECODE (ozn_jm_p, 1, COUNT (m_sj.id), SUM (br_opostelja)) INTO kol_dan_l FROM m_sj, (SELECT * FROM m_so WHERE (id = so_id_p OR so_id_p IS NULL ) AND (vuo_id_p IS NULL OR vuo_id = vuo_id_p) AND (pra_zmp_zaj.centar <> 0 OR metcvor_sifra = pra_zmp_zaj.tekuci_cvor) )so WHERE so_id = NVL (so_id_p, so_id) AND m_sj.so_id = so.id AND datum_l BETWEEN m_sj.dat_valjan AND NVL (m_sj.dat_ponisten, dat_zav_c) - 1; kolicina_l := kolicina_l + NVL (kol_dan_l, 0); datum_l := datum_l + 1; END LOOP; -- SJ izvan upotrebe SELECT DECODE (ozn_jm_p, 1, COUNT (sj.id), SUM (sj.br_opostelja)) INTO kol_sjiu_l FROM i_statusisj stsj, m_sj sj, (SELECT * FROM m_so WHERE (id = so_id_p OR so_id_p IS NULL ) AND (vuo_id_p IS NULL OR vuo_id = vuo_id_p) AND (pra_zmp_zaj.centar <> 0 OR metcvor_sifra = pra_zmp_zaj.tekuci_cvor) )so WHERE stsj.sj_id = sj.id AND stsj.datum BETWEEN dat_poc_p AND dat_zav_p AND stsj.ozn_i = 3 AND sj.so_id = NVL (so_id_p, sj.so_id) AND sj.so_id = so.id AND dat_poc_p < NVL (sj.dat_ponisten, dat_zav_c) AND dat_zav_p >= sj.dat_valjan; ELSE -- valjane SJ datum_l := dat_poc_p; WHILE datum_l <= dat_zav_p LOOP kol_dan_l := 0; SELECT DECODE (ozn_jm_p, 1, COUNT (m_sj.id), SUM (br_opostelja)) INTO kol_dan_l FROM m_sj, (SELECT * FROM m_so WHERE (id = so_id_p OR so_id_p IS NULL ) AND (vuo_id_p IS NULL OR vuo_id = vuo_id_p) AND (pra_zmp_zaj.centar <> 0 OR metcvor_sifra = pra_zmp_zaj.tekuci_cvor) )so WHERE so_id = NVL (so_id_p, so_id) AND m_sj.so_id = so.id AND datum_l BETWEEN m_sj.dat_valjan AND NVL (m_sj.dat_ponisten, dat_zav_c) - 1 AND vsj_id IN ( SELECT DISTINCT (id) FROM s_vsj WHERE id = NVL (vsj_id_p, id) AND ssj_id = NVL (ssj_id_p, ssj_id)); kolicina_l := kolicina_l + NVL (kol_dan_l, 0); datum_l := datum_l + 1; END LOOP; -- SJ izvan upotrebe SELECT DECODE (ozn_jm_p, 1, COUNT (sj.id), SUM (sj.br_opostelja)) INTO kol_sjiu_l FROM i_statusisj stsj, m_sj sj, (SELECT * FROM m_so WHERE (id = so_id_p OR so_id_p IS NULL ) AND (vuo_id_p IS NULL OR vuo_id = vuo_id_p) AND (pra_zmp_zaj.centar <> 0 OR metcvor_sifra = pra_zmp_zaj.tekuci_cvor) )so WHERE stsj.sj_id = sj.id AND stsj.datum BETWEEN dat_poc_p AND dat_zav_p AND stsj.ozn_i = 3 AND sj.so_id = NVL (so_id_p, sj.so_id) AND sj.so_id = so.id AND dat_poc_p < NVL (sj.dat_ponisten, dat_zav_c) AND dat_zav_p >= sj.dat_valjan AND sj.vsj_id IN ( SELECT DISTINCT (id) FROM s_vsj WHERE id = NVL (vsj_id_p, id) AND ssj_id = NVL (ssj_id_p, ssj_id)); END IF; kolicina_l := NVL (kolicina_l, 0) - NVL (kol_sjiu_l, 0); RETURN (kolicina_l); END; FUNCTION BROJ_REZ_SJ_BB (VSJ_ID_P IN T_REZ_VSJ.ID%TYPE ) RETURN NUMBER IS /* broj nedefiniranih SJ u rezervaciji za određenu VSJ */ broj_bb_l NUMBER(3); broj_l NUMBER(3); BEGIN SELECT COUNT (rowid) INTO broj_bb_l FROM t_rez_vsj WHERE id = vsj_id_p AND sj_id IS NOT NULL; SELECT COUNT (rowid) INTO broj_l FROM trec_rez_sj WHERE rezvsj_id = vsj_id_p AND br_osobaz IS NULL; IF broj_l <> 0 THEN broj_bb_l := broj_bb_l + broj_l; END IF; RETURN (broj_bb_l); END; FUNCTION SJ_VIP (SJ_ID_P IN T_GOSTI.SJ_ID%TYPE ,DATUM_P IN T_GOSTI.DAT_ODLASKA%TYPE ,TIP_P IN VARCHAR2 ) RETURN VARCHAR2 IS -- CURSOR sj_vip_boravak IS SELECT ozn_vip FROM t_gosti WHERE sj_id = sj_id_p AND ozn_vip IS NOT NULL AND dat_dolaska <= datum_p AND (dat_odlaska > datum_p OR (dat_odlaska = datum_p AND dat_odlaska = dat_dolaska)) ORDER BY ozn_vip ASC; CURSOR sj_vip_sve IS SELECT ozn_vip FROM t_gosti WHERE sj_id = sj_id_p AND ozn_vip IS NOT NULL AND dat_dolaska <= datum_p AND dat_odlaska >= datum_p ORDER BY ozn_vip ASC; CURSOR sj_vip_odlazak IS SELECT ozn_vip FROM t_gosti WHERE sj_id = sj_id_p AND ozn_vip IS NOT NULL AND dat_odlaska = datum_p ORDER BY ozn_vip ASC; vip_l VARCHAR2(1); BEGIN -- 1 boravak/odlazak (sve), 2 boravak, 3 odlazak IF tip_p = 1 THEN OPEN sj_vip_sve; FETCH sj_vip_sve INTO vip_l; CLOSE sj_vip_sve; ELSIF tip_p = 2 THEN OPEN sj_vip_boravak; FETCH sj_vip_boravak INTO vip_l; CLOSE sj_vip_boravak; ELSIF tip_p = 3 THEN OPEN sj_vip_odlazak; FETCH sj_vip_odlazak INTO vip_l; CLOSE sj_vip_odlazak; END IF; RETURN (vip_l); END; PROCEDURE PUNI_GLOB_REC5210_B (DAT_POC_P IN DATE ,DAT_ZAV_P IN DATE ,OJ_ID_P IN NUMBER ,SO_SIFRA1_P IN VARCHAR2 ,SO_SIFRA2_P IN VARCHAR2 ) IS gost_id_l NUMBER; age_id_l NUMBER; pkaadr_id_l NUMBER; id_zemlje_l NUMBER; sifra_zemlje_l VARCHAR2(3); dom_str_l NUMBER; stavka_id_l NUMBER; ozn_zbrajanja_l VARCHAR2(1); ozn_zbrajanja_nadr_l VARCHAR2(1); stavka_zbrajanja_id_l NUMBER; stavka_naziv_l VARCHAR2(100); iznos1_l NUMBER; iznos2_l NUMBER; iznos3_l NUMBER; iznos4_l NUMBER; iznos5_l NUMBER; iznos6_l NUMBER; BEGIN -- prec_global za bruto: -- id1 so_id -- opis1 s_szurnala.sifra || ' ' || s_szurnala.naziv -- id2 id stavke -- id3 2,3 domaci/strani -- iznos1 - iznos 6 ukupno_prihod , odbitak , ukupno_pdv , ukupno_zar_prihod , zar_odbitak_pdv , ukupno_zar_pdv FOR c_0 IN (SELECT i_zurnali.so_id so_id, s_szurnala.sifra || ' ' || s_szurnala.naziv sifranazivstavke, s_szurnala.id stavka_id FROM i_zur_usl, s_szurnala, i_zurnali WHERE i_zur_usl.szur_id = s_szurnala.id AND i_zur_usl.zur_id = i_zurnali.id AND i_zurnali.datum BETWEEN dat_poc_p AND dat_zav_p AND i_zurnali.so_id IN (SELECT DISTINCT m_so.id FROM m_so,i_zurnali zur2 WHERE m_so.oj_id IN ( SELECT id FROM m_oj WHERE id = oj_id_p UNION SELECT id FROM m_oj START WITH oj_id = oj_id_p CONNECT BY PRIOR id = oj_id) AND m_so.sifra BETWEEN NVL (so_sifra1_p, m_so.sifra) AND NVL (so_sifra2_p, m_so.sifra) AND zur2.datum BETWEEN dat_poc_p AND dat_zav_p)) LOOP INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_0.so_id,c_0.sifranazivstavke,c_0.stavka_id,2,0,0,0,0,0,0); INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_0.so_id,c_0.sifranazivstavke,c_0.stavka_id,3,0,0,0,0,0,0); END LOOP; FOR c_1 IN( SELECT i_zurnali.so_id so_id, s_szurnala.sifra || ' ' || s_szurnala.naziv stavka_naziv, pra_rec_zur.zurb_prihod_bpdv_bodb ( irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_prihod, pra_rec_zur.ZURB_ODBITAK_BPDV (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) odbitak, pra_rec_zur.ZURB_PDV (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_pdv, pra_rec_zur.ZURB_PRIHODZ_BPDV (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_zar_prihod, pra_rec_zur.ZURB_ODBITAKZ_BPDV (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) pdv_u_odbitku, pra_rec_zur.ZUR_PDVZ (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_zar_pdv, s_szurnala.id stavka_id, s_szurnala.ozn_zbrajanja ozn_zbrajanja, s_szurnala.szur_id stavka_zbrajanja_id, irec_zurusl_tro.id1_tro id1_tro FROM i_zur_usl, s_szurnala, i_zurnali, irec_zurusl_tro WHERE i_zur_usl.szur_id = s_szurnala.id AND i_zur_usl.zur_id = i_zurnali.id AND i_zurnali.datum BETWEEN dat_poc_p AND dat_zav_p AND irec_zurusl_tro.zurusl_id = i_zur_usl.id AND i_zurnali.so_id IN (SELECT DISTINCT m_so.id FROM m_so,i_zurnali zur2 WHERE m_so.oj_id IN ( SELECT id FROM m_oj WHERE id = oj_id_p UNION SELECT id FROM m_oj START WITH oj_id = oj_id_p CONNECT BY PRIOR id = oj_id) AND m_so.sifra BETWEEN NVL (so_sifra1_p, m_so.sifra) AND NVL (so_sifra2_p, m_so.sifra) AND zur2.datum BETWEEN dat_poc_p AND dat_zav_p)) LOOP -- irec_zurusl_tro - domaci ili strani IF c_1.id1_tro IS NULL THEN dom_str_l := 2; END IF; IF c_1.id1_tro IS NOT NULL THEN gost_id_l := NULL; age_id_l := NULL; pkaadr_id_l := NULL; BEGIN SELECT gost_id,age_id,pkaadr_id INTO gost_id_l,age_id_l,pkaadr_id_l from t_troskovi where id1 = c_1.id1_tro; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; BEGIN SELECT gost_id,age_id,pkaadr_id INTO gost_id_l,age_id_l,pkaadr_id_l from l_troskovi where id1 = c_1.id1_tro; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; IF gost_id_l IS NOT NULL THEN select zem_id into id_zemlje_l from t_gosti where id = gost_id_l; END IF; IF age_id_l IS NOT NULL THEN select zem_id into id_zemlje_l from m_agencije where id = age_id_l; END IF; IF pkaadr_id_l IS NOT NULL THEN select zem_id into id_zemlje_l from mpka_adrese where id = pkaadr_id_l; END IF; SELECT sifra_2a into sifra_zemlje_l from s_zemlje where id = id_zemlje_l; IF sifra_zemlje_l = pra_zmp_zaj.vrijednost_parametra ('0002') THEN dom_str_l := 2; ELSE dom_str_l := 3; END IF; END IF; -- end irec_zurusl_tro - domaci ili strani stavka_id_l := c_1.stavka_id; stavka_naziv_l := c_1.stavka_naziv; ozn_zbrajanja_l := c_1.ozn_zbrajanja; stavka_zbrajanja_id_l := c_1.stavka_zbrajanja_id; iznos1_l := c_1.ukupno_prihod; iznos2_l := c_1.odbitak; iznos3_l := c_1.ukupno_pdv; iznos4_l := c_1.ukupno_zar_prihod; iznos5_l := c_1.pdv_u_odbitku; iznos6_l := c_1.ukupno_zar_pdv; -- kreiranje slog u global za stavku INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_1.so_id,stavka_naziv_l,stavka_id_l,dom_str_l,c_1.ukupno_prihod,c_1.odbitak,c_1.ukupno_pdv, c_1.ukupno_zar_prihod,c_1.pdv_u_odbitku,c_1.ukupno_zar_pdv); LOOP IF stavka_zbrajanja_id_l IS NOT NULL THEN IF ozn_zbrajanja_l = '-' THEN iznos1_l := iznos1_l * -1; iznos2_l := iznos2_l * -1; iznos3_l := iznos3_l * -1; iznos4_l := iznos4_l * -1; iznos5_l := iznos5_l * -1; iznos6_l := iznos6_l * -1; END IF; SELECT id, sifra || ' ' || naziv, ozn_zbrajanja, szur_id INTO stavka_id_l,stavka_naziv_l,ozn_zbrajanja_nadr_l,stavka_zbrajanja_id_l from s_szurnala where id = stavka_zbrajanja_id_l; INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_1.so_id,stavka_naziv_l,stavka_id_l,dom_str_l,iznos1_l,iznos2_l,iznos3_l, iznos4_l,iznos5_l,iznos6_l); ozn_zbrajanja_l := ozn_zbrajanja_nadr_l; ELSE EXIT; END IF; END LOOP; END LOOP; END; PROCEDURE PUNI_GLOB_REC5210_N (DAT_POC_P IN DATE ,DAT_ZAV_P IN DATE ,OJ_ID_P IN NUMBER ,SO_SIFRA1_P IN VARCHAR2 ,SO_SIFRA2_P IN VARCHAR2 ) IS gost_id_l NUMBER; age_id_l NUMBER; pkaadr_id_l NUMBER; id_zemlje_l NUMBER; sifra_zemlje_l VARCHAR2(3); dom_str_l NUMBER; stavka_id_l NUMBER; ozn_zbrajanja_l VARCHAR2(1); ozn_zbrajanja_nadr_l VARCHAR2(1); stavka_zbrajanja_id_l NUMBER; stavka_naziv_l VARCHAR2(100); iznos1_l NUMBER; iznos2_l NUMBER; iznos3_l NUMBER; iznos4_l NUMBER; iznos5_l NUMBER; iznos6_l NUMBER; BEGIN -- prec_global za bruto: -- id1 so_id -- opis1 s_szurnala.sifra || ' ' || s_szurnala.naziv -- id2 id stavke -- id3 2,3 domaci/strani -- iznos1 - iznos 6 ukupno_prihod , ukupno_zar_prihod , neto_odbitak , ukupno_pdv , ukupno_zar_pdv, odbitak FOR c_0 IN (SELECT i_zurnali.so_id so_id, s_szurnala.sifra || ' ' || s_szurnala.naziv sifranazivstavke, s_szurnala.id stavka_id FROM i_zur_usl, s_szurnala, i_zurnali WHERE i_zur_usl.szur_id = s_szurnala.id AND i_zur_usl.zur_id = i_zurnali.id AND i_zurnali.datum BETWEEN dat_poc_p AND dat_zav_p AND i_zurnali.so_id IN (SELECT DISTINCT m_so.id FROM m_so,i_zurnali zur2 WHERE m_so.oj_id IN ( SELECT id FROM m_oj WHERE id = oj_id_p UNION SELECT id FROM m_oj START WITH oj_id = oj_id_p CONNECT BY PRIOR id = oj_id) AND m_so.sifra BETWEEN NVL (so_sifra1_p, m_so.sifra) AND NVL (so_sifra2_p, m_so.sifra) AND zur2.datum BETWEEN dat_poc_p AND dat_zav_p)) LOOP INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_0.so_id,c_0.sifranazivstavke,c_0.stavka_id,2,0,0,0,0,0,0); INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_0.so_id,c_0.sifranazivstavke,c_0.stavka_id,3,0,0,0,0,0,0); END LOOP; FOR c_1 IN( SELECT i_zurnali.so_id so_id, s_szurnala.sifra || ' ' || s_szurnala.naziv stavka_naziv, pra_rec_zur.ZURN_PRIHOD_BODB (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_prihod, pra_rec_zur.ZURN_ODBITAK (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) odbitak, pra_rec_zur.ZURN_PRIHODZ_BODB (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_zar_prihod, pra_rec_zur.ZURN_ODBITAKZ (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) neto_odbitak, pra_rec_zur.ZURN_PDV (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_pdv, pra_rec_zur.ZUR_PDVZ (irec_zurusl_tro.IZN_PRIHODA_NZ ,irec_zurusl_tro.IZN_PDV_NZ ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,irec_zurusl_tro.IZN_ODBITKA_NZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_NZ ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_zar_pdv, s_szurnala.id stavka_id, s_szurnala.ozn_zbrajanja ozn_zbrajanja, s_szurnala.szur_id stavka_zbrajanja_id, irec_zurusl_tro.id1_tro id1_tro FROM i_zur_usl, s_szurnala, i_zurnali, irec_zurusl_tro WHERE i_zur_usl.szur_id = s_szurnala.id AND i_zur_usl.zur_id = i_zurnali.id AND i_zurnali.datum BETWEEN dat_poc_p AND dat_zav_p AND irec_zurusl_tro.zurusl_id = i_zur_usl.id AND i_zurnali.so_id IN (SELECT DISTINCT m_so.id FROM m_so,i_zurnali zur2 WHERE m_so.oj_id IN ( SELECT id FROM m_oj WHERE id = oj_id_p UNION SELECT id FROM m_oj START WITH oj_id = oj_id_p CONNECT BY PRIOR id = oj_id) AND m_so.sifra BETWEEN NVL (so_sifra1_p, m_so.sifra) AND NVL (so_sifra2_p, m_so.sifra) AND zur2.datum BETWEEN dat_poc_p AND dat_zav_p)) LOOP -- irec_zurusl_tro - domaci ili strani IF c_1.id1_tro IS NULL THEN dom_str_l := 2; END IF; IF c_1.id1_tro IS NOT NULL THEN gost_id_l := NULL; age_id_l := NULL; pkaadr_id_l := NULL; BEGIN SELECT gost_id,age_id,pkaadr_id INTO gost_id_l,age_id_l,pkaadr_id_l from t_troskovi where id1 = c_1.id1_tro; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; BEGIN SELECT gost_id,age_id,pkaadr_id INTO gost_id_l,age_id_l,pkaadr_id_l from l_troskovi where id1 = c_1.id1_tro; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; IF gost_id_l IS NOT NULL THEN select zem_id into id_zemlje_l from t_gosti where id = gost_id_l; END IF; IF age_id_l IS NOT NULL THEN select zem_id into id_zemlje_l from m_agencije where id = age_id_l; END IF; IF pkaadr_id_l IS NOT NULL THEN select zem_id into id_zemlje_l from mpka_adrese where id = pkaadr_id_l; END IF; SELECT sifra_2a into sifra_zemlje_l from s_zemlje where id = id_zemlje_l; IF sifra_zemlje_l = pra_zmp_zaj.vrijednost_parametra ('0002') THEN dom_str_l := 2; ELSE dom_str_l := 3; END IF; END IF; -- end irec_zurusl_tro - domaci ili strani stavka_id_l := c_1.stavka_id; stavka_naziv_l := c_1.stavka_naziv; ozn_zbrajanja_l := c_1.ozn_zbrajanja; stavka_zbrajanja_id_l := c_1.stavka_zbrajanja_id; iznos1_l := c_1.ukupno_prihod; iznos2_l := c_1.ukupno_zar_prihod; iznos3_l := c_1.neto_odbitak; iznos4_l := c_1.ukupno_pdv; iznos5_l := c_1.ukupno_zar_pdv; iznos6_l := c_1.odbitak; -- kreiranje slog u global za stavku INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_1.so_id,stavka_naziv_l,stavka_id_l,dom_str_l,c_1.ukupno_prihod,c_1.ukupno_zar_prihod,c_1.neto_odbitak, c_1.ukupno_pdv,c_1.ukupno_zar_pdv,c_1.odbitak); LOOP IF stavka_zbrajanja_id_l IS NOT NULL THEN IF ozn_zbrajanja_l = '-' THEN iznos1_l := iznos1_l * -1; iznos2_l := iznos2_l * -1; iznos3_l := iznos3_l * -1; iznos4_l := iznos4_l * -1; iznos5_l := iznos5_l * -1; iznos6_l := iznos6_l * -1; END IF; SELECT id, sifra || ' ' || naziv, ozn_zbrajanja, szur_id INTO stavka_id_l,stavka_naziv_l,ozn_zbrajanja_nadr_l,stavka_zbrajanja_id_l from s_szurnala where id = stavka_zbrajanja_id_l; INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_1.so_id,stavka_naziv_l,stavka_id_l,dom_str_l,iznos1_l,iznos2_l,iznos3_l, iznos4_l,iznos5_l,iznos6_l); ozn_zbrajanja_l := ozn_zbrajanja_nadr_l; ELSE EXIT; END IF; END LOOP; END LOOP; END; PROCEDURE PUNI_GLOB_REC5210_DOK_B (DAT_POC_P IN DATE ,DAT_ZAV_P IN DATE ,OJ_ID_P IN NUMBER ,SO_SIFRA1_P IN VARCHAR2 ,SO_SIFRA2_P IN VARCHAR2 ,VAPLDOK_ID_P NUMBER ) IS gost_id_l NUMBER; age_id_l NUMBER; pkaadr_id_l NUMBER; id_zemlje_l NUMBER; sifra_zemlje_l VARCHAR2(3); dom_str_l NUMBER; stavka_id_l NUMBER; ozn_zbrajanja_l VARCHAR2(1); ozn_zbrajanja_nadr_l VARCHAR2(1); stavka_zbrajanja_id_l NUMBER; stavka_naziv_l VARCHAR2(100); iznos1_l NUMBER; iznos2_l NUMBER; iznos3_l NUMBER; iznos4_l NUMBER; iznos5_l NUMBER; iznos6_l NUMBER; BEGIN -- prec_global za bruto: -- id1 so_id -- opis1 s_szurnala.sifra || ' ' || s_szurnala.naziv -- id2 id stavke -- id3 4 jedan apl dokument -- iznos1 - iznos 6 ukupno_prihod , odbitak , ukupno_pdv , ukupno_zar_prihod , zar_odbitak_pdv , ukupno_zar_pdv FOR c_0 IN (SELECT i_zurnali.so_id so_id, s_szurnala.sifra || ' ' || s_szurnala.naziv sifranazivstavke, s_szurnala.id stavka_id FROM i_zur_usl, s_szurnala, i_zurnali WHERE i_zur_usl.szur_id = s_szurnala.id AND i_zur_usl.zur_id = i_zurnali.id AND i_zurnali.datum BETWEEN dat_poc_p AND dat_zav_p AND i_zurnali.so_id IN (SELECT DISTINCT m_so.id FROM m_so,i_zurnali zur2 WHERE m_so.oj_id IN ( SELECT id FROM m_oj WHERE id = oj_id_p UNION SELECT id FROM m_oj START WITH oj_id = oj_id_p CONNECT BY PRIOR id = oj_id) AND m_so.sifra BETWEEN NVL (so_sifra1_p, m_so.sifra) AND NVL (so_sifra2_p, m_so.sifra) AND zur2.datum BETWEEN dat_poc_p AND dat_zav_p)) LOOP INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_0.so_id,c_0.sifranazivstavke,c_0.stavka_id,4,0,0,0,0,0,0); END LOOP; FOR c_1 IN( SELECT i_zurnali.so_id so_id, s_szurnala.sifra || ' ' || s_szurnala.naziv stavka_naziv, pra_rec_zur.zurb_prihod_bpdv_bodb ( 0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_prihod, pra_rec_zur.ZURB_ODBITAK_BPDV (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) odbitak, pra_rec_zur.ZURB_PDV (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_pdv, pra_rec_zur.ZURB_PRIHODZ_BPDV (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_zar_prihod, pra_rec_zur.ZURB_ODBITAKZ_BPDV (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) pdv_u_odbitku, pra_rec_zur.ZUR_PDVZ (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_zar_pdv, s_szurnala.id stavka_id, s_szurnala.ozn_zbrajanja ozn_zbrajanja, s_szurnala.szur_id stavka_zbrajanja_id, irec_zurusl_tro.id1_tro id1_tro FROM i_zur_usl, s_szurnala, i_zurnali, irec_zurusl_tro, t_troskovi, t_racuni WHERE i_zur_usl.szur_id = s_szurnala.id AND i_zur_usl.zur_id = i_zurnali.id AND i_zurnali.datum BETWEEN dat_poc_p AND dat_zav_p AND irec_zurusl_tro.zurusl_id = i_zur_usl.id AND i_zurnali.so_id IN (SELECT DISTINCT m_so.id FROM m_so,i_zurnali zur2 WHERE m_so.oj_id IN ( SELECT id FROM m_oj WHERE id = oj_id_p UNION SELECT id FROM m_oj START WITH oj_id = oj_id_p CONNECT BY PRIOR id = oj_id) AND m_so.sifra BETWEEN NVL (so_sifra1_p, m_so.sifra) AND NVL (so_sifra2_p, m_so.sifra) AND zur2.datum BETWEEN dat_poc_p AND dat_zav_p) AND irec_zurusl_tro.id1_tro = t_troskovi.id1 AND t_troskovi.rac_id = t_racuni.id AND t_racuni.vapldok_id = vapldok_id_p) LOOP -- za id3 vrsta sloga je jedan dokument dom_str_l := 4; stavka_id_l := c_1.stavka_id; stavka_naziv_l := c_1.stavka_naziv; ozn_zbrajanja_l := c_1.ozn_zbrajanja; stavka_zbrajanja_id_l := c_1.stavka_zbrajanja_id; iznos1_l := c_1.ukupno_prihod; iznos2_l := c_1.odbitak; iznos3_l := c_1.ukupno_pdv; iznos4_l := c_1.ukupno_zar_prihod; iznos5_l := c_1.pdv_u_odbitku; iznos6_l := c_1.ukupno_zar_pdv; -- kreiranje slog u global za stavku INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_1.so_id,stavka_naziv_l,stavka_id_l,dom_str_l,c_1.ukupno_prihod,c_1.odbitak,c_1.ukupno_pdv, c_1.ukupno_zar_prihod,c_1.pdv_u_odbitku,c_1.ukupno_zar_pdv); LOOP IF stavka_zbrajanja_id_l IS NOT NULL THEN IF ozn_zbrajanja_l = '-' THEN iznos1_l := iznos1_l * -1; iznos2_l := iznos2_l * -1; iznos3_l := iznos3_l * -1; iznos4_l := iznos4_l * -1; iznos5_l := iznos5_l * -1; iznos6_l := iznos6_l * -1; END IF; SELECT id, sifra || ' ' || naziv, ozn_zbrajanja, szur_id INTO stavka_id_l,stavka_naziv_l,ozn_zbrajanja_nadr_l,stavka_zbrajanja_id_l from s_szurnala where id = stavka_zbrajanja_id_l; INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_1.so_id,stavka_naziv_l,stavka_id_l,dom_str_l,iznos1_l,iznos2_l,iznos3_l, iznos4_l,iznos5_l,iznos6_l); ozn_zbrajanja_l := ozn_zbrajanja_nadr_l; ELSE EXIT; END IF; END LOOP; END LOOP; END; PROCEDURE PUNI_GLOB_REC5210_DOK_N (DAT_POC_P IN DATE ,DAT_ZAV_P IN DATE ,OJ_ID_P IN NUMBER ,SO_SIFRA1_P IN VARCHAR2 ,SO_SIFRA2_P IN VARCHAR2 ,VAPLDOK_ID_P NUMBER ) IS gost_id_l NUMBER; age_id_l NUMBER; pkaadr_id_l NUMBER; id_zemlje_l NUMBER; sifra_zemlje_l VARCHAR2(3); dom_str_l NUMBER; stavka_id_l NUMBER; ozn_zbrajanja_l VARCHAR2(1); ozn_zbrajanja_nadr_l VARCHAR2(1); stavka_zbrajanja_id_l NUMBER; stavka_naziv_l VARCHAR2(100); iznos1_l NUMBER; iznos2_l NUMBER; iznos3_l NUMBER; iznos4_l NUMBER; iznos5_l NUMBER; iznos6_l NUMBER; BEGIN -- prec_global za bruto: -- id1 so_id -- opis1 s_szurnala.sifra || ' ' || s_szurnala.naziv -- id2 id stavke -- id3 4 jedan apl dokument -- iznos1 - iznos 6 ukupno_prihod , ukupno_zar_prihod , neto_odbitak , ukupno_pdv , ukupno_zar_pdv, odbitak FOR c_0 IN (SELECT i_zurnali.so_id so_id, s_szurnala.sifra || ' ' || s_szurnala.naziv sifranazivstavke, s_szurnala.id stavka_id FROM i_zur_usl, s_szurnala, i_zurnali WHERE i_zur_usl.szur_id = s_szurnala.id AND i_zur_usl.zur_id = i_zurnali.id AND i_zurnali.datum BETWEEN dat_poc_p AND dat_zav_p AND i_zurnali.so_id IN (SELECT DISTINCT m_so.id FROM m_so,i_zurnali zur2 WHERE m_so.oj_id IN ( SELECT id FROM m_oj WHERE id = oj_id_p UNION SELECT id FROM m_oj START WITH oj_id = oj_id_p CONNECT BY PRIOR id = oj_id) AND m_so.sifra BETWEEN NVL (so_sifra1_p, m_so.sifra) AND NVL (so_sifra2_p, m_so.sifra) AND zur2.datum BETWEEN dat_poc_p AND dat_zav_p)) LOOP INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_0.so_id,c_0.sifranazivstavke,c_0.stavka_id,4,0,0,0,0,0,0); END LOOP; FOR c_1 IN( SELECT i_zurnali.so_id so_id, s_szurnala.sifra || ' ' || s_szurnala.naziv stavka_naziv, pra_rec_zur.ZURN_PRIHOD_BODB (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_prihod, pra_rec_zur.ZURN_ODBITAK (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) odbitak, pra_rec_zur.ZURN_PRIHODZ_BODB (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_zar_prihod, pra_rec_zur.ZURN_ODBITAKZ (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) neto_odbitak, pra_rec_zur.ZURN_PDV (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_pdv, pra_rec_zur.ZUR_PDVZ (0 ,0 ,irec_zurusl_tro.IZN_PRIHODA_Z ,irec_zurusl_tro.IZN_PDV_Z ,irec_zurusl_tro.IZN_PRIHODA_UZ ,irec_zurusl_tro.IZN_PDV_UZ ,0 ,0 ,irec_zurusl_tro.IZN_ODBITKA_Z ,irec_zurusl_tro.IZN_ODBITKA_PDV_Z ,irec_zurusl_tro.IZN_ODBITKA_UZ ,irec_zurusl_tro.IZN_ODBITKA_PDV_UZ) ukupno_zar_pdv, s_szurnala.id stavka_id, s_szurnala.ozn_zbrajanja ozn_zbrajanja, s_szurnala.szur_id stavka_zbrajanja_id, irec_zurusl_tro.id1_tro id1_tro FROM i_zur_usl, s_szurnala, i_zurnali, irec_zurusl_tro, t_troskovi, t_racuni WHERE i_zur_usl.szur_id = s_szurnala.id AND i_zur_usl.zur_id = i_zurnali.id AND i_zurnali.datum BETWEEN dat_poc_p AND dat_zav_p AND irec_zurusl_tro.zurusl_id = i_zur_usl.id AND i_zurnali.so_id IN (SELECT DISTINCT m_so.id FROM m_so,i_zurnali zur2 WHERE m_so.oj_id IN ( SELECT id FROM m_oj WHERE id = oj_id_p UNION SELECT id FROM m_oj START WITH oj_id = oj_id_p CONNECT BY PRIOR id = oj_id) AND m_so.sifra BETWEEN NVL (so_sifra1_p, m_so.sifra) AND NVL (so_sifra2_p, m_so.sifra) AND zur2.datum BETWEEN dat_poc_p AND dat_zav_p) AND irec_zurusl_tro.id1_tro = t_troskovi.id1 AND t_troskovi.rac_id = t_racuni.id AND t_racuni.vapldok_id = vapldok_id_p) LOOP -- za id3 vrsta sloga je jedan dokument dom_str_l := 4; stavka_id_l := c_1.stavka_id; stavka_naziv_l := c_1.stavka_naziv; ozn_zbrajanja_l := c_1.ozn_zbrajanja; stavka_zbrajanja_id_l := c_1.stavka_zbrajanja_id; iznos1_l := c_1.ukupno_prihod; iznos2_l := c_1.ukupno_zar_prihod; iznos3_l := c_1.neto_odbitak; iznos4_l := c_1.ukupno_pdv; iznos5_l := c_1.ukupno_zar_pdv; iznos6_l := c_1.odbitak; -- kreiranje slog u global za stavku INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_1.so_id,stavka_naziv_l,stavka_id_l,dom_str_l,c_1.ukupno_prihod,c_1.ukupno_zar_prihod,c_1.neto_odbitak, c_1.ukupno_pdv,c_1.ukupno_zar_pdv,c_1.odbitak); LOOP IF stavka_zbrajanja_id_l IS NOT NULL THEN IF ozn_zbrajanja_l = '-' THEN iznos1_l := iznos1_l * -1; iznos2_l := iznos2_l * -1; iznos3_l := iznos3_l * -1; iznos4_l := iznos4_l * -1; iznos5_l := iznos5_l * -1; iznos6_l := iznos6_l * -1; END IF; SELECT id, sifra || ' ' || naziv, ozn_zbrajanja, szur_id INTO stavka_id_l,stavka_naziv_l,ozn_zbrajanja_nadr_l,stavka_zbrajanja_id_l from s_szurnala where id = stavka_zbrajanja_id_l; INSERT INTO prec_global (id1,opis1,id2,id3,iznos1,iznos2,iznos3,iznos4,iznos5,iznos6) VALUES (c_1.so_id,stavka_naziv_l,stavka_id_l,dom_str_l,iznos1_l,iznos2_l,iznos3_l, iznos4_l,iznos5_l,iznos6_l); ozn_zbrajanja_l := ozn_zbrajanja_nadr_l; ELSE EXIT; END IF; END LOOP; END LOOP; END; FUNCTION IZN_PRIJENOSA_TRO_NZ (DATUM_P IN T_TROSKOVI.DAT_POC%TYPE ,IZN_PRIHODA_P IN t_troskovi.izn_prihoda%TYPE ,IZN_ODBITKA_POC_P IN t_troskovi.izn_odbitka_poc%type ,OBR_ZDANA_POC_P IN T_TROSKOVI.OBR_ZDANA%TYPE ,DAT_POC_P IN T_TROSKOVI.DAT_POC%TYPE ,DAT_ZAV_P IN T_TROSKOVI.DAT_ZAV%TYPE ,IZN_PRIHODA_PRVIDAN_P IN t_troskovi.izn_prihoda_prvidan%type ,USL_ID1_P IN t_troskovi.usl_id1%type ,DAT_POC1_P IN T_TROSKOVI.DAT_POC%TYPE ,DAT_ZAV1_P IN T_TROSKOVI.DAT_ZAV%TYPE ,OZN_PRIJENOSA_P IN VARCHAR2 ,OZN_NZ_UZ_P IN VARCHAR2 ) RETURN NUMBER IS IZN_PRIJENOSA_TRO_L T_TROSKOVI.IZNOS%TYPE; IZN_PRIJENOSA_USL_L T_TROSKOVI.IZNOS%TYPE; IZN_PRIJENOSA_USL1_L T_TROSKOVI.IZNOS%TYPE; /* Funkcija se koristi u REC5350 Ostali prilozi žurnala, Popis troškova u prijenosu, računa iznos prijenosa za trošak - NZ - u prijenos ulaze sve usluge koje su bile upisane prije ili na datum_p i za koje ili razdoblje ili razdoblje1 počinje prije ili na datum_p (i nisu do datuma_p zaračunate - ali tu provjeru ne radi procedura) - UZ - u prijenos ulaze sve usluge koje su bile zaračunate prije ili na datum_p a nešto će se knjižiti nakon tog datuma - ako je popunjena usl1 iznos usluge je 0 ali prijenos na datum_p ne mora biti nula ako su razdoblje i razdoblje1 različiti - prijenos = prijenos_usl - prijenos_usl1 - ozn_prijenosa_p: 'TRO' --> prijenos za trošak = prijenos_usl - prijenos_usl1 'USL'--> prijenos za usl 'USL1'--> prijenos za usl1 */ /* pra_rec_rm.izn_prijenosa_tro_nz( datum_p => ,izn_prihoda_p => ,izn_odbitka_poc_p => ,obr_zdana_poc_p => ,dat_poc_p => ,dat_zav_p => ,izn_prihoda_prvidan_p => ,usl_id1_p => ,dat_poc1_p => ,dat_zav1_p => ,ozn_prijenosa_p => ,ozn_nz_uz_p => ) */ BEGIN -- izračun prijenosa za nezaračunate troškove IF ozn_nz_uz_p = 'NZ' THEN -- prijenos za usl se računa prema razdoblju IF dat_poc_p <= datum_p THEN IF dat_zav_p <= datum_p THEN izn_prijenosa_usl_l := (izn_prihoda_p - izn_odbitka_poc_p)* pra_rec2.br_dana_troska (obr_zdana_poc_p, dat_poc_p, dat_zav_p); ELSE izn_prijenosa_usl_l := (izn_prihoda_prvidan_p - izn_odbitka_poc_p) + (izn_prihoda_p - izn_odbitka_poc_p) * (datum_p - dat_poc_p); END IF; END IF; -- prijenos za usl1 IF usl_id1_p IS NULL THEN izn_prijenosa_usl1_l := 0; ELSIF dat_poc1_p IS NULL THEN izn_prijenosa_usl1_l := izn_prijenosa_usl_l; ELSE IF dat_poc1_p <= datum_p THEN IF dat_zav1_p <= datum_p THEN izn_prijenosa_usl1_l := (ROUND (izn_prihoda_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_poc_p / (dat_zav1_p - dat_poc1_p), 2)) * pra_rec2.br_dana_troska (0, dat_poc1_p, dat_zav1_p); ELSE izn_prijenosa_usl1_l := (ROUND (izn_prihoda_prvidan_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_poc_p / (dat_zav1_p - dat_poc1_p), 2)) + (ROUND (izn_prihoda_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_poc_p / (dat_zav1_p - dat_poc1_p), 2)) * (datum_p - dat_poc1_p); END IF; END IF; END IF; -- izračun prijenosa za unaprijed zaračunate troškove ELSIF ozn_nz_uz_p = 'UZ' THEN -- prijenos za usl se računa prema razdoblju IF dat_zav_p > datum_p + 1 AND obr_zdana_poc_p = 0 OR dat_zav_p = datum_p + 1 AND obr_zdana_poc_p = 0 AND (izn_prihoda_p <> izn_prihoda_prvidan_p) -- u tom slučaju mora se knjižiti razlika zadnji dan OR dat_zav_p > datum_p AND obr_zdana_poc_p = -1 THEN IF dat_poc_p <= datum_p THEN izn_prijenosa_usl_l := (izn_prihoda_p - izn_odbitka_poc_p)* pra_rec2.br_dana_troska (obr_zdana_poc_p, datum_p + 1, dat_zav_p) * -1 -- tu se zadnji dan za usluge koje se zadnji dan ne računaju NE uzima + (izn_prihoda_p - izn_prihoda_prvidan_p) * (1 + obr_zdana_poc_p) * -1; -- dodano da se zadnji dan uzima razlika ako je obr_zdana_poc = 0 ELSE izn_prijenosa_usl_l := (izn_prihoda_p - izn_odbitka_poc_p)* pra_rec2.br_dana_troska (obr_zdana_poc_p, dat_poc_p, dat_zav_p) * -1; END IF; END IF; -- prijenos za usl1 IF usl_id1_p IS NULL THEN izn_prijenosa_usl1_l := 0; ELSIF dat_zav1_p IS NULL THEN izn_prijenosa_usl1_l := izn_prijenosa_usl_l; ELSE IF dat_zav1_p > datum_p + 1 THEN -- dovoljan je ovaj uvjet jer je za razdoblje1 obr_zdana_poc_p = 0 a prihod = prihod prvidan IF dat_poc1_p <= datum_p THEN izn_prijenosa_usl1_l := (ROUND (izn_prihoda_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_poc_p / (dat_zav1_p - dat_poc1_p), 2)) * pra_rec2.br_dana_troska (0, datum_p + 1, dat_zav1_p) * -1 + (ROUND (izn_prihoda_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_prihoda_prvidan_p / (dat_zav1_p - dat_poc1_p), 2)) * -1; -- taj redak će biti 0 jer je za razdoblje 1 prihod = prihod prvidan ELSE izn_prijenosa_usl1_l := (ROUND (izn_prihoda_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_poc_p / (dat_zav1_p - dat_poc1_p), 2)) * pra_rec2.br_dana_troska (0, dat_poc1_p, dat_zav1_p) * -1; END IF; END IF; END IF; END IF; IF ozn_prijenosa_p = 'TRO' THEN izn_prijenosa_tro_l := NVL (izn_prijenosa_usl_l, 0) - NVL (izn_prijenosa_usl1_l, 0); ELSIF ozn_prijenosa_p = 'USL1' THEN izn_prijenosa_tro_l := NVL (izn_prijenosa_usl1_l, 0); ELSE izn_prijenosa_tro_l := NVL (izn_prijenosa_usl_l, 0); END IF; RETURN (izn_prijenosa_tro_l); END; FUNCTION IZN_PRIJENOSA_PDV_USL1_NZ (DATUM_P IN T_TROSKOVI.DAT_POC%TYPE ,IZN_PDV_POC1_P IN t_troskovi.izn_pdv_poc1%TYPE ,IZN_ODBITKA_PDV_POC1_P IN t_troskovi.izn_odbitka_pdv_poc%type ,OBR_ZDANA_POC_P IN T_TROSKOVI.OBR_ZDANA%TYPE ,DAT_POC_P IN T_TROSKOVI.DAT_POC%TYPE ,DAT_ZAV_P IN T_TROSKOVI.DAT_ZAV%TYPE ,IZN_PDV_PRVIDAN1_P IN t_troskovi.izn_pdv_prvidan1%type ,USL_ID1_P IN t_troskovi.usl_id1%type ,DAT_POC1_P IN T_TROSKOVI.DAT_POC%TYPE ,DAT_ZAV1_P IN T_TROSKOVI.DAT_ZAV%TYPE ,OZN_NZ_UZ_P IN VARCHAR2 ) RETURN NUMBER IS IZN_PRIJENOSA_PDV_USL1_L T_TROSKOVI.IZNOS%TYPE; /* Funkcija se koristi u REC5350 Ostali prilozi žurnala, Popis troškova u prijenosu, računa iznos prijenosa pdv za uslugu1 - NZ - u prijenos ulaze sve usluge koje su bile upisane prije ili na datum_p i za koje ili razdoblje ili razdoblje1 počinje prije ili na datum_p (i nisu do datuma_p zaračunate - ali tu provjeru ne radi procedura) - UZ - u prijenos ulaze sve usluge koje su bile zaračunate prije ili na datum_p a nešto će se knjižiti nakon tog datuma - prijenos pdv za usl i usl1 se može razlikovati zbog različitih poreznih stopa i različitih razdoblja - odvojene su funkcije za USL i USL1 zbog različitih parametara a iznos za tro nije potreban */ /* pra_rec_rm.izn_prijenosa_pdv_usl1_nz( datum_p => ,izn_pdv_poc1_p => ,izn_odbitka_pdv_poc1_p => ,obr_zdana_poc1_p => ,dat_poc_p => ,dat_zav_p => ,izn_pdv_prvidan1_p => ,usl_id1_p => ,dat_poc1_p => ,dat_zav1_p => ,ozn_nz_uz_p => ) */ BEGIN -- izračun prijenosa pdv za usl1 za nezaračunate troškove IF ozn_nz_uz_p = 'NZ' THEN -- prijenos pdv za usl1 IF usl_id1_p IS NULL THEN izn_prijenosa_pdv_usl1_l := 0; ELSIF dat_poc1_p IS NULL THEN -- razdoblje1 nije upisano, koristi se razdoblje IF dat_poc_p <= datum_p THEN IF dat_zav_p <= datum_p THEN izn_prijenosa_pdv_usl1_l := (izn_pdv_poc1_p - izn_odbitka_pdv_poc1_p)* pra_rec2.br_dana_troska (obr_zdana_poc_p, dat_poc_p, dat_zav_p); ELSE izn_prijenosa_pdv_usl1_l := (izn_pdv_prvidan1_p - izn_odbitka_pdv_poc1_p) + --(izn_pdv_poc1_p - izn_odbitka_pdv_poc1_p) * (datum_p - dat_poc1_p); MK 24.05.2011 (izn_pdv_poc1_p - izn_odbitka_pdv_poc1_p) * (datum_p - dat_poc_p); END IF; END IF; ELSE -- razdoblje1 IF dat_poc1_p <= datum_p THEN IF dat_zav1_p <= datum_p THEN izn_prijenosa_pdv_usl1_l := (ROUND (izn_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2)) * pra_rec2.br_dana_troska (0, dat_poc1_p, dat_zav1_p); ELSE izn_prijenosa_pdv_usl1_l := (ROUND (izn_pdv_prvidan1_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2)) + (ROUND (izn_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2)) * (datum_p - dat_poc1_p); END IF; END IF; END IF; -- izračun prijenosa PDV za usl1 za unaprijed zaračunate troškove ELSIF ozn_nz_uz_p = 'UZ' THEN IF usl_id1_p IS NULL THEN izn_prijenosa_pdv_usl1_l := 0; ELSIF dat_zav1_p IS NULL THEN -- razdoblje1 nije upisano, koristi se razdoblje IF dat_zav_p > datum_p + 1 AND obr_zdana_poc_p = 0 OR dat_zav_p = datum_p + 1 AND obr_zdana_poc_p = 0 AND (izn_pdv_poc1_p <> izn_pdv_prvidan1_p) -- u tom slučaju mora se knjižiti razlika zadnji dan OR dat_zav_p > datum_p AND obr_zdana_poc_p = -1 THEN IF dat_poc_p <= datum_p THEN izn_prijenosa_pdv_usl1_l := (izn_pdv_poc1_p - izn_odbitka_pdv_poc1_p)* pra_rec2.br_dana_troska (obr_zdana_poc_p, datum_p + 1, dat_zav_p) * -1 -- tu se zadnji dan za usluge koje se zadnji dan ne računaju NE uzima + (izn_pdv_poc1_p - izn_pdv_prvidan1_p) * (1 + obr_zdana_poc_p) * -1; -- dodano da se zadnji dan uzima razlika ako je obr_zdana_poc = 0 ELSE izn_prijenosa_pdv_usl1_l := (izn_pdv_poc1_p - izn_odbitka_pdv_poc1_p) * pra_rec2.br_dana_troska (obr_zdana_poc_p, dat_poc_p, dat_zav_p) * -1; END IF; END IF; ELSE -- razdoblje1 je upisano IF dat_zav_p > datum_p + 1 -- dovoljan je ovaj uvjet jer je za razdoblje1 obr_zdana_poc_p = 0 a prihod = prihod prvidan THEN IF dat_poc_p <= datum_p THEN izn_prijenosa_pdv_usl1_l := (ROUND (izn_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2)) * pra_rec2.br_dana_troska (0, datum_p + 1, dat_zav1_p) * -1 -- tu se zadnji dan za usluge koje se zadnji dan ne računaju NE uzima + (ROUND (izn_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_pdv_prvidan1_p / (dat_zav1_p - dat_poc1_p), 2)) * -1; -- taj redak će biti 0 jer je za razdoblje 1 pdv = pdv zadnjidan ELSE izn_prijenosa_pdv_usl1_l := (ROUND (izn_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2) - ROUND (izn_odbitka_pdv_poc1_p / (dat_zav1_p - dat_poc1_p), 2)) * pra_rec2.br_dana_troska (0, dat_poc1_p, dat_zav1_p) * -1; END IF; END IF; END IF; END IF; RETURN (NVL (izn_prijenosa_pdv_usl1_l, 0)); END; FUNCTION IZN_PRIJENOSA_PDV_USL_NZ (DATUM_P IN T_TROSKOVI.DAT_POC%TYPE ,IZN_PDV_POC_P IN t_troskovi.izn_pdv_poc%TYPE ,IZN_ODBITKA_PDV_POC_P IN t_troskovi.izn_odbitka_pdv_poc%type ,OBR_ZDANA_POC_P IN T_TROSKOVI.OBR_ZDANA%TYPE ,DAT_POC_P IN T_TROSKOVI.DAT_POC%TYPE ,DAT_ZAV_P IN T_TROSKOVI.DAT_ZAV%TYPE ,IZN_PDV_PRVIDAN_P IN t_troskovi.izn_pdv_prvidan%type ,OZN_NZ_UZ_P IN VARCHAR2 ) RETURN NUMBER IS IZN_PRIJENOSA_PDV_USL_L T_TROSKOVI.IZNOS%TYPE; /* Funkcija se koristi u REC5350 Ostali prilozi žurnala, Popis troškova u prijenosu, računa iznos prijenosa PDV za uslugu - NZ - u prijenos ulaze sve usluge koje su bile upisane prije ili na datum_p i za koje ili razdoblje ili razdoblje1 počinje prije ili na datum_p (i nisu do datuma_p zaračunate - ali tu provjeru ne radi procedura) - UZ - u prijenos ulaze sve usluge koje su bile zaračunate prije ili na datum_p a nešto će se knjižiti nakon tog datuma - prijenos pdv za usl i usl1 se može razlikovati zbog različitih poreznih stopa i različitih razdoblja - odvojene su funkcije za USL i USL1 zbog različitih parametara a iznos za tro nije potreban */ /* pra_rec_rm.izn_prijenosa_pdv_usl_nz( datum_p => ,izn_pdv_poc_p => ,izn_odbitka_pdv_poc_p => ,obr_zdana_poc_p => ,dat_poc_p => ,dat_zav_p => ,izn_pdv_prvidan_p => ,ozn_nz_uz_p => ) */ BEGIN -- izračun prijenosa PDV za nezaračunate troškove IF ozn_nz_uz_p = 'NZ' THEN IF dat_poc_p <= datum_p THEN IF dat_zav_p <= datum_p THEN izn_prijenosa_pdv_usl_l := (izn_pdv_poc_p - izn_odbitka_pdv_poc_p)* pra_rec2.br_dana_troska (obr_zdana_poc_p, dat_poc_p, dat_zav_p); ELSE izn_prijenosa_pdv_usl_l := (izn_pdv_prvidan_p - izn_odbitka_pdv_poc_p) + (izn_pdv_poc_p - izn_odbitka_pdv_poc_p) * (datum_p - dat_poc_p); END IF; END IF; -- izračun prijenosa za unaprijed zaračunate troškove ELSIF ozn_nz_uz_p = 'UZ' THEN IF dat_zav_p > datum_p + 1 AND obr_zdana_poc_p = 0 OR dat_zav_p = datum_p + 1 AND obr_zdana_poc_p = 0 AND (izn_pdv_poc_p <> izn_pdv_prvidan_p) -- u tom slučaju mora se knjižiti razlika zadnji dan OR dat_zav_p > datum_p AND obr_zdana_poc_p = -1 THEN IF dat_poc_p <= datum_p THEN izn_prijenosa_pdv_usl_l := (izn_pdv_poc_p - izn_odbitka_pdv_poc_p)* pra_rec2.br_dana_troska (obr_zdana_poc_p, datum_p + 1, dat_zav_p) * -1 -- tu se zadnji dan za usluge koje se zadnji dan ne računaju NE uzima + (izn_pdv_poc_p - izn_pdv_prvidan_p) * (1 + obr_zdana_poc_p) * -1; -- dodano da se zadnji dan uzima razlika ako je obr_zdana_poc = 0 ELSE izn_prijenosa_pdv_usl_l := (izn_pdv_poc_p - izn_odbitka_pdv_poc_p) * pra_rec2.br_dana_troska (obr_zdana_poc_p, dat_poc_p, dat_zav_p) * -1; END IF; END IF; END IF; RETURN (NVL (izn_prijenosa_pdv_usl_l, 0)); END; FUNCTION IZN_DUGA_GOSTP (GOSTP_ID_P IN T_TROSKOVI.GOSTP_ID%TYPE ,GOST_ID_P IN T_TROSKOVI.GOST_ID%TYPE ) RETURN NUMBER IS /* Iznos nezaračunatih usluga za gosta platitelja. Ako je upisan i gost korisnik onda funkcija daje iznos usluga koji će gostp_id platiti za korisnika gost_id */ stopa_popusta1_l t_racuni.stopa_popusta1%TYPE; stopa_popusta2_l t_racuni.stopa_popusta2%TYPE; stopa_popusta3_l t_racuni.stopa_popusta3%TYPE; stopa_popusta4_l t_racuni.stopa_popusta4%TYPE; brojac_l NUMBER; ban_id_l m_banke.id%TYPE; vtec_id_l s_vtecajeva.id%TYPE; recvpro_id_l mrec_vprograma.id%TYPE; ponso_id_l t_pon_so.id%TYPE; zak_id_l t_zakup.id%TYPE; izn_usluga_l t_racuni.iznos%TYPE; izn_rnk_l tpka_rnkasa.izn_placanja%TYPE; iznos_l t_racuni.iznos%TYPE; CURSOR recagost_c IS SELECT NVL (recagost.stopa_popusta, 0) FROM t_gosti gost, trec_agostiju recagost, m_sj sj, m_so so, s_vuo vuo, s_sso sso WHERE gost.id = gostp_id_p AND gost.recagost_id = recagost.id(+) AND gost.sj_id = sj.id AND sj.so_id = so.id AND so.vuo_id = vuo.id AND vuo.sso_id = sso.id AND (sso.min_boravak IS NULL OR sso.min_boravak <= (gost.dat_odlaska - gost.dat_dolaska)); CURSOR rez_c IS SELECT NVL (MIN (rez.stopa_popusta), 0) FROM t_rezervacije rez, t_rez_vsj rezvsj, t_gosti gost, t_troskovi tro WHERE tro.gostp_id = gostp_id_p AND tro.gost_id = gost.id AND gost.rezvsj_id = rezvsj.id AND rezvsj.rez_id = rez.id; BEGIN -- tro.ozn_smjesta = -1 --> iznos = 0 odnosno usluga se preskače -- tro.usl_id1 IS NOT NULL --> iznos = 0 odnosno usluga se preskače -- stopa_popusta1 - iz ponso ili iz zakupa ili iz arhive -- stopa_popusta4 - iz ponso -- stopa_popusta2 = minimalni popust iz rezervacija po kojima su došli gosti - korisnici usluga koje se naplaćuju -- popust3 = iz vrste programa, stopa ovisi o usluzi pa se dobija za svaki redak u select-u SELECT ban_id, vtec_id INTO ban_id_l, vtec_id_l FROM s_vapldok WHERE metapl_sifra = 'REC' AND oznaka = 'GI'; SELECT MIN (recvpro_id), COUNT (id) INTO recvpro_id_l, brojac_l FROM t_gosti WHERE id = gostp_id_p; IF brojac_l = 0 THEN RETURN 0; END IF; -- ponso - ako su svi tro vezani na isti ponso SELECT MIN (ponso_id), COUNT (DISTINCT (ponso_id)) INTO ponso_id_l, brojac_l FROM t_troskovi WHERE gostp_id = gostp_id_p AND ponso_id IS NOT NULL; IF brojac_l = 1 THEN SELECT pon.stopa_popusta, pon.stopa_popusta4 INTO stopa_popusta1_l, stopa_popusta4_l FROM t_ponude pon, t_pon_ojr ponojr, t_pon_so ponso WHERE pon.id = ponojr.pon_id AND ponojr.id = ponso.ponojr_id AND ponso.id = ponso_id_l; END IF; --zakup - ako su svi tro vezani na isti zakup IF stopa_popusta1_l IS NULL THEN SELECT MIN (zak_id), COUNT (DISTINCT (zak_id)) INTO zak_id_l, brojac_l FROM t_troskovi WHERE gostp_id = gostp_id_p AND zak_id IS NOT NULL; IF brojac_l = 1 THEN SELECT stopa_popusta INTO stopa_popusta1_l FROM t_zakup WHERE id = zak_id_l; END IF; END IF; -- iz arhive - ako je gost platitelj vezan na arhivu a njegov boravak je duži od minimalnog za koji se daje popust iz arhive IF stopa_popusta1_l IS NULL THEN OPEN recagost_c; FETCH recagost_c INTO stopa_popusta1_l; CLOSE recagost_c; END IF; -- stopa_popusta2 = minimalni popust iz rezervacija po kojima su došli gosti - korisnici usluga koje se naplaćuju OPEN rez_c; FETCH rez_c INTO stopa_popusta2_l; CLOSE rez_c; -- nezaračunate usluge SELECT SUM ( upit.izn_usluge * (1 - ( upit.sto_pop1 + upit.sto_pop2 + upit.sto_pop3 + upit.sto_pop4 - upit.sto_pop1 * upit.sto_pop2 - upit.sto_pop1 * upit.sto_pop3 - upit.sto_pop1 * upit.sto_pop4 - upit.sto_pop2 * upit.sto_pop3 - upit.sto_pop2 * upit.sto_pop4 - upit.sto_pop3 * upit.sto_pop4 + upit.sto_pop1 * upit.sto_pop2 * upit.sto_pop3 + upit.sto_pop1 * upit.sto_pop2 * upit.sto_pop4 + upit.sto_pop1 * upit.sto_pop3 * upit.sto_pop4 + upit.sto_pop2 * upit.sto_pop3 * upit.sto_pop4 - upit.sto_pop1 * upit.sto_pop2 * upit.sto_pop3 * upit.sto_pop4 ) ) ) INTO izn_usluga_l FROM ( SELECT NVL (stopa_popusta2_l, 0) * usl.obr_popusta2 * -1 / 100 sto_pop2, NVL (stopa_popusta1_l, 0) * usl.obr_popusta * -1 / 100 sto_pop1, NVL (stopa_popusta4_l, 0) * usl.obr_popusta4 * -1 / 100 sto_pop4, NVL (popx.stopa, 0) / 100 sto_pop3, ROUND (tro.cijena_usluge * tro.stopa_placanja / 100 * tro.kol_usluge * DECODE (usl.obr_po_danu, -1, (tro.dat_zav - tro.dat_poc - usl.obr_zdana), 1) * NVL (pra_pka.izn_tecaja (tro.val_id, ban_id_l, vtec_id_l, TRUNC (SYSDATE)), 0), 2) izn_usluge FROM t_troskovi tro, s_usluge usl, ( SELECT zmppopusl.usl_id, NVL (zmppopusl.stopa, zmppop.stopa) stopa FROM mrec_vprograma recvpro, mzmp_popusti zmppop, mzmp_pop_usl zmppopusl WHERE recvpro.id = recvpro_id_l AND zmppop.id = recvpro.zmppop_id AND zmppop.id = zmppopusl.zmppop_id ) popx WHERE tro.usl_id = usl.id AND tro.usl_id = popx.usl_id (+) AND tro.gostp_id = gostp_id_p AND tro.gost_id = NVL (gost_id_p, tro.gost_id) AND tro.ozn_smjesta = 0 -- nije gratis AND tro.usl_id1 IS NULL -- nije uključena u cijenu druge usluge AND (rac_id IS NULL OR pra_rec_s.rac_pripada_rp (rac_id) = -1) -- nezaračunata usluga ) upit; -- RNK SELECT SUM (tpka_rnkasa.izn_placanja) -- IRN 03545 : izbrisali polje tecaj, prelazak na EUR INTO izn_rnk_l FROM tpka_rnkasa WHERE gostp_id = gostp_id_p AND gost_id = NVL (gost_id_p, gost_id) AND oznaka = 'V' AND pra_zmp.vpla_pripada_irn (vpla_id) = -1 -- IRN 2872 AND pkarac_id IS NULL AND pra_rec_s.obracunato (id) = 0 AND (rac_id IS NULL OR pra_rec_s.rac_pripada_rp (rac_id) = -1) AND gostp_id IS NOT NULL; iznos_l := NVL (izn_usluga_l, 0) + NVL (izn_rnk_l, 0); RETURN iznos_l; END; FUNCTION VSJ_RECARA_PON2 (RECPON2_ID_P IN TREC_PON2_USL.RECPON2_ID%TYPE ,RECARA_ID_P IN TREC_PON2_USL.RECARA_ID%TYPE ,BR_UPUTNICE_P IN TREC_PON2_USL.BR_UPUTNICE%TYPE ,ISPIS_P IN NUMBER ) RETURN NUMBER IS -- CURSOR vsj_c IS SELECT DISTINCT recpon2usl.vsj_id, recarausl.ozn_glavna FROM trec_pon2_usl recpon2usl, mrec_ara_usl recarausl WHERE recpon2usl.recpon2_id = recpon2_id_p AND recpon2usl.recara_id = recara_id_p AND NVL (recpon2usl.br_uputnice, 0) = NVL (NVL (br_uputnice_p, recpon2usl.br_uputnice), 0) AND pra_rec_s4.recarausl_ozn_sum (recpon2usl.recara_id, recpon2usl.usl_id) = ispis_p AND recarausl.usl_id (+) = recpon2usl.usl_id AND recarausl.recara_id (+) = recpon2usl.recara_id; ozn_glavna_l mrec_ara_usl.ozn_glavna%TYPE; vsj_id_l trec_pon2_usl.vsj_id%TYPE; vsj_id_ctrl_l trec_pon2_usl.vsj_id%TYPE; rtnv_l trec_pon2_usl.vsj_id%TYPE := NULL; BEGIN OPEN vsj_c; FETCH vsj_c INTO vsj_id_l, ozn_glavna_l; vsj_id_ctrl_l := vsj_id_l; LOOP EXIT WHEN vsj_c%NOTFOUND; FETCH vsj_c INTO vsj_id_l, ozn_glavna_l; IF ozn_glavna_l = -1 THEN rtnv_l := vsj_id_l; EXIT; ELSIF NVL (vsj_id_l, 0) <> NVL (vsj_id_ctrl_l, 0) THEN rtnv_l := NULL; EXIT; END IF; rtnv_l := vsj_id_ctrl_l; END LOOP; RETURN rtnv_l; END; PROCEDURE IZRACUNAJ_BROJ_SASTOJAKA_1 (SO_ID_P IN M_SO.ID%TYPE ,DATUM_P IN I_ZURNALI.DATUM%TYPE ) IS BEGIN bm_rec3020.izracunaj_broj_sastojaka (so_id_p, datum_p); END; FUNCTION ZADNJI_BORAVAK_NAPOMENA (ID_P IN IREC_AGOST_BORAVCI.RECAGOST_ID%TYPE ,CENTAR_P IN NUMBER ) RETURN NUMBER IS -- napomena_l NUMBER := 0; BEGIN IF centar_p = 0 THEN FOR lokal_c IN ( SELECT napomena, napomena1, dat_dolaska FROM irec_agost_boravci WHERE recagost_id = id_p ORDER BY dat_dolaska DESC) LOOP IF lokal_c.napomena IS NOT NULL OR lokal_c.napomena1 IS NOT NULL THEN napomena_l := 1; END IF; EXIT; END LOOP; ELSE FOR centar_c IN ( SELECT napomena, napomena1, dat_dolaska FROM c_irec_agost_boravci WHERE recagost_id = id_p ORDER BY dat_dolaska DESC) LOOP IF centar_c.napomena IS NOT NULL OR centar_c.napomena1 IS NOT NULL THEN napomena_l := 1; END IF; EXIT; END LOOP; END IF; RETURN napomena_l; END; PROCEDURE REGISTRIRAJ_ISPIS_RAC (RAC_ID_P IN lpka_rac_ispisi.rac_id%TYPE ,RBR_P IN lpka_rac_ispisi.rbr%TYPE ,BR_KOPIJA_P IN lpka_rac_ispisi.br_kopija%TYPE ,BR_POREZNI_KUPCA_P IN lpka_rac_ispisi.br_porezni_kupca%TYPE ,OPIS_P IN lpka_rac_ispisi.opis%TYPE ) IS -- IRN 2438 BEGIN INSERT INTO lpka_rac_ispisi (rac_id, rbr, br_kopija, br_porezni_kupca, opis) VALUES (rac_id_p, rbr_p, br_kopija_p, br_porezni_kupca_p, opis_p); COMMIT; END; FUNCTION PLANIRANI_KAPACITETI (SO_P IN VARCHAR2 ,RECSPOK_SIFRA_P IN VARCHAR2 ,SVEUKUPNO_P IN NUMBER ,ID_P IN NUMBER ,DATUM_P IN VARCHAR2 ,MJESEC_P IN VARCHAR2 ) RETURN NUMBER IS -- IRN 3460 suma_planiranog_l NUMBER(32); BEGIN SELECT SUM (planirano) INTO suma_planiranog_l FROM ( -- zbroj planirano po SO i datumima iz plana za stavke izvještaja na koje ide recspok_sifra_p -- preko veze so.oj_id, uvjet je da je na jednu OJ povezan samo jedan SO, inače se ne može dobiti plan za SO i ovdje dobiven podatak nece biti dobar SELECT so.id so_id, pkaplan2.datum datum, pkaplan2si.planirano planirano FROM tpka_plan2 pkaplan2, tpka_plan2_sizv pkaplan2si, (SELECT DISTINCT (zmpsizv_id) zmpsizv_id FROM mrec_spok_sizv WHERE recspok_id = (SELECT id FROM mrec_spokazatelja WHERE sifra = recspok_sifra_p)) zmpsizv1, m_so so WHERE pkaplan2.id = pkaplan2si.pkaplan2_id AND pkaplan2si.zmpsizv_id = zmpsizv1.zmpsizv_id AND pkaplan2si.oj_id = so.oj_id AND TO_CHAR (pkaplan2.datum, 'MMRRRR') = mjesec_p || datum_p AND (sveukupno_p = 1 OR (sveukupno_p = 0 AND so_p IS NOT NULL AND so.id = so_p) OR (sveukupno_p = 0 AND so_p IS NULL AND so.id = id_p)) -- UNION ALL -- zbroj planirano po OJ i datumima iz plana za pokazatelje uspjesnosti za recspok_sifra_p SELECT recplpok.so_id so_id, recplpok.datum, recplpoksp.planirano FROM trec_plpokazatelja recplpok, trec_plpok_spok recplpoksp, (SELECT id FROM mrec_spokazatelja WHERE sifra = recspok_sifra_p) recspok WHERE recplpok.id = recplpoksp.recplpok_id AND recplpoksp.recspok_id = recspok.id AND TO_CHAR(recplpok.datum,'MMRRRR') = mjesec_p || datum_p AND (sveukupno_p = 1 OR (sveukupno_p = 0 AND so_p IS NOT NULL AND recplpok.so_id = so_p) OR (sveukupno_p = 0 AND so_p IS NULL AND recplpok.so_id = id_p)) ); RETURN suma_planiranog_l; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 0; END; /* pra_rec_rm */ FUNCTION MS_NAZIV (RECORD_NUMBER_P IN NUMBER ,DATUM_P DATE ) RETURN m_msegmenti.naziv%TYPE IS /* za potrebe izvjestaja REC5510 */ naziv_ms_l m_msegmenti.naziv%TYPE; BEGIN execute immediate 'SELECT ms.naziv FROM (SELECT DISTINCT ms_id_alt, ROWNUM AS rn FROM (SELECT distinct ms_id_alt FROM (SELECT id ms_id_alt FROM M_MSEGMENTI WHERE dat_ponisten IS NULL OR dat_ponisten > :datum_l ORDER BY id) ORDER BY ms_id_alt) st) x, m_msegmenti ms WHERE x.rn = :record_number_l AND x.ms_id_alt = ms.id ' into naziv_ms_l using datum_p,record_number_p ; IF naziv_ms_l IS NULL THEN naziv_ms_l := ' '; END IF; RETURN(naziv_ms_l); END; /* pra_rec_rm */ FUNCTION MS_SIFRA (RECORD_NUMBER_P NUMBER ,DATUM_P DATE ) RETURN m_msegmenti.sifra%TYPE IS /* za potrebe CSV izvjestaja REC5510 */ sifra_ms_l m_msegmenti.sifra%TYPE; BEGIN execute immediate 'SELECT ms.sifra FROM (SELECT DISTINCT ms_id_alt, ROWNUM AS rn FROM (SELECT distinct ms_id_alt FROM (SELECT id ms_id_alt FROM M_MSEGMENTI WHERE dat_ponisten IS NULL OR dat_ponisten > :datum_l ORDER BY id) ORDER BY ms_id_alt) st) x, m_msegmenti ms WHERE x.rn = :record_number_l AND x.ms_id_alt = ms.id ' into sifra_ms_l using datum_p,record_number_p ; IF sifra_ms_l IS NULL THEN sifra_ms_l := ' '; END IF; RETURN(sifra_ms_l); END; PROCEDURE PUNI_RECPON2_ODBICI_U (RECPON2_ID_P IN trec_ponude2.id%TYPE ,DOMJEZ_SIFRA_P IN s_jezici.sifra_3a%TYPE ,JEZ_SIFRA_P IN s_jezici.sifra_3a%TYPE ) IS -- IRN 3645 -- za potrebe izvještaja rec2140.rdf - Predračun -- izračunava odbitke po uputnici i upisuje ih u prec_global -- ova procedura nastala je po uzoru na proceduru pra_rec_iud.puni_recpon2_iznos br_redaka_l NUMBER; recpon2_c_l trec_ponude2%ROWTYPE; br_smjesta_l NUMBER := 0; izn_smjesta_l NUMBER := 0; izn_popust1_l NUMBER := 0; izn_popust2_l NUMBER := 0; izn_popust3_l NUMBER := 0; izn_popust4_l NUMBER := 0; uk_br_smjesta_l NUMBER := 0; uk_izn_smjesta_l NUMBER := 0; uk_izn_popust1_l NUMBER := 0; uk_izn_popust2_l NUMBER := 0; uk_izn_popust3_l NUMBER := 0; uk_izn_popust4_l NUMBER := 0; BEGIN IF recpon2_id_p IS NULL THEN RETURN; END IF; SELECT COUNT (DISTINCT (br_uputnice)) INTO br_redaka_l FROM trec_pon2_usl WHERE recpon2_id = recpon2_id_p; IF br_redaka_l < 2 THEN RETURN; -- nema više uputnica END IF; DELETE FROM prec_global; SELECT * INTO recpon2_c_l FROM trec_ponude2 WHERE id = recpon2_id_p; FOR c1 IN ( SELECT br_uputnice, (MAX (dat_zav) - MIN (dat_poc) + 1) AS br_dana_boravka FROM trec_pon2_usl WHERE recpon2_id = recpon2_id_p GROUP BY br_uputnice) LOOP FOR c2 IN ( SELECT ROUND (DECODE (recpon2usl.usl_id1, NULL, recpon2usl.cijena, 0) * recpon2usl.stopa_placanja / 100 * recpon2usl.izn_tecaja / recpon2_c_l.izn_tecaja, 2) * DECODE (NVL (recpon2usl.obr_po_danu, usl.obr_po_danu), 0, 1, (recpon2usl.dat_zav - recpon2usl.dat_poc - NVL (recpon2usl.obr_zdana, usl.obr_zdana))) * recpon2usl.kolicina AS osnovica, recpon2usl.ozn_smjesta * -1 AS ozn_smjesta, NVL (recpon2usl.obr_smjesta, usl.obr_smjesta) * -1 AS obr_smjesta, NVL (recpon2usl.obr_popusta1, usl.obr_popusta) * -1 AS obr_popusta1, NVL (recpon2usl.obr_popusta2, usl.obr_popusta2) * -1 AS obr_popusta2, NVL (recpon2usl.obr_popusta3, usl.obr_popusta3) * -1 AS obr_popusta3, NVL (recpon2usl.obr_popusta4, usl.obr_popusta4) * -1 AS obr_popusta4, pra_rec_s4.stopa_zmppop ( recpon2_c_l.zmppop1_id, recpon2_c_l.so_id, recpon2usl.vsj_id, recpon2usl.usl_id, recpon2usl.dat_poc, recpon2usl.dat_zav, c1.br_dana_boravka) AS stopa_popusta1_zmp, pra_rec_s4.stopa_zmppop ( recpon2_c_l.zmppop2_id, recpon2_c_l.so_id, recpon2usl.vsj_id, recpon2usl.usl_id, recpon2usl.dat_poc, recpon2usl.dat_zav, c1.br_dana_boravka) AS stopa_popusta2_zmp, pra_rec_s4.stopa_zmppop ( recpon2_c_l.zmppop3_id, recpon2_c_l.so_id, recpon2usl.vsj_id, recpon2usl.usl_id, recpon2usl.dat_poc, recpon2usl.dat_zav, c1.br_dana_boravka) AS stopa_popusta3_zmp, pra_rec_s4.stopa_zmppop ( recpon2_c_l.zmppop4_id, recpon2_c_l.so_id, recpon2usl.vsj_id, recpon2usl.usl_id, recpon2usl.dat_poc, recpon2usl.dat_zav, c1.br_dana_boravka) AS stopa_popusta4_zmp FROM trec_pon2_usl recpon2usl, s_usluge usl WHERE recpon2usl.recpon2_id = recpon2_id_p AND usl.id = recpon2usl.usl_id AND NVL (recpon2usl.br_uputnice, '¤') = NVL (c1.br_uputnice, '¤') ) LOOP -- slobodno mjesto izn_smjesta_l := c2.osnovica * c2.obr_smjesta * c2.ozn_smjesta; br_smjesta_l := c2.obr_smjesta * c2.ozn_smjesta; -- popust 1 IF recpon2_c_l.stopa_popusta1 IS NOT NULL THEN izn_popust1_l := ROUND ((c2.osnovica - izn_smjesta_l) * c2.obr_popusta1 * recpon2_c_l.stopa_popusta1 / 100, 2); ELSIF c2.stopa_popusta1_zmp IS NOT NULL THEN izn_popust1_l := ROUND ((c2.osnovica - izn_smjesta_l) * c2.stopa_popusta1_zmp / 100, 2); END IF; -- popust 2 IF recpon2_c_l.stopa_popusta2 IS NOT NULL THEN izn_popust2_l := ROUND ((c2.osnovica - izn_smjesta_l - izn_popust1_l) * c2.obr_popusta2 * recpon2_c_l.stopa_popusta2 / 100, 2); ELSIF c2.stopa_popusta2_zmp IS NOT NULL THEN izn_popust2_l := ROUND ((c2.osnovica - izn_smjesta_l - izn_popust1_l) * c2.stopa_popusta2_zmp / 100, 2); END IF; -- popust 3 IF recpon2_c_l.stopa_popusta3 IS NOT NULL THEN izn_popust3_l := ROUND ((c2.osnovica - izn_smjesta_l - izn_popust1_l - izn_popust2_l) * c2.obr_popusta3 * recpon2_c_l.stopa_popusta3 / 100, 2); ELSIF c2.stopa_popusta3_zmp IS NOT NULL THEN izn_popust3_l := ROUND ((c2.osnovica - izn_smjesta_l - izn_popust1_l - izn_popust2_l) * c2.stopa_popusta3_zmp / 100, 2); END IF; -- popust 4 IF recpon2_c_l.stopa_popusta4 IS NOT NULL THEN izn_popust4_l := ROUND ((c2.osnovica - izn_smjesta_l - izn_popust1_l - izn_popust2_l - izn_popust3_l) * c2.obr_popusta4 * recpon2_c_l.stopa_popusta4 / 100, 2); ELSIF c2.stopa_popusta4_zmp IS NOT NULL THEN izn_popust4_l := ROUND ((c2.osnovica - izn_smjesta_l - izn_popust1_l - izn_popust2_l - izn_popust3_l) * c2.stopa_popusta4_zmp / 100, 2); END IF; uk_br_smjesta_l := uk_br_smjesta_l + br_smjesta_l; uk_izn_smjesta_l := uk_izn_smjesta_l + izn_smjesta_l; uk_izn_popust1_l := uk_izn_popust1_l + izn_popust1_l; uk_izn_popust2_l := uk_izn_popust2_l + izn_popust2_l; uk_izn_popust3_l := uk_izn_popust3_l + izn_popust3_l; uk_izn_popust4_l := uk_izn_popust4_l + izn_popust4_l; br_smjesta_l := 0; izn_smjesta_l := 0; izn_popust1_l := 0; izn_popust2_l := 0; izn_popust3_l := 0; izn_popust4_l := 0; END LOOP; /* -- Puni prec_global id1, -- recpon2_id opis1, -- br_uputnice iznos1, -- br_dana_boravka iznos2, -- rbr opis2, -- popust_labela iznos3, -- popust_broj -- br_smjesta id2, -- zmppop_id iznos4, -- popust_stopa iznos5, -- popust_iznos opis3 -- popust_opis */ -- slobodno mjesto IF ROUND (uk_izn_smjesta_l, 2) <> 0 THEN INSERT INTO prec_global (id1, opis1, iznos1, iznos2, opis2, iznos3, id2, iznos4, iznos5, opis3) VALUES ( recpon2_id_p, c1.br_uputnice, c1.br_dana_boravka, 0, pra_zmp_zaj.porjez ('REC', 'REC0436', domjez_sifra_p) || ' / ' || pra_zmp_zaj.porjez ('REC', 'REC1358', jez_sifra_p), uk_br_smjesta_l, TO_NUMBER (NULL), TO_NUMBER (NULL), ROUND (uk_izn_smjesta_l, 2), TO_CHAR (NULL) ); END IF; -- popust1 IF ROUND (uk_izn_popust1_l, 2) <> 0 THEN INSERT INTO prec_global (id1, opis1, iznos1, iznos2, opis2, iznos3, id2, iznos4, iznos5, opis3) VALUES ( recpon2_id_p, c1.br_uputnice, c1.br_dana_boravka, 1, pra_zmp_zaj.porjez ('REC', 'REC0437', domjez_sifra_p) || ' / ' || pra_zmp_zaj.porjez ('REC', 'REC1359', jez_sifra_p), TO_NUMBER (NULL), recpon2_c_l.zmppop1_id, recpon2_c_l.stopa_popusta1, ROUND (uk_izn_popust1_l, 2), recpon2_c_l.opis_popusta1 ); END IF; -- popust2 IF ROUND (uk_izn_popust2_l, 2) <> 0 THEN INSERT INTO prec_global (id1, opis1, iznos1, iznos2, opis2, iznos3, id2, iznos4, iznos5, opis3) VALUES ( recpon2_id_p, c1.br_uputnice, c1.br_dana_boravka, 2, pra_zmp_zaj.porjez ('REC', 'REC0918', domjez_sifra_p) || ' / ' || pra_zmp_zaj.porjez ('REC', 'REC1364', jez_sifra_p), TO_NUMBER (NULL), recpon2_c_l.zmppop2_id, recpon2_c_l.stopa_popusta2, ROUND (uk_izn_popust2_l, 2), recpon2_c_l.opis_popusta2 ); END IF; -- popust3 IF ROUND (uk_izn_popust3_l, 2) <> 0 THEN INSERT INTO prec_global (id1, opis1, iznos1, iznos2, opis2, iznos3, id2, iznos4, iznos5, opis3) VALUES ( recpon2_id_p, c1.br_uputnice, c1.br_dana_boravka, 3, pra_zmp_zaj.porjez ('REC', 'REC0919', domjez_sifra_p) || ' / ' || pra_zmp_zaj.porjez ('REC', 'REC1365', jez_sifra_p), TO_NUMBER (NULL), recpon2_c_l.zmppop3_id, recpon2_c_l.stopa_popusta3, ROUND (uk_izn_popust3_l, 2), recpon2_c_l.opis_popusta3 ); END IF; -- popust4 IF ROUND (uk_izn_popust4_l, 2) <> 0 THEN INSERT INTO prec_global (id1, opis1, iznos1, iznos2, opis2, iznos3, id2, iznos4, iznos5, opis3) VALUES ( recpon2_id_p, c1.br_uputnice, c1.br_dana_boravka, 4, pra_zmp_zaj.porjez ('REC', 'REC0438', domjez_sifra_p) || ' / ' || pra_zmp_zaj.porjez ('REC', 'REC1360', jez_sifra_p), TO_NUMBER (NULL), recpon2_c_l.zmppop4_id, recpon2_c_l.stopa_popusta4, ROUND (uk_izn_popust4_l, 2), recpon2_c_l.opis_popusta4 ); END IF; uk_br_smjesta_l := 0; uk_izn_smjesta_l := 0; uk_izn_popust1_l := 0; uk_izn_popust2_l := 0; uk_izn_popust3_l := 0; uk_izn_popust4_l := 0; END LOOP; END; PROCEDURE PUNI_RECGLO_REC5512 (DAT_POC_P IN DATE ,DAT_ZAV_P DATE ,SO_ID_P M_SO.ID%TYPE ,STUPANJ_PRODAJE_P VARCHAR2 ) IS -- IRN 3947 : poziva se iz modula rec551.rdf Prognoza po mjesecima -- prognoza za stupanj prodaje CURSOR prognoza_c (stupanj_prodaje_k VARCHAR2, dat_poc_k DATE, dat_zav_k DATE, dat_prijelomni_k DATE) IS SELECT SUM (NVL (kol_sj_01, 0)) kol_sj_01, SUM (NVL (kol_sj_02, 0)) kol_sj_02, SUM (NVL (kol_sj_03, 0)) kol_sj_03, SUM (NVL (kol_sj_04, 0)) kol_sj_04, SUM (NVL (kol_sj_05, 0)) kol_sj_05, SUM (NVL (kol_sj_06, 0)) kol_sj_06, SUM (NVL (kol_sj_07, 0)) kol_sj_07, SUM (NVL (kol_sj_08, 0)) kol_sj_08, SUM (NVL (kol_sj_09, 0)) kol_sj_09, SUM (NVL (kol_sj_10, 0)) kol_sj_10, SUM (NVL (kol_sj_11, 0)) kol_sj_11, SUM (NVL (kol_sj_12, 0)) kol_sj_12, SUM (NVL (kol_sj_ytd, 0)) kol_sj_ytd, SUM (NVL (kol_sj_ymg, 0)) kol_sj_ymg, SUM (NVL (kol_sj_full_year, 0)) kol_sj_full_year FROM ( SELECT SUM (DECODE (TO_CHAR (dat_poc_k, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k ,4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_k AND dat_prijelomni_k THEN kol_sj ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN dat_prijelomni_k + 1 AND dat_zav_k THEN kol_sj ELSE 0 END) kol_sj_ymg, SUM (kol_sj) kol_sj_full_year FROM irec_prog_stavke WHERE datum BETWEEN dat_poc_k AND dat_zav_k AND so_id = so_id_p AND (((ozn_sprodaje = 'O') AND stupanj_prodaje_p = 'O') OR ((ozn_sprodaje IN ('O', 'F')) AND stupanj_prodaje_p = 'F') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'Z')) AND stupanj_prodaje_p = 'P') OR ((ozn_sprodaje IN ('O', 'F', 'A', 'Z')) AND stupanj_prodaje_p = 'H') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'A', 'Z')) AND stupanj_prodaje_p = 'A')) UNION ALL SELECT 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 FROM dual); -- kapacitet CURSOR kapacitet_c (dat_poc_k DATE, dat_zav_k DATE, dat_prijelomni_k DATE) IS SELECT pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, dat_poc_k, LAST_DAY (dat_poc_k), NULL) kol_sj_01, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 1), LAST_DAY (ADD_MONTHS (dat_poc_k, 1)), NULL) kol_sj_02, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 2), LAST_DAY (ADD_MONTHS (dat_poc_k, 2)), NULL) kol_sj_03, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 3), LAST_DAY (ADD_MONTHS (dat_poc_k, 3)), NULL) kol_sj_04, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 4), LAST_DAY (ADD_MONTHS (dat_poc_k, 4)), NULL) kol_sj_05, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 5), LAST_DAY (ADD_MONTHS (dat_poc_k, 5)), NULL) kol_sj_06, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 6), LAST_DAY (ADD_MONTHS (dat_poc_k, 6)), NULL) kol_sj_07, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 7), LAST_DAY (ADD_MONTHS (dat_poc_k, 7)), NULL) kol_sj_08, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 8), LAST_DAY (ADD_MONTHS (dat_poc_k, 8)), NULL) kol_sj_09, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 9), LAST_DAY (ADD_MONTHS (dat_poc_k, 9)), NULL) kol_sj_10, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 10), LAST_DAY (ADD_MONTHS (dat_poc_k, 10)), NULL) kol_sj_11, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, ADD_MONTHS (dat_poc_k, 11), LAST_DAY (ADD_MONTHS (dat_poc_k, 11)), NULL) kol_sj_12, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, dat_poc_k, dat_prijelomni_k, NULL) kol_sj_ytd, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, dat_prijelomni_k + 1, dat_zav_k, NULL) kol_sj_ymg, pra_rec_s.kapac_upotrebljivi_po_id (so_id_p, NULL, NULL, NULL, dat_poc_k, dat_zav_k, NULL) kol_sj_full_year FROM dual; -- prognoza_h za stupanj prodaje CURSOR prognoza_h_c (stupanj_prodaje_k VARCHAR2, dat_poc_k DATE, dat_zav_k DATE, dat_prijelomni_k DATE) IS SELECT SUM (NVL (kol_sj_01, 0)) kol_sj_01, SUM (NVL (kol_sj_02, 0)) kol_sj_02, SUM (NVL (kol_sj_03, 0)) kol_sj_03, SUM (NVL (kol_sj_04, 0)) kol_sj_04, SUM (NVL (kol_sj_05, 0)) kol_sj_05, SUM (NVL (kol_sj_06, 0)) kol_sj_06, SUM (NVL (kol_sj_07, 0)) kol_sj_07, SUM (NVL (kol_sj_08, 0)) kol_sj_08, SUM (NVL (kol_sj_09, 0)) kol_sj_09, SUM (NVL (kol_sj_10, 0)) kol_sj_10, SUM (NVL (kol_sj_11, 0)) kol_sj_11, SUM (NVL (kol_sj_12, 0)) kol_sj_12, SUM (NVL (kol_sj_ytd, 0)) kol_sj_ytd, SUM (NVL (kol_sj_ymg, 0)) kol_sj_ymg, SUM (NVL (kol_sj_full_year, 0)) kol_sj_full_year FROM ( SELECT SUM (DECODE (TO_CHAR (dat_poc_k, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k ,4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_k AND dat_prijelomni_k THEN kol_sj ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN dat_prijelomni_k + 1 AND dat_zav_k THEN kol_sj ELSE 0 END) kol_sj_ymg, SUM (kol_sj) kol_sj_full_year FROM irec_prog_stavke_h WHERE na_dan = dat_prijelomni_k AND datum >= dat_prijelomni_k AND datum BETWEEN dat_poc_k AND dat_zav_k AND so_id = so_id_p AND (((ozn_sprodaje = 'O') AND stupanj_prodaje_p = 'O') OR ((ozn_sprodaje IN ('O', 'F')) AND stupanj_prodaje_p = 'F') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'Z')) AND stupanj_prodaje_p = 'P') OR ((ozn_sprodaje IN ('O', 'F', 'A', 'Z')) AND stupanj_prodaje_p = 'H') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'A', 'Z')) AND stupanj_prodaje_p = 'A')) UNION ALL SELECT SUM (DECODE (TO_CHAR (dat_poc_k, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k ,4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_k AND dat_prijelomni_k THEN kol_sj ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN dat_prijelomni_k + 1 AND dat_zav_k THEN kol_sj ELSE 0 END) kol_sj_rmdy, SUM (kol_sj) kol_sj_full_year FROM irec_prog_stavke WHERE datum < dat_prijelomni_k AND datum BETWEEN dat_poc_k AND dat_zav_k AND so_id = so_id_p AND (((ozn_sprodaje = 'O') AND stupanj_prodaje_p = 'O') OR ((ozn_sprodaje IN ('O', 'F')) AND stupanj_prodaje_p = 'F') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'Z')) AND stupanj_prodaje_p = 'P') OR ((ozn_sprodaje IN ('O', 'F', 'A', 'Z')) AND stupanj_prodaje_p = 'H') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'A', 'Z')) AND stupanj_prodaje_p = 'A')) UNION ALL SELECT 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 FROM dual); -- pickup (pronoza za stupanj prodaje MINUS prognoza_h za stupanj prodaje prije tjedan dana) CURSOR pickup_c (stupanj_prodaje_k VARCHAR2, dat_poc_k DATE, dat_zav_k DATE, dat_prijelomni_k DATE, dat_prijelomni_pr_k DATE) IS SELECT SUM (NVL (kol_sj_01, 0)) kol_sj_01, SUM (NVL (kol_sj_02, 0)) kol_sj_02, SUM (NVL (kol_sj_03, 0)) kol_sj_03, SUM (NVL (kol_sj_04, 0)) kol_sj_04, SUM (NVL (kol_sj_05, 0)) kol_sj_05, SUM (NVL (kol_sj_06, 0)) kol_sj_06, SUM (NVL (kol_sj_07, 0)) kol_sj_07, SUM (NVL (kol_sj_08, 0)) kol_sj_08, SUM (NVL (kol_sj_09, 0)) kol_sj_09, SUM (NVL (kol_sj_10, 0)) kol_sj_10, SUM (NVL (kol_sj_11, 0)) kol_sj_11, SUM (NVL (kol_sj_12, 0)) kol_sj_12, SUM (NVL (kol_sj_ytd, 0)) kol_sj_ytd, SUM (NVL (kol_sj_ymg, 0)) kol_sj_ymg, SUM (NVL (kol_sj_full_year, 0)) kol_sj_full_year FROM ( SELECT SUM (DECODE (TO_CHAR (dat_poc_k, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k ,4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_k AND dat_prijelomni_k THEN kol_sj ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN dat_prijelomni_k + 1 AND dat_zav_k THEN kol_sj ELSE 0 END) kol_sj_ymg, SUM (kol_sj) kol_sj_full_year FROM irec_prog_stavke WHERE datum BETWEEN dat_poc_k AND dat_zav_k AND so_id = so_id_p AND (((ozn_sprodaje = 'O') AND stupanj_prodaje_p = 'O') OR ((ozn_sprodaje IN ('O', 'F')) AND stupanj_prodaje_p = 'F') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'Z')) AND stupanj_prodaje_p = 'P') OR ((ozn_sprodaje IN ('O', 'F', 'A', 'Z')) AND stupanj_prodaje_p = 'H') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'A', 'Z')) AND stupanj_prodaje_p = 'A')) UNION ALL SELECT SUM (DECODE (TO_CHAR (dat_poc_k, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k ,4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_k AND dat_prijelomni_pr_k THEN kol_sj * -1 ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN dat_prijelomni_pr_k + 1 AND dat_zav_k THEN kol_sj * -1 ELSE 0 END) kol_sj_ymg, SUM (kol_sj * -1) kol_sj_full_year FROM irec_prog_stavke_h WHERE na_dan = dat_prijelomni_pr_k AND datum >= dat_prijelomni_pr_k AND datum BETWEEN dat_poc_k AND dat_zav_k AND so_id = so_id_p AND (((ozn_sprodaje = 'O') AND stupanj_prodaje_p = 'O') OR ((ozn_sprodaje IN ('O', 'F')) AND stupanj_prodaje_p = 'F') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'Z')) AND stupanj_prodaje_p = 'P') OR ((ozn_sprodaje IN ('O', 'F', 'A', 'Z')) AND stupanj_prodaje_p = 'H') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'A', 'Z')) AND stupanj_prodaje_p = 'A')) UNION ALL SELECT SUM (DECODE (TO_CHAR (dat_poc_k, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k ,4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_k AND dat_prijelomni_pr_k THEN kol_sj * -1 ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN dat_prijelomni_pr_k + 1 AND dat_zav_k THEN kol_sj * -1 ELSE 0 END) kol_sj_rmdy, SUM (kol_sj * -1) kol_sj_full_year FROM irec_prog_stavke WHERE datum < dat_prijelomni_pr_k AND datum BETWEEN dat_poc_k AND dat_zav_k AND so_id = so_id_p AND (((ozn_sprodaje = 'O') AND stupanj_prodaje_p = 'O') OR ((ozn_sprodaje IN ('O', 'F')) AND stupanj_prodaje_p = 'F') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'Z')) AND stupanj_prodaje_p = 'P') OR ((ozn_sprodaje IN ('O', 'F', 'A', 'Z')) AND stupanj_prodaje_p = 'H') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'A', 'Z')) AND stupanj_prodaje_p = 'A')) UNION ALL SELECT 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 FROM dual); -- pickup (pronoza za stupanj prodaje_h MINUS prognoza_h za stupanj prodaje od prošle godine za osam dana) CURSOR pickup2_c (stupanj_prodaje_k VARCHAR2, dat_poc_k DATE, dat_zav_k DATE, dat_prijelomni_k DATE, dat_prijelomni_pr_k DATE) IS SELECT SUM (NVL (kol_sj_01, 0)) kol_sj_01, SUM (NVL (kol_sj_02, 0)) kol_sj_02, SUM (NVL (kol_sj_03, 0)) kol_sj_03, SUM (NVL (kol_sj_04, 0)) kol_sj_04, SUM (NVL (kol_sj_05, 0)) kol_sj_05, SUM (NVL (kol_sj_06, 0)) kol_sj_06, SUM (NVL (kol_sj_07, 0)) kol_sj_07, SUM (NVL (kol_sj_08, 0)) kol_sj_08, SUM (NVL (kol_sj_09, 0)) kol_sj_09, SUM (NVL (kol_sj_10, 0)) kol_sj_10, SUM (NVL (kol_sj_11, 0)) kol_sj_11, SUM (NVL (kol_sj_12, 0)) kol_sj_12, SUM (NVL (kol_sj_ytd, 0)) kol_sj_ytd, SUM (NVL (kol_sj_ymg, 0)) kol_sj_ymg, SUM (NVL (kol_sj_full_year, 0)) kol_sj_full_year FROM ( SELECT SUM (DECODE (TO_CHAR (dat_poc_k, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k ,4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_k AND dat_prijelomni_k THEN kol_sj ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN dat_prijelomni_k + 1 AND dat_zav_k THEN kol_sj ELSE 0 END) kol_sj_ymg, SUM (kol_sj) kol_sj_full_year FROM irec_prog_stavke_h WHERE na_dan = dat_prijelomni_k AND datum >= dat_prijelomni_k AND datum BETWEEN dat_poc_k AND dat_zav_k AND so_id = so_id_p AND (((ozn_sprodaje = 'O') AND stupanj_prodaje_p = 'O') OR ((ozn_sprodaje IN ('O', 'F')) AND stupanj_prodaje_p = 'F') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'Z')) AND stupanj_prodaje_p = 'P') OR ((ozn_sprodaje IN ('O', 'F', 'A', 'Z')) AND stupanj_prodaje_p = 'H') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'A', 'Z')) AND stupanj_prodaje_p = 'A')) UNION ALL SELECT SUM (DECODE (TO_CHAR (dat_poc_k, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k ,4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_k, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj * -1, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_k AND dat_prijelomni_pr_k THEN kol_sj * -1 ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN dat_prijelomni_pr_k + 1 AND dat_zav_k THEN kol_sj * -1 ELSE 0 END) kol_sj_ymg, SUM (kol_sj * -1) kol_sj_full_year FROM irec_prog_stavke_h WHERE na_dan = dat_prijelomni_pr_k AND datum >= dat_prijelomni_pr_k AND datum BETWEEN dat_poc_k AND dat_zav_k AND so_id = so_id_p AND (((ozn_sprodaje = 'O') AND stupanj_prodaje_p = 'O') OR ((ozn_sprodaje IN ('O', 'F')) AND stupanj_prodaje_p = 'F') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'Z')) AND stupanj_prodaje_p = 'P') OR ((ozn_sprodaje IN ('O', 'F', 'A', 'Z')) AND stupanj_prodaje_p = 'H') OR ((ozn_sprodaje IN ('O', 'F', 'B', 'A', 'Z')) AND stupanj_prodaje_p = 'A')) UNION ALL SELECT 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 FROM dual); -- planirano CURSOR planirano_c IS SELECT SUM (NVL (kol_sj_01, 0)) kol_sj_01, SUM (NVL (kol_sj_02, 0)) kol_sj_02, SUM (NVL (kol_sj_03, 0)) kol_sj_03, SUM (NVL (kol_sj_04, 0)) kol_sj_04, SUM (NVL (kol_sj_05, 0)) kol_sj_05, SUM (NVL (kol_sj_06, 0)) kol_sj_06, SUM (NVL (kol_sj_07, 0)) kol_sj_07, SUM (NVL (kol_sj_08, 0)) kol_sj_08, SUM (NVL (kol_sj_09, 0)) kol_sj_09, SUM (NVL (kol_sj_10, 0)) kol_sj_10, SUM (NVL (kol_sj_11, 0)) kol_sj_11, SUM (NVL (kol_sj_12, 0)) kol_sj_12, SUM (NVL (kol_sj_ytd, 0)) kol_sj_ytd, SUM (NVL (kol_sj_ymg, 0)) kol_sj_ymg, SUM (NVL (kol_sj_full_year, 0)) kol_sj_full_year FROM ( SELECT SUM (DECODE (TO_CHAR (dat_poc_p, 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_01, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 1), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_02, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 2), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_03, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 3), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_04, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 4), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_05, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 5), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_06, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 6), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_07, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 7), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_08, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 8), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_09, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 9), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_10, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 10), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_11, SUM (DECODE (TO_CHAR (ADD_MONTHS (dat_poc_p, 11), 'mm.rrrr'), TO_CHAR (datum, 'mm.rrrr'), kol_sj, 0)) kol_sj_12, SUM ( CASE WHEN datum BETWEEN dat_poc_p AND TRUNC (sysdate) THEN kol_sj ELSE 0 END) kol_sj_ytd, SUM ( CASE WHEN datum BETWEEN TRUNC (sysdate) + 1 AND dat_zav_p THEN kol_sj ELSE 0 END) kol_sj_ymg, SUM (kol_sj) kol_sj_full_year FROM trec_plgprodaje WHERE datum BETWEEN dat_poc_p AND dat_zav_p AND so_id = so_id_p UNION ALL SELECT 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 FROM dual); -- opis grupe i stavaka ispisa CURSOR rc_c (low_value_grupa_k VARCHAR2, low_value_stavka_k VARCHAR2) IS SELECT pra_zmp_s.rv_meaning ('RECPROG_GRUPA', low_value_grupa_k) opis_grupe, pra_zmp_s.rv_meaning ('RECPROG_STAVKA', low_value_stavka_k) opis_stavke FROM dual; dat_poc_usp_l DATE; dat_zav_usp_l DATE; prognoza_01_r prognoza_c%ROWTYPE; kapacitet_02_r kapacitet_c%ROWTYPE; pickup_07_r pickup_c%ROWTYPE; pickup_08_r pickup2_c%ROWTYPE; prognoza_h_r prognoza_h_c%ROWTYPE; ostvareno_11_r prognoza_c%ROWTYPE; planirano_14_r planirano_c%ROWTYPE; rc_r rc_c%ROWTYPE; datum_l DATE; rbr_stavke_l NUMBER; grupa_prognoza_l NUMBER := 1; grupa_ostvareno_l NUMBER := 2; grupa_plan_l NUMBER := 3; BEGIN IF dat_poc_p IS NULL OR dat_zav_p IS NULL OR so_id_p IS NULL OR stupanj_prodaje_p IS NULL THEN RETURN; END IF; dat_poc_usp_l := ADD_MONTHS (dat_poc_p, -12); dat_zav_usp_l := dat_poc_p - 1; -- Stavka 1: Prognoza, Rezervacije rbr_stavke_l := 1; OPEN prognoza_c (stupanj_prodaje_p, dat_poc_p, dat_zav_p, TRUNC (sysdate)); FETCH prognoza_c INTO prognoza_01_r; CLOSE prognoza_c; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, prognoza_01_r.kol_sj_01, prognoza_01_r.kol_sj_02, prognoza_01_r.kol_sj_03, prognoza_01_r.kol_sj_04, prognoza_01_r.kol_sj_05, prognoza_01_r.kol_sj_06, prognoza_01_r.kol_sj_07, prognoza_01_r.kol_sj_08, prognoza_01_r.kol_sj_09, prognoza_01_r.kol_sj_10, prognoza_01_r.kol_sj_11, prognoza_01_r.kol_sj_12, prognoza_01_r.kol_sj_ytd, prognoza_01_r.kol_sj_ymg, prognoza_01_r.kol_sj_full_year); -- Stavka 2: Prognoza, Kapacitet rbr_stavke_l := 2; OPEN kapacitet_c (dat_poc_p, dat_zav_p, TRUNC (sysdate)); FETCH kapacitet_c INTO kapacitet_02_r; CLOSE kapacitet_c; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, kapacitet_02_r.kol_sj_01, kapacitet_02_r.kol_sj_02, kapacitet_02_r.kol_sj_03, kapacitet_02_r.kol_sj_04, kapacitet_02_r.kol_sj_05, kapacitet_02_r.kol_sj_06, kapacitet_02_r.kol_sj_07, kapacitet_02_r.kol_sj_08, kapacitet_02_r.kol_sj_09, kapacitet_02_r.kol_sj_10, kapacitet_02_r.kol_sj_11, kapacitet_02_r.kol_sj_12, kapacitet_02_r.kol_sj_ytd, kapacitet_02_r.kol_sj_ymg, kapacitet_02_r.kol_sj_full_year); -- Stavka 3: Prognoza, Zauzeće u % (2 / 1 * 100) rbr_stavke_l := 3; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, DECODE (kapacitet_02_r.kol_sj_01, 0, 0, ROUND (prognoza_01_r.kol_sj_01 / kapacitet_02_r.kol_sj_01 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_02, 0, 0, ROUND (prognoza_01_r.kol_sj_02 / kapacitet_02_r.kol_sj_02 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_03, 0, 0, ROUND (prognoza_01_r.kol_sj_03 / kapacitet_02_r.kol_sj_03 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_04, 0, 0, ROUND (prognoza_01_r.kol_sj_04 / kapacitet_02_r.kol_sj_04 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_05, 0, 0, ROUND (prognoza_01_r.kol_sj_05 / kapacitet_02_r.kol_sj_05 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_06, 0, 0, ROUND (prognoza_01_r.kol_sj_06 / kapacitet_02_r.kol_sj_06 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_07, 0, 0, ROUND (prognoza_01_r.kol_sj_07 / kapacitet_02_r.kol_sj_07 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_08, 0, 0, ROUND (prognoza_01_r.kol_sj_08 / kapacitet_02_r.kol_sj_08 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_09, 0, 0, ROUND (prognoza_01_r.kol_sj_09 / kapacitet_02_r.kol_sj_09 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_10, 0, 0, ROUND (prognoza_01_r.kol_sj_10 / kapacitet_02_r.kol_sj_10 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_11, 0, 0, ROUND (prognoza_01_r.kol_sj_11 / kapacitet_02_r.kol_sj_11 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_12, 0, 0, ROUND (prognoza_01_r.kol_sj_12 / kapacitet_02_r.kol_sj_12 * 100, 2)), DECODE (kapacitet_02_r.kol_sj_ytd, 0, 0, ROUND (prognoza_01_r.kol_sj_ytd / kapacitet_02_r.kol_sj_ytd * 100, 2)), DECODE (kapacitet_02_r.kol_sj_ymg, 0, 0, ROUND (prognoza_01_r.kol_sj_ymg / kapacitet_02_r.kol_sj_ymg * 100, 2)), DECODE (kapacitet_02_r.kol_sj_full_year, 0, 0, ROUND (prognoza_01_r.kol_sj_full_year / kapacitet_02_r.kol_sj_full_year * 100, 2))); -- Stavka 4: Prognoza, Rezervacije (protekla godina) rbr_stavke_l := 4; OPEN prognoza_h_c (stupanj_prodaje_p, dat_poc_usp_l, dat_zav_usp_l, ADD_MONTHS (TRUNC (sysdate), -12)); FETCH prognoza_h_c INTO prognoza_h_r; CLOSE prognoza_h_c; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, prognoza_h_r.kol_sj_01, prognoza_h_r.kol_sj_02, prognoza_h_r.kol_sj_03, prognoza_h_r.kol_sj_04, prognoza_h_r.kol_sj_05, prognoza_h_r.kol_sj_06, prognoza_h_r.kol_sj_07, prognoza_h_r.kol_sj_08, prognoza_h_r.kol_sj_09, prognoza_h_r.kol_sj_10, prognoza_h_r.kol_sj_11, prognoza_h_r.kol_sj_12, prognoza_h_r.kol_sj_ytd, prognoza_h_r.kol_sj_ymg, prognoza_h_r.kol_sj_full_year); -- Stavka 5: Prognoza, Razlika (1 - 4) rbr_stavke_l := 5; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, prognoza_01_r.kol_sj_01 - prognoza_h_r.kol_sj_01, prognoza_01_r.kol_sj_02 - prognoza_h_r.kol_sj_02, prognoza_01_r.kol_sj_03 - prognoza_h_r.kol_sj_03, prognoza_01_r.kol_sj_04 - prognoza_h_r.kol_sj_04, prognoza_01_r.kol_sj_05 - prognoza_h_r.kol_sj_05, prognoza_01_r.kol_sj_06 - prognoza_h_r.kol_sj_06, prognoza_01_r.kol_sj_07 - prognoza_h_r.kol_sj_07, prognoza_01_r.kol_sj_08 - prognoza_h_r.kol_sj_08, prognoza_01_r.kol_sj_09 - prognoza_h_r.kol_sj_09, prognoza_01_r.kol_sj_10 - prognoza_h_r.kol_sj_10, prognoza_01_r.kol_sj_11 - prognoza_h_r.kol_sj_11, prognoza_01_r.kol_sj_12 - prognoza_h_r.kol_sj_12, prognoza_01_r.kol_sj_ytd - prognoza_h_r.kol_sj_ytd, prognoza_01_r.kol_sj_ymg - prognoza_h_r.kol_sj_ymg, prognoza_01_r.kol_sj_full_year - prognoza_h_r.kol_sj_full_year); -- Stavka 6: Prognoza, Razlika u % (5 / 4 * 100) rbr_stavke_l := 6; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, DECODE (prognoza_h_r.kol_sj_01, 0, 0, ROUND ( (prognoza_01_r.kol_sj_01 - prognoza_h_r.kol_sj_01) / prognoza_h_r.kol_sj_01 * 100, 2)), DECODE (prognoza_h_r.kol_sj_02, 0, 0, ROUND ( (prognoza_01_r.kol_sj_02 - prognoza_h_r.kol_sj_02) / prognoza_h_r.kol_sj_02 * 100, 2)), DECODE (prognoza_h_r.kol_sj_03, 0, 0, ROUND ( (prognoza_01_r.kol_sj_03 - prognoza_h_r.kol_sj_03) / prognoza_h_r.kol_sj_03 * 100, 2)), DECODE (prognoza_h_r.kol_sj_04, 0, 0, ROUND ( (prognoza_01_r.kol_sj_04 - prognoza_h_r.kol_sj_04) / prognoza_h_r.kol_sj_04 * 100, 2)), DECODE (prognoza_h_r.kol_sj_05, 0, 0, ROUND ( (prognoza_01_r.kol_sj_05 - prognoza_h_r.kol_sj_05) / prognoza_h_r.kol_sj_05 * 100, 2)), DECODE (prognoza_h_r.kol_sj_06, 0, 0, ROUND ( (prognoza_01_r.kol_sj_06 - prognoza_h_r.kol_sj_06) / prognoza_h_r.kol_sj_06 * 100, 2)), DECODE (prognoza_h_r.kol_sj_07, 0, 0, ROUND ( (prognoza_01_r.kol_sj_07 - prognoza_h_r.kol_sj_07) / prognoza_h_r.kol_sj_07 * 100, 2)), DECODE (prognoza_h_r.kol_sj_08, 0, 0, ROUND ( (prognoza_01_r.kol_sj_08 - prognoza_h_r.kol_sj_08) / prognoza_h_r.kol_sj_08 * 100, 2)), DECODE (prognoza_h_r.kol_sj_09, 0, 0, ROUND ( (prognoza_01_r.kol_sj_09 - prognoza_h_r.kol_sj_09) / prognoza_h_r.kol_sj_09 * 100, 2)), DECODE (prognoza_h_r.kol_sj_10, 0, 0, ROUND ( (prognoza_01_r.kol_sj_10 - prognoza_h_r.kol_sj_10) / prognoza_h_r.kol_sj_10 * 100, 2)), DECODE (prognoza_h_r.kol_sj_11, 0, 0, ROUND ( (prognoza_01_r.kol_sj_11 - prognoza_h_r.kol_sj_11) / prognoza_h_r.kol_sj_11 * 100, 2)), DECODE (prognoza_h_r.kol_sj_12, 0, 0, ROUND ( (prognoza_01_r.kol_sj_12 - prognoza_h_r.kol_sj_12) / prognoza_h_r.kol_sj_12 * 100, 2)), DECODE (prognoza_h_r.kol_sj_ytd, 0, 0, ROUND ( (prognoza_01_r.kol_sj_ytd - prognoza_h_r.kol_sj_ytd) / prognoza_h_r.kol_sj_ytd * 100, 2)), DECODE (prognoza_h_r.kol_sj_ymg, 0, 0, ROUND ( (prognoza_01_r.kol_sj_ymg - prognoza_h_r.kol_sj_ymg) / prognoza_h_r.kol_sj_ymg * 100, 2)), DECODE (prognoza_h_r.kol_sj_full_year, 0, 0, ROUND ( (prognoza_01_r.kol_sj_full_year - prognoza_h_r.kol_sj_full_year) / prognoza_h_r.kol_sj_full_year * 100, 2))); -- Stavka 7: Prognoza, Pickup (protekli tjedan) rbr_stavke_l := 7; OPEN pickup_c(stupanj_prodaje_p, dat_poc_p, dat_zav_p, TRUNC (sysdate)-1, TRUNC (sysdate)-8); FETCH pickup_c INTO pickup_07_r; CLOSE pickup_c; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, pickup_07_r.kol_sj_01, pickup_07_r.kol_sj_02, pickup_07_r.kol_sj_03, pickup_07_r.kol_sj_04, pickup_07_r.kol_sj_05, pickup_07_r.kol_sj_06, pickup_07_r.kol_sj_07, pickup_07_r.kol_sj_08, pickup_07_r.kol_sj_09, pickup_07_r.kol_sj_10, pickup_07_r.kol_sj_11, pickup_07_r.kol_sj_12, pickup_07_r.kol_sj_ytd, pickup_07_r.kol_sj_ymg, pickup_07_r.kol_sj_full_year); -- Stavka 8: Prognoza, Pickup (protekli tjedan protekle godine) rbr_stavke_l := 8; OPEN pickup2_c(stupanj_prodaje_p, dat_poc_usp_l, dat_zav_usp_l, ADD_MONTHS (TRUNC (sysdate)-1, -12), ADD_MONTHS (TRUNC (sysdate)-8, -12)); FETCH pickup2_c INTO pickup_08_r; CLOSE pickup2_c; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, pickup_08_r.kol_sj_01, pickup_08_r.kol_sj_02, pickup_08_r.kol_sj_03, pickup_08_r.kol_sj_04, pickup_08_r.kol_sj_05, pickup_08_r.kol_sj_06, pickup_08_r.kol_sj_07, pickup_08_r.kol_sj_08, pickup_08_r.kol_sj_09, pickup_08_r.kol_sj_10, pickup_08_r.kol_sj_11, pickup_08_r.kol_sj_12, pickup_08_r.kol_sj_ytd, pickup_08_r.kol_sj_ymg, pickup_08_r.kol_sj_full_year); -- Stavka 9: Prognoza, Razlika (7 - 8) rbr_stavke_l := 9; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, pickup_07_r.kol_sj_01 - pickup_08_r.kol_sj_01, pickup_07_r.kol_sj_02 - pickup_08_r.kol_sj_02, pickup_07_r.kol_sj_03 - pickup_08_r.kol_sj_03, pickup_07_r.kol_sj_04 - pickup_08_r.kol_sj_04, pickup_07_r.kol_sj_05 - pickup_08_r.kol_sj_05, pickup_07_r.kol_sj_06 - pickup_08_r.kol_sj_06, pickup_07_r.kol_sj_07 - pickup_08_r.kol_sj_07, pickup_07_r.kol_sj_08 - pickup_08_r.kol_sj_08, pickup_07_r.kol_sj_09 - pickup_08_r.kol_sj_09, pickup_07_r.kol_sj_10 - pickup_08_r.kol_sj_10, pickup_07_r.kol_sj_11 - pickup_08_r.kol_sj_11, pickup_07_r.kol_sj_12 - pickup_08_r.kol_sj_12, pickup_07_r.kol_sj_ytd - pickup_08_r.kol_sj_ytd, pickup_07_r.kol_sj_ymg - pickup_08_r.kol_sj_ymg, pickup_07_r.kol_sj_full_year - pickup_08_r.kol_sj_full_year); -- Stavka 10: Prognoza, Razlika u % (9 / 8 * 100) rbr_stavke_l := 10; OPEN rc_c (grupa_prognoza_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_prognoza_l, rc_r.opis_grupe, rc_r.opis_stavke, DECODE (pickup_08_r.kol_sj_01, 0, 0, ROUND ( (pickup_07_r.kol_sj_01 - pickup_08_r.kol_sj_01) / pickup_08_r.kol_sj_01 * 100, 2)), DECODE (pickup_08_r.kol_sj_02, 0, 0, ROUND ( (pickup_07_r.kol_sj_02 - pickup_08_r.kol_sj_02) / pickup_08_r.kol_sj_02 * 100, 2)), DECODE (pickup_08_r.kol_sj_03, 0, 0, ROUND ( (pickup_07_r.kol_sj_03 - pickup_08_r.kol_sj_03) / pickup_08_r.kol_sj_03 * 100, 2)), DECODE (pickup_08_r.kol_sj_04, 0, 0, ROUND ( (pickup_07_r.kol_sj_04 - pickup_08_r.kol_sj_04) / pickup_08_r.kol_sj_04 * 100, 2)), DECODE (pickup_08_r.kol_sj_05, 0, 0, ROUND ( (pickup_07_r.kol_sj_05 - pickup_08_r.kol_sj_05) / pickup_08_r.kol_sj_05 * 100, 2)), DECODE (pickup_08_r.kol_sj_06, 0, 0, ROUND ( (pickup_07_r.kol_sj_06 - pickup_08_r.kol_sj_06) / pickup_08_r.kol_sj_06 * 100, 2)), DECODE (pickup_08_r.kol_sj_07, 0, 0, ROUND ( (pickup_07_r.kol_sj_07 - pickup_08_r.kol_sj_07) / pickup_08_r.kol_sj_07 * 100, 2)), DECODE (pickup_08_r.kol_sj_08, 0, 0, ROUND ( (pickup_07_r.kol_sj_08 - pickup_08_r.kol_sj_08) / pickup_08_r.kol_sj_08 * 100, 2)), DECODE (pickup_08_r.kol_sj_09, 0, 0, ROUND ( (pickup_07_r.kol_sj_09 - pickup_08_r.kol_sj_09) / pickup_08_r.kol_sj_09 * 100, 2)), DECODE (pickup_08_r.kol_sj_10, 0, 0, ROUND ( (pickup_07_r.kol_sj_10 - pickup_08_r.kol_sj_10) / pickup_08_r.kol_sj_10 * 100, 2)), DECODE (pickup_08_r.kol_sj_11, 0, 0, ROUND ( (pickup_07_r.kol_sj_11 - pickup_08_r.kol_sj_11) / pickup_08_r.kol_sj_11 * 100, 2)), DECODE (pickup_08_r.kol_sj_12, 0, 0, ROUND ( (pickup_07_r.kol_sj_12 - pickup_08_r.kol_sj_12) / pickup_08_r.kol_sj_12 * 100, 2)), DECODE (pickup_08_r.kol_sj_ytd, 0, 0, ROUND ( (pickup_07_r.kol_sj_ytd - pickup_08_r.kol_sj_ytd) / pickup_08_r.kol_sj_ytd * 100, 2)), DECODE (pickup_08_r.kol_sj_ymg, 0, 0, ROUND ( (pickup_07_r.kol_sj_ymg - pickup_08_r.kol_sj_ymg) / pickup_08_r.kol_sj_ymg * 100, 2)), DECODE (pickup_08_r.kol_sj_full_year, 0, 0, ROUND ( (pickup_07_r.kol_sj_full_year - pickup_08_r.kol_sj_full_year) / pickup_08_r.kol_sj_full_year * 100, 2))); -- Stavka 11: Ostvareno, Ostvareno protekle godine rbr_stavke_l := 11; OPEN prognoza_c ('O', dat_poc_usp_l, dat_zav_usp_l, ADD_MONTHS (TRUNC (sysdate), -12)); FETCH prognoza_c INTO ostvareno_11_r; CLOSE prognoza_c; OPEN rc_c (grupa_ostvareno_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_ostvareno_l, rc_r.opis_grupe, rc_r.opis_stavke, ostvareno_11_r.kol_sj_01, ostvareno_11_r.kol_sj_02, ostvareno_11_r.kol_sj_03, ostvareno_11_r.kol_sj_04, ostvareno_11_r.kol_sj_05, ostvareno_11_r.kol_sj_06, ostvareno_11_r.kol_sj_07, ostvareno_11_r.kol_sj_08, ostvareno_11_r.kol_sj_09, ostvareno_11_r.kol_sj_10, ostvareno_11_r.kol_sj_11, ostvareno_11_r.kol_sj_12, ostvareno_11_r.kol_sj_ytd, ostvareno_11_r.kol_sj_ymg, ostvareno_11_r.kol_sj_full_year); -- Stavka 12: Ostvareno, Razlika: prognoza - ostvareno (4 - 11) rbr_stavke_l := 12; OPEN rc_c (grupa_ostvareno_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_ostvareno_l, rc_r.opis_grupe, rc_r.opis_stavke, prognoza_h_r.kol_sj_01 - ostvareno_11_r.kol_sj_01, prognoza_h_r.kol_sj_02 - ostvareno_11_r.kol_sj_02, prognoza_h_r.kol_sj_03 - ostvareno_11_r.kol_sj_03, prognoza_h_r.kol_sj_04 - ostvareno_11_r.kol_sj_04, prognoza_h_r.kol_sj_05 - ostvareno_11_r.kol_sj_05, prognoza_h_r.kol_sj_06 - ostvareno_11_r.kol_sj_06, prognoza_h_r.kol_sj_07 - ostvareno_11_r.kol_sj_07, prognoza_h_r.kol_sj_08 - ostvareno_11_r.kol_sj_08, prognoza_h_r.kol_sj_09 - ostvareno_11_r.kol_sj_09, prognoza_h_r.kol_sj_10 - ostvareno_11_r.kol_sj_10, prognoza_h_r.kol_sj_11 - ostvareno_11_r.kol_sj_11, prognoza_h_r.kol_sj_12 - ostvareno_11_r.kol_sj_12, prognoza_h_r.kol_sj_ytd - ostvareno_11_r.kol_sj_ytd, prognoza_h_r.kol_sj_ymg - ostvareno_11_r.kol_sj_ymg, prognoza_h_r.kol_sj_full_year - ostvareno_11_r.kol_sj_full_year); -- Stavka 13: Ostvareno, Razlika u % (12 / 11 * 100) rbr_stavke_l := 13; OPEN rc_c (grupa_ostvareno_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_ostvareno_l, rc_r.opis_grupe, rc_r.opis_stavke, DECODE (ostvareno_11_r.kol_sj_01, 0, 0, ROUND ( (prognoza_h_r.kol_sj_01 - ostvareno_11_r.kol_sj_01) / ostvareno_11_r.kol_sj_01 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_02, 0, 0, ROUND ( (prognoza_h_r.kol_sj_02 - ostvareno_11_r.kol_sj_02) / ostvareno_11_r.kol_sj_02 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_03, 0, 0, ROUND ( (prognoza_h_r.kol_sj_03 - ostvareno_11_r.kol_sj_03) / ostvareno_11_r.kol_sj_03 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_04, 0, 0, ROUND ( (prognoza_h_r.kol_sj_04 - ostvareno_11_r.kol_sj_04) / ostvareno_11_r.kol_sj_04 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_05, 0, 0, ROUND ( (prognoza_h_r.kol_sj_05 - ostvareno_11_r.kol_sj_05) / ostvareno_11_r.kol_sj_05 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_06, 0, 0, ROUND ( (prognoza_h_r.kol_sj_06 - ostvareno_11_r.kol_sj_06) / ostvareno_11_r.kol_sj_06 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_07, 0, 0, ROUND ( (prognoza_h_r.kol_sj_07 - ostvareno_11_r.kol_sj_07) / ostvareno_11_r.kol_sj_07 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_08, 0, 0, ROUND ( (prognoza_h_r.kol_sj_08 - ostvareno_11_r.kol_sj_08) / ostvareno_11_r.kol_sj_08 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_09, 0, 0, ROUND ( (prognoza_h_r.kol_sj_09 - ostvareno_11_r.kol_sj_09) / ostvareno_11_r.kol_sj_09 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_10, 0, 0, ROUND ( (prognoza_h_r.kol_sj_10 - ostvareno_11_r.kol_sj_10) / ostvareno_11_r.kol_sj_10 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_11, 0, 0, ROUND ( (prognoza_h_r.kol_sj_11 - ostvareno_11_r.kol_sj_11) / ostvareno_11_r.kol_sj_11 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_12, 0, 0, ROUND ( (prognoza_h_r.kol_sj_12 - ostvareno_11_r.kol_sj_12) / ostvareno_11_r.kol_sj_12 * 100, 2)), DECODE (ostvareno_11_r.kol_sj_ytd, 0, 0, ROUND ( (prognoza_h_r.kol_sj_ytd - ostvareno_11_r.kol_sj_ytd) / ostvareno_11_r.kol_sj_ytd * 100, 2)), DECODE (ostvareno_11_r.kol_sj_ymg, 0, 0, ROUND ( (prognoza_h_r.kol_sj_ymg - ostvareno_11_r.kol_sj_ymg) / ostvareno_11_r.kol_sj_ymg * 100, 2)), DECODE (ostvareno_11_r.kol_sj_full_year, 0, 0, ROUND ((prognoza_h_r.kol_sj_full_year - ostvareno_11_r.kol_sj_full_year) / ostvareno_11_r.kol_sj_full_year * 100, 2))); -- Stavka 14: Plan, Planirano rbr_stavke_l := 14; OPEN planirano_c; FETCH planirano_c INTO planirano_14_r; CLOSE planirano_c; OPEN rc_c (grupa_plan_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_plan_l, rc_r.opis_grupe, rc_r.opis_stavke, planirano_14_r.kol_sj_01, planirano_14_r.kol_sj_02, planirano_14_r.kol_sj_03, planirano_14_r.kol_sj_04, planirano_14_r.kol_sj_05, planirano_14_r.kol_sj_06, planirano_14_r.kol_sj_07, planirano_14_r.kol_sj_08, planirano_14_r.kol_sj_09, planirano_14_r.kol_sj_10, planirano_14_r.kol_sj_11, planirano_14_r.kol_sj_12, planirano_14_r.kol_sj_ytd, planirano_14_r.kol_sj_ymg, planirano_14_r.kol_sj_full_year); -- Stavka 15: Plan, Razlika: prognoza - planirano (1 - 14) rbr_stavke_l := 15; OPEN rc_c (grupa_plan_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_plan_l, rc_r.opis_grupe, rc_r.opis_stavke, prognoza_01_r.kol_sj_01 - planirano_14_r.kol_sj_01, prognoza_01_r.kol_sj_02 - planirano_14_r.kol_sj_02, prognoza_01_r.kol_sj_03 - planirano_14_r.kol_sj_03, prognoza_01_r.kol_sj_04 - planirano_14_r.kol_sj_04, prognoza_01_r.kol_sj_05 - planirano_14_r.kol_sj_05, prognoza_01_r.kol_sj_06 - planirano_14_r.kol_sj_06, prognoza_01_r.kol_sj_07 - planirano_14_r.kol_sj_07, prognoza_01_r.kol_sj_08 - planirano_14_r.kol_sj_08, prognoza_01_r.kol_sj_09 - planirano_14_r.kol_sj_09, prognoza_01_r.kol_sj_10 - planirano_14_r.kol_sj_10, prognoza_01_r.kol_sj_11 - planirano_14_r.kol_sj_11, prognoza_01_r.kol_sj_12 - planirano_14_r.kol_sj_12, prognoza_01_r.kol_sj_ytd - planirano_14_r.kol_sj_ytd, prognoza_01_r.kol_sj_ymg - planirano_14_r.kol_sj_ymg, prognoza_01_r.kol_sj_full_year - planirano_14_r.kol_sj_full_year); -- Stavka 16: Plan, Razlika u % (15 / 14 * 100) rbr_stavke_l := 16; OPEN rc_c (grupa_plan_l, rbr_stavke_l); FETCH rc_c INTO rc_r; CLOSE rc_c; INSERT INTO prec_global ( id1, id2, opis1, opis2, iznos1, iznos2, iznos3, iznos4, iznos5, iznos6, iznos7, iznos8, iznos9, iznos10, iznos11, iznos12, iznos13, iznos14, iznos15) VALUES ( rbr_stavke_l, grupa_plan_l, rc_r.opis_grupe, rc_r.opis_stavke, DECODE (planirano_14_r.kol_sj_01, 0, 0, ROUND ( (prognoza_01_r.kol_sj_01 - planirano_14_r.kol_sj_01) / planirano_14_r.kol_sj_01 * 100, 2)), DECODE (planirano_14_r.kol_sj_02, 0, 0, ROUND ( (prognoza_01_r.kol_sj_02 - planirano_14_r.kol_sj_02) / planirano_14_r.kol_sj_02 * 100, 2)), DECODE (planirano_14_r.kol_sj_03, 0, 0, ROUND ( (prognoza_01_r.kol_sj_03 - planirano_14_r.kol_sj_03) / planirano_14_r.kol_sj_03 * 100, 2)), DECODE (planirano_14_r.kol_sj_04, 0, 0, ROUND ( (prognoza_01_r.kol_sj_04 - planirano_14_r.kol_sj_04) / planirano_14_r.kol_sj_04 * 100, 2)), DECODE (planirano_14_r.kol_sj_05, 0, 0, ROUND ( (prognoza_01_r.kol_sj_05 - planirano_14_r.kol_sj_05) / planirano_14_r.kol_sj_05 * 100, 2)), DECODE (planirano_14_r.kol_sj_06, 0, 0, ROUND ( (prognoza_01_r.kol_sj_06 - planirano_14_r.kol_sj_06) / planirano_14_r.kol_sj_06 * 100, 2)), DECODE (planirano_14_r.kol_sj_07, 0, 0, ROUND ( (prognoza_01_r.kol_sj_07 - planirano_14_r.kol_sj_07) / planirano_14_r.kol_sj_07 * 100, 2)), DECODE (planirano_14_r.kol_sj_08, 0, 0, ROUND ( (prognoza_01_r.kol_sj_08 - planirano_14_r.kol_sj_08) / planirano_14_r.kol_sj_08 * 100, 2)), DECODE (planirano_14_r.kol_sj_09, 0, 0, ROUND ( (prognoza_01_r.kol_sj_09 - planirano_14_r.kol_sj_09) / planirano_14_r.kol_sj_09 * 100, 2)), DECODE (planirano_14_r.kol_sj_10, 0, 0, ROUND ( (prognoza_01_r.kol_sj_10 - planirano_14_r.kol_sj_10) / planirano_14_r.kol_sj_10 * 100, 2)), DECODE (planirano_14_r.kol_sj_11, 0, 0, ROUND ( (prognoza_01_r.kol_sj_11 - planirano_14_r.kol_sj_11) / planirano_14_r.kol_sj_11 * 100, 2)), DECODE (planirano_14_r.kol_sj_12, 0, 0, ROUND ( (prognoza_01_r.kol_sj_12 - planirano_14_r.kol_sj_12) / planirano_14_r.kol_sj_12 * 100, 2)), DECODE (planirano_14_r.kol_sj_ytd, 0, 0, ROUND ( (prognoza_01_r.kol_sj_ytd - planirano_14_r.kol_sj_ytd) / planirano_14_r.kol_sj_ytd * 100, 2)), DECODE (planirano_14_r.kol_sj_ymg, 0, 0, ROUND ( (prognoza_01_r.kol_sj_ymg - planirano_14_r.kol_sj_ymg) / planirano_14_r.kol_sj_ymg * 100, 2)), DECODE (planirano_14_r.kol_sj_full_year, 0, 0, ROUND ( (prognoza_01_r.kol_sj_full_year - planirano_14_r.kol_sj_full_year) / planirano_14_r.kol_sj_full_year * 100, 2))); END; END PRA_REC_RM; / SHOW ERROR