-- C:\Users\dgajic\Desktop\IRN 3885\2\des\pra_m_sj.pkb -- -- Generated for Oracle 10g on Thu Aug 22 11:43:50 2024 by Server Generator 6.5.96.5.6 PROMPT Creating Package Body 'PRA_M_SJ' CREATE OR REPLACE PACKAGE BODY PRA_M_SJ IS PROCEDURE PROVJERI_GSJ (GSJ_ID_P IN M_GSJ.ID%TYPE ,SO_ID_P IN M_SO.ID%TYPE ) IS -- Grupa SJ mora pripadati istom SO kao i SJ. so_id_l m_gsj.so_id%TYPE; BEGIN IF gsj_id_p IS NULL OR so_id_p IS NULL THEN RETURN; END IF; SELECT so_id INTO so_id_l FROM m_gsj WHERE id = gsj_id_p; IF so_id_p <> so_id_l THEN -- Grupa SJ mora pripadati istom SO kao i SJ. pra_rec_zaj.vrati_poruku (-20220); END IF; END; PROCEDURE PROVJERI_IZMJENU_VSJ (SJ_ID_P IN M_SJ.ID%TYPE ,SO_ID_P IN M_SJ.SO_ID%TYPE ,VSJ_ID_NEW_P IN M_SJ.VSJ_ID%TYPE ,VSJ_ID_OLD_P IN M_SJ.VSJ_ID%TYPE ) IS /* Ne može se izmjeniti VSJ za SJ u kojoj boravi gost ili za nju postoji valjana neiskorištena rezervacija ili za nju postoji zakup. Ne može se brisati SJ odnosno izmjeniti VSJ ako je SJ zadnja te vrste i ako za nju postoje valjani dokumenti za buduće razdoblje. (T_PON_VSJ, T_REZ_VSJ). */ opis_l VARCHAR2(100); BEGIN IF vsj_id_old_p = vsj_id_new_p THEN RETURN; END IF; -- provjera SJ u t_gosti SELECT MIN (prezime || ' ' || ime) INTO opis_l FROM t_gosti gost WHERE gost.ozn_prisutnosti = 'P' --prijavljen AND gost.sj_id = sj_id_p; IF opis_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20094, pra_zmp_zaj.poruka ('REC', 'REC0594') || ' ' || opis_l); END IF; -- provjera SJ u t_rez_vsj SELECT MIN (rez.rbr || ' ' || rez.god_poslovna) INTO opis_l FROM t_rezervacije rez, t_rez_vsj rezvsj WHERE rez.id = rezvsj.rez_id AND rez.oznaka IN ('V') AND rez.ozn_vstorna IS NULL -- 02.01.2012 MK valjana rez AND ( rezvsj.kol_sj - NVL (rezvsj.kol_sjZ, 0) > 0 OR rezvsj.br_osoba - NVL (rezvsj.br_osobaZ, 0) > 0 ) AND rezvsj.sj_id = sj_id_p; IF opis_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20094, pra_zmp_zaj.poruka ('REC', 'REC0595') || ' ' || opis_l); END IF; -- provjera SJ u trec_rez_sj SELECT MIN (rez.rbr || ' ' || rez.god_poslovna) INTO opis_l FROM t_rezervacije rez, t_rez_vsj rezvsj, trec_rez_sj recrezsj WHERE rez.id = rezvsj.rez_id AND rezvsj.id = recrezsj.rezvsj_id AND rez.oznaka IN ('V') AND rez.ozn_vstorna IS NULL -- 02.01.2012 MK valjana rez AND recrezsj.br_osoba - NVL (recrezsj.br_osobaZ, 0) > 0 AND recrezsj.sj_id = sj_id_p; IF opis_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20094, pra_zmp_zaj.poruka ('REC', 'REC0595') || ' ' || opis_l); END IF; -- provjera SJ u t_zak_sj SELECT MIN (zak.rbr || ' ' || zak.god_poslovna) INTO opis_l FROM t_zakup zak, t_zak_sj zaksj WHERE zak.id = zaksj.zak_id AND zak.oznaka IN ('V') AND zak.dat_zav >= TRUNC (SYSDATE) AND zak.so_id = so_id_p AND zaksj.sj_id = sj_id_p; IF opis_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20094, pra_zmp_zaj.poruka ('REC', 'REC0596') || ' ' || opis_l); END IF; -- provjera da li je to zadnja valjana VSJ u tom SO - opis_l = 0 ako smo zadnju obrisali ili promijenili SELECT COUNT (1) INTO opis_l FROM m_sj WHERE vsj_id = vsj_id_old_p AND so_id = so_id_p AND dat_ponisten IS NULL; IF opis_l > 0 THEN RETURN; END IF; -- provjera t_pon_vsj SELECT MIN (pon.rbr || ' ' || pon.god_poslovna) INTO opis_l FROM t_ponude pon, t_pon_ojr ponojr, t_pon_so ponso, t_pon_vsj ponvsj WHERE pon.id = ponojr.pon_id AND ponojr.id = ponso.ponojr_id AND ponso.id = ponvsj.ponso_id AND (pon.oznaka IS NULL OR pon.oznaka IN ('V', '*')) AND ponso.dat_zav >= TRUNC (SYSDATE) AND ponso.so_id = so_id_p AND ponvsj.vsj_id = vsj_id_old_p; IF opis_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20094, pra_zmp_zaj.poruka ('REC', 'REC0598') || ' ' || opis_l); END IF; -- provjera t_rez_vsj SELECT MIN (rez.rbr || ' ' || rez.god_poslovna) INTO opis_l FROM t_rezervacije rez, t_rez_vsj rezvsj WHERE rez.id = rezvsj.rez_id AND rez.oznaka IN ('V') AND rez.ozn_vstorna IS NULL -- 02.01.2012 MK valjana rez AND rez.dat_odlaska >= TRUNC (SYSDATE) AND rez.so_id = so_id_p AND rezvsj.vsj_id = vsj_id_old_p; IF opis_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20094, pra_zmp_zaj.poruka ('REC', 'REC0601') || ' ' || opis_l); END IF; END; PROCEDURE BRISI_BOOK_SJ (VSJ_ID_P IN M_SJ.VSJ_ID%TYPE ,SO_ID_P IN M_SJ.SO_ID%TYPE ) IS /* briši booking za vsj za koju nema više niti jedne SJ u SO od SYSDATE nadalje ako su kol_sj i br_osoba = 0 Koristi se u AUS_M_SJ, ADS_M_SJ. */ nebitno_l NUMBER; BEGIN IF so_id_p IS NULL OR vsj_id_p IS NULL THEN RETURN; END IF; SELECT COUNT (1) INTO nebitno_l FROM m_sj WHERE vsj_id = vsj_id_p AND so_id = so_id_p; IF nebitno_l > 0 THEN RETURN; END IF; SELECT COUNT (1) INTO nebitno_l FROM i_booking WHERE so_id = so_id_P AND vsj_id = vsj_id_P AND datum >= TRUNC (SYSDATE) AND ( kol_sj <> 0 OR NVL (br_osoba, 0) <> 0 ); IF nebitno_l > 0 THEN -- Ne možete brisati zadnju SJ vrste za koju postoji booking. pra_rec_zaj.vrati_poruku (-20122); END IF; DELETE FROM i_booking WHERE so_id = so_id_P AND vsj_id = vsj_id_P AND datum >= TRUNC (SYSDATE) AND kol_sj = 0 AND NVL (br_osoba, 0) = 0; END; PROCEDURE BRISI_STSJ_SJ (SJ_ID_P IN M_SJ.ID%TYPE ) IS -- briši i_statusisj ako su sve oznake nekorištene nebitno_l NUMBER; BEGIN IF sj_id_p IS NULL THEN RETURN; END IF; SELECT COUNT (1) INTO nebitno_l FROM i_statusisj WHERE sj_id = sj_id_p AND (ozn_i IN (2, 3) OR ozn_u <> 0 OR ozn_r <> 0 OR ozn_z <> 0); IF nebitno_l > 0 THEN -- Ne možete brisati SJ za koju su ažurirani statusi pra_rec_zaj.vrati_poruku (-20123); END IF; DELETE FROM i_statusisj WHERE sj_id = sj_id_p AND ozn_i = 1 AND ozn_u = 0 AND ozn_r = 0 AND ozn_z = 0; END; PROCEDURE PROVJERI_PONISTAVANJE_SJ (SJ_ID_P IN M_SJ.ID%TYPE ,SO_ID_P IN M_SJ.SO_ID%TYPE ,VSJ_ID_P IN M_SJ.VSJ_ID%TYPE ,DAT_PONISTEN_P IN M_SJ.DAT_PONISTEN%TYPE ) IS /* Ne može se poništiti SJ u kojoj boravi gost ili za nju postoji valjana neiskorištena rezervacija ili za nju postoji zakup ili je izvan upotrebe / u kvaru / raspoloživa nakon dana poništavanja Ne može se brisati SJ odnosno izmjeniti VSJ ako je SJ zadnja te vrste i ako za nju postoje valjani dokumenti za buduće razdoblje. (T_PON_VSJ, T_REZ_VSJ). */ nebitno_l VARCHAR2(100); ozn_i_l trec_odrzavanje.ozn_i%TYPE; BEGIN IF sj_id_p IS NULL OR so_id_p IS NULL OR vsj_id_p IS NULL OR dat_ponisten_p IS NULL THEN RETURN; END IF; -- provjera SJ u t_gosti SELECT MIN (prezime || ' ' || ime) INTO nebitno_l FROM t_gosti gost WHERE gost.ozn_prisutnosti = 'P' -- prisutan AND gost.sj_id = sj_id_p; IF nebitno_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC0594') || ' ' || nebitno_l); END IF; -- provjera SJ u t_rez_vsj SELECT MIN (rez.rbr || ' ' || rez.god_poslovna)INTO nebitno_l FROM t_rezervacije rez, t_rez_vsj rezvsj WHERE rez.id = rezvsj.rez_id AND rez.oznaka IN ('V') AND rez.ozn_vstorna IS NULL -- valjana rez AND (rezvsj.kol_sj - NVL (rezvsj.kol_sjZ, 0) > 0 OR rezvsj.br_osoba - NVL (rezvsj.br_osobaZ, 0) > 0) AND rezvsj.sj_id = sj_id_p; IF nebitno_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC0595') || ' ' || nebitno_l); END IF; -- provjera SJ u trec_rez_sj SELECT MIN (rez.rbr || ' ' || rez.god_poslovna)INTO nebitno_l FROM t_rezervacije rez, t_rez_vsj rezvsj, trec_rez_sj recrezsj WHERE rez.id = rezvsj.rez_id AND rezvsj.id = recrezsj.rezvsj_id AND rez.oznaka IN ('V') AND rez.ozn_vstorna IS NULL -- valjana rez AND recrezsj.br_osoba - NVL (recrezsj.br_osobaZ, 0) > 0 AND recrezsj.sj_id = sj_id_p; -- IRN 3854 ispravak iz rezvsj.sj_id u recrezsj.sj_id IF nebitno_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC0595') || ' ' || nebitno_l); END IF; -- provjera SJ u t_zak_sj SELECT MIN (zak.rbr || ' ' || zak.god_poslovna) INTO nebitno_l FROM t_zakup zak, t_zak_sj zaksj WHERE zak.id = zaksj.zak_id AND zak.oznaka IN ('V') AND zak.dat_zav > dat_ponisten_p AND zaksj.sj_id = sj_id_p; IF nebitno_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC0596') || ' ' || nebitno_l); END IF; -- provjera SJ izvan upotrebe / u kvaru / raspoloživa BEGIN SELECT TO_CHAR (dat_zav, 'DD.MM.RRRR'), ozn_i INTO nebitno_l, ozn_i_l FROM trec_odrzavanje -- IRN 1313 WHERE oznaka = 'V' -- IRN 1793 AND sj_id = sj_id_p AND dat_ponisten_p < dat_zav; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; IF ozn_i_l = 1 THEN -- raspoloživa pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC1158') || ' ' || nebitno_l); ELSIF ozn_i_l = 2 THEN -- u kvaru pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC1159') || ' ' || nebitno_l); ELSIF ozn_i_l = 3 THEN -- izvan upotrebe pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC0597') || ' ' || nebitno_l); END IF; -- provjera da li je to zadnja VSJ u tom SO, nebitno_l = 0 ako smo zadnju obrisali ili promijenili SELECT COUNT (1) INTO nebitno_l FROM m_sj WHERE vsj_id = vsj_id_p AND so_id = so_id_p AND dat_ponisten IS NULL; IF nebitno_l > 0 THEN RETURN; END IF; -- provjera t_pon_vsj SELECT MIN (pon.rbr || ' ' || pon.god_poslovna) INTO nebitno_l FROM t_ponude pon, t_pon_ojr ponojr, t_pon_so ponso, t_pon_vsj ponvsj WHERE pon.id = ponojr.pon_id AND ponojr.id = ponso.ponojr_id AND ponso.id = ponvsj.ponso_id AND (pon.oznaka IS NULL OR pon.oznaka IN ('V','*')) AND ponso.dat_zav > dat_ponisten_p AND ponso.so_id = so_id_p AND ponvsj.vsj_id = vsj_id_p; IF nebitno_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC0598') || ' ' || nebitno_l); END IF; -- provjera t_rez_vsj SELECT MIN (rez.rbr || ' ' || rez.god_poslovna) INTO nebitno_l FROM t_rezervacije rez, t_rez_vsj rezvsj WHERE rez.id = rezvsj.rez_id AND rez.oznaka IN ('V') AND rez.ozn_vstorna IS NULL -- valjana rez AND rez.dat_odlaska > dat_ponisten_p AND rez.so_id = so_id_p AND rezvsj.vsj_id = vsj_id_p; IF nebitno_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20416, pra_zmp_zaj.poruka ('REC', 'REC0601') || ' ' || nebitno_l); END IF; END; PROCEDURE PROVJERI_SO_PONISTEN (SO_P IN NUMBER ) IS -- dat_ponisten_so_l DATE; BEGIN SELECT dat_ponisten INTO dat_ponisten_so_l FROM m_so WHERE id = so_p; IF dat_ponisten_so_l IS NOT NULL THEN -- SJ se ne može 'odponištiti' ako je SO poništen pra_rec_zaj.vrati_poruku (-20573); END IF; END; PROCEDURE PROVJERI_IZMJENU_SASTAVLJENE (SJ_ID_P IN m_sj.id%type ,SO_ID_P IN M_SO.ID%TYPE ,VSJS_ID_OLD_P IN m_sj.vsj_id%type ,VSJS_ID_NEW_P IN m_sj.vsj_id%type ,BROJS_OLD_P IN m_sj.brojs%type ,BROJS_NEW_P IN m_sj.brojs%type ,DAT_PONISTEN_NEW_P IN m_sj.dat_ponisten%type ) IS /* Ne dopustiti promjenu VSJS ako su upisane povezane SJ (valjane) Kod upisa brojs provjeriti sastav Kod brisanja brojs provjeriti: da ne postoji valjana neiskorištena rezervacija za tu SJ (i tu VSJS) da nije zadnja SJ te VSJS ako za tu vsjs postoje rezervacije te VSJS */ CURSOR sj IS SELECT broj FROM m_sj WHERE sjp_id = sj_id_p AND dat_ponisten IS NULL; br_redaka_vsjvsj_l NUMBER; br_redaka_sj_l NUMBER; br_redaka_vsjvsj1_l NUMBER; opis_l VARCHAR2 (100); BEGIN IF sj_id_p IS NULL THEN RETURN; END IF; -- provjera da li postoje povezane SJ IF NVL (vsjs_id_old_p, 0) <> NVL (vsjs_id_new_p, 0) THEN OPEN sj; FETCH sj INTO opis_l; IF opis_l IS NOT NULL THEN CLOSE sj; -- Ne može se mijenjati niti brisati sastavljena vrsta smještane jedinice jer postoje zavisni podaci (#0). pra_rec_zaj.vrati_poruku (-20621, pra_zmp_zaj.poruka ('REC', 'REC_SJ') || ' ' || opis_l); END IF; CLOSE sj; END IF; -- ako je upisan brojs provjeri sastav IF brojs_new_p IS NOT NULL AND dat_ponisten_new_p IS NULL THEN SELECT COUNT (1) INTO br_redaka_vsjvsj_l FROM s_vsj_vsj WHERE vsjs_id = vsjs_id_new_p; SELECT COUNT (vsj_id) INTO br_redaka_sj_l FROM (SELECT vsj_id, COUNT (id) FROM m_sj WHERE (id = sj_id_p OR sjp_id = sj_id_p) AND dat_ponisten IS NULL GROUP BY vsj_id); IF br_redaka_vsjvsj_l <> br_redaka_sj_l THEN -- Sastav SJ ne odgovara sastavu sastavljene VSJ. pra_rec_zaj.vrati_poruku (-20622); END IF; FOR vsjus_c IN ( SELECT vsj_id, COUNT (id) kol_sj FROM m_sj WHERE (id = sj_id_p OR sjp_id = sj_id_p) AND dat_ponisten IS NULL GROUP BY vsj_id) LOOP SELECT COUNT (1) INTO br_redaka_vsjvsj1_l FROM s_vsj_vsj WHERE vsjs_id = vsjs_id_new_p AND vsjus_id = vsjus_c.vsj_id AND kol_sj = vsjus_c.kol_sj; IF br_redaka_vsjvsj1_l <> 1 THEN pra_rec_zaj.vrati_poruku (-20622); END IF; END LOOP; END IF; -- brisanje brojs IF brojs_old_p IS NOT NULL AND brojs_new_p IS NULL THEN -- provjera SJ u t_rez_vsj SELECT MIN (rez.rbr || ' ' || rez.god_poslovna) INTO opis_l FROM t_rezervacije rez, t_rez_vsj rezvsj WHERE rez.id = rezvsj.rez_id AND rez.oznaka IN ('V') AND rez.ozn_vstorna IS NULL AND (rez.dat_odlaska >= TRUNC (SYSDATE) OR rezvsj.kol_sj - NVL (rezvsj.kol_sjZ, 0) > 0 OR rezvsj.br_osoba - NVL (rezvsj.br_osobaZ, 0) > 0) AND rezvsj.sj_id = sj_id_p AND rezvsj.vsj_id = vsjs_id_old_p; IF opis_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20621, pra_zmp_zaj.poruka ('REC', 'REC0595') || ' ' || opis_l); END IF; -- provjera da li je to zadnja valjana VSJS u tom SO -- (opis_l = 0 ako smo zadnju obrisali ili promijenili) SELECT COUNT (1) INTO opis_l FROM m_sj WHERE vsjs_id = vsjs_id_old_p AND brojs IS NOT NULL AND so_id = so_id_p AND dat_ponisten IS NULL; IF opis_l > 0 THEN RETURN; END IF; -- provjera t_rez_vsj SELECT MIN (rez.rbr || ' ' || rez.god_poslovna) INTO opis_l FROM t_rezervacije rez, t_rez_vsj rezvsj WHERE rez.id = rezvsj.rez_id AND rez.oznaka IN ('V') AND rez.ozn_vstorna IS NULL AND (rez.dat_odlaska >= TRUNC (SYSDATE) OR rezvsj.kol_sj - NVL (rezvsj.kol_sjZ, 0) > 0 OR rezvsj.br_osoba - NVL (rezvsj.br_osobaZ, 0) > 0) AND rez.so_id = so_id_p AND rezvsj.vsj_id = vsjs_id_old_p; IF opis_l IS NOT NULL THEN pra_rec_zaj.vrati_poruku (-20621, pra_zmp_zaj.poruka ('REC', 'REC0601') || ' ' || opis_l); END IF; END IF; END; PROCEDURE PROVJERI_IZMJENU_POVEZANE (SJ_ID_P IN m_sj.id%type ,VSJ_ID_OLD_P IN m_sj.vsj_id%type ,VSJ_ID_NEW_P IN m_sj.vsj_id%type ,SJP_ID_OLD_P IN m_sj.vsj_id%type ,SJP_ID_NEW_P IN m_sj.vsj_id%type ,DAT_PONISTEN_OLD_P IN m_sj.dat_ponisten%type ,DAT_PONISTEN_NEW_P IN m_sj.dat_ponisten%type ) IS -- Ne dopustiti promjenu vsj i vsjp u povezanim sj niti poništavanje, brisanje ili unos novih povezanih sj -- povezanih SJ na SJ sa upisanim brojem sastavljene broj_l m_sj.broj%TYPE; brojs_l m_sj.brojs%TYPE; vsjs_id_l m_sj.vsjs_id%TYPE; BEGIN IF sj_id_p IS NULL OR (sjp_id_old_p IS NULL AND sjp_id_new_p IS NULL) THEN RETURN; END IF; IF sjp_id_old_p IS NOT NULL AND (sjp_id_old_p <> NVL (sjp_id_new_p, 0) OR NVL (vsj_id_old_p, 0) <> NVL (vsj_id_new_p, 0) OR NVL (dat_ponisten_old_p, TO_DATE ('31.12.9999', 'DD.MM.RRRR')) <> NVL (dat_ponisten_new_p, TO_DATE ('31.12.9999', 'DD.MM.RRRR'))) THEN SELECT broj, brojs INTO broj_l, brojs_l FROM m_sj WHERE id = sjp_id_old_p; IF brojs_l IS NOT NULL THEN -- Ne može se promijeniti sastav SJ () koja ima već upisan broj sastavljene SJ () pra_rec_zaj.vrati_poruku (-20620, broj_l, brojs_l); END IF; END IF; IF sjp_id_new_p IS NOT NULL AND (sjp_id_new_p <> NVL (sjp_id_old_p, 0) OR NVL (vsj_id_old_p, 0) <> NVL (vsj_id_new_p, 0) OR NVL (dat_ponisten_old_p, TO_DATE ('31.12.9999', 'DD.MM.RRRR')) <> NVL (dat_ponisten_new_p, TO_DATE ('31.12.9999', 'DD.MM.RRRR'))) THEN SELECT vsjs_id, broj, brojs INTO vsjs_id_l, broj_l, brojs_l FROM m_sj WHERE id = sjp_id_new_p; IF brojs_l IS NOT NULL THEN -- Ne može se promijeniti sastav SJ koja ima već upisan broj sastavljene SJ pra_rec_zaj.vrati_poruku (-20620, broj_l, brojs_l); ELSIF vsjs_id_l IS NULL THEN -- Povezana SJ mora biti sastavljena. pra_rec_zaj.vrati_poruku (-20624); END IF; END IF; END; PROCEDURE PROVJERI_VSJ_JE_U_SASTAVU (VSJ_ID_NEW_P IN m_sj.vsj_id%type ,VSJS_ID_NEW_P IN m_sj.vsj_id%type ,SJP_ID_NEW_P IN m_sj.vsj_id%type ,DAT_PONISTEN_NEW_P IN m_sj.dat_ponisten%type ) IS -- provjera SJ (valjane), u statement trigeru -- ako je upisan vsjs provjeri da je vsj u sastavu vsjs -- ako je upisan sjp provjeri da je vsj u sastavu vsjs od povezane SJ (sjp.vsjs) nebitno_l NUMBER; BEGIN IF vsj_id_new_p IS NULL OR (vsjs_id_new_p IS NULL AND sjp_id_new_p IS NULL) OR dat_ponisten_new_p IS NOT NULL THEN RETURN; END IF; IF vsjs_id_new_p IS NOT NULL THEN SELECT COUNT (1) INTO nebitno_l FROM s_vsj_vsj vsjvsj WHERE vsjvsj.vsjus_id = vsj_id_new_p AND vsjvsj.vsjs_id = vsjs_id_new_p; IF nebitno_l = 0 THEN -- VSJ se ne nalazi u sastavu nadređene VSJ. pra_rec_zaj.vrati_poruku (-20628); END IF; ELSE SELECT COUNT (1) INTO nebitno_l FROM s_vsj_vsj vsjvsj WHERE vsjvsj.vsjus_id = vsj_id_new_p AND vsjvsj.vsjs_id = (SELECT vsjs_id FROM m_sj WHERE id = sjp_id_new_p); IF nebitno_l = 0 THEN -- VSJ se ne nalazi u sastavu nadređene VSJ. pra_rec_zaj.vrati_poruku (-20628); END IF; END IF; END; END PRA_M_SJ; / SHOW ERROR