-- C:\Radni\bm_zmp1020.pkb -- -- Generated for Oracle 10g on Fri Dec 06 09:59:26 2024 by Server Generator 6.5.96.5.6 PROMPT Creating Package Body 'BM_ZMP1020' CREATE OR REPLACE PACKAGE BODY BM_ZMP1020 IS PROCEDURE REPORTSET_JOB_MULTI (VLASNIKPODATKA_P IN VARCHAR2 ,BR_MINUTA_P IN NUMBER ) IS BEGIN pra_zmp_context.set_vlasnikpodatka (vlasnikpodatka_p); izvrsi_setove (br_minuta_p); END; /* Designer ovaj redak $if DBMS_DB_VERSION.ver_le_11_2 $then izgenerira kao dva retka $ if DBMS_DB_VERSION.ver_le_11_2 $then pa nakon generiranja treba vratiti jedan redak */ $if DBMS_DB_VERSION.ver_le_11_2 $then PROCEDURE IZVRSI_SETOVE (BR_MINUTA_P IN NUMBER, DEBUG_MODE_P IN NUMBER := 0) IS BEGIN NULL; END; $elsif DBMS_DB_VERSION.ver_le_12_1 $then PROCEDURE IZVRSI_SETOVE (BR_MINUTA_P IN NUMBER, DEBUG_MODE_P IN NUMBER := 0) IS BEGIN NULL; END; $else PROCEDURE DODAJ_DESPARAMS (PARAMLIST_P IN OUT SRW_PARAMLIST ,NACIN_P IN VARCHAR2 ,ODREDISTE_P IN VARCHAR2 ,OPIS_P IN TMET_MOD_SET.NAZIV%TYPE ) IS BEGIN IF nacin_p = 'EMAIL' THEN SRW.add_parameter (paramlist_p, 'DESTYPE', 'MAIL'); SRW.add_parameter (paramlist_p, 'DESFORMAT', 'PDF'); SRW.add_parameter (paramlist_p, 'DESNAME', odrediste_p); SRW.add_parameter (paramlist_p, 'SUBJECT', opis_p); /* 0905 (Lažno) korisničko ime (e-adresa) pošiljatelja automatskih poruka npr. noreply@istratech.hr */ SRW.add_parameter (paramlist_p, 'FROM', pra_zmp_zaj.zmppar_vrijednost ('ZMP', '0905')); ELSIF nacin_p = 'FILE' THEN SRW.add_parameter (paramlist_p, 'DESTYPE', 'LOCALFILE'); SRW.add_parameter (paramlist_p, 'DESFORMAT', 'PDF'); SRW.add_parameter (paramlist_p, 'DESNAME', odrediste_p); ELSIF nacin_p = 'PRINTER' THEN SRW.add_parameter (paramlist_p, 'DESTYPE', 'PRINTER'); SRW.add_parameter (paramlist_p, 'DESFORMAT', 'PDF'); SRW.add_parameter (paramlist_p, 'DESNAME', odrediste_p); END IF; END; PROCEDURE DODAJ_REPORTSET (PARAMLIST_P IN OUT SRW_PARAMLIST ,METMODSETRD_ID_P IN TMET_MOD_SETRD.ID%TYPE ) IS BEGIN FOR c in ( SELECT RTRIM (mp.naziv) naziv, vrir.vrijednost vrijednost FROM tmet_mod_vrir vrir, smet_mod_par mp WHERE vrir.metmodstrd_id = metmodsetrd_id_p AND mp.id = vrir.metmodpar_id ORDER BY mp.rbr) LOOP -- SRW.add_parameter (paramlist_p, c.naziv, utl_url.escape(c.vrijednost, TRUE, 'UTF-8')); -- za probu iz browsera SRW.add_parameter (paramlist_p, c.naziv, c.vrijednost); END LOOP; END; PROCEDURE IZVRSI_SETOVE (BR_MINUTA_P IN NUMBER ,DEBUG_MODE_P IN NUMBER := 0 ) IS -- user_l mrec_auth_sus.sus_username%TYPE; password_l mrec_auth_sus.sus_password%TYPE; paramlist_l SRW_PARAMLIST; -- 0992 Report Server gateway ili nebitno. gateway_l szmp_parametri.vrijednost%TYPE := 'http://' || pra_zmp_zaj.zmppar_vrijednost ('ZMP', '0992'); -- 0991 Report Server ili nebitno. server_l szmp_parametri.vrijednost%TYPE := pra_zmp_zaj.zmppar_vrijednost ('ZMP', '0991'); -- 0990 Naziv baze koji koristi Report Server ili nebitno. conn_string_l szmp_parametri.vrijednost%TYPE := pra_zmp_zaj.zmppar_vrijednost ('ZMP', '0990'); -- 0988 Vrijednost varijable ENVID ili nebitno. envid_l szmp_parametri.vrijednost%TYPE := pra_zmp_zaj.zmppar_vrijednost ('ZMP', '0988'); repfile_l VARCHAR2(15); jobId_l SRW.job_ident; zmp_param_0087_l szmp_parametri.vrijednost%TYPE; BEGIN IF debug_mode_p = -1 THEN SRW.start_debugging; -- ispisuje log izvršavanja u dbms_output END IF; zmp_param_0087_l := pra_zmp_zaj.zmppar_vrijednost ('ZMP', '0087'); -- IRN 3606 IF SYS_CONTEXT ('LOGINFO_CTX', 'VLASNIKPODATKA') IS NULL THEN SELECT MIN (naziv) INTO user_l FROM m_korisnici WHERE naziv LIKE 'SUSTAV%' AND apl_shema_naziv = SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA'); ELSE SELECT USER INTO user_l FROM DUAL; END IF; SELECT MIN (sus_password) INTO password_l FROM mrec_auth_sus WHERE zmpsus_id = ( SELECT id FROM szmp_sustavi WHERE sifra = 'ZMP' ) AND sus_username = 'REPORTI_AS'; IF password_l IS NULL THEN RAISE_APPLICATION_ERROR (-20000, 'Nepoznati ulazni podaci za korisničko ime REPORTI_AS.'); END IF; FOR c IN ( SELECT rd.id id, r.nacin nacin, r.odrediste odrediste, s.naziv naziv FROM tmet_mod_setrd rd, tmet_mod_setr r, tmet_mod_set s WHERE TRUNC (rd.datum) = TRUNC (SYSDATE) AND (TO_NUMBER (TO_CHAR (SYSDATE, 'HH24')) * 60 + -- vrijeme od ponoći do sad preračunato u minute TO_NUMBER (TO_CHAR (SYSDATE, 'mi'))) - (TO_NUMBER (SUBSTR (vrijeme, 1, 2)) * 60 + -- vrijeme pokretanja reporta preračunato u minute TO_NUMBER (SUBSTR (vrijeme, 4, 2))) BETWEEN 0 AND (br_minuta_p - 1) AND r.id = rd.metmodstr_id AND s.id = r.metmodset_id) LOOP paramlist_l := SRW_PARAMLIST (SRW_PARAMETER ('','')); dodaj_desparams (paramlist_l, c.nacin, c.odrediste, c.naziv); dodaj_reportset (paramlist_l, c.id); SRW.add_parameter (paramlist_l, 'GATEWAY', gateway_l); SRW.add_parameter (paramlist_l, 'SERVER', server_l); SRW.add_parameter (paramlist_l, 'USERID', user_l || '/' || password_l || '@' || conn_string_l); SRW.add_parameter (paramlist_l, 'ENVID', envid_l); /* Ako bi se u gornjoj FOR petlji čitalo direktno smet_moduli povezivanjem s tmet_mod_set, našao bi modul npr. rec5120 (fmb) umjesto rec51201 (rdf). Zato se koristi sljedeći SELECT, koji čita smet_moduli drugim putem. */ SELECT MIN (LOWER (m.sifra)) INTO repfile_l FROM tmet_mod_vrir vrir, smet_mod_par mp, smet_moduli m WHERE vrir.metmodstrd_id = c.id AND mp.id = vrir.metmodpar_id AND m.id = mp.metmod_id; SRW.add_parameter (paramlist_l, 'REPORT', repfile_l); UTL_HTTP.SET_TRANSFER_TIMEOUT (zmp_param_0087_l); jobId_l := SRW.run_report (paramlist_l); -- IRN 3643 BEGIN pra_pka_csv.izradi_csv_datoteku (c.id, repfile_l, c.odrediste, c.nacin, c.naziv); -- IRN 3955 EXCEPTION WHEN OTHERS THEN -- Pogreška kod automatske izrade csv datoteke pra_pka_iud.puni_pkapro ('PKA', '0013', repfile_l || ' ' || SQLERRM, 0); END; END LOOP; IF debug_mode_p = -1 THEN SRW.stop_debugging; END IF; END; $end END; / SHOW ERROR