Source Code
PROCEDURE: SETTINGS_READ_STRING
PROCEDURE: SETTINGS_READ_NUMBER
PROCEDURE: SETTINGS_READ_BOOL
PROCEDURE: SETTINGS_READ_DATE
PROCEDURE: SETTINGS_WRITE_STRING
PROCEDURE: SETTINGS_WRITE_NUMBER
PROCEDURE: SETTINGS_WRITE_BOOL
PROCEDURE: SETTINGS_WRITE_DATE
PROCEDURE: DB_TO_IANA_CHARSET
PROCEDURE: GETNEXTKEYS
PROCEDURE: GET_SAFETY_DATE
PROCEDURE: GLOBAL_TABLE_CHANGE
PROCEDURE: OPEN_TABLE_CHANGE
PACKAGE: PRM_AUDIT
PACKAGE: PRM_AUDIT
PROCEDURE: AUDIT_IDENTITY
PROCEDURE: GET_PRIMARY_KEY
PROCEDURE: CASCADE_DELETE_CHILD
PROCEDURE: CASCADE_DELETE
PROCEDURE: CHECK_SYS_PRIVS
PROCEDURE: REFRDEL_CLEANUP
PROCEDURE: CLEANUP_LOGICAL_DELETES
PROCEDURE: SOURCE_VERSION
TRIGGER: PRMAUD_ACTVCODE
TRIGGER: PRMAUD_ACTVTYPE
TRIGGER: PRMAUD_ADMIN_CONFIG
TRIGGER: PRMAUD_COSTTYPE
TRIGGER: PRMAUD_CURRTYPE
TRIGGER: PRMAUD_DOCCATG
TRIGGER: PRMAUD_DOCUMENT
TRIGGER: PRMAUD_FACTCATG
TRIGGER: PRMAUD_FACTOR
TRIGGER: PRMAUD_FACTVAL
TRIGGER: PRMAUD_FILTPROP
TRIGGER: PRMAUD_LINKWBS
TRIGGER: PRMAUD_MEMOTYPE
TRIGGER: PRMAUD_OBS
TRIGGER: PRMAUD_PHASE
TRIGGER: PRMAUD_POBS
TRIGGER: PRMAUD_PREFER
TRIGGER: PRMAUD_PROCGROUP
TRIGGER: PRMAUD_PROCITEM
TRIGGER: PRMAUD_PROFILE
TRIGGER: PRMAUD_PROFPRIV
TRIGGER: PRMAUD_QUALITY
TRIGGER: PRMAUD_QUERYLIB
TRIGGER: PRMAUD_RCATTYPE
TRIGGER: PRMAUD_RCATVAL
TRIGGER: PRMAUD_RISKCTRL
TRIGGER: PRMAUD_RISKTYPE
TRIGGER: PRMAUD_ROLES
TRIGGER: PRMAUD_RPT
TRIGGER: PRMAUD_RPTGROUP
TRIGGER: PRMAUD_RSRC
TRIGGER: PRMAUD_RSRCRCAT
TRIGGER: PRMAUD_RSRCROLE
TRIGGER: PRMAUD_TASK
TRIGGER: PRMAUD_TASKACTV
TRIGGER: PRMAUD_TASKDOC
TRIGGER: PRMAUD_TASKMEMO
TRIGGER: PRMAUD_TASKPRED
TRIGGER: PRMAUD_TASKPROC
TRIGGER: PRMAUD_TASKQUAL
TRIGGER: PRMAUD_TASKRSRC
TRIGGER: PRMAUD_TASKUSE
TRIGGER: PRMAUD_TCATTYPE
TRIGGER: PRMAUD_TCATVAL
TRIGGER: PRMAUD_TEMPLATE
TRIGGER: PRMAUD_TMPLCOST
TRIGGER: PRMAUD_TMPLRISK
TRIGGER: PRMAUD_TMPLTCAT
TRIGGER: PRMAUD_TMPLWBS
TRIGGER: PRMAUD_UDFCODE
TRIGGER: PRMAUD_UDFTYPE
TRIGGER: PRMAUD_UDFVALUE
TRIGGER: PRMAUD_UMEASURE
TRIGGER: PRMAUD_USERCOL
TRIGGER: PRMAUD_USERDATA
TRIGGER: PRMAUD_USERENG
TRIGGER: PRMAUD_USERS
TRIGGER: PRMAUD_USERTMPL
TRIGGER: PRMAUD_VIEWPROP
TRIGGER: PRMAUD_WBSMEMO
TRIGGER: PRMAUD_WBSSTEP
TRIGGER: RT_ACTVCODE
TRIGGER: RT_ACTVCODE_DEL
TRIGGER: RT_ACTVTYPE
TRIGGER: RT_ACTVTYPE_DEL
TRIGGER: RT_ADMIN_CONFIG
TRIGGER: RT_ADMIN_CONFIG_DEL
TRIGGER: RT_COSTTYPE
TRIGGER: RT_COSTTYPE_DEL
TRIGGER: RT_CURRTYPE
TRIGGER: RT_CURRTYPE_DEL
TRIGGER: RT_DOCCATG
TRIGGER: RT_DOCCATG_DEL
TRIGGER: RT_DOCUMENT
TRIGGER: RT_DOCUMENT_DEL
TRIGGER: RT_FACTCATG
TRIGGER: RT_FACTCATG_DEL
TRIGGER: RT_FACTOR
TRIGGER: RT_FACTOR_DEL
TRIGGER: RT_FACTVAL
TRIGGER: RT_FACTVAL_DEL
TRIGGER: RT_FILTPROP
TRIGGER: RT_FILTPROP_DEL
TRIGGER: RT_LINKWBS
TRIGGER: RT_LINKWBS_DEL
TRIGGER: RT_MEMOTYPE
TRIGGER: RT_MEMOTYPE_DEL
TRIGGER: RT_OBS
TRIGGER: RT_OBS_DEL
TRIGGER: RT_PHASE
TRIGGER: RT_PHASE_DEL
TRIGGER: RT_POBS
TRIGGER: RT_POBS_DEL
TRIGGER: RT_PREFER
TRIGGER: RT_PREFER_DEL
TRIGGER: RT_PROCGROUP
TRIGGER: RT_PROCGROUP_DEL
TRIGGER: RT_PROCITEM
TRIGGER: RT_PROCITEM_DEL
TRIGGER: RT_PROFILE
TRIGGER: RT_PROFILE_DEL
TRIGGER: RT_PROFPRIV
TRIGGER: RT_PROFPRIV_DEL
TRIGGER: RT_QUALITY
TRIGGER: RT_QUALITY_DEL
TRIGGER: RT_QUERYLIB
TRIGGER: RT_QUERYLIB_DEL
TRIGGER: RT_RCATTYPE
TRIGGER: RT_RCATTYPE_DEL
TRIGGER: RT_RCATVAL
TRIGGER: RT_RCATVAL_DEL
TRIGGER: RT_RISKCTRL
TRIGGER: RT_RISKCTRL_DEL
TRIGGER: RT_RISKTYPE
TRIGGER: RT_RISKTYPE_DEL
TRIGGER: RT_ROLES
TRIGGER: RT_ROLES_DEL
TRIGGER: RT_RPT
TRIGGER: RT_RPT_DEL
TRIGGER: RT_RPTGROUP
TRIGGER: RT_RPTGROUP_DEL
TRIGGER: RT_RSRC
TRIGGER: RT_RSRC_DEL
TRIGGER: RT_RSRCRCAT
TRIGGER: RT_RSRCRCAT_DEL
TRIGGER: RT_RSRCROLE
TRIGGER: RT_RSRCROLE_DEL
TRIGGER: RT_SETTINGS
TRIGGER: RT_SETTINGS_DEL
TRIGGER: RT_TASK
TRIGGER: RT_TASK_DEL
TRIGGER: RT_TASKACTV
TRIGGER: RT_TASKACTV_DEL
TRIGGER: RT_TASKDOC
TRIGGER: RT_TASKDOC_DEL
TRIGGER: RT_TASKMEMO
TRIGGER: RT_TASKMEMO_DEL
TRIGGER: RT_TASKPRED
TRIGGER: RT_TASKPRED_DEL
TRIGGER: RT_TASKPROC
TRIGGER: RT_TASKPROC_DEL
TRIGGER: RT_TASKQUAL
TRIGGER: RT_TASKQUAL_DEL
TRIGGER: RT_TASKRSRC
TRIGGER: RT_TASKRSRC_DEL
TRIGGER: RT_TASKUSE
TRIGGER: RT_TASKUSE_DEL
TRIGGER: RT_TCATTYPE
TRIGGER: RT_TCATTYPE_DEL
TRIGGER: RT_TCATVAL
TRIGGER: RT_TCATVAL_DEL
TRIGGER: RT_TEMPLATE
TRIGGER: RT_TEMPLATE_DEL
TRIGGER: RT_TMPLCOST
TRIGGER: RT_TMPLCOST_DEL
TRIGGER: RT_TMPLRISK
TRIGGER: RT_TMPLRISK_DEL
TRIGGER: RT_TMPLTCAT
TRIGGER: RT_TMPLTCAT_DEL
TRIGGER: RT_TMPLWBS
TRIGGER: RT_TMPLWBS_DEL
TRIGGER: RT_UDFCODE
TRIGGER: RT_UDFCODE_DEL
TRIGGER: RT_UDFTYPE
TRIGGER: RT_UDFTYPE_DEL
TRIGGER: RT_UDFVALUE
TRIGGER: RT_UDFVALUE_DEL
TRIGGER: RT_UMEASURE
TRIGGER: RT_UMEASURE_DEL
TRIGGER: RT_USERCOL
TRIGGER: RT_USERCOL_DEL
TRIGGER: RT_USERDATA
TRIGGER: RT_USERDATA_DEL
TRIGGER: RT_USERENG
TRIGGER: RT_USERENG_DEL
TRIGGER: RT_USERS
TRIGGER: RT_USERS_DEL
TRIGGER: RT_USERTMPL
TRIGGER: RT_USERTMPL_DEL
TRIGGER: RT_USESSION
TRIGGER: RT_USESSION_DEL
TRIGGER: RT_VIEWPROP
TRIGGER: RT_VIEWPROP_DEL
TRIGGER: RT_WBSMEMO
TRIGGER: RT_WBSMEMO_DEL
TRIGGER: RT_WBSSTEP
TRIGGER: RT_WBSSTEP_DEL
SETTINGS_READ_STRING
CREATE OR REPLACE PROCEDURE settings_read_string
(result OUT varchar2, pnamespace IN varchar2
,pname IN varchar2, default_value IN varchar2 default null
,puser_id int default null)
AS
begin
  if puser_id is null then
    select setting_value into result 
    from settings
    where namespace = pnamespace
    and setting_name = pname;
  else
    select setting_value into result 
    from settings
    where namespace = pnamespace
    and setting_name = pname
    and user_id = puser_id;
  end if;
exception
  when no_data_found then
    result := default_value;
end;

SETTINGS_READ_NUMBER
CREATE OR REPLACE PROCEDURE settings_read_number
(result OUT number, pnamespace IN varchar2
,pname IN varchar2, default_value IN number default null
,puser_id int default null)
AS
  sresult varchar2(100);
begin
  settings_read_string(sresult ,pnamespace,pname,to_char(default_value),puser_id);
  result := to_number(sresult);
end;

SETTINGS_READ_BOOL
CREATE OR REPLACE PROCEDURE settings_read_bool
(result OUT int, pnamespace IN varchar2
,pname IN varchar2, default_value IN int default 0
,puser_id int default null)
AS
  sresult varchar2(100);
  sdefault varchar2(5);
begin
  if default_value > 0 then
    sdefault := 'TRUE';
  else
    sdefault := 'FALSE';
  end if;
  settings_read_string(sresult ,pnamespace,pname,sdefault,puser_id);
  sresult := upper(sresult);
  if sresult = 'TRUE' or sresult = 'T' 
     or sresult = '1' or sresult = 'Y'
     or sresult = 'YES' or sresult = 'ON'
    then
    result := 1;
  else
    result := 0;
  end if;
end;

SETTINGS_READ_DATE
CREATE OR REPLACE PROCEDURE settings_read_date
(result OUT date, pnamespace IN varchar2
,pname IN varchar2, default_value IN date default null
,puser_id int default null)
AS
  sresult varchar2(100);
  sdefault varchar2(100);
begin
  sdefault := to_char(default_value,'yyyy-mm-dd hh24:mi:ss');
  settings_read_string(sresult ,pnamespace,pname,sdefault,puser_id);
  result := to_date(sresult,'yyyy-mm-dd hh24:mi:ss');
end;

SETTINGS_WRITE_STRING
CREATE OR REPLACE PROCEDURE settings_write_string
(pvalue IN varchar2 , pnamespace IN varchar2
,pname IN varchar2, puser_id IN int default null)
as
begin
  if puser_id is null then
    update settings 
    set setting_value = pvalue
    where namespace = pnamespace 
    and setting_name = pname;
  else
    update settings 
    set setting_value = pvalue
    where namespace = pnamespace 
    and setting_name = pname
    and user_id = puser_id;
  end if;
  if SQL%ROWCOUNT = 0 then 
    insert into settings (namespace,setting_name,setting_value,user_id)
    values(pnamespace,pname,pvalue,puser_id);
  end if;
end;

SETTINGS_WRITE_NUMBER
CREATE OR REPLACE PROCEDURE settings_write_number
(pvalue IN number , pnamespace IN varchar2
,pname IN varchar2, puser_id IN int default null)
as
begin
  settings_write_string(to_char(pvalue),pnamespace,pname,puser_id);
end;

SETTINGS_WRITE_BOOL
CREATE OR REPLACE PROCEDURE settings_write_bool
(pvalue IN int,  pnamespace IN varchar2
,pname IN varchar2, puser_id IN int default null)
as
  boolstr varchar2(5);
begin
  if pvalue > 0 then
    boolstr := 'TRUE';
  else
    boolstr := 'FALSE';
  end if;

  settings_write_string(boolstr,pnamespace,pname,puser_id);
end;

SETTINGS_WRITE_DATE
CREATE OR REPLACE PROCEDURE settings_write_date
(pvalue IN date, pnamespace IN varchar2
,pname IN varchar2, puser_id IN int default null)
as
  datestr varchar2(30);
begin
  datestr := to_char(pvalue,'yyyy-mm-dd hh24:mi:ss');
  settings_write_string(datestr,pnamespace,pname,puser_id);
 
end;

DB_TO_IANA_CHARSET
create or replace procedure db_to_iana_charset ( pcharset out varchar2 ) 
as
  vcharset                  varchar2(64);
begin
  select value
  into vcharset
  from v$nls_parameters 
  where parameter = 'NLS_CHARACTERSET';

  if instr(vcharset,'ISO8859') > 0 then
    pcharset := 'ISO-8859-' || substr(vcharset,-1,1);
  elsif instr(vcharset,'MSWIN12') > 0 then
    pcharset := 'windows-' || substr(vcharset,-4,4);
  elsif vcharset = 'UTF8' then  -- UTF-8
    pcharset := 'utf-8';
  elsif vcharset = 'US7ASCII' then  -- US-ASCII
    pcharset := 'US-ASCII';
  elsif vcharset = 'JA16SJIS' then  -- Shift JIS
    pcharset := 'Shift_JIS';
  elsif vcharset = 'ZHT16BIG5' or vcharset = 'ZHT16MSWIN950' then  -- Traditional Chinese
    pcharset := 'Big5';
  elsif vcharset = 'ZHS16GBK'  then  -- Simplified Chinese
    pcharset := 'GBK';
  elsif vcharset = 'AL32UTF8' then
    pcharset := 'utf-8'; 
--  elsif vcharset = 'KO16MSWIN949'  then  -- Korean
--    pcharset := '';
  else
    pcharset := '';
  end if;
  
end;

GETNEXTKEYS
CREATE OR REPLACE PROCEDURE getnextkeys( tabcol IN varchar2
  , numkeys IN number, startkey OUT number)
IS
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  UPDATE nextkey SET key_seq_num = (key_seq_num + numKeys) WHERE key_name = tabcol;
  SELECT key_seq_num-numkeys  INTO startkey FROM nextkey WHERE key_name = tabcol;
  commit;
EXCEPTION
  WHEN OTHERS THEN
    startkey := -1;
END;

GET_SAFETY_DATE
create or replace procedure get_safety_date ( psafety_date OUT date,
							pret_val OUT number,
							pret_msg OUT varchar2 ) 

as
  currtime date;
begin
  currtime := sysdate-(1/86400);
  begin
    execute immediate 'SELECT MIN(to_date(start_time,''mm/dd/yy hh24:mi:ss'') -(1/17280) ) from v$transaction' 
		into psafety_date;  
	  if psafety_date is null then
	    psafety_date := currtime;
	  end if;
    return;
  exception
    when others then
      if sqlcode != -942 then
        pret_val := sqlcode;
        psafety_date := null;
	return;
      end if;
  end;
  execute immediate 'select min(login_time) from usession where delete_session_id is null' into psafety_date;  
  if psafety_date is null then
    psafety_date := currtime;
  end if;
end;

GLOBAL_TABLE_CHANGE
create or replace procedure global_table_change
			(pTS IN date,
			pchange_bits	OUT varchar2,
			psafety_date	OUT date,
			pret_val	OUT number,
			pret_msg	OUT varchar2 ) 
as
  vCnt	pls_integer;
  procedure set_bit ( pos IN number)
  as
  begin   
    if pos = 1 then
       pChange_bits:='1'|| substr(pChange_bits,2,69);
    else
       pChange_bits:=substr(pChange_bits,1,pos-1) || '1' ||substr(pChange_bits,pos+1,69);
    end if;
  end;
begin
  get_safety_date ( psafety_date, pret_val, pret_msg);
  pChange_bits := '000000000000000000000000000000000000000000000000000000000000000000000';
				
	select count(*) into vCnt from dual where exists ( select * from ACTVCODE where update_date > pTS );
	 if vCnt = 1 then set_bit(1); end if;
	select count(*) into vCnt from dual where exists ( select * from ACTVTYPE where update_date > pTS );
	 if vCnt = 1 then set_bit(2); end if;
	select count(*) into vCnt from dual where exists ( select * from COSTTYPE where update_date > pTS );
	 if vCnt = 1 then set_bit(4); end if;
	select count(*) into vCnt from dual where exists ( select * from CURRTYPE where update_date > pTS );
	 if vCnt = 1 then set_bit(5); end if;
	select count(*) into vCnt from dual where exists ( select * from DOCCATG where update_date > pTS );
	 if vCnt = 1 then set_bit(6); end if;
	select count(*) into vCnt from dual where exists ( select * from DOCUMENT where update_date > pTS );
	 if vCnt = 1 then set_bit(7); end if;
	select count(*) into vCnt from dual where exists ( select * from FACTCATG where update_date > pTS );
	 if vCnt = 1 then set_bit(8); end if;
	select count(*) into vCnt from dual where exists ( select * from FACTOR where update_date > pTS );
	 if vCnt = 1 then set_bit(9); end if;
	select count(*) into vCnt from dual where exists ( select * from FACTVAL where update_date > pTS );
	 if vCnt = 1 then set_bit(10); end if;
	select count(*) into vCnt from dual where exists ( select * from FILTPROP where update_date > pTS );
	 if vCnt = 1 then set_bit(11); end if;
	select count(*) into vCnt from dual where exists ( select * from LINKWBS where update_date > pTS );
	 if vCnt = 1 then set_bit(12); end if;
	select count(*) into vCnt from dual where exists ( select * from MEMOTYPE where update_date > pTS );
	 if vCnt = 1 then set_bit(13); end if;
	select count(*) into vCnt from dual where exists ( select * from OBS where update_date > pTS );
	 if vCnt = 1 then set_bit(15); end if;
	select count(*) into vCnt from dual where exists ( select * from PHASE where update_date > pTS );
	 if vCnt = 1 then set_bit(16); end if;
	select count(*) into vCnt from dual where exists ( select * from POBS where update_date > pTS );
	 if vCnt = 1 then set_bit(67); end if;
	select count(*) into vCnt from dual where exists ( select * from PREFER where update_date > pTS );
	 if vCnt = 1 then set_bit(17); end if;
	select count(*) into vCnt from dual where exists ( select * from PROCGROUP where update_date > pTS );
	 if vCnt = 1 then set_bit(41); end if;
	select count(*) into vCnt from dual where exists ( select * from PROCITEM where update_date > pTS );
	 if vCnt = 1 then set_bit(65); end if;
	select count(*) into vCnt from dual where exists ( select * from PROFILE where update_date > pTS );
	 if vCnt = 1 then set_bit(18); end if;
	select count(*) into vCnt from dual where exists ( select * from PROFPRIV where update_date > pTS );
	 if vCnt = 1 then set_bit(19); end if;
	select count(*) into vCnt from dual where exists ( select * from QUALITY where update_date > pTS );
	 if vCnt = 1 then set_bit(21); end if;
	select count(*) into vCnt from dual where exists ( select * from RCATTYPE where update_date > pTS );
	 if vCnt = 1 then set_bit(22); end if;
	select count(*) into vCnt from dual where exists ( select * from RCATVAL where update_date > pTS );
	 if vCnt = 1 then set_bit(23); end if;
	select count(*) into vCnt from dual where exists ( select * from RISKTYPE where update_date > pTS );
	 if vCnt = 1 then set_bit(25); end if;
	select count(*) into vCnt from dual where exists ( select * from ROLES where update_date > pTS );
	 if vCnt = 1 then set_bit(26); end if;
	select count(*) into vCnt from dual where exists ( select * from RPT where update_date > pTS );
	 if vCnt = 1 then set_bit(27); end if;
	select count(*) into vCnt from dual where exists ( select * from RPTGROUP where update_date > pTS );
	 if vCnt = 1 then set_bit(28); end if;
	select count(*) into vCnt from dual where exists ( select * from RSRC where update_date > pTS );
	 if vCnt = 1 then set_bit(29); end if;
	select count(*) into vCnt from dual where exists ( select * from RSRCRCAT where update_date > pTS );
	 if vCnt = 1 then set_bit(30); end if;
	select count(*) into vCnt from dual where exists ( select * from RSRCROLE where update_date > pTS );
	 if vCnt = 1 then set_bit(31); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKMEMO where update_date > pTS );
	 if vCnt = 1 then set_bit(35); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKPROC where update_date > pTS );
	 if vCnt = 1 then set_bit(37); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKQUAL where update_date > pTS );
	 if vCnt = 1 then set_bit(38); end if;
	select count(*) into vCnt from dual where exists ( select * from TCATTYPE where update_date > pTS );
	 if vCnt = 1 then set_bit(42); end if;
	select count(*) into vCnt from dual where exists ( select * from TCATVAL where update_date > pTS );
	 if vCnt = 1 then set_bit(43); end if;
	select count(*) into vCnt from dual where exists ( select * from TEMPLATE where update_date > pTS );
	 if vCnt = 1 then set_bit(44); end if;
	select count(*) into vCnt from dual where exists ( select * from UDFCODE where update_date > pTS );
	 if vCnt = 1 then set_bit(62); end if;
	select count(*) into vCnt from dual where exists ( select * from UDFTYPE where update_date > pTS );
	 if vCnt = 1 then set_bit(50); end if;
	select count(*) into vCnt from dual where exists ( select * from UDFVALUE where update_date > pTS );
	 if vCnt = 1 then set_bit(51); end if;
	select count(*) into vCnt from dual where exists ( select * from UMEASURE where update_date > pTS );
	 if vCnt = 1 then set_bit(52); end if;
	select count(*) into vCnt from dual where exists ( select * from USERCOL where update_date > pTS );
	 if vCnt = 1 then set_bit(53); end if;
	select count(*) into vCnt from dual where exists ( select * from USERDATA where update_date > pTS );
	 if vCnt = 1 then set_bit(54); end if;
	select count(*) into vCnt from dual where exists ( select * from USERENG where update_date > pTS );
	 if vCnt = 1 then set_bit(55); end if;
	select count(*) into vCnt from dual where exists ( select * from USERS where update_date > pTS );
	 if vCnt = 1 then set_bit(56); end if;
	select count(*) into vCnt from dual where exists ( select * from VIEWPROP where update_date > pTS );
	 if vCnt = 1 then set_bit(59); end if;
  pret_val := 0;
exception
  when others then
    pret_val := -1;
    pret_msg := 'Error in Global Refresh Change |' || SQLERRM;
end;

OPEN_TABLE_CHANGE
create or replace procedure open_table_change
			(pTS IN date,
			psession_id	IN number,
			pload_status IN varchar2,
			pchange_bits	OUT varchar2,
			psafety_date	OUT date,
			pret_val	OUT number,
			pret_msg	OUT varchar2 ) 
as
  vCnt	pls_integer;
  procedure set_bit ( pos IN number)
  as
  begin   
    if pos = 1 then
       pChange_bits:='1'|| substr(pChange_bits,2,69);
    else
       pChange_bits:=substr(pChange_bits,1,pos-1) || '1' ||substr(pChange_bits,pos+1,69);
    end if;
  end;
begin
  get_safety_date ( psafety_date, pret_val, pret_msg);
  pChange_bits := '000000000000000000000000000000000000000000000000000000000000000000000';
				
	select count(*) into vCnt from dual where exists ( select * from RISKCTRL t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(24); end if;
	select count(*) into vCnt from dual where exists ( select * from TASK t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(32); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKACTV t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(33); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKDOC t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(34); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKPRED t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );  
	if vCnt = 1 then set_bit(36); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKPRED t, TMPLSHAR p where update_date > pTS 
			and t.pred_template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(36); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKRSRC t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(39); end if;
	select count(*) into vCnt from dual where exists ( select * from TASKUSE t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(40); end if;
	select count(*) into vCnt from dual where exists ( select * from TEMPLATE t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(44); end if;
	select count(*) into vCnt from dual where exists ( select * from TMPLCOST t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(45); end if;
	select count(*) into vCnt from dual where exists ( select * from TMPLRISK t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(46); end if;
	select count(*) into vCnt from dual where exists ( select * from TMPLTCAT t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(48); end if;
	select count(*) into vCnt from dual where exists ( select * from TMPLWBS t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(49); end if;
	select count(*) into vCnt from dual where exists ( select * from UDFVALUE t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(51); end if;
	select count(*) into vCnt from dual where exists ( select * from USERTMPL t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(57); end if;
	select count(*) into vCnt from dual where exists ( select * from WBSMEMO t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(60); end if;
	select count(*) into vCnt from dual where exists ( select * from WBSSTEP t, TMPLSHAR p where update_date > pTS 
			and t.template_id = p.template_id and p.session_id = psession_id  );
	if vCnt = 1 then set_bit(61); end if;
         --Run delayed loading procedure if this is PM
		pret_val := 0;
  
exception
  when others then
    pret_val := -1;
    pret_msg := 'Error in Open Refresh Change |' || SQLERRM;
end;

PRM_AUDIT
create or replace package prm_audit 
as
  procedure tab_options (ptable_name IN varchar, paudit OUT number, pins_audit OUT number,
                         pupd_audit OUT number, pdel_audit OUT number, column_audit OUT varchar2);
  procedure prm_user (psession_id OUT number, pprm_user_name OUT varchar2, papp_name OUT varchar2);
  procedure proc_info (pprogram OUT varchar2, phostname OUT varchar2, pnetaddress OUT varchar2,
                       prdbms_user OUT varchar2, pos_user OUT varchar2);
  procedure audit_data (ptable_name IN varchar2, pcolumn_name IN varchar2, poper IN varchar2,
                        ppk1 IN varchar2, ppk2 IN varchar2, ppk3 IN varchar2, ppk4 IN varchar2, pprm_user_name varchar2,
                        pprogram IN varchar2, phostname IN varchar2, pnetaddress IN varchar2,
                        prdbms_user IN varchar2, pos_user IN varchar2, papp_name IN varchar2,
                        pcolaud IN number,plogical_delete varchar2,pprimary_record varchar2,
                        pbefore_value IN varchar2, pafter_value varchar2);
  procedure audit_blob (ptable_name IN varchar2, pcolumn_name IN varchar2, poper IN varchar2,
                        ppk1 IN varchar2, ppk2 IN varchar2, ppk3 IN varchar2, ppk4 IN varchar2, pprm_user_name varchar2,
                        pprogram IN varchar2, phostname IN varchar2, pnetaddress IN varchar2,
                        prdbms_user IN varchar2, pos_user IN varchar2, papp_name IN varchar2,
                        pcolaud IN number,plogical_delete varchar2,pprimary_record varchar2,
                        pbefore_value IN blob, pafter_value IN blob);
  procedure audit_row (ptable_name IN varchar2, poper IN varchar2,
                        ppk1 IN varchar2, ppk2 IN varchar2, ppk3 IN varchar2, ppk4 IN varchar2, pprm_user_name varchar2,
                        pprogram IN varchar2, phostname IN varchar2, pnetaddress IN varchar2,
                        prdbms_user IN varchar2, pos_user IN varchar2, papp_name IN varchar2,
                        plogical_delete varchar2,pprimary_record varchar2);
  function get_sid return number;
  function get_user return varchar2;
  procedure audit_identity ( psession_id IN number, puser_id IN number default null,
                             puser_name IN varchar2 default null);
  g_prm_user_name       varchar2(32):='unknown';
  g_audit_extended      BLOB;
  g_audit_data		varchar2(4000);
end;

PRM_AUDIT
create or replace package body prm_audit
as
  g_session_id 		number :=null;
  g_app_name            varchar2(25):='unk';

  gprogram              varchar2(64);
  ghostname		varchar2(64);
  gnetaddress		varchar2(16);
  grdbms_user           varchar2(30) := null;
  gos_user              varchar2(30) := 'unknown';

  g_sid                 number := null;


  procedure tab_options (ptable_name IN varchar, paudit OUT number, pins_audit OUT number,
                         pupd_audit OUT number, pdel_audit OUT number, column_audit OUT varchar2)
  as
    vaudit_str varchar2(4);
    pmaudit         number;
    gins_audit      number;
    gupd_audit      number;
    gdel_audit      number;
    g_audit_enabled boolean := null;
  begin
if g_audit_enabled is null then
      settings_read_bool(pmaudit, 'database.audit', 'Enabled', 0);
      if pmaudit = 1 then
        g_audit_enabled := true;
        settings_read_string(vaudit_str,
                             'database.audit.' || ptable_name,
                             'Options',
                             '000');
        gins_audit := substr(vaudit_str, 1, 1);
        gupd_audit := substr(vaudit_str, 2, 1);
        gdel_audit := substr(vaudit_str, 3, 1);
        if (nvl(gins_audit, 0) = 0 and nvl(gupd_audit, 0) = 0 and
           nvl(gdel_audit, 0) = 0) then
          paudit := 0;
        end if;
      else
        g_audit_enabled := false;
      end if;
      if g_audit_enabled then
        paudit := 1;
      else
        paudit := 0;
      end if;
    end if;

    pins_audit := gins_audit;
    pupd_audit := gupd_audit;
    pdel_audit := gdel_audit;
  end;

  function get_user return varchar2
  as
    vprm_user_name    varchar2(32);
    vapp_name         varchar2(25);
    vsession_id       number(10);
  begin
    prm_user ( vsession_id, vprm_user_name, vapp_name);
    return vprm_user_name;
  end;

  procedure audit_identity ( psession_id IN number, puser_id IN number default null,
                             puser_name IN varchar2 default null )
  as
  begin
    if puser_name is not null then
      g_prm_user_name := puser_name;
    elsif puser_id is not null then
      begin
        select user_name 
        into g_prm_user_name
        from users
        where user_id = puser_id
        and delete_session_id is null;
      exception
        when no_data_found then
          g_prm_user_name := 'NotPrmUser';
      end;
    else
      if g_SID is null then
        g_SID := get_sid;
      end if;    

      update usession 
      set spid=g_SID 
      where session_id = psession_id
      returning app_name into g_app_name;

      if SQL%ROWCOUNT = 1 then
        g_session_id := psession_id;
        begin
          select user_name 
          into g_prm_user_name 
          from users u , usession us
          where u.user_id = us.user_id
          and us.session_id = psession_id
          and u.delete_session_id is null and us.delete_session_id is null;
        exception
          when no_data_found then
            g_prm_user_name := 'NotPrmUser';
        end;
     
      end if;
    end if;
    dbms_session.set_identifier(g_prm_user_name);
  end;

  procedure prm_user (psession_id OUT number, pprm_user_name OUT varchar2, papp_name OUT varchar2)
  as
  begin
    if g_prm_user_name <> 'unknown' then
      pprm_user_name := g_prm_user_name;
    else 
      if g_SID is null then
        g_SID := get_sid;
      end if;
      if g_session_id is null then
        begin
          select session_id, user_name, app_name
          into g_session_id, g_prm_user_name, g_app_name
          from users u , usession us
          where u.user_id = us.user_id
          and us.spid = g_SID
          and u.delete_session_id is null and us.delete_session_id is null;
          if lower(g_app_name) = 'project management' then
            g_app_name := 'PM';
          elsif lower(g_app_name) = 'methodology management' then
            g_app_name := 'MM';
          end if;
        exception
          when no_data_found then
            g_session_id := 0;
            psession_id := 0;  
            g_prm_user_name := 'NotPrmUser';
            pprm_user_name := 'NotPrmUser';
            papp_name := '';
        end;
      end if;
    end if;
    psession_id := g_session_id;
    pprm_user_name := g_prm_user_name;
    papp_name := g_app_name;
  end;

  procedure proc_info (pprogram OUT varchar2, phostname OUT varchar2, pnetaddress OUT varchar2,
                       prdbms_user OUT varchar2, pos_user OUT varchar2)
  as
  begin

    if grdbms_user is null then
      select sys_context('USERENV','HOST'),sys_context('USERENV','IP_ADDRESS'),sys_context('USERENV','SESSION_USER'),
             sys_context('USERENV','OS_USER')
      into ghostname,gnetaddress,grdbms_user,gos_user
      from dual;
      if grdbms_user is null then
        grdbms_user := 'unk';       -- Set in case for some reason session_user is null
      end if;
      begin
        execute immediate 'select program from sys.v_$session where audsid = USERENV(''SESSIONID'')'
              into gprogram;

      exception
        when others then
          null;
      end;
    end if;
    pprogram := gprogram;
    phostname := ghostname;
    pnetaddress := gnetaddress;
    prdbms_user := grdbms_user;
    pos_user := gos_user;
  end;

  procedure audit_data (ptable_name IN varchar2, pcolumn_name IN varchar2, poper IN varchar2,
                        ppk1 IN varchar2, ppk2 IN varchar2, ppk3 IN varchar2, ppk4 IN varchar2, pprm_user_name varchar2,
                        pprogram IN varchar2, phostname IN varchar2, pnetaddress IN varchar2,
                        prdbms_user IN varchar2, pos_user IN varchar2, papp_name IN varchar2,
                        pcolaud IN number,plogical_delete varchar2,pprimary_record varchar2,
                        pbefore_value IN varchar2, pafter_value varchar2)
  as 
    vsql varchar2(4000);
    vaudit_data varchar2(9000);
  begin
    if pcolaud is null or pcolaud = 1 then
      vaudit_data:='';
      if pbefore_value is not null and (poper='U' or poper='D') then
        vaudit_data := vaudit_data||':O'||pcolumn_name||':'||lpad(to_char(length(pbefore_value)),4,' ')||':'||pbefore_value;
      end if;
      if pafter_value is not null and (poper='U' or poper='I') then
        vaudit_data := vaudit_data||':N'||pcolumn_name||':'||lpad(to_char(length(pafter_value)),4,' ')||':'||pafter_value;
      end if;
      
      if vaudit_data is not null then
        if g_audit_data is null and length(vaudit_data)<=4000 then
          g_audit_data := vaudit_data;
        elsif length(g_audit_data)+length(vaudit_data) <=4000 then
          g_audit_data := g_audit_data || vaudit_data;
        else  
         --BLOB Processing
          dbms_lob.writeappend(prm_audit.g_audit_extended,length(vaudit_data),utl_raw.cast_to_raw(vaudit_data));
        end if;
      end if;
    end if;

  end;

  procedure audit_blob (ptable_name IN varchar2, pcolumn_name IN varchar2, poper IN varchar2,
                        ppk1 IN varchar2, ppk2 IN varchar2, ppk3 IN varchar2, ppk4 IN varchar2, pprm_user_name varchar2,
                        pprogram IN varchar2, phostname IN varchar2, pnetaddress IN varchar2,
                        prdbms_user IN varchar2, pos_user IN varchar2, papp_name IN varchar2,
                        pcolaud IN number,plogical_delete varchar2,pprimary_record varchar2,
                        pbefore_value IN blob, pafter_value IN blob)
  as 
    vadd_data varchar2(255);
  begin
    if pcolaud is null or pcolaud = 1 then
      if pbefore_value is not null then
        vadd_data := ':BLOBO'||pcolumn_name||lpad(to_char(dbms_lob.getlength(pbefore_value)),10,' ')||':';
        dbms_lob.writeappend(prm_audit.g_audit_extended,length(vadd_data),utl_raw.cast_to_raw(vadd_data));
        dbms_lob.append(prm_audit.g_audit_extended,pbefore_value);
      end if;
      if pafter_value is not null then
        vadd_data := ':BLOBO'||pcolumn_name||lpad(to_char(dbms_lob.getlength(pafter_value)),10,' ')||':';
        dbms_lob.writeappend(prm_audit.g_audit_extended,length(vadd_data),utl_raw.cast_to_raw(vadd_data));
        dbms_lob.append(prm_audit.g_audit_extended,pafter_value);
      end if;
    end if;

  end;

  procedure audit_row (ptable_name IN varchar2, poper IN varchar2,
                        ppk1 IN varchar2, ppk2 IN varchar2, ppk3 IN varchar2, ppk4 IN varchar2, pprm_user_name varchar2,
                        pprogram IN varchar2, phostname IN varchar2, pnetaddress IN varchar2,
                        prdbms_user IN varchar2, pos_user IN varchar2, papp_name IN varchar2,
                        plogical_delete varchar2,pprimary_record varchar2)
  as 
    vsql varchar2(1000);
    vblank_blob blob;
  begin


    vsql := 'insert into prmaudit (audit_date,table_name,pk1,pk2,pk3,pk4,oper,rdbms_user_name, app_name, ';
    vsql := vsql||'prm_user_name,os_user_name,program,host_name,netaddress,logical_delete_flag,audit_info,audit_info_extended) ';
    vsql := vsql||'values (sysdate,:ptable_name, :ppk1, :ppk2, :ppk3, :ppk4, :poper, :prdbms_user, :papp_name ';
    vsql := vsql||' ,:pprm_user_name, :pos_user, :pprogram, :phostname, :pnetaddress, :logical_delete, :auditinfo, :auditinfoextended)';

    if dbms_lob.getlength(g_audit_extended) > 0 then
      execute immediate vsql using ptable_name,ppk1, ppk2, ppk3, ppk4, poper, prdbms_user, papp_name
          ,pprm_user_name, pos_user, pprogram, phostname, pnetaddress,plogical_delete,g_audit_data,g_audit_extended;
    else
      execute immediate vsql using ptable_name,ppk1, ppk2, ppk3, ppk4, poper, prdbms_user, papp_name
          ,pprm_user_name, pos_user, pprogram, phostname, pnetaddress,plogical_delete,g_audit_data,vblank_blob;
    end if;
  end;

  function get_sid return number
  as
    vsid number;
  begin
--    execute immediate 'select sid from sys.v_$session where audsid = USERENV(''SESSIONID'')'
    execute immediate 'select USERENV(''SESSIONID'') from dual'
            into vsid;
    return vsid;
  exception
    when others then
      return 0;
  end;

end;

AUDIT_IDENTITY
create or replace procedure audit_identity (psession_id IN number, puser_id IN number default null,
                                            puser_name IN varchar2 default null)
as
begin
  prm_audit.audit_identity(psession_id,puser_id,puser_name);
end;

GET_PRIMARY_KEY
CREATE OR REPLACE PROCEDURE get_primary_key
	(tab_name varchar2, key_cnt OUT number, pk1 OUT varchar2 , pk2 OUT varchar2
         , pk3 OUT varchar2 , pk4 OUT varchar2)
as
  vkey_name varchar2(30);
begin
  /* BKD - For performance I'm breaking this into separate queries and using the 
     constraint name directly.  Currently GCHANGE and RFOLIO */
  if tab_name != 'GCHANGE' and tab_name != 'RLFOLIO' then
    vkey_name := 'PK_' || tab_name;
  else
    vkey_name := 'PK_' || tab_name || '_ID';
  end if;

  select max(position) into key_cnt
  from user_cons_columns
  where constraint_name = vkey_name;

  if key_cnt = 1 then
    SELECT column_name into pk1
    from user_cons_columns
    where constraint_name = vkey_name and position = 1;
  elsif key_cnt = 2 then
    SELECT uc1.column_name, uc2.column_name INTO pk1,pk2
    from user_cons_columns uc1, user_cons_columns uc2
    where uc1.constraint_name = vkey_name and uc1.position = 1
    and uc1.constraint_name = uc2.constraint_name and uc2.position = 2;
  elsif key_cnt = 3 then
    SELECT uc1.column_name, uc2.column_name, uc3.column_name INTO pk1,pk2,pk3
    from user_cons_columns uc1, user_cons_columns uc2, user_cons_columns uc3
    where uc1.constraint_name = vkey_name and uc1.position = 1
    and uc2.constraint_name = uc1.constraint_name and uc2.position = 2
    and uc3.constraint_name = uc1.constraint_name and uc3.position = 3;
  elsif key_cnt = 4 then
    SELECT uc1.column_name, uc2.column_name, uc3.column_name, uc4.column_name INTO pk1,pk2,pk3,pk4
    from user_cons_columns uc1, user_cons_columns uc2, user_cons_columns uc3, user_cons_columns uc4
    where uc1.constraint_name = vkey_name and uc1.position = 1
    and uc2.constraint_name = uc1.constraint_name and uc2.position = 2
    and uc3.constraint_name = uc1.constraint_name and uc3.position = 3
    and uc4.constraint_name = uc1.constraint_name and uc4.position = 4;
  end if;
end;

CASCADE_DELETE_CHILD
CREATE OR REPLACE PROCEDURE cascade_delete_child
	(ptab_name IN varchar2, pparent_tab_name IN varchar2, pfk1 IN varchar2, pfk2 IN varchar2
	,psubquery IN varchar2, pdelstmt IN varchar2, pupdstmt IN varchar2
	,perrorlevel IN int, pret_val IN OUT number, pret_msg OUT varchar2
        , pmax_to_delete IN number
        ,pparam1 IN varchar2 default null,pparam2 IN varchar2 default null
        ,pkey_cnt IN number default 0)
as
  cursor child 
  is
  select c.table_name, cc1.column_name col1, cc2.column_name col2
  from user_cons_columns cc2, user_cons_columns cc1
  ,user_constraints r, user_constraints c
  where r.owner = c.r_owner and r.constraint_name = c.r_constraint_name
  and r.table_name = ptab_name and r.constraint_type = 'P'
  and cc1.constraint_name = c.constraint_name  and  cc1.position= 1
  and cc2.constraint_name (+) = c.constraint_name  and cc2.position (+) = 2;

  vnew_delstmt       varchar2(4000);
  vnew_subquery      varchar2(4000);
  vsub1              varchar2(4000);
  vnew_updquery      varchar2(4000);
  vis_nullable    boolean;
  vdummy          varchar2(30);
  vcntquery          varchar2(4000);
  vcnt               number;
  vkey_cnt           binary_integer;
  vdel_nullable      boolean;
  vpk_col1           varchar2(30);
  vpk_col2           varchar2(30);
  vpk_col3           varchar2(30);
  vpk_col4           varchar2(30);
begin


  vcntquery := 'select count(*) ' || substr(psubquery,instr(psubquery,'from'),length(psubquery) );

  begin
    if pkey_cnt = 0 then
      execute immediate vcntquery into vcnt;
    elsif pkey_cnt = 1 then
      execute immediate vcntquery into vcnt using pparam1;
    elsif pkey_cnt = 2 then
      execute immediate vcntquery into vcnt using pparam1, pparam2;
    end if;
  exception
    when others then
      pret_msg := 'Error "' || SQLERRM || ' for count statement: ' || vcntquery;
      pret_val := -1;
      return;
  end;

  if vcnt = 0 then   
    return;
  end if;

  vdel_nullable := false;

  if (pparent_tab_name = 'PROJECT') 
    or (pparent_tab_name = 'TASK') 
    or (pparent_tab_name = 'TASKRSRC') 
    or (pparent_tab_name = 'UDFCODE') 
    or (pparent_tab_name = 'USERS' AND ptab_name = 'USESSION') 
    or (pparent_tab_name = 'PROJWBS' AND ptab_name = 'PROJISSU') 
    or (pparent_tab_name = 'PROJWBS' AND ptab_name = 'PROJTHRS') 
    or ( (pparent_tab_name = 'RSRC' OR pparent_tab_name = 'ROLE') 
          AND ( ptab_name = 'TASKRSRC' OR ptab_name = 'TRSRCSUM' )) then
    vdel_nullable := true;
  end if;
  


  vis_nullable := false;

  if pfk1 is not null and pfk2 is null then 
    select nullable into vdummy
    from user_tab_columns
    where table_name = ptab_name 
    and column_name = pfk1;
    if vdummy = 'Y' then
      vis_nullable := true;
    end if ;
  end if;


  if vis_nullable and not vdel_nullable then

    begin
      if pkey_cnt = 0 then
        execute immediate pupdstmt;
      elsif pkey_cnt = 1 then
        execute immediate pupdstmt using pparam1;
      elsif pkey_cnt = 2 then
        execute immediate pupdstmt using pparam1, pparam2;
      end if;
      pret_val := pret_val + SQL%ROWCOUNT;
      if SQL%ROWCOUNT > 0 then
        dbms_output.put_line( to_char(SQL%ROWCOUNT)|| ' FK Rows updated to null for table ' || ptab_name );
      end if;
      return;
    exception
      when others then
        pret_msg := SQLERRM || ' occured on update to null for table ' || ptab_name;
        pret_val := -1;
        return;
    end;

  end if;

  for child_rec in child loop

    if child_rec.col2 is null  then
      vsub1:=child_rec.col1 || ' in (' || psubquery || ')';
    else
      vsub1:='('||child_rec.col1||','||child_rec.col2
                ||') in (' || psubquery || ')';
    end if;


    vnew_delstmt:='delete from ' || child_rec.table_name|| ' where ' || vsub1;
    if perrorlevel > 0 then
      begin
        select table_name into vdummy
        from user_tab_columns
        where table_name = child_rec.table_name
        and column_name = 'DELETE_SESSION_ID';
        vnew_delstmt  :=  vnew_delstmt || ' and delete_session_id is not null';
      exception
        when no_data_found then null;
      end;
    end if;

    vnew_updquery:='update ' || child_rec.table_name||' set ' || child_rec.col1 || '=null where ' || vsub1;

    get_primary_key(child_rec.table_name, vkey_cnt, vpk_col1, vpk_col2, vpk_col3, vpk_col4);

    if vkey_cnt = 1 then
      vnew_subquery := 'select ' || vpk_col1 || ' from ' || child_rec.table_name || ' where ' || vsub1;
    else
      vnew_subquery := 'select ' ||vpk_col1||','||vpk_col2|| ' from ' || child_rec.table_name || ' where ' || vsub1;
    end if;

    cascade_delete_child (child_rec.table_name, ptab_name, child_rec.col1, child_rec.col2, vnew_subquery, vnew_delstmt
                      ,vnew_updquery, perrorlevel, pret_val, pret_msg, pmax_to_delete, pparam1, pparam2, pkey_cnt  );

    if pret_val < 0 then
      return;
    end if;

  end loop;

  /* Handle udfvalues */
  select count(*) into vcnt from udftype where table_name = ptab_name;
  if vcnt > 0 then
    begin
      vnew_delstmt := 'delete from udfvalue';
      vnew_delstmt := vnew_delstmt|| ' where udf_type_id in (select udf_type_id from udftype where table_name = ''' || ptab_name || ''')';
      vnew_delstmt := vnew_delstmt|| ' and fk_id in (' || psubquery || ')';
      if pkey_cnt = 0 then
        execute immediate vnew_delstmt;
      elsif pkey_cnt = 1 then
        execute immediate vnew_delstmt using pparam1;
      elsif pkey_cnt = 2 then
        execute immediate vnew_delstmt using pparam1, pparam2;
      end if;
      pret_val := pret_val + SQL%ROWCOUNT;
      if SQL%ROWCOUNT > 0 then
        dbms_output.put_line( to_char(SQL%ROWCOUNT)|| ' UDF Rows deleted for table ' || ptab_name );
      end if;
    exception
      when others then
        pret_msg := SQLERRM || ' occured on delete UDF for table ' || ptab_name;
        pret_val := -1;
        return;
    end;
  end if;

  begin
    if pkey_cnt = 0 then
      execute immediate pdelstmt;
    elsif pkey_cnt = 1 then
      execute immediate pdelstmt using pparam1;
    elsif pkey_cnt = 2 then
      execute immediate pdelstmt using pparam1, pparam2;
    end if;
    pret_val := pret_val + SQL%ROWCOUNT;
    if SQL%ROWCOUNT > 0 then
      dbms_output.put_line( to_char(SQL%ROWCOUNT)|| ' FK Rows deleted for table ' || ptab_name );
    end if;
    commit;  --Commit the leaf deletes
  exception
    when others then
      pret_msg := SQLERRM || ' occured on delete for table ' || ptab_name;
      pret_val := -1;
      rollback;
      return;
  end;
exception
  when others then
    pret_msg := SQLERRM || ' occured on table ' || ptab_name;
    pret_val := -1;
 end;

CASCADE_DELETE
CREATE OR REPLACE PROCEDURE cascade_delete
    (tab_name varchar2, pk1 varchar2, pret_val OUT number, pret_msg OUT varchar2
     , pmax_to_delete IN number default 999999999
     , pk2 varchar2 default null, pk3 varchar2 default null, pk4 varchar2 default null )
as
  vrows_changed   number;
  vpk_col1        varchar2(30);
  vpk_col2        varchar2(30);
  vpk_col3        varchar2(30);
  vpk_col4        varchar2(30);
  vkey_cnt        binary_integer;
  vsubquery       varchar2(4000);
  vdelstmt        varchar2(4000);
  vsub1           varchar2(4000);
  vdelete_date    date;
  vmin_date       date;
  vdummy          varchar2(255);
begin
  pret_val := 0;

  begin
    select table_name into vdummy
    from user_tables 
    where table_name = tab_name;
  exception
    when no_data_found then
      pret_msg := 'Table ' || tab_name || ' does not exist';
      pret_val := -1;
      return;
  end;

  get_primary_key(tab_name,vkey_cnt,vpk_col1,vpk_col2,vpk_col3,vpk_col4);

  vsub1 := vpk_col1 || ' = :pk1 ';
  if vkey_cnt = 2 then
    vsub1 := vsub1 || ' and ' || vpk_col2 || ' = :pk2 ';
  elsif vkey_cnt = 3 then
    vsub1 := vsub1 || ' and ' || vpk_col2 || ' = :pk2 and ' || vpk_col3 || ' = :pk3 ';
  elsif vkey_cnt = 4 then
    vsub1 := vsub1 || ' and ' || vpk_col2 || ' = :pk2 and ' || vpk_col3 || ' = :pk3 and '
             || vpk_col4 || ' = :pk4';
  end if;

  vdelstmt := 'delete from ' || tab_name || ' where ' || vsub1;

  if vkey_cnt <= 2 then
    if vkey_cnt = 1 then
      vsubquery := 'select ' || vpk_col1 || ' from ' || tab_name || ' where ' || vsub1;
    else
      vsubquery := 'select ' || vpk_col1 ||','|| vpk_col2 || ' from ' || tab_name || ' where ' || vsub1;
    end if;

   -- bug fix 3472   
   if (tab_name = 'USERS' ) then
       delete from viewprop where user_id = pk1;
   end if;

    cascade_delete_child ( tab_name, null, null, null, vsubquery, vdelstmt, null, 0,
                         pret_val, pret_msg, pmax_to_delete, pk1, pk2, vkey_cnt );
  else
    begin
      if vkey_cnt = 3 then
        execute immediate vdelstmt using pk1,pk2,pk3;
      else
        execute immediate vdelstmt using pk1,pk2,pk3,pk4;
      end if;
      pret_val := pret_val + SQL%ROWCOUNT;
      if SQL%ROWCOUNT > 0 then
        dbms_output.put_line( to_char(SQL%ROWCOUNT)|| ' FK Rows deleted for table ' || tab_name );
      end if;
    exception
      when others then
        pret_msg := 'Error ' || SQLERRM || ' occured deleted from table ' || tab_name;
        pret_val := -1;
    end;
  end if;
  commit; -- Committing here because child deletes are committed
exception
  when others then
    pret_msg := SQLERRM;
    pret_val := -1;
    rollback;
end;

CHECK_SYS_PRIVS
CREATE OR REPLACE PROCEDURE CHECK_SYS_PRIVS
	( pret_val OUT number, pret_msg OUT varchar)
as
  cnt number;
begin
  begin
    execute immediate 'SELECT count(*) from v$transaction' 
		into cnt;
    pret_val := 1;
  exception
    when others then
      pret_msg := SQLERRM;
      pret_val := 0;
  end;
end;

REFRDEL_CLEANUP
create or replace procedure REFRDEL_CLEANUP
(psession_id IN number, pret_val OUT number, pret_msg OUT varchar2)
as
  PRAGMA AUTONOMOUS_TRANSACTION;
  early_login date;
  curr_time date;
begin
  curr_time := sysdate;

  select min(login_time) 
  into early_login
  from usession 
  where delete_session_id is null
  and app_name not in ('Job Service','Timesheets') ;

  if early_login is null then
    early_login := curr_time;
  end if;
  -- TODO - Delete logic will be updated to avoid multi-user contention
  delete from refrdel
  where delete_date < early_login;
  pret_val := 0;
  pret_msg := to_char ( SQL%ROWCOUNT ) || ' record(s) deleted.';
  commit;
exception
  when others then
    pret_val := -1;
    pret_msg := 'Error in REFRDEL_CLEANUP ' || SQLERRM;
end;

CLEANUP_LOGICAL_DELETES
CREATE OR REPLACE PROCEDURE cleanup_logical_deletes
		( pdays IN number, pret_val OUT number, pret_msg OUT varchar
                 , perrorlevel IN number default 1 ) 
as
  cursor del
  is 
  select table_name
  from user_tab_columns
  where column_name = 'DELETE_SESSION_ID'
  and table_name not like 'BIN$%'  --bug fix for oracle 10g (3078)
  order by 1;

  vrows_changed   number;
  vpk1            varchar2(30);
  vpk2            varchar2(30);
  vpk3            varchar2(30);
  vpk4            varchar2(30);
  vkey_cnt        binary_integer;
  vsubquery       varchar2(4000);
  vdelstmt        varchar2(4000);
  vsub1           varchar2(4000);
  vdelete_date    date;
  vmin_date       date;
begin
  
  vrows_changed := 0;
  pret_val := 0;

  -- bkd 28-feb-2006 -> Exclude Job Service and timesheet from delete date adjustment
  select min(login_time) into vmin_date
  from usession where delete_session_id is null
  and app_name not in ('Job Service','Timesheets') ;

  if vmin_date is null or vmin_date > sysdate then
    vmin_date := sysdate;
  end if;

  dbms_output.put_line ( 'Min Date is ' || to_char(vmin_date,'mm/dd/yyyy hh24:mi:ss') );

  if pdays >= 0 then
    vdelete_date := sysdate - pdays;
  else
    vdelete_date := sysdate;
  end if;

  if vdelete_date > vmin_date then
    vdelete_date := vmin_date;
  end if;

  dbms_output.put_line('Delete Date is ' || to_char(vdelete_date,'mm/dd/yyyy hh24:mi:ss') );

  for del_rec in del loop

    get_primary_key(del_rec.table_name,vkey_cnt,vpk1,vpk2,vpk3,vpk4);

    /* Only process tables with 1 or 2 keys */

    if vkey_cnt <= 2 then

      vsub1 := 'delete_session_id is not null and update_date < to_date(''' 
             || to_char(vdelete_date,'mm/dd/yyyy hh24:mi:ss') 
             || ''',''mm/dd/yyyy hh24:mi:ss'')'
             || ' and delete_session_id not in (select session_id from usession where delete_session_id is null)'
             || ' and delete_session_id > 0'	;

      if vpk2 is null then
        vsubquery := 'select ' || vpk1 || ' from ' || del_rec.table_name || ' where ' || vsub1;      
      else
        vsubquery := 'select ' || vpk1 ||','||vpk2 || ' from ' || del_rec.table_name || ' where ' || vsub1;      
      end if;

      vdelstmt := 'delete from ' || del_rec.table_name || ' where ' || vsub1;

      cascade_delete_child(del_rec.table_name,null,null,null, vsubquery, vdelstmt, null, perrorlevel
                         , pret_val, pret_msg,999999999);
      if pret_val < 0 then
         dbms_output.put_line(substr(pret_msg,1,255));
        return;
      end if;
      vrows_changed := vrows_changed + pret_val;
    end if;
  end loop;

exception
  when others then
    pret_msg := SQLERRM;
    pret_val := -1;
end;

SOURCE_VERSION
create or replace procedure SOURCE_VERSION
      ( pversion OUT varchar2)
AS
begin
  pversion:='24-July-2009 07:18 AM';
end;

PRMAUD_ACTVCODE
create or replace trigger PRMAUD_ACTVCODE
after insert or update or delete on ACTVCODE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('ACTVCODE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.actv_code_id;
				

    else
    	vpk1 := :new.actv_code_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('actv_code_id') then	 prm_audit.audit_data ('ACTVCODE','actv_code_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.actv_code_id,:new.actv_code_id); end if;
    if voper <> 'U' or  updating('actv_code_type_id') then	 prm_audit.audit_data ('ACTVCODE','actv_code_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.actv_code_type_id,:new.actv_code_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('ACTVCODE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('short_name') then	 prm_audit.audit_data ('ACTVCODE','short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.short_name,:new.short_name); end if;
    if voper <> 'U' or  updating('parent_actv_code_id') then	 prm_audit.audit_data ('ACTVCODE','parent_actv_code_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_actv_code_id,:new.parent_actv_code_id); end if;
    if voper <> 'U' or  updating('actv_code_name') then	 prm_audit.audit_data ('ACTVCODE','actv_code_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.actv_code_name,:new.actv_code_name); end if;

  end if;


      prm_audit.audit_row ( 'ACTVCODE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_ACTVTYPE
create or replace trigger PRMAUD_ACTVTYPE
after insert or update or delete on ACTVTYPE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('ACTVTYPE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.actv_code_type_id;
				

    else
    	vpk1 := :new.actv_code_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('actv_code_type_id') then	 prm_audit.audit_data ('ACTVTYPE','actv_code_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.actv_code_type_id,:new.actv_code_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('ACTVTYPE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('actv_short_len') then	 prm_audit.audit_data ('ACTVTYPE','actv_short_len',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.actv_short_len,:new.actv_short_len); end if;
    if voper <> 'U' or  updating('actv_code_type') then	 prm_audit.audit_data ('ACTVTYPE','actv_code_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.actv_code_type,:new.actv_code_type); end if;

  end if;


      prm_audit.audit_row ( 'ACTVTYPE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_ADMIN_CONFIG
create or replace trigger PRMAUD_ADMIN_CONFIG
after insert or update or delete on ADMIN_CONFIG
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('ADMIN_CONFIG',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.config_name;
				

    else
    	vpk1 := :new.config_name;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('config_name') then	 prm_audit.audit_data ('ADMIN_CONFIG','config_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.config_name,:new.config_name); end if;
    if voper <> 'U' or  updating('config_type') then	 prm_audit.audit_data ('ADMIN_CONFIG','config_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.config_type,:new.config_type); end if;
    if voper <> 'U' or  updating('factory_version') then	 prm_audit.audit_data ('ADMIN_CONFIG','factory_version',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.factory_version,:new.factory_version); end if;
    if voper <> 'U' or  updating('last_change_date') then	 prm_audit.audit_data ('ADMIN_CONFIG','last_change_date',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,to_char(:old.last_change_date,'yyyymmddhh24miss'),to_char(:new.last_change_date,'yyyymmddhh24miss')); end if;
    if voper <> 'U' or  updating('config_value') then	 prm_audit.audit_data ('ADMIN_CONFIG','config_value',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.config_value,:new.config_value); end if;
    if voper <> 'U' or ( updating('config_data') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('ADMIN_CONFIG','config_data',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.config_data,:new.config_data); end if;

  end if;


      prm_audit.audit_row ( 'ADMIN_CONFIG',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_COSTTYPE
create or replace trigger PRMAUD_COSTTYPE
after insert or update or delete on COSTTYPE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('COSTTYPE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.cost_type_id;
				

    else
    	vpk1 := :new.cost_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('cost_type_id') then	 prm_audit.audit_data ('COSTTYPE','cost_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.cost_type_id,:new.cost_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('COSTTYPE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('cost_type') then	 prm_audit.audit_data ('COSTTYPE','cost_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.cost_type,:new.cost_type); end if;

  end if;


      prm_audit.audit_row ( 'COSTTYPE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_CURRTYPE
create or replace trigger PRMAUD_CURRTYPE
after insert or update or delete on CURRTYPE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('CURRTYPE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.curr_id;
				

    else
    	vpk1 := :new.curr_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('curr_id') then	 prm_audit.audit_data ('CURRTYPE','curr_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.curr_id,:new.curr_id); end if;
    if voper <> 'U' or  updating('decimal_digit_cnt') then	 prm_audit.audit_data ('CURRTYPE','decimal_digit_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.decimal_digit_cnt,:new.decimal_digit_cnt); end if;
    if voper <> 'U' or  updating('curr_symbol') then	 prm_audit.audit_data ('CURRTYPE','curr_symbol',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.curr_symbol,:new.curr_symbol); end if;
    if voper <> 'U' or  updating('decimal_symbol') then	 prm_audit.audit_data ('CURRTYPE','decimal_symbol',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.decimal_symbol,:new.decimal_symbol); end if;
    if voper <> 'U' or  updating('digit_group_symbol') then	 prm_audit.audit_data ('CURRTYPE','digit_group_symbol',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.digit_group_symbol,:new.digit_group_symbol); end if;
    if voper <> 'U' or  updating('pos_curr_fmt_type') then	 prm_audit.audit_data ('CURRTYPE','pos_curr_fmt_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pos_curr_fmt_type,:new.pos_curr_fmt_type); end if;
    if voper <> 'U' or  updating('neg_curr_fmt_type') then	 prm_audit.audit_data ('CURRTYPE','neg_curr_fmt_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.neg_curr_fmt_type,:new.neg_curr_fmt_type); end if;
    if voper <> 'U' or  updating('curr_type') then	 prm_audit.audit_data ('CURRTYPE','curr_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.curr_type,:new.curr_type); end if;
    if voper <> 'U' or  updating('curr_short_name') then	 prm_audit.audit_data ('CURRTYPE','curr_short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.curr_short_name,:new.curr_short_name); end if;
    if voper <> 'U' or  updating('group_digit_cnt') then	 prm_audit.audit_data ('CURRTYPE','group_digit_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.group_digit_cnt,:new.group_digit_cnt); end if;
    if voper <> 'U' or  updating('base_exch_rate') then	 prm_audit.audit_data ('CURRTYPE','base_exch_rate',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.base_exch_rate,:new.base_exch_rate); end if;

  end if;


      prm_audit.audit_row ( 'CURRTYPE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_DOCCATG
create or replace trigger PRMAUD_DOCCATG
after insert or update or delete on DOCCATG
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('DOCCATG',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.doc_catg_id;
				

    else
    	vpk1 := :new.doc_catg_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('doc_catg_id') then	 prm_audit.audit_data ('DOCCATG','doc_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.doc_catg_id,:new.doc_catg_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('DOCCATG','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('doc_catg_name') then	 prm_audit.audit_data ('DOCCATG','doc_catg_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.doc_catg_name,:new.doc_catg_name); end if;

  end if;


      prm_audit.audit_row ( 'DOCCATG',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_DOCUMENT
create or replace trigger PRMAUD_DOCUMENT
after insert or update or delete on DOCUMENT
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('DOCUMENT',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.doc_id;
				

    else
    	vpk1 := :new.doc_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('doc_id') then	 prm_audit.audit_data ('DOCUMENT','doc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.doc_id,:new.doc_id); end if;
    if voper <> 'U' or  updating('doc_seq_num') then	 prm_audit.audit_data ('DOCUMENT','doc_seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.doc_seq_num,:new.doc_seq_num); end if;
    if voper <> 'U' or  updating('doc_name') then	 prm_audit.audit_data ('DOCUMENT','doc_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.doc_name,:new.doc_name); end if;
    if voper <> 'U' or  updating('parent_doc_id') then	 prm_audit.audit_data ('DOCUMENT','parent_doc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_doc_id,:new.parent_doc_id); end if;
    if voper <> 'U' or  updating('doc_catg_id') then	 prm_audit.audit_data ('DOCUMENT','doc_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.doc_catg_id,:new.doc_catg_id); end if;
    if voper <> 'U' or  updating('doc_date') then	 prm_audit.audit_data ('DOCUMENT','doc_date',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,to_char(:old.doc_date,'yyyymmddhh24miss'),to_char(:new.doc_date,'yyyymmddhh24miss')); end if;
    if voper <> 'U' or  updating('version_name') then	 prm_audit.audit_data ('DOCUMENT','version_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.version_name,:new.version_name); end if;
    if voper <> 'U' or  updating('guid') then	 prm_audit.audit_data ('DOCUMENT','guid',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.guid,:new.guid); end if;
    if voper <> 'U' or  updating('doc_short_name') then	 prm_audit.audit_data ('DOCUMENT','doc_short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.doc_short_name,:new.doc_short_name); end if;
    if voper <> 'U' or  updating('author_name') then	 prm_audit.audit_data ('DOCUMENT','author_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.author_name,:new.author_name); end if;
    if voper <> 'U' or  updating('private_loc') then	 prm_audit.audit_data ('DOCUMENT','private_loc',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.private_loc,:new.private_loc); end if;
    if voper <> 'U' or  updating('public_loc') then	 prm_audit.audit_data ('DOCUMENT','public_loc',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.public_loc,:new.public_loc); end if;
    if voper <> 'U' or ( updating('doc_content') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('DOCUMENT','doc_content',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.doc_content,:new.doc_content); end if;

  end if;


      prm_audit.audit_row ( 'DOCUMENT',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_FACTCATG
create or replace trigger PRMAUD_FACTCATG
after insert or update or delete on FACTCATG
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('FACTCATG',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.fact_catg_id;
				

    else
    	vpk1 := :new.fact_catg_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('fact_catg_id') then	 prm_audit.audit_data ('FACTCATG','fact_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.fact_catg_id,:new.fact_catg_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('FACTCATG','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('fact_catg_name') then	 prm_audit.audit_data ('FACTCATG','fact_catg_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_catg_name,:new.fact_catg_name); end if;

  end if;


      prm_audit.audit_row ( 'FACTCATG',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_FACTOR
create or replace trigger PRMAUD_FACTOR
after insert or update or delete on FACTOR
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('FACTOR',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.fact_id;
				

    else
    	vpk1 := :new.fact_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('fact_id') then	 prm_audit.audit_data ('FACTOR','fact_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.fact_id,:new.fact_id); end if;
    if voper <> 'U' or  updating('fact_seq_num') then	 prm_audit.audit_data ('FACTOR','fact_seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_seq_num,:new.fact_seq_num); end if;
    if voper <> 'U' or  updating('fact_type') then	 prm_audit.audit_data ('FACTOR','fact_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_type,:new.fact_type); end if;
    if voper <> 'U' or  updating('fact_name') then	 prm_audit.audit_data ('FACTOR','fact_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_name,:new.fact_name); end if;
    if voper <> 'U' or  updating('def_fact_val_id') then	 prm_audit.audit_data ('FACTOR','def_fact_val_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.def_fact_val_id,:new.def_fact_val_id); end if;
    if voper <> 'U' or  updating('fact_catg_id') then	 prm_audit.audit_data ('FACTOR','fact_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_catg_id,:new.fact_catg_id); end if;
    if voper <> 'U' or ( updating('fact_descr') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('FACTOR','fact_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.fact_descr,:new.fact_descr); end if;

  end if;


      prm_audit.audit_row ( 'FACTOR',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_FACTVAL
create or replace trigger PRMAUD_FACTVAL
after insert or update or delete on FACTVAL
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('FACTVAL',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.fact_val_id;
				

    else
    	vpk1 := :new.fact_val_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('fact_val_id') then	 prm_audit.audit_data ('FACTVAL','fact_val_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.fact_val_id,:new.fact_val_id); end if;
    if voper <> 'U' or  updating('fact_id') then	 prm_audit.audit_data ('FACTVAL','fact_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_id,:new.fact_id); end if;
    if voper <> 'U' or  updating('fact_value') then	 prm_audit.audit_data ('FACTVAL','fact_value',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_value,:new.fact_value); end if;
    if voper <> 'U' or  updating('fact_value_descr') then	 prm_audit.audit_data ('FACTVAL','fact_value_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_value_descr,:new.fact_value_descr); end if;

  end if;


      prm_audit.audit_row ( 'FACTVAL',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_FILTPROP
create or replace trigger PRMAUD_FILTPROP
after insert or update or delete on FILTPROP
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('FILTPROP',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.filter_id;
				

    else
    	vpk1 := :new.filter_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('filter_id') then	 prm_audit.audit_data ('FILTPROP','filter_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.filter_id,:new.filter_id); end if;
    if voper <> 'U' or  updating('table_name') then	 prm_audit.audit_data ('FILTPROP','table_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.table_name,:new.table_name); end if;
    if voper <> 'U' or  updating('filter_type') then	 prm_audit.audit_data ('FILTPROP','filter_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.filter_type,:new.filter_type); end if;
    if voper <> 'U' or  updating('filter_name') then	 prm_audit.audit_data ('FILTPROP','filter_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.filter_name,:new.filter_name); end if;
    if voper <> 'U' or  updating('user_id') then	 prm_audit.audit_data ('FILTPROP','user_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.user_id,:new.user_id); end if;
    if voper <> 'U' or ( updating('filter_data') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('FILTPROP','filter_data',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.filter_data,:new.filter_data); end if;

  end if;


      prm_audit.audit_row ( 'FILTPROP',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_LINKWBS
create or replace trigger PRMAUD_LINKWBS
after insert or update or delete on LINKWBS
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('LINKWBS',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.linkwbs_id;
				

    else
    	vpk1 := :new.linkwbs_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('linkwbs_id') then	 prm_audit.audit_data ('LINKWBS','linkwbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.linkwbs_id,:new.linkwbs_id); end if;
    if voper <> 'U' or  updating('base_wbs_id') then	 prm_audit.audit_data ('LINKWBS','base_wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.base_wbs_id,:new.base_wbs_id); end if;
    if voper <> 'U' or  updating('base_template_id') then	 prm_audit.audit_data ('LINKWBS','base_template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.base_template_id,:new.base_template_id); end if;
    if voper <> 'U' or  updating('plugin_template_id') then	 prm_audit.audit_data ('LINKWBS','plugin_template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.plugin_template_id,:new.plugin_template_id); end if;
    if voper <> 'U' or  updating('plugin_wbs_id') then	 prm_audit.audit_data ('LINKWBS','plugin_wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.plugin_wbs_id,:new.plugin_wbs_id); end if;

  end if;


      prm_audit.audit_row ( 'LINKWBS',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_MEMOTYPE
create or replace trigger PRMAUD_MEMOTYPE
after insert or update or delete on MEMOTYPE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('MEMOTYPE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.memo_type_id;
				

    else
    	vpk1 := :new.memo_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('memo_type_id') then	 prm_audit.audit_data ('MEMOTYPE','memo_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.memo_type_id,:new.memo_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('MEMOTYPE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('tmpl_flag') then	 prm_audit.audit_data ('MEMOTYPE','tmpl_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.tmpl_flag,:new.tmpl_flag); end if;
    if voper <> 'U' or  updating('wbs_flag') then	 prm_audit.audit_data ('MEMOTYPE','wbs_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_flag,:new.wbs_flag); end if;
    if voper <> 'U' or  updating('task_flag') then	 prm_audit.audit_data ('MEMOTYPE','task_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_flag,:new.task_flag); end if;
    if voper <> 'U' or  updating('memo_type') then	 prm_audit.audit_data ('MEMOTYPE','memo_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.memo_type,:new.memo_type); end if;

  end if;


      prm_audit.audit_row ( 'MEMOTYPE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_OBS
create or replace trigger PRMAUD_OBS
after insert or update or delete on OBS
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('OBS',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.obs_id;
				

    else
    	vpk1 := :new.obs_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('obs_id') then	 prm_audit.audit_data ('OBS','obs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.obs_id,:new.obs_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('OBS','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('obs_name') then	 prm_audit.audit_data ('OBS','obs_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.obs_name,:new.obs_name); end if;
    if voper <> 'U' or  updating('parent_obs_id') then	 prm_audit.audit_data ('OBS','parent_obs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_obs_id,:new.parent_obs_id); end if;
    if voper <> 'U' or ( updating('obs_descr') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('OBS','obs_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.obs_descr,:new.obs_descr); end if;

  end if;


      prm_audit.audit_row ( 'OBS',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_PHASE
create or replace trigger PRMAUD_PHASE
after insert or update or delete on PHASE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('PHASE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.phase_id;
				

    else
    	vpk1 := :new.phase_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('phase_id') then	 prm_audit.audit_data ('PHASE','phase_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.phase_id,:new.phase_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('PHASE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('phase_name') then	 prm_audit.audit_data ('PHASE','phase_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.phase_name,:new.phase_name); end if;

  end if;


      prm_audit.audit_row ( 'PHASE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_POBS
create or replace trigger PRMAUD_POBS
after insert or update or delete on POBS
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('POBS',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.pobs_id;
				

    else
    	vpk1 := :new.pobs_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('pobs_id') then	 prm_audit.audit_data ('POBS','pobs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.pobs_id,:new.pobs_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('POBS','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('pobs_name') then	 prm_audit.audit_data ('POBS','pobs_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pobs_name,:new.pobs_name); end if;
    if voper <> 'U' or  updating('pobs_parent_id') then	 prm_audit.audit_data ('POBS','pobs_parent_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pobs_parent_id,:new.pobs_parent_id); end if;
    if voper <> 'U' or  updating('pobs_descr') then	 prm_audit.audit_data ('POBS','pobs_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pobs_descr,:new.pobs_descr); end if;
    if voper <> 'U' or  updating('pobs_manager') then	 prm_audit.audit_data ('POBS','pobs_manager',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pobs_manager,:new.pobs_manager); end if;

  end if;


      prm_audit.audit_row ( 'POBS',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_PREFER
create or replace trigger PRMAUD_PREFER
after insert or update or delete on PREFER
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('PREFER',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.prefer_id;
				

    else
    	vpk1 := :new.prefer_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('prefer_id') then	 prm_audit.audit_data ('PREFER','prefer_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.prefer_id,:new.prefer_id); end if;
    if voper <> 'U' or  updating('max_wbs_level_cnt') then	 prm_audit.audit_data ('PREFER','max_wbs_level_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.max_wbs_level_cnt,:new.max_wbs_level_cnt); end if;
    if voper <> 'U' or  updating('max_rsrc_level_cnt') then	 prm_audit.audit_data ('PREFER','max_rsrc_level_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.max_rsrc_level_cnt,:new.max_rsrc_level_cnt); end if;
    if voper <> 'U' or  updating('max_obs_level_cnt') then	 prm_audit.audit_data ('PREFER','max_obs_level_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.max_obs_level_cnt,:new.max_obs_level_cnt); end if;
    if voper <> 'U' or  updating('wbs_short_len') then	 prm_audit.audit_data ('PREFER','wbs_short_len',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_short_len,:new.wbs_short_len); end if;
    if voper <> 'U' or  updating('rsrc_short_len') then	 prm_audit.audit_data ('PREFER','rsrc_short_len',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_short_len,:new.rsrc_short_len); end if;
    if voper <> 'U' or  updating('task_code_len') then	 prm_audit.audit_data ('PREFER','task_code_len',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_code_len,:new.task_code_len); end if;
    if voper <> 'U' or  updating('role_short_len') then	 prm_audit.audit_data ('PREFER','role_short_len',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.role_short_len,:new.role_short_len); end if;
    if voper <> 'U' or  updating('max_actv_level_cnt') then	 prm_audit.audit_data ('PREFER','max_actv_level_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.max_actv_level_cnt,:new.max_actv_level_cnt); end if;
    if voper <> 'U' or  updating('max_tcat_level_cnt') then	 prm_audit.audit_data ('PREFER','max_tcat_level_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.max_tcat_level_cnt,:new.max_tcat_level_cnt); end if;
    if voper <> 'U' or  updating('max_rcat_level_cnt') then	 prm_audit.audit_data ('PREFER','max_rcat_level_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.max_rcat_level_cnt,:new.max_rcat_level_cnt); end if;
    if voper <> 'U' or  updating('max_role_level_cnt') then	 prm_audit.audit_data ('PREFER','max_role_level_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.max_role_level_cnt,:new.max_role_level_cnt); end if;
    if voper <> 'U' or  updating('day_hr_cnt') then	 prm_audit.audit_data ('PREFER','day_hr_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.day_hr_cnt,:new.day_hr_cnt); end if;
    if voper <> 'U' or  updating('week_hr_cnt') then	 prm_audit.audit_data ('PREFER','week_hr_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.week_hr_cnt,:new.week_hr_cnt); end if;
    if voper <> 'U' or  updating('year_hr_cnt') then	 prm_audit.audit_data ('PREFER','year_hr_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.year_hr_cnt,:new.year_hr_cnt); end if;
    if voper <> 'U' or  updating('month_hr_cnt') then	 prm_audit.audit_data ('PREFER','month_hr_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.month_hr_cnt,:new.month_hr_cnt); end if;
    if voper <> 'U' or  updating('name_sep_char') then	 prm_audit.audit_data ('PREFER','name_sep_char',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.name_sep_char,:new.name_sep_char); end if;
    if voper <> 'U' or  updating('year_char') then	 prm_audit.audit_data ('PREFER','year_char',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.year_char,:new.year_char); end if;
    if voper <> 'U' or  updating('month_char') then	 prm_audit.audit_data ('PREFER','month_char',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.month_char,:new.month_char); end if;
    if voper <> 'U' or  updating('week_char') then	 prm_audit.audit_data ('PREFER','week_char',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.week_char,:new.week_char); end if;
    if voper <> 'U' or  updating('day_char') then	 prm_audit.audit_data ('PREFER','day_char',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.day_char,:new.day_char); end if;
    if voper <> 'U' or  updating('hour_char') then	 prm_audit.audit_data ('PREFER','hour_char',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.hour_char,:new.hour_char); end if;
    if voper <> 'U' or  updating('minute_char') then	 prm_audit.audit_data ('PREFER','minute_char',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.minute_char,:new.minute_char); end if;
    if voper <> 'U' or  updating('def_complete_pct_type') then	 prm_audit.audit_data ('PREFER','def_complete_pct_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.def_complete_pct_type,:new.def_complete_pct_type); end if;
    if voper <> 'U' or  updating('default_duration_type') then	 prm_audit.audit_data ('PREFER','default_duration_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.default_duration_type,:new.default_duration_type); end if;
    if voper <> 'U' or  updating('database_version') then	 prm_audit.audit_data ('PREFER','database_version',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.database_version,:new.database_version); end if;
    if voper <> 'U' or  updating('db_name') then	 prm_audit.audit_data ('PREFER','db_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.db_name,:new.db_name); end if;
    if voper <> 'U' or  updating('phase_label') then	 prm_audit.audit_data ('PREFER','phase_label',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.phase_label,:new.phase_label); end if;
    if voper <> 'U' or  updating('rpt_header_1') then	 prm_audit.audit_data ('PREFER','rpt_header_1',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_header_1,:new.rpt_header_1); end if;
    if voper <> 'U' or  updating('rpt_header_2') then	 prm_audit.audit_data ('PREFER','rpt_header_2',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_header_2,:new.rpt_header_2); end if;
    if voper <> 'U' or  updating('rpt_header_3') then	 prm_audit.audit_data ('PREFER','rpt_header_3',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_header_3,:new.rpt_header_3); end if;
    if voper <> 'U' or  updating('rpt_footer_1') then	 prm_audit.audit_data ('PREFER','rpt_footer_1',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_footer_1,:new.rpt_footer_1); end if;
    if voper <> 'U' or  updating('rpt_footer_2') then	 prm_audit.audit_data ('PREFER','rpt_footer_2',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_footer_2,:new.rpt_footer_2); end if;
    if voper <> 'U' or  updating('rpt_footer_3') then	 prm_audit.audit_data ('PREFER','rpt_footer_3',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_footer_3,:new.rpt_footer_3); end if;
    if voper <> 'U' or  updating('rpt_user_1') then	 prm_audit.audit_data ('PREFER','rpt_user_1',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_user_1,:new.rpt_user_1); end if;
    if voper <> 'U' or  updating('rpt_user_2') then	 prm_audit.audit_data ('PREFER','rpt_user_2',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_user_2,:new.rpt_user_2); end if;
    if voper <> 'U' or  updating('rpt_user_3') then	 prm_audit.audit_data ('PREFER','rpt_user_3',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_user_3,:new.rpt_user_3); end if;
    if voper <> 'U' or  updating('curr_id') then	 prm_audit.audit_data ('PREFER','curr_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.curr_id,:new.curr_id); end if;
    if voper <> 'U' or  updating('def_task_type') then	 prm_audit.audit_data ('PREFER','def_task_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.def_task_type,:new.def_task_type); end if;
    if voper <> 'U' or ( updating('license_data') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('PREFER','license_data',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.license_data,:new.license_data); end if;

  end if;


      prm_audit.audit_row ( 'PREFER',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_PROCGROUP
create or replace trigger PRMAUD_PROCGROUP
after insert or update or delete on PROCGROUP
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('PROCGROUP',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.proc_group_id;
				

    else
    	vpk1 := :new.proc_group_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('proc_group_id') then	 prm_audit.audit_data ('PROCGROUP','proc_group_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.proc_group_id,:new.proc_group_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('PROCGROUP','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('proc_group_name') then	 prm_audit.audit_data ('PROCGROUP','proc_group_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.proc_group_name,:new.proc_group_name); end if;

  end if;


      prm_audit.audit_row ( 'PROCGROUP',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_PROCITEM
create or replace trigger PRMAUD_PROCITEM
after insert or update or delete on PROCITEM
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('PROCITEM',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.proc_item_id;
				

    else
    	vpk1 := :new.proc_item_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('proc_item_id') then	 prm_audit.audit_data ('PROCITEM','proc_item_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.proc_item_id,:new.proc_item_id); end if;
    if voper <> 'U' or  updating('proc_group_id') then	 prm_audit.audit_data ('PROCITEM','proc_group_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.proc_group_id,:new.proc_group_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('PROCITEM','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('proc_name') then	 prm_audit.audit_data ('PROCITEM','proc_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.proc_name,:new.proc_name); end if;
    if voper <> 'U' or  updating('proc_wt') then	 prm_audit.audit_data ('PROCITEM','proc_wt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.proc_wt,:new.proc_wt); end if;
    if voper <> 'U' or ( updating('proc_descr') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('PROCITEM','proc_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.proc_descr,:new.proc_descr); end if;

  end if;


      prm_audit.audit_row ( 'PROCITEM',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_PROFILE
create or replace trigger PRMAUD_PROFILE
after insert or update or delete on PROFILE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('PROFILE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.prof_id;
				

    else
    	vpk1 := :new.prof_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('prof_id') then	 prm_audit.audit_data ('PROFILE','prof_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.prof_id,:new.prof_id); end if;
    if voper <> 'U' or  updating('default_flag') then	 prm_audit.audit_data ('PROFILE','default_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.default_flag,:new.default_flag); end if;
    if voper <> 'U' or  updating('superuser_flag') then	 prm_audit.audit_data ('PROFILE','superuser_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.superuser_flag,:new.superuser_flag); end if;
    if voper <> 'U' or  updating('scope_type') then	 prm_audit.audit_data ('PROFILE','scope_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.scope_type,:new.scope_type); end if;
    if voper <> 'U' or  updating('prof_name') then	 prm_audit.audit_data ('PROFILE','prof_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.prof_name,:new.prof_name); end if;

  end if;


      prm_audit.audit_row ( 'PROFILE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_PROFPRIV
create or replace trigger PRMAUD_PROFPRIV
after insert or update or delete on PROFPRIV
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('PROFPRIV',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.prof_id;
				
vpk2 := :old.priv_num;
				

    else
    	vpk1 := :new.prof_id;
				
vpk2 := :new.priv_num;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('prof_id') then	 prm_audit.audit_data ('PROFPRIV','prof_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.prof_id,:new.prof_id); end if;
    if voper <> 'U' or  updating('priv_num') then	 prm_audit.audit_data ('PROFPRIV','priv_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.priv_num,:new.priv_num); end if;
    if voper <> 'U' or  updating('allow_flag') then	 prm_audit.audit_data ('PROFPRIV','allow_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.allow_flag,:new.allow_flag); end if;

  end if;


      prm_audit.audit_row ( 'PROFPRIV',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_QUALITY
create or replace trigger PRMAUD_QUALITY
after insert or update or delete on QUALITY
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('QUALITY',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.qual_id;
				

    else
    	vpk1 := :new.qual_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('qual_id') then	 prm_audit.audit_data ('QUALITY','qual_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.qual_id,:new.qual_id); end if;
    if voper <> 'U' or  updating('qual_seq_num') then	 prm_audit.audit_data ('QUALITY','qual_seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.qual_seq_num,:new.qual_seq_num); end if;
    if voper <> 'U' or  updating('req_flag') then	 prm_audit.audit_data ('QUALITY','req_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.req_flag,:new.req_flag); end if;
    if voper <> 'U' or  updating('qual_name') then	 prm_audit.audit_data ('QUALITY','qual_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.qual_name,:new.qual_name); end if;
    if voper <> 'U' or ( updating('qual_descr') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('QUALITY','qual_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.qual_descr,:new.qual_descr); end if;

  end if;


      prm_audit.audit_row ( 'QUALITY',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_QUERYLIB
create or replace trigger PRMAUD_QUERYLIB
after insert or update or delete on QUERYLIB
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('QUERYLIB',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.query_lib_id;
				

    else
    	vpk1 := :new.query_lib_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('query_lib_id') then	 prm_audit.audit_data ('QUERYLIB','query_lib_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.query_lib_id,:new.query_lib_id); end if;
    if voper <> 'U' or  updating('app_name') then	 prm_audit.audit_data ('QUERYLIB','app_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.app_name,:new.app_name); end if;
    if voper <> 'U' or  updating('core_flag') then	 prm_audit.audit_data ('QUERYLIB','core_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.core_flag,:new.core_flag); end if;
    if voper <> 'U' or  updating('match_sql') then	 prm_audit.audit_data ('QUERYLIB','match_sql',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.match_sql,:new.match_sql); end if;
    if voper <> 'U' or  updating('hints') then	 prm_audit.audit_data ('QUERYLIB','hints',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.hints,:new.hints); end if;
    if voper <> 'U' or  updating('replacement_sql') then	 prm_audit.audit_data ('QUERYLIB','replacement_sql',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.replacement_sql,:new.replacement_sql); end if;

  end if;


      prm_audit.audit_row ( 'QUERYLIB',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RCATTYPE
create or replace trigger PRMAUD_RCATTYPE
after insert or update or delete on RCATTYPE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RCATTYPE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.rsrc_catg_type_id;
				

    else
    	vpk1 := :new.rsrc_catg_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('rsrc_catg_type_id') then	 prm_audit.audit_data ('RCATTYPE','rsrc_catg_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.rsrc_catg_type_id,:new.rsrc_catg_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('RCATTYPE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('rsrc_catg_short_len') then	 prm_audit.audit_data ('RCATTYPE','rsrc_catg_short_len',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_catg_short_len,:new.rsrc_catg_short_len); end if;
    if voper <> 'U' or  updating('rsrc_catg_type') then	 prm_audit.audit_data ('RCATTYPE','rsrc_catg_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_catg_type,:new.rsrc_catg_type); end if;

  end if;


      prm_audit.audit_row ( 'RCATTYPE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RCATVAL
create or replace trigger PRMAUD_RCATVAL
after insert or update or delete on RCATVAL
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RCATVAL',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.rsrc_catg_id;
				

    else
    	vpk1 := :new.rsrc_catg_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('rsrc_catg_id') then	 prm_audit.audit_data ('RCATVAL','rsrc_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.rsrc_catg_id,:new.rsrc_catg_id); end if;
    if voper <> 'U' or  updating('rsrc_catg_type_id') then	 prm_audit.audit_data ('RCATVAL','rsrc_catg_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_catg_type_id,:new.rsrc_catg_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('RCATVAL','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('rsrc_catg_short_name') then	 prm_audit.audit_data ('RCATVAL','rsrc_catg_short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_catg_short_name,:new.rsrc_catg_short_name); end if;
    if voper <> 'U' or  updating('parent_rsrc_catg_id') then	 prm_audit.audit_data ('RCATVAL','parent_rsrc_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_rsrc_catg_id,:new.parent_rsrc_catg_id); end if;
    if voper <> 'U' or  updating('rsrc_catg_name') then	 prm_audit.audit_data ('RCATVAL','rsrc_catg_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_catg_name,:new.rsrc_catg_name); end if;

  end if;


      prm_audit.audit_row ( 'RCATVAL',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RISKCTRL
create or replace trigger PRMAUD_RISKCTRL
after insert or update or delete on RISKCTRL
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RISKCTRL',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.risk_id;
				

    else
    	vpk1 := :new.risk_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('risk_id') then	 prm_audit.audit_data ('RISKCTRL','risk_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.risk_id,:new.risk_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('RISKCTRL','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or ( updating('risk_control') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('RISKCTRL','risk_control',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.risk_control,:new.risk_control); end if;

  end if;


      prm_audit.audit_row ( 'RISKCTRL',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RISKTYPE
create or replace trigger PRMAUD_RISKTYPE
after insert or update or delete on RISKTYPE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RISKTYPE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.risk_type_id;
				

    else
    	vpk1 := :new.risk_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('risk_type_id') then	 prm_audit.audit_data ('RISKTYPE','risk_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.risk_type_id,:new.risk_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('RISKTYPE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('risk_type') then	 prm_audit.audit_data ('RISKTYPE','risk_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.risk_type,:new.risk_type); end if;

  end if;


      prm_audit.audit_row ( 'RISKTYPE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_ROLES
create or replace trigger PRMAUD_ROLES
after insert or update or delete on ROLES
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('ROLES',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.role_id;
				

    else
    	vpk1 := :new.role_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('role_id') then	 prm_audit.audit_data ('ROLES','role_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.role_id,:new.role_id); end if;
    if voper <> 'U' or  updating('role_short_name') then	 prm_audit.audit_data ('ROLES','role_short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.role_short_name,:new.role_short_name); end if;
    if voper <> 'U' or  updating('role_name') then	 prm_audit.audit_data ('ROLES','role_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.role_name,:new.role_name); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('ROLES','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('parent_role_id') then	 prm_audit.audit_data ('ROLES','parent_role_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_role_id,:new.parent_role_id); end if;
    if voper <> 'U' or  updating('pobs_id') then	 prm_audit.audit_data ('ROLES','pobs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pobs_id,:new.pobs_id); end if;
    if voper <> 'U' or ( updating('role_descr') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('ROLES','role_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.role_descr,:new.role_descr); end if;

  end if;


      prm_audit.audit_row ( 'ROLES',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RPT
create or replace trigger PRMAUD_RPT
after insert or update or delete on RPT
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RPT',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.rpt_id;
				

    else
    	vpk1 := :new.rpt_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('rpt_id') then	 prm_audit.audit_data ('RPT','rpt_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.rpt_id,:new.rpt_id); end if;
    if voper <> 'U' or  updating('rpt_type') then	 prm_audit.audit_data ('RPT','rpt_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_type,:new.rpt_type); end if;
    if voper <> 'U' or  updating('rpt_name') then	 prm_audit.audit_data ('RPT','rpt_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_name,:new.rpt_name); end if;
    if voper <> 'U' or  updating('rpt_group_id') then	 prm_audit.audit_data ('RPT','rpt_group_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_group_id,:new.rpt_group_id); end if;
    if voper <> 'U' or  updating('rpt_state') then	 prm_audit.audit_data ('RPT','rpt_state',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_state,:new.rpt_state); end if;
    if voper <> 'U' or ( updating('rpt_data') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('RPT','rpt_data',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.rpt_data,:new.rpt_data); end if;
    if voper <> 'U' or  updating('last_run_date') then	 prm_audit.audit_data ('RPT','last_run_date',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,to_char(:old.last_run_date,'yyyymmddhh24miss'),to_char(:new.last_run_date,'yyyymmddhh24miss')); end if;

  end if;


      prm_audit.audit_row ( 'RPT',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RPTGROUP
create or replace trigger PRMAUD_RPTGROUP
after insert or update or delete on RPTGROUP
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RPTGROUP',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.rpt_group_id;
				

    else
    	vpk1 := :new.rpt_group_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('rpt_group_id') then	 prm_audit.audit_data ('RPTGROUP','rpt_group_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.rpt_group_id,:new.rpt_group_id); end if;
    if voper <> 'U' or  updating('rpt_group_seq_num') then	 prm_audit.audit_data ('RPTGROUP','rpt_group_seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_group_seq_num,:new.rpt_group_seq_num); end if;
    if voper <> 'U' or  updating('rpt_group_name') then	 prm_audit.audit_data ('RPTGROUP','rpt_group_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rpt_group_name,:new.rpt_group_name); end if;
    if voper <> 'U' or  updating('parent_group_id') then	 prm_audit.audit_data ('RPTGROUP','parent_group_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_group_id,:new.parent_group_id); end if;

  end if;


      prm_audit.audit_row ( 'RPTGROUP',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RSRC
create or replace trigger PRMAUD_RSRC
after insert or update or delete on RSRC
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RSRC',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.rsrc_id;
				

    else
    	vpk1 := :new.rsrc_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('rsrc_id') then	 prm_audit.audit_data ('RSRC','rsrc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.rsrc_id,:new.rsrc_id); end if;
    if voper <> 'U' or  updating('rsrc_seq_num') then	 prm_audit.audit_data ('RSRC','rsrc_seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_seq_num,:new.rsrc_seq_num); end if;
    if voper <> 'U' or  updating('rsrc_type') then	 prm_audit.audit_data ('RSRC','rsrc_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_type,:new.rsrc_type); end if;
    if voper <> 'U' or  updating('ot_flag') then	 prm_audit.audit_data ('RSRC','ot_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.ot_flag,:new.ot_flag); end if;
    if voper <> 'U' or  updating('rsrc_short_name') then	 prm_audit.audit_data ('RSRC','rsrc_short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_short_name,:new.rsrc_short_name); end if;
    if voper <> 'U' or  updating('rsrc_name') then	 prm_audit.audit_data ('RSRC','rsrc_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_name,:new.rsrc_name); end if;
    if voper <> 'U' or  updating('parent_rsrc_id') then	 prm_audit.audit_data ('RSRC','parent_rsrc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_rsrc_id,:new.parent_rsrc_id); end if;
    if voper <> 'U' or  updating('role_id') then	 prm_audit.audit_data ('RSRC','role_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.role_id,:new.role_id); end if;
    if voper <> 'U' or  updating('pobs_id') then	 prm_audit.audit_data ('RSRC','pobs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pobs_id,:new.pobs_id); end if;
    if voper <> 'U' or  updating('max_qty_per_hr') then	 prm_audit.audit_data ('RSRC','max_qty_per_hr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.max_qty_per_hr,:new.max_qty_per_hr); end if;
    if voper <> 'U' or  updating('ot_factor') then	 prm_audit.audit_data ('RSRC','ot_factor',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.ot_factor,:new.ot_factor); end if;
    if voper <> 'U' or  updating('def_qty_per_hr') then	 prm_audit.audit_data ('RSRC','def_qty_per_hr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.def_qty_per_hr,:new.def_qty_per_hr); end if;
    if voper <> 'U' or  updating('cost_per_qty') then	 prm_audit.audit_data ('RSRC','cost_per_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.cost_per_qty,:new.cost_per_qty); end if;
    if voper <> 'U' or  updating('guid') then	 prm_audit.audit_data ('RSRC','guid',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.guid,:new.guid); end if;
    if voper <> 'U' or  updating('cost_qty_type') then	 prm_audit.audit_data ('RSRC','cost_qty_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.cost_qty_type,:new.cost_qty_type); end if;
    if voper <> 'U' or  updating('office_phone') then	 prm_audit.audit_data ('RSRC','office_phone',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.office_phone,:new.office_phone); end if;
    if voper <> 'U' or  updating('employee_code') then	 prm_audit.audit_data ('RSRC','employee_code',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.employee_code,:new.employee_code); end if;
    if voper <> 'U' or  updating('rsrc_title_name') then	 prm_audit.audit_data ('RSRC','rsrc_title_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_title_name,:new.rsrc_title_name); end if;
    if voper <> 'U' or  updating('email_addr') then	 prm_audit.audit_data ('RSRC','email_addr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.email_addr,:new.email_addr); end if;
    if voper <> 'U' or  updating('curr_id') then	 prm_audit.audit_data ('RSRC','curr_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.curr_id,:new.curr_id); end if;
    if voper <> 'U' or  updating('unit_id') then	 prm_audit.audit_data ('RSRC','unit_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.unit_id,:new.unit_id); end if;
    if voper <> 'U' or ( updating('rsrc_notes') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('RSRC','rsrc_notes',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.rsrc_notes,:new.rsrc_notes); end if;
    if voper <> 'U' or  updating('def_cost_qty_link_flag') then	 prm_audit.audit_data ('RSRC','def_cost_qty_link_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.def_cost_qty_link_flag,:new.def_cost_qty_link_flag); end if;

  end if;


      prm_audit.audit_row ( 'RSRC',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RSRCRCAT
create or replace trigger PRMAUD_RSRCRCAT
after insert or update or delete on RSRCRCAT
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RSRCRCAT',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.rsrc_id;
				
vpk2 := :old.rsrc_catg_type_id;
				

    else
    	vpk1 := :new.rsrc_id;
				
vpk2 := :new.rsrc_catg_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('rsrc_id') then	 prm_audit.audit_data ('RSRCRCAT','rsrc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.rsrc_id,:new.rsrc_id); end if;
    if voper <> 'U' or  updating('rsrc_catg_type_id') then	 prm_audit.audit_data ('RSRCRCAT','rsrc_catg_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_catg_type_id,:new.rsrc_catg_type_id); end if;
    if voper <> 'U' or  updating('rsrc_catg_id') then	 prm_audit.audit_data ('RSRCRCAT','rsrc_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_catg_id,:new.rsrc_catg_id); end if;

  end if;


      prm_audit.audit_row ( 'RSRCRCAT',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_RSRCROLE
create or replace trigger PRMAUD_RSRCROLE
after insert or update or delete on RSRCROLE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('RSRCROLE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.rsrc_id;
				
vpk2 := :old.role_id;
				

    else
    	vpk1 := :new.rsrc_id;
				
vpk2 := :new.role_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('rsrc_id') then	 prm_audit.audit_data ('RSRCROLE','rsrc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.rsrc_id,:new.rsrc_id); end if;
    if voper <> 'U' or  updating('role_id') then	 prm_audit.audit_data ('RSRCROLE','role_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.role_id,:new.role_id); end if;
    if voper <> 'U' or  updating('skill_level') then	 prm_audit.audit_data ('RSRCROLE','skill_level',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.skill_level,:new.skill_level); end if;

  end if;


      prm_audit.audit_row ( 'RSRCROLE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASK
create or replace trigger PRMAUD_TASK
after insert or update or delete on TASK
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASK',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.task_id;
				

    else
    	vpk1 := :new.task_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('task_id') then	 prm_audit.audit_data ('TASK','task_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.task_id,:new.task_id); end if;
    if voper <> 'U' or  updating('task_type') then	 prm_audit.audit_data ('TASK','task_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_type,:new.task_type); end if;
    if voper <> 'U' or  updating('complete_pct_type') then	 prm_audit.audit_data ('TASK','complete_pct_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.complete_pct_type,:new.complete_pct_type); end if;
    if voper <> 'U' or  updating('duration_type') then	 prm_audit.audit_data ('TASK','duration_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.duration_type,:new.duration_type); end if;
    if voper <> 'U' or  updating('task_name') then	 prm_audit.audit_data ('TASK','task_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_name,:new.task_name); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TASK','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('guid') then	 prm_audit.audit_data ('TASK','guid',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.guid,:new.guid); end if;

  end if;


      prm_audit.audit_row ( 'TASK',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASKACTV
create or replace trigger PRMAUD_TASKACTV
after insert or update or delete on TASKACTV
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASKACTV',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.taskuse_id;
				
vpk2 := :old.actv_code_type_id;
				

    else
    	vpk1 := :new.taskuse_id;
				
vpk2 := :new.actv_code_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('taskuse_id') then	 prm_audit.audit_data ('TASKACTV','taskuse_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.taskuse_id,:new.taskuse_id); end if;
    if voper <> 'U' or  updating('actv_code_type_id') then	 prm_audit.audit_data ('TASKACTV','actv_code_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.actv_code_type_id,:new.actv_code_type_id); end if;
    if voper <> 'U' or  updating('actv_code_id') then	 prm_audit.audit_data ('TASKACTV','actv_code_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.actv_code_id,:new.actv_code_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TASKACTV','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;

  end if;


      prm_audit.audit_row ( 'TASKACTV',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASKDOC
create or replace trigger PRMAUD_TASKDOC
after insert or update or delete on TASKDOC
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASKDOC',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.taskdoc_id;
				

    else
    	vpk1 := :new.taskdoc_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('taskdoc_id') then	 prm_audit.audit_data ('TASKDOC','taskdoc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.taskdoc_id,:new.taskdoc_id); end if;
    if voper <> 'U' or  updating('doc_id') then	 prm_audit.audit_data ('TASKDOC','doc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.doc_id,:new.doc_id); end if;
    if voper <> 'U' or  updating('wbs_id') then	 prm_audit.audit_data ('TASKDOC','wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_id,:new.wbs_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TASKDOC','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('wp_flag') then	 prm_audit.audit_data ('TASKDOC','wp_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wp_flag,:new.wp_flag); end if;
    if voper <> 'U' or  updating('taskuse_id') then	 prm_audit.audit_data ('TASKDOC','taskuse_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.taskuse_id,:new.taskuse_id); end if;

  end if;


      prm_audit.audit_row ( 'TASKDOC',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASKMEMO
create or replace trigger PRMAUD_TASKMEMO
after insert or update or delete on TASKMEMO
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASKMEMO',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.memo_id;
				

    else
    	vpk1 := :new.memo_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('memo_id') then	 prm_audit.audit_data ('TASKMEMO','memo_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.memo_id,:new.memo_id); end if;
    if voper <> 'U' or  updating('task_id') then	 prm_audit.audit_data ('TASKMEMO','task_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_id,:new.task_id); end if;
    if voper <> 'U' or  updating('memo_type_id') then	 prm_audit.audit_data ('TASKMEMO','memo_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.memo_type_id,:new.memo_type_id); end if;
    if voper <> 'U' or ( updating('task_memo') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('TASKMEMO','task_memo',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.task_memo,:new.task_memo); end if;

  end if;


      prm_audit.audit_row ( 'TASKMEMO',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASKPRED
create or replace trigger PRMAUD_TASKPRED
after insert or update or delete on TASKPRED
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASKPRED',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.taskuse_pred_id;
				

    else
    	vpk1 := :new.taskuse_pred_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('taskuse_pred_id') then	 prm_audit.audit_data ('TASKPRED','taskuse_pred_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.taskuse_pred_id,:new.taskuse_pred_id); end if;
    if voper <> 'U' or  updating('taskuse_id') then	 prm_audit.audit_data ('TASKPRED','taskuse_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.taskuse_id,:new.taskuse_id); end if;
    if voper <> 'U' or  updating('pred_taskuse_id') then	 prm_audit.audit_data ('TASKPRED','pred_taskuse_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pred_taskuse_id,:new.pred_taskuse_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TASKPRED','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('pred_template_id') then	 prm_audit.audit_data ('TASKPRED','pred_template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pred_template_id,:new.pred_template_id); end if;
    if voper <> 'U' or  updating('pred_type') then	 prm_audit.audit_data ('TASKPRED','pred_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pred_type,:new.pred_type); end if;
    if voper <> 'U' or  updating('lag_hr_cnt') then	 prm_audit.audit_data ('TASKPRED','lag_hr_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.lag_hr_cnt,:new.lag_hr_cnt); end if;

  end if;


      prm_audit.audit_row ( 'TASKPRED',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASKPROC
create or replace trigger PRMAUD_TASKPROC
after insert or update or delete on TASKPROC
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASKPROC',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.proc_id;
				

    else
    	vpk1 := :new.proc_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('proc_id') then	 prm_audit.audit_data ('TASKPROC','proc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.proc_id,:new.proc_id); end if;
    if voper <> 'U' or  updating('task_id') then	 prm_audit.audit_data ('TASKPROC','task_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_id,:new.task_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('TASKPROC','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('proc_name') then	 prm_audit.audit_data ('TASKPROC','proc_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.proc_name,:new.proc_name); end if;
    if voper <> 'U' or  updating('proc_wt') then	 prm_audit.audit_data ('TASKPROC','proc_wt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.proc_wt,:new.proc_wt); end if;
    if voper <> 'U' or ( updating('proc_descr') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('TASKPROC','proc_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.proc_descr,:new.proc_descr); end if;

  end if;


      prm_audit.audit_row ( 'TASKPROC',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASKQUAL
create or replace trigger PRMAUD_TASKQUAL
after insert or update or delete on TASKQUAL
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASKQUAL',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.task_id;
				
vpk2 := :old.qual_id;
				

    else
    	vpk1 := :new.task_id;
				
vpk2 := :new.qual_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('task_id') then	 prm_audit.audit_data ('TASKQUAL','task_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.task_id,:new.task_id); end if;
    if voper <> 'U' or  updating('qual_id') then	 prm_audit.audit_data ('TASKQUAL','qual_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.qual_id,:new.qual_id); end if;

  end if;


      prm_audit.audit_row ( 'TASKQUAL',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASKRSRC
create or replace trigger PRMAUD_TASKRSRC
after insert or update or delete on TASKRSRC
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASKRSRC',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.taskrsrc_id;
				

    else
    	vpk1 := :new.taskrsrc_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('taskrsrc_id') then	 prm_audit.audit_data ('TASKRSRC','taskrsrc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.taskrsrc_id,:new.taskrsrc_id); end if;
    if voper <> 'U' or  updating('taskuse_id') then	 prm_audit.audit_data ('TASKRSRC','taskuse_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.taskuse_id,:new.taskuse_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TASKRSRC','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('rsrc_type') then	 prm_audit.audit_data ('TASKRSRC','rsrc_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_type,:new.rsrc_type); end if;
    if voper <> 'U' or  updating('role_id') then	 prm_audit.audit_data ('TASKRSRC','role_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.role_id,:new.role_id); end if;
    if voper <> 'U' or  updating('rsrc_id') then	 prm_audit.audit_data ('TASKRSRC','rsrc_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.rsrc_id,:new.rsrc_id); end if;
    if voper <> 'U' or  updating('pobs_id') then	 prm_audit.audit_data ('TASKRSRC','pobs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pobs_id,:new.pobs_id); end if;
    if voper <> 'U' or  updating('skill_level') then	 prm_audit.audit_data ('TASKRSRC','skill_level',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.skill_level,:new.skill_level); end if;
    if voper <> 'U' or  updating('qty_per_hr') then	 prm_audit.audit_data ('TASKRSRC','qty_per_hr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.qty_per_hr,:new.qty_per_hr); end if;
    if voper <> 'U' or  updating('low_qty') then	 prm_audit.audit_data ('TASKRSRC','low_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_qty,:new.low_qty); end if;
    if voper <> 'U' or  updating('high_qty') then	 prm_audit.audit_data ('TASKRSRC','high_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_qty,:new.high_qty); end if;
    if voper <> 'U' or  updating('cost_qty_link_flag') then	 prm_audit.audit_data ('TASKRSRC','cost_qty_link_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.cost_qty_link_flag,:new.cost_qty_link_flag); end if;
    if voper <> 'U' or  updating('lag_drtn_hr_cnt') then	 prm_audit.audit_data ('TASKRSRC','lag_drtn_hr_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.lag_drtn_hr_cnt,:new.lag_drtn_hr_cnt); end if;
    if voper <> 'U' or  updating('low_cost') then	 prm_audit.audit_data ('TASKRSRC','low_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_cost,:new.low_cost); end if;
    if voper <> 'U' or  updating('high_cost') then	 prm_audit.audit_data ('TASKRSRC','high_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_cost,:new.high_cost); end if;

  end if;


      prm_audit.audit_row ( 'TASKRSRC',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TASKUSE
create or replace trigger PRMAUD_TASKUSE
after insert or update or delete on TASKUSE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TASKUSE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.taskuse_id;
				

    else
    	vpk1 := :new.taskuse_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('taskuse_id') then	 prm_audit.audit_data ('TASKUSE','taskuse_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.taskuse_id,:new.taskuse_id); end if;
    if voper <> 'U' or  updating('task_id') then	 prm_audit.audit_data ('TASKUSE','task_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_id,:new.task_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TASKUSE','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('wbs_id') then	 prm_audit.audit_data ('TASKUSE','wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_id,:new.wbs_id); end if;
    if voper <> 'U' or  updating('est_wt') then	 prm_audit.audit_data ('TASKUSE','est_wt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.est_wt,:new.est_wt); end if;
    if voper <> 'U' or  updating('task_code') then	 prm_audit.audit_data ('TASKUSE','task_code',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_code,:new.task_code); end if;
    if voper <> 'U' or  updating('low_work_qty') then	 prm_audit.audit_data ('TASKUSE','low_work_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_work_qty,:new.low_work_qty); end if;
    if voper <> 'U' or  updating('high_work_qty') then	 prm_audit.audit_data ('TASKUSE','high_work_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_work_qty,:new.high_work_qty); end if;
    if voper <> 'U' or  updating('low_equip_qty') then	 prm_audit.audit_data ('TASKUSE','low_equip_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_equip_qty,:new.low_equip_qty); end if;
    if voper <> 'U' or  updating('high_equip_qty') then	 prm_audit.audit_data ('TASKUSE','high_equip_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_equip_qty,:new.high_equip_qty); end if;
    if voper <> 'U' or  updating('low_drtn_hr_cnt') then	 prm_audit.audit_data ('TASKUSE','low_drtn_hr_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_drtn_hr_cnt,:new.low_drtn_hr_cnt); end if;
    if voper <> 'U' or  updating('high_drtn_hr_cnt') then	 prm_audit.audit_data ('TASKUSE','high_drtn_hr_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_drtn_hr_cnt,:new.high_drtn_hr_cnt); end if;
    if voper <> 'U' or  updating('guid') then	 prm_audit.audit_data ('TASKUSE','guid',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.guid,:new.guid); end if;

  end if;


      prm_audit.audit_row ( 'TASKUSE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TCATTYPE
create or replace trigger PRMAUD_TCATTYPE
after insert or update or delete on TCATTYPE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TCATTYPE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.tmpl_catg_type_id;
				

    else
    	vpk1 := :new.tmpl_catg_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('tmpl_catg_type_id') then	 prm_audit.audit_data ('TCATTYPE','tmpl_catg_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.tmpl_catg_type_id,:new.tmpl_catg_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('TCATTYPE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('tmpl_catg_short_len') then	 prm_audit.audit_data ('TCATTYPE','tmpl_catg_short_len',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.tmpl_catg_short_len,:new.tmpl_catg_short_len); end if;
    if voper <> 'U' or  updating('tmpl_catg_type') then	 prm_audit.audit_data ('TCATTYPE','tmpl_catg_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.tmpl_catg_type,:new.tmpl_catg_type); end if;

  end if;


      prm_audit.audit_row ( 'TCATTYPE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TCATVAL
create or replace trigger PRMAUD_TCATVAL
after insert or update or delete on TCATVAL
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TCATVAL',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.tmpl_catg_id;
				

    else
    	vpk1 := :new.tmpl_catg_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('tmpl_catg_id') then	 prm_audit.audit_data ('TCATVAL','tmpl_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.tmpl_catg_id,:new.tmpl_catg_id); end if;
    if voper <> 'U' or  updating('tmpl_catg_type_id') then	 prm_audit.audit_data ('TCATVAL','tmpl_catg_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.tmpl_catg_type_id,:new.tmpl_catg_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('TCATVAL','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('tmpl_catg_short_name') then	 prm_audit.audit_data ('TCATVAL','tmpl_catg_short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.tmpl_catg_short_name,:new.tmpl_catg_short_name); end if;
    if voper <> 'U' or  updating('parent_tmpl_catg_id') then	 prm_audit.audit_data ('TCATVAL','parent_tmpl_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_tmpl_catg_id,:new.parent_tmpl_catg_id); end if;
    if voper <> 'U' or  updating('tmpl_catg_name') then	 prm_audit.audit_data ('TCATVAL','tmpl_catg_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.tmpl_catg_name,:new.tmpl_catg_name); end if;

  end if;


      prm_audit.audit_row ( 'TCATVAL',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TEMPLATE
create or replace trigger PRMAUD_TEMPLATE
after insert or update or delete on TEMPLATE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TEMPLATE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.template_id;
				

    else
    	vpk1 := :new.template_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TEMPLATE','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('add_date') then	 prm_audit.audit_data ('TEMPLATE','add_date',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,to_char(:old.add_date,'yyyymmddhh24miss'),to_char(:new.add_date,'yyyymmddhh24miss')); end if;
    if voper <> 'U' or  updating('checkout_flag') then	 prm_audit.audit_data ('TEMPLATE','checkout_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.checkout_flag,:new.checkout_flag); end if;
    if voper <> 'U' or  updating('template_type') then	 prm_audit.audit_data ('TEMPLATE','template_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_type,:new.template_type); end if;
    if voper <> 'U' or  updating('status_code') then	 prm_audit.audit_data ('TEMPLATE','status_code',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.status_code,:new.status_code); end if;
    if voper <> 'U' or  updating('template_name') then	 prm_audit.audit_data ('TEMPLATE','template_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_name,:new.template_name); end if;
    if voper <> 'U' or  updating('task_cnt') then	 prm_audit.audit_data ('TEMPLATE','task_cnt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_cnt,:new.task_cnt); end if;
    if voper <> 'U' or  updating('task_code_base') then	 prm_audit.audit_data ('TEMPLATE','task_code_base',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_code_base,:new.task_code_base); end if;
    if voper <> 'U' or  updating('task_code_step') then	 prm_audit.audit_data ('TEMPLATE','task_code_step',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_code_step,:new.task_code_step); end if;
    if voper <> 'U' or  updating('low_work_qty') then	 prm_audit.audit_data ('TEMPLATE','low_work_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_work_qty,:new.low_work_qty); end if;
    if voper <> 'U' or  updating('high_work_qty') then	 prm_audit.audit_data ('TEMPLATE','high_work_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_work_qty,:new.high_work_qty); end if;
    if voper <> 'U' or  updating('low_equip_qty') then	 prm_audit.audit_data ('TEMPLATE','low_equip_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_equip_qty,:new.low_equip_qty); end if;
    if voper <> 'U' or  updating('high_equip_qty') then	 prm_audit.audit_data ('TEMPLATE','high_equip_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_equip_qty,:new.high_equip_qty); end if;
    if voper <> 'U' or  updating('low_work_cost') then	 prm_audit.audit_data ('TEMPLATE','low_work_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_work_cost,:new.low_work_cost); end if;
    if voper <> 'U' or  updating('high_work_cost') then	 prm_audit.audit_data ('TEMPLATE','high_work_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_work_cost,:new.high_work_cost); end if;
    if voper <> 'U' or  updating('low_equip_cost') then	 prm_audit.audit_data ('TEMPLATE','low_equip_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_equip_cost,:new.low_equip_cost); end if;
    if voper <> 'U' or  updating('high_equip_cost') then	 prm_audit.audit_data ('TEMPLATE','high_equip_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_equip_cost,:new.high_equip_cost); end if;
    if voper <> 'U' or  updating('low_expense_cost') then	 prm_audit.audit_data ('TEMPLATE','low_expense_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_expense_cost,:new.low_expense_cost); end if;
    if voper <> 'U' or  updating('high_expense_cost') then	 prm_audit.audit_data ('TEMPLATE','high_expense_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_expense_cost,:new.high_expense_cost); end if;
    if voper <> 'U' or  updating('def_cost_per_qty') then	 prm_audit.audit_data ('TEMPLATE','def_cost_per_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.def_cost_per_qty,:new.def_cost_per_qty); end if;
    if voper <> 'U' or  updating('task_code_prefix') then	 prm_audit.audit_data ('TEMPLATE','task_code_prefix',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.task_code_prefix,:new.task_code_prefix); end if;
    if voper <> 'U' or  updating('guid') then	 prm_audit.audit_data ('TEMPLATE','guid',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.guid,:new.guid); end if;
    if voper <> 'U' or  updating('def_qty_type') then	 prm_audit.audit_data ('TEMPLATE','def_qty_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.def_qty_type,:new.def_qty_type); end if;
    if voper <> 'U' or  updating('add_by_name') then	 prm_audit.audit_data ('TEMPLATE','add_by_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.add_by_name,:new.add_by_name); end if;
    if voper <> 'U' or  updating('low_mat_cost') then	 prm_audit.audit_data ('TEMPLATE','low_mat_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_mat_cost,:new.low_mat_cost); end if;
    if voper <> 'U' or  updating('high_mat_cost') then	 prm_audit.audit_data ('TEMPLATE','high_mat_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_mat_cost,:new.high_mat_cost); end if;

  end if;


      prm_audit.audit_row ( 'TEMPLATE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TMPLCOST
create or replace trigger PRMAUD_TMPLCOST
after insert or update or delete on TMPLCOST
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TMPLCOST',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.cost_item_id;
				

    else
    	vpk1 := :new.cost_item_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('cost_item_id') then	 prm_audit.audit_data ('TMPLCOST','cost_item_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.cost_item_id,:new.cost_item_id); end if;
    if voper <> 'U' or  updating('taskuse_id') then	 prm_audit.audit_data ('TMPLCOST','taskuse_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.taskuse_id,:new.taskuse_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TMPLCOST','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('cost_load_type') then	 prm_audit.audit_data ('TMPLCOST','cost_load_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.cost_load_type,:new.cost_load_type); end if;
    if voper <> 'U' or  updating('cost_type_id') then	 prm_audit.audit_data ('TMPLCOST','cost_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.cost_type_id,:new.cost_type_id); end if;
    if voper <> 'U' or  updating('pobs_id') then	 prm_audit.audit_data ('TMPLCOST','pobs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.pobs_id,:new.pobs_id); end if;
    if voper <> 'U' or  updating('low_cost') then	 prm_audit.audit_data ('TMPLCOST','low_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.low_cost,:new.low_cost); end if;
    if voper <> 'U' or  updating('high_cost') then	 prm_audit.audit_data ('TMPLCOST','high_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.high_cost,:new.high_cost); end if;
    if voper <> 'U' or  updating('vendor_name') then	 prm_audit.audit_data ('TMPLCOST','vendor_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.vendor_name,:new.vendor_name); end if;
    if voper <> 'U' or  updating('cost_name') then	 prm_audit.audit_data ('TMPLCOST','cost_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.cost_name,:new.cost_name); end if;
    if voper <> 'U' or  updating('qty_name') then	 prm_audit.audit_data ('TMPLCOST','qty_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.qty_name,:new.qty_name); end if;
    if voper <> 'U' or ( updating('cost_descr') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('TMPLCOST','cost_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.cost_descr,:new.cost_descr); end if;

  end if;


      prm_audit.audit_row ( 'TMPLCOST',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TMPLRISK
create or replace trigger PRMAUD_TMPLRISK
after insert or update or delete on TMPLRISK
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TMPLRISK',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.risk_id;
				

    else
    	vpk1 := :new.risk_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('risk_id') then	 prm_audit.audit_data ('TMPLRISK','risk_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.risk_id,:new.risk_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TMPLRISK','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('wbs_id') then	 prm_audit.audit_data ('TMPLRISK','wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_id,:new.wbs_id); end if;
    if voper <> 'U' or  updating('priority_type') then	 prm_audit.audit_data ('TMPLRISK','priority_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.priority_type,:new.priority_type); end if;
    if voper <> 'U' or  updating('risk_name') then	 prm_audit.audit_data ('TMPLRISK','risk_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.risk_name,:new.risk_name); end if;
    if voper <> 'U' or  updating('risk_type_id') then	 prm_audit.audit_data ('TMPLRISK','risk_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.risk_type_id,:new.risk_type_id); end if;
    if voper <> 'U' or  updating('prbly_pct') then	 prm_audit.audit_data ('TMPLRISK','prbly_pct',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.prbly_pct,:new.prbly_pct); end if;
    if voper <> 'U' or  updating('impact_work_qty') then	 prm_audit.audit_data ('TMPLRISK','impact_work_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.impact_work_qty,:new.impact_work_qty); end if;
    if voper <> 'U' or  updating('impact_equip_qty') then	 prm_audit.audit_data ('TMPLRISK','impact_equip_qty',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.impact_equip_qty,:new.impact_equip_qty); end if;
    if voper <> 'U' or  updating('impact_expense_cost') then	 prm_audit.audit_data ('TMPLRISK','impact_expense_cost',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.impact_expense_cost,:new.impact_expense_cost); end if;
    if voper <> 'U' or ( updating('risk_descr') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('TMPLRISK','risk_descr',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.risk_descr,:new.risk_descr); end if;

  end if;


      prm_audit.audit_row ( 'TMPLRISK',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TMPLTCAT
create or replace trigger PRMAUD_TMPLTCAT
after insert or update or delete on TMPLTCAT
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TMPLTCAT',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.template_id;
				
vpk2 := :old.tmpl_catg_type_id;
				

    else
    	vpk1 := :new.template_id;
				
vpk2 := :new.tmpl_catg_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TMPLTCAT','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('tmpl_catg_type_id') then	 prm_audit.audit_data ('TMPLTCAT','tmpl_catg_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.tmpl_catg_type_id,:new.tmpl_catg_type_id); end if;
    if voper <> 'U' or  updating('tmpl_catg_id') then	 prm_audit.audit_data ('TMPLTCAT','tmpl_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.tmpl_catg_id,:new.tmpl_catg_id); end if;

  end if;


      prm_audit.audit_row ( 'TMPLTCAT',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_TMPLWBS
create or replace trigger PRMAUD_TMPLWBS
after insert or update or delete on TMPLWBS
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('TMPLWBS',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.wbs_id;
				

    else
    	vpk1 := :new.wbs_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('wbs_id') then	 prm_audit.audit_data ('TMPLWBS','wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.wbs_id,:new.wbs_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('TMPLWBS','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('TMPLWBS','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('est_wt') then	 prm_audit.audit_data ('TMPLWBS','est_wt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.est_wt,:new.est_wt); end if;
    if voper <> 'U' or  updating('wbs_short_name') then	 prm_audit.audit_data ('TMPLWBS','wbs_short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_short_name,:new.wbs_short_name); end if;
    if voper <> 'U' or  updating('wbs_name') then	 prm_audit.audit_data ('TMPLWBS','wbs_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_name,:new.wbs_name); end if;
    if voper <> 'U' or  updating('phase_id') then	 prm_audit.audit_data ('TMPLWBS','phase_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.phase_id,:new.phase_id); end if;
    if voper <> 'U' or  updating('obs_id') then	 prm_audit.audit_data ('TMPLWBS','obs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.obs_id,:new.obs_id); end if;
    if voper <> 'U' or  updating('parent_wbs_id') then	 prm_audit.audit_data ('TMPLWBS','parent_wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_wbs_id,:new.parent_wbs_id); end if;
    if voper <> 'U' or  updating('fact_catg_id') then	 prm_audit.audit_data ('TMPLWBS','fact_catg_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fact_catg_id,:new.fact_catg_id); end if;
    if voper <> 'U' or  updating('guid') then	 prm_audit.audit_data ('TMPLWBS','guid',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.guid,:new.guid); end if;

  end if;


      prm_audit.audit_row ( 'TMPLWBS',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_UDFCODE
create or replace trigger PRMAUD_UDFCODE
after insert or update or delete on UDFCODE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('UDFCODE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.udf_code_id;
				

    else
    	vpk1 := :new.udf_code_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('udf_code_id') then	 prm_audit.audit_data ('UDFCODE','udf_code_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.udf_code_id,:new.udf_code_id); end if;
    if voper <> 'U' or  updating('udf_type_id') then	 prm_audit.audit_data ('UDFCODE','udf_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.udf_type_id,:new.udf_type_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('UDFCODE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('short_name') then	 prm_audit.audit_data ('UDFCODE','short_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.short_name,:new.short_name); end if;
    if voper <> 'U' or  updating('udf_code_name') then	 prm_audit.audit_data ('UDFCODE','udf_code_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.udf_code_name,:new.udf_code_name); end if;
    if voper <> 'U' or  updating('parent_udf_code_id') then	 prm_audit.audit_data ('UDFCODE','parent_udf_code_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.parent_udf_code_id,:new.parent_udf_code_id); end if;

  end if;


      prm_audit.audit_row ( 'UDFCODE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_UDFTYPE
create or replace trigger PRMAUD_UDFTYPE
after insert or update or delete on UDFTYPE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('UDFTYPE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.udf_type_id;
				

    else
    	vpk1 := :new.udf_type_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('udf_type_id') then	 prm_audit.audit_data ('UDFTYPE','udf_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.udf_type_id,:new.udf_type_id); end if;
    if voper <> 'U' or  updating('table_name') then	 prm_audit.audit_data ('UDFTYPE','table_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.table_name,:new.table_name); end if;
    if voper <> 'U' or  updating('udf_type_name') then	 prm_audit.audit_data ('UDFTYPE','udf_type_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.udf_type_name,:new.udf_type_name); end if;
    if voper <> 'U' or  updating('udf_type_label') then	 prm_audit.audit_data ('UDFTYPE','udf_type_label',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.udf_type_label,:new.udf_type_label); end if;
    if voper <> 'U' or  updating('logical_data_type') then	 prm_audit.audit_data ('UDFTYPE','logical_data_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.logical_data_type,:new.logical_data_type); end if;
    if voper <> 'U' or  updating('super_flag') then	 prm_audit.audit_data ('UDFTYPE','super_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.super_flag,:new.super_flag); end if;
    if voper <> 'U' or  updating('udf_code_short_len') then	 prm_audit.audit_data ('UDFTYPE','udf_code_short_len',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.udf_code_short_len,:new.udf_code_short_len); end if;

  end if;


      prm_audit.audit_row ( 'UDFTYPE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_UDFVALUE
create or replace trigger PRMAUD_UDFVALUE
after insert or update or delete on UDFVALUE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('UDFVALUE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.udf_type_id;
				
vpk2 := :old.fk_id;
				

    else
    	vpk1 := :new.udf_type_id;
				
vpk2 := :new.fk_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('udf_type_id') then	 prm_audit.audit_data ('UDFVALUE','udf_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.udf_type_id,:new.udf_type_id); end if;
    if voper <> 'U' or  updating('fk_id') then	 prm_audit.audit_data ('UDFVALUE','fk_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.fk_id,:new.fk_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('UDFVALUE','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('udf_date') then	 prm_audit.audit_data ('UDFVALUE','udf_date',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,to_char(:old.udf_date,'yyyymmddhh24miss'),to_char(:new.udf_date,'yyyymmddhh24miss')); end if;
    if voper <> 'U' or  updating('udf_text') then	 prm_audit.audit_data ('UDFVALUE','udf_text',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.udf_text,:new.udf_text); end if;
    if voper <> 'U' or  updating('udf_number') then	 prm_audit.audit_data ('UDFVALUE','udf_number',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.udf_number,:new.udf_number); end if;
    if voper <> 'U' or  updating('udf_code_id') then	 prm_audit.audit_data ('UDFVALUE','udf_code_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.udf_code_id,:new.udf_code_id); end if;

  end if;


      prm_audit.audit_row ( 'UDFVALUE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_UMEASURE
create or replace trigger PRMAUD_UMEASURE
after insert or update or delete on UMEASURE
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('UMEASURE',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.unit_id;
				

    else
    	vpk1 := :new.unit_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('unit_id') then	 prm_audit.audit_data ('UMEASURE','unit_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.unit_id,:new.unit_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('UMEASURE','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('unit_name') then	 prm_audit.audit_data ('UMEASURE','unit_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.unit_name,:new.unit_name); end if;
    if voper <> 'U' or  updating('unit_abbrev') then	 prm_audit.audit_data ('UMEASURE','unit_abbrev',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.unit_abbrev,:new.unit_abbrev); end if;

  end if;


      prm_audit.audit_row ( 'UMEASURE',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_USERCOL
create or replace trigger PRMAUD_USERCOL
after insert or update or delete on USERCOL
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('USERCOL',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.user_col_id;
				

    else
    	vpk1 := :new.user_col_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('user_col_id') then	 prm_audit.audit_data ('USERCOL','user_col_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.user_col_id,:new.user_col_id); end if;
    if voper <> 'U' or  updating('table_name') then	 prm_audit.audit_data ('USERCOL','table_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.table_name,:new.table_name); end if;
    if voper <> 'U' or  updating('logical_data_type') then	 prm_audit.audit_data ('USERCOL','logical_data_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.logical_data_type,:new.logical_data_type); end if;
    if voper <> 'U' or  updating('user_col_name') then	 prm_audit.audit_data ('USERCOL','user_col_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.user_col_name,:new.user_col_name); end if;
    if voper <> 'U' or  updating('user_col_label') then	 prm_audit.audit_data ('USERCOL','user_col_label',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.user_col_label,:new.user_col_label); end if;

  end if;


      prm_audit.audit_row ( 'USERCOL',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_USERDATA
create or replace trigger PRMAUD_USERDATA
after insert or update or delete on USERDATA
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('USERDATA',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.user_data_id;
				

    else
    	vpk1 := :new.user_data_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('user_data_id') then	 prm_audit.audit_data ('USERDATA','user_data_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.user_data_id,:new.user_data_id); end if;
    if voper <> 'U' or  updating('user_id') then	 prm_audit.audit_data ('USERDATA','user_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.user_id,:new.user_id); end if;
    if voper <> 'U' or  updating('topic_name') then	 prm_audit.audit_data ('USERDATA','topic_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.topic_name,:new.topic_name); end if;
    if voper <> 'U' or ( updating('user_data') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('USERDATA','user_data',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.user_data,:new.user_data); end if;

  end if;


      prm_audit.audit_row ( 'USERDATA',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_USERENG
create or replace trigger PRMAUD_USERENG
after insert or update or delete on USERENG
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('USERENG',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.user_eng_id;
				

    else
    	vpk1 := :new.user_eng_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('user_eng_id') then	 prm_audit.audit_data ('USERENG','user_eng_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.user_eng_id,:new.user_eng_id); end if;
    if voper <> 'U' or  updating('user_id') then	 prm_audit.audit_data ('USERENG','user_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.user_id,:new.user_id); end if;
    if voper <> 'U' or  updating('named_user_flag') then	 prm_audit.audit_data ('USERENG','named_user_flag',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.named_user_flag,:new.named_user_flag); end if;
    if voper <> 'U' or  updating('db_engine_type') then	 prm_audit.audit_data ('USERENG','db_engine_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.db_engine_type,:new.db_engine_type); end if;

  end if;


      prm_audit.audit_row ( 'USERENG',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_USERS
create or replace trigger PRMAUD_USERS
after insert or update or delete on USERS
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('USERS',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  vprm_user_name := prm_audit.g_prm_user_name;

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.user_id;
				

    else
    	vpk1 := :new.user_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('user_id') then	 prm_audit.audit_data ('USERS','user_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.user_id,:new.user_id); end if;
    if voper <> 'U' or  updating('user_name') then	 prm_audit.audit_data ('USERS','user_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.user_name,:new.user_name); end if;
    if voper <> 'U' or  updating('view_id') then	 prm_audit.audit_data ('USERS','view_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.view_id,:new.view_id); end if;
    if voper <> 'U' or  updating('prof_id') then	 prm_audit.audit_data ('USERS','prof_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.prof_id,:new.prof_id); end if;
    if voper <> 'U' or  updating('guid') then	 prm_audit.audit_data ('USERS','guid',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.guid,:new.guid); end if;
    if voper <> 'U' or  updating('actual_name') then	 prm_audit.audit_data ('USERS','actual_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.actual_name,:new.actual_name); end if;
    if voper <> 'U' or  updating('passwd') then	 prm_audit.audit_data ('USERS','passwd',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.passwd,:new.passwd); end if;
    if voper <> 'U' or  updating('curr_id') then	 prm_audit.audit_data ('USERS','curr_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.curr_id,:new.curr_id); end if;

  end if;


      prm_audit.audit_row ( 'USERS',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_USERTMPL
create or replace trigger PRMAUD_USERTMPL
after insert or update or delete on USERTMPL
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('USERTMPL',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.user_id;
				
vpk2 := :old.template_id;
				

    else
    	vpk1 := :new.user_id;
				
vpk2 := :new.template_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('user_id') then	 prm_audit.audit_data ('USERTMPL','user_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.user_id,:new.user_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('USERTMPL','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('prof_id') then	 prm_audit.audit_data ('USERTMPL','prof_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.prof_id,:new.prof_id); end if;
    if voper <> 'U' or  updating('view_id') then	 prm_audit.audit_data ('USERTMPL','view_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.view_id,:new.view_id); end if;

  end if;


      prm_audit.audit_row ( 'USERTMPL',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_VIEWPROP
create or replace trigger PRMAUD_VIEWPROP
after insert or update or delete on VIEWPROP
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('VIEWPROP',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.view_id;
				

    else
    	vpk1 := :new.view_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('view_id') then	 prm_audit.audit_data ('VIEWPROP','view_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.view_id,:new.view_id); end if;
    if voper <> 'U' or  updating('view_name') then	 prm_audit.audit_data ('VIEWPROP','view_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.view_name,:new.view_name); end if;
    if voper <> 'U' or  updating('user_id') then	 prm_audit.audit_data ('VIEWPROP','user_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.user_id,:new.user_id); end if;
    if voper <> 'U' or  updating('view_type') then	 prm_audit.audit_data ('VIEWPROP','view_type',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.view_type,:new.view_type); end if;
    if voper <> 'U' or ( updating('view_data') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('VIEWPROP','view_data',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.view_data,:new.view_data); end if;

  end if;


      prm_audit.audit_row ( 'VIEWPROP',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_WBSMEMO
create or replace trigger PRMAUD_WBSMEMO
after insert or update or delete on WBSMEMO
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('WBSMEMO',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.wbs_memo_id;
				

    else
    	vpk1 := :new.wbs_memo_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('wbs_memo_id') then	 prm_audit.audit_data ('WBSMEMO','wbs_memo_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.wbs_memo_id,:new.wbs_memo_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('WBSMEMO','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('wbs_id') then	 prm_audit.audit_data ('WBSMEMO','wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_id,:new.wbs_id); end if;
    if voper <> 'U' or  updating('memo_type_id') then	 prm_audit.audit_data ('WBSMEMO','memo_type_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.memo_type_id,:new.memo_type_id); end if;
    if voper <> 'U' or ( updating('wbs_memo') and vupdate_level >= 3 ) then	 
       prm_audit.audit_blob ('WBSMEMO','wbs_memo',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1
       ,vlogical_delete,'N'       
       ,:old.wbs_memo,:new.wbs_memo); end if;

  end if;


      prm_audit.audit_row ( 'WBSMEMO',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

PRMAUD_WBSSTEP
create or replace trigger PRMAUD_WBSSTEP
after insert or update or delete on WBSSTEP
for each row
declare
  vpk1          varchar2(255);
  vpk2          varchar2(255);
  vpk3          varchar2(255);
  vpk4          varchar2(255);
  voper         char(1);
  vaudit        number;
  vinsert_level number;
  vupdate_level number;
  vdelete_level number;
  vcol_audit    varchar2(255);
  vsession_id   number;
  vprm_user_name varchar2(32);
  vapp_name     varchar2(25);
  vprogram_name varchar2(255);
  vhostname     varchar2(255);
  vnetaddress   varchar2(64);
  vrdbms_user   varchar2(30);
  vos_user      varchar2(30);
  vlogical_delete		varchar2(1);

begin

  if dbms_reputil.from_remote = true then   return; end if;

  prm_audit.tab_options ('WBSSTEP',vaudit,vinsert_level,vupdate_level,vdelete_level,vcol_audit);
  

  if nvl(vaudit,0) < 1 then return; end if ;

  prm_audit.prm_user (vsession_id,vprm_user_name,vapp_name);

  prm_audit.proc_info (vprogram_name, vhostname, vnetaddress, vrdbms_user, vos_user );

  vlogical_delete := 'N';

  prm_audit.g_audit_data:=null;
  if prm_audit.g_audit_extended is null then
    dbms_lob.createtemporary(prm_audit.g_audit_extended,TRUE,dbms_lob.SESSION);
  else
    dbms_lob.trim(prm_audit.g_audit_extended,0);
  end if;
  
  if updating then     
    if :old.delete_session_id is null and :new.delete_session_id is not null then
      vlogical_delete := 'Y';
      voper := 'D';
    else
      voper := 'U';
    end if;
  elsif inserting then voper := 'I';
  else                 voper := 'D';
  end if;

if    (voper = 'U' and vupdate_level = 0 ) or ( voper = 'I' and vinsert_level =0) or (voper = 'D' and vdelete_level = 0) then return; end if ;

  if deleting then
    vpk1 := :old.wbs_step_id;
				

    else
    	vpk1 := :new.wbs_step_id;
				

  end if;

  if (voper = 'U' and vupdate_level >= 2 ) or ( voper = 'I' and vinsert_level >= 2)
       or (voper = 'D' and vdelete_level >= 2) then
		
    if voper <> 'U' or  updating('wbs_step_id') then	 prm_audit.audit_data ('WBSSTEP','wbs_step_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'Y'
				,:old.wbs_step_id,:new.wbs_step_id); end if;
    if voper <> 'U' or  updating('template_id') then	 prm_audit.audit_data ('WBSSTEP','template_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.template_id,:new.template_id); end if;
    if voper <> 'U' or  updating('wbs_id') then	 prm_audit.audit_data ('WBSSTEP','wbs_id',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.wbs_id,:new.wbs_id); end if;
    if voper <> 'U' or  updating('seq_num') then	 prm_audit.audit_data ('WBSSTEP','seq_num',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.seq_num,:new.seq_num); end if;
    if voper <> 'U' or  updating('step_name') then	 prm_audit.audit_data ('WBSSTEP','step_name',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.step_name,:new.step_name); end if;
    if voper <> 'U' or  updating('step_wt') then	 prm_audit.audit_data ('WBSSTEP','step_wt',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
       ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,1,vlogical_delete,'N'
				,:old.step_wt,:new.step_wt); end if;

  end if;


      prm_audit.audit_row ( 'WBSSTEP',voper,vpk1,vpk2,vpk3,vpk4,vprm_user_name
                     ,vprogram_name,vhostname,vnetaddress,vrdbms_user,vos_user,vapp_name,vlogical_delete,'Y' );
   
end;

RT_ACTVCODE
CREATE OR REPLACE TRIGGER RT_ACTVCODE
BEFORE UPDATE OR INSERT ON ACTVCODE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'ACTVCODE',:old.actv_code_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.actv_code_id)
      and table_name = 'ACTVCODE';
    END IF;
  END IF;
end; 

RT_ACTVCODE_DEL
CREATE OR REPLACE TRIGGER RT_ACTVCODE_DEL
BEFORE DELETE ON ACTVCODE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'ACTVCODE',:old.actv_code_id,null,null,null );
end; 

RT_ACTVTYPE
CREATE OR REPLACE TRIGGER RT_ACTVTYPE
BEFORE UPDATE OR INSERT ON ACTVTYPE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'ACTVTYPE',:old.actv_code_type_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.actv_code_type_id)
      and table_name = 'ACTVTYPE';
    END IF;
  END IF;
end; 

RT_ACTVTYPE_DEL
CREATE OR REPLACE TRIGGER RT_ACTVTYPE_DEL
BEFORE DELETE ON ACTVTYPE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'ACTVTYPE',:old.actv_code_type_id,null,null,null );
end; 

RT_ADMIN_CONFIG
CREATE OR REPLACE TRIGGER RT_ADMIN_CONFIG
BEFORE UPDATE OR INSERT ON ADMIN_CONFIG
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'ADMIN_CONFIG',:old.config_name,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = :old.config_name
      and table_name = 'ADMIN_CONFIG';
    END IF;
  END IF;
end; 

RT_ADMIN_CONFIG_DEL
CREATE OR REPLACE TRIGGER RT_ADMIN_CONFIG_DEL
BEFORE DELETE ON ADMIN_CONFIG
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'ADMIN_CONFIG',:old.config_name,null,null,null );
end; 

RT_COSTTYPE
CREATE OR REPLACE TRIGGER RT_COSTTYPE
BEFORE UPDATE OR INSERT ON COSTTYPE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'COSTTYPE',:old.cost_type_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.cost_type_id)
      and table_name = 'COSTTYPE';
    END IF;
  END IF;
end; 

RT_COSTTYPE_DEL
CREATE OR REPLACE TRIGGER RT_COSTTYPE_DEL
BEFORE DELETE ON COSTTYPE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'COSTTYPE',:old.cost_type_id,null,null,null );
end; 

RT_CURRTYPE
CREATE OR REPLACE TRIGGER RT_CURRTYPE
BEFORE UPDATE OR INSERT ON CURRTYPE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'CURRTYPE',:old.curr_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.curr_id)
      and table_name = 'CURRTYPE';
    END IF;
  END IF;
end; 

RT_CURRTYPE_DEL
CREATE OR REPLACE TRIGGER RT_CURRTYPE_DEL
BEFORE DELETE ON CURRTYPE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'CURRTYPE',:old.curr_id,null,null,null );
end; 

RT_DOCCATG
CREATE OR REPLACE TRIGGER RT_DOCCATG
BEFORE UPDATE OR INSERT ON DOCCATG
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'DOCCATG',:old.doc_catg_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.doc_catg_id)
      and table_name = 'DOCCATG';
    END IF;
  END IF;
end; 

RT_DOCCATG_DEL
CREATE OR REPLACE TRIGGER RT_DOCCATG_DEL
BEFORE DELETE ON DOCCATG
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'DOCCATG',:old.doc_catg_id,null,null,null );
end; 

RT_DOCUMENT
CREATE OR REPLACE TRIGGER RT_DOCUMENT
BEFORE UPDATE OR INSERT ON DOCUMENT
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'DOCUMENT',:old.doc_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.doc_id)
      and table_name = 'DOCUMENT';
    END IF;
  END IF;
end; 

RT_DOCUMENT_DEL
CREATE OR REPLACE TRIGGER RT_DOCUMENT_DEL
BEFORE DELETE ON DOCUMENT
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'DOCUMENT',:old.doc_id,null,null,null );
end; 

RT_FACTCATG
CREATE OR REPLACE TRIGGER RT_FACTCATG
BEFORE UPDATE OR INSERT ON FACTCATG
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'FACTCATG',:old.fact_catg_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.fact_catg_id)
      and table_name = 'FACTCATG';
    END IF;
  END IF;
end; 

RT_FACTCATG_DEL
CREATE OR REPLACE TRIGGER RT_FACTCATG_DEL
BEFORE DELETE ON FACTCATG
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'FACTCATG',:old.fact_catg_id,null,null,null );
end; 

RT_FACTOR
CREATE OR REPLACE TRIGGER RT_FACTOR
BEFORE UPDATE OR INSERT ON FACTOR
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'FACTOR',:old.fact_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.fact_id)
      and table_name = 'FACTOR';
    END IF;
  END IF;
end; 

RT_FACTOR_DEL
CREATE OR REPLACE TRIGGER RT_FACTOR_DEL
BEFORE DELETE ON FACTOR
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'FACTOR',:old.fact_id,null,null,null );
end; 

RT_FACTVAL
CREATE OR REPLACE TRIGGER RT_FACTVAL
BEFORE UPDATE OR INSERT ON FACTVAL
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'FACTVAL',:old.fact_val_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.fact_val_id)
      and table_name = 'FACTVAL';
    END IF;
  END IF;
end; 

RT_FACTVAL_DEL
CREATE OR REPLACE TRIGGER RT_FACTVAL_DEL
BEFORE DELETE ON FACTVAL
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'FACTVAL',:old.fact_val_id,null,null,null );
end; 

RT_FILTPROP
CREATE OR REPLACE TRIGGER RT_FILTPROP
BEFORE UPDATE OR INSERT ON FILTPROP
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'FILTPROP',:old.filter_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.filter_id)
      and table_name = 'FILTPROP';
    END IF;
  END IF;
end; 

RT_FILTPROP_DEL
CREATE OR REPLACE TRIGGER RT_FILTPROP_DEL
BEFORE DELETE ON FILTPROP
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'FILTPROP',:old.filter_id,null,null,null );
end; 

RT_LINKWBS
CREATE OR REPLACE TRIGGER RT_LINKWBS
BEFORE UPDATE OR INSERT ON LINKWBS
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'LINKWBS',:old.linkwbs_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.linkwbs_id)
      and table_name = 'LINKWBS';
    END IF;
  END IF;
end; 

RT_LINKWBS_DEL
CREATE OR REPLACE TRIGGER RT_LINKWBS_DEL
BEFORE DELETE ON LINKWBS
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'LINKWBS',:old.linkwbs_id,null,null,null );
end; 

RT_MEMOTYPE
CREATE OR REPLACE TRIGGER RT_MEMOTYPE
BEFORE UPDATE OR INSERT ON MEMOTYPE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'MEMOTYPE',:old.memo_type_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.memo_type_id)
      and table_name = 'MEMOTYPE';
    END IF;
  END IF;
end; 

RT_MEMOTYPE_DEL
CREATE OR REPLACE TRIGGER RT_MEMOTYPE_DEL
BEFORE DELETE ON MEMOTYPE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'MEMOTYPE',:old.memo_type_id,null,null,null );
end; 

RT_OBS
CREATE OR REPLACE TRIGGER RT_OBS
BEFORE UPDATE OR INSERT ON OBS
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'OBS',:old.obs_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.obs_id)
      and table_name = 'OBS';
    END IF;
  END IF;
end; 

RT_OBS_DEL
CREATE OR REPLACE TRIGGER RT_OBS_DEL
BEFORE DELETE ON OBS
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'OBS',:old.obs_id,null,null,null );
end; 

RT_PHASE
CREATE OR REPLACE TRIGGER RT_PHASE
BEFORE UPDATE OR INSERT ON PHASE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'PHASE',:old.phase_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.phase_id)
      and table_name = 'PHASE';
    END IF;
  END IF;
end; 

RT_PHASE_DEL
CREATE OR REPLACE TRIGGER RT_PHASE_DEL
BEFORE DELETE ON PHASE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'PHASE',:old.phase_id,null,null,null );
end; 

RT_POBS
CREATE OR REPLACE TRIGGER RT_POBS
BEFORE UPDATE OR INSERT ON POBS
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'POBS',:old.pobs_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.pobs_id)
      and table_name = 'POBS';
    END IF;
  END IF;
end; 

RT_POBS_DEL
CREATE OR REPLACE TRIGGER RT_POBS_DEL
BEFORE DELETE ON POBS
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'POBS',:old.pobs_id,null,null,null );
end; 

RT_PREFER
CREATE OR REPLACE TRIGGER RT_PREFER
BEFORE UPDATE OR INSERT ON PREFER
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'PREFER',:old.prefer_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.prefer_id)
      and table_name = 'PREFER';
    END IF;
  END IF;
end; 

RT_PREFER_DEL
CREATE OR REPLACE TRIGGER RT_PREFER_DEL
BEFORE DELETE ON PREFER
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'PREFER',:old.prefer_id,null,null,null );
end; 

RT_PROCGROUP
CREATE OR REPLACE TRIGGER RT_PROCGROUP
BEFORE UPDATE OR INSERT ON PROCGROUP
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'PROCGROUP',:old.proc_group_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.proc_group_id)
      and table_name = 'PROCGROUP';
    END IF;
  END IF;
end; 

RT_PROCGROUP_DEL
CREATE OR REPLACE TRIGGER RT_PROCGROUP_DEL
BEFORE DELETE ON PROCGROUP
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'PROCGROUP',:old.proc_group_id,null,null,null );
end; 

RT_PROCITEM
CREATE OR REPLACE TRIGGER RT_PROCITEM
BEFORE UPDATE OR INSERT ON PROCITEM
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'PROCITEM',:old.proc_item_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.proc_item_id)
      and table_name = 'PROCITEM';
    END IF;
  END IF;
end; 

RT_PROCITEM_DEL
CREATE OR REPLACE TRIGGER RT_PROCITEM_DEL
BEFORE DELETE ON PROCITEM
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'PROCITEM',:old.proc_item_id,null,null,null );
end; 

RT_PROFILE
CREATE OR REPLACE TRIGGER RT_PROFILE
BEFORE UPDATE OR INSERT ON PROFILE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'PROFILE',:old.prof_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.prof_id)
      and table_name = 'PROFILE';
    END IF;
  END IF;
end; 

RT_PROFILE_DEL
CREATE OR REPLACE TRIGGER RT_PROFILE_DEL
BEFORE DELETE ON PROFILE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'PROFILE',:old.prof_id,null,null,null );
end; 

RT_PROFPRIV
CREATE OR REPLACE TRIGGER RT_PROFPRIV
BEFORE UPDATE OR INSERT ON PROFPRIV
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.prof_id)
and pk2 = TO_CHAR(:new.priv_num)
    and table_name = 'PROFPRIV';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'PROFPRIV',:old.prof_id,:old.priv_num,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.prof_id)
and pk2 = TO_CHAR(:old.priv_num)
      and table_name = 'PROFPRIV';
    END IF;
  END IF;
end; 

RT_PROFPRIV_DEL
CREATE OR REPLACE TRIGGER RT_PROFPRIV_DEL
BEFORE DELETE ON PROFPRIV
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'PROFPRIV',:old.prof_id,:old.priv_num,null,null );
end; 

RT_QUALITY
CREATE OR REPLACE TRIGGER RT_QUALITY
BEFORE UPDATE OR INSERT ON QUALITY
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'QUALITY',:old.qual_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.qual_id)
      and table_name = 'QUALITY';
    END IF;
  END IF;
end; 

RT_QUALITY_DEL
CREATE OR REPLACE TRIGGER RT_QUALITY_DEL
BEFORE DELETE ON QUALITY
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'QUALITY',:old.qual_id,null,null,null );
end; 

RT_QUERYLIB
CREATE OR REPLACE TRIGGER RT_QUERYLIB
BEFORE UPDATE OR INSERT ON QUERYLIB
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'QUERYLIB',:old.query_lib_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.query_lib_id)
      and table_name = 'QUERYLIB';
    END IF;
  END IF;
end; 

RT_QUERYLIB_DEL
CREATE OR REPLACE TRIGGER RT_QUERYLIB_DEL
BEFORE DELETE ON QUERYLIB
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'QUERYLIB',:old.query_lib_id,null,null,null );
end; 

RT_RCATTYPE
CREATE OR REPLACE TRIGGER RT_RCATTYPE
BEFORE UPDATE OR INSERT ON RCATTYPE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'RCATTYPE',:old.rsrc_catg_type_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.rsrc_catg_type_id)
      and table_name = 'RCATTYPE';
    END IF;
  END IF;
end; 

RT_RCATTYPE_DEL
CREATE OR REPLACE TRIGGER RT_RCATTYPE_DEL
BEFORE DELETE ON RCATTYPE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'RCATTYPE',:old.rsrc_catg_type_id,null,null,null );
end; 

RT_RCATVAL
CREATE OR REPLACE TRIGGER RT_RCATVAL
BEFORE UPDATE OR INSERT ON RCATVAL
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'RCATVAL',:old.rsrc_catg_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.rsrc_catg_id)
      and table_name = 'RCATVAL';
    END IF;
  END IF;
end; 

RT_RCATVAL_DEL
CREATE OR REPLACE TRIGGER RT_RCATVAL_DEL
BEFORE DELETE ON RCATVAL
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'RCATVAL',:old.rsrc_catg_id,null,null,null );
end; 

RT_RISKCTRL
CREATE OR REPLACE TRIGGER RT_RISKCTRL
BEFORE UPDATE OR INSERT ON RISKCTRL
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'RISKCTRL',:old.risk_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.risk_id)
      and table_name = 'RISKCTRL';
    END IF;
  END IF;
end; 

RT_RISKCTRL_DEL
CREATE OR REPLACE TRIGGER RT_RISKCTRL_DEL
BEFORE DELETE ON RISKCTRL
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'RISKCTRL',:old.risk_id,null,null,null
  	,:old.template_id );
end; 

RT_RISKTYPE
CREATE OR REPLACE TRIGGER RT_RISKTYPE
BEFORE UPDATE OR INSERT ON RISKTYPE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'RISKTYPE',:old.risk_type_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.risk_type_id)
      and table_name = 'RISKTYPE';
    END IF;
  END IF;
end; 

RT_RISKTYPE_DEL
CREATE OR REPLACE TRIGGER RT_RISKTYPE_DEL
BEFORE DELETE ON RISKTYPE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'RISKTYPE',:old.risk_type_id,null,null,null );
end; 

RT_ROLES
CREATE OR REPLACE TRIGGER RT_ROLES
BEFORE UPDATE OR INSERT ON ROLES
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'ROLES',:old.role_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.role_id)
      and table_name = 'ROLES';
    END IF;
  END IF;
end; 

RT_ROLES_DEL
CREATE OR REPLACE TRIGGER RT_ROLES_DEL
BEFORE DELETE ON ROLES
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'ROLES',:old.role_id,null,null,null );
end; 

RT_RPT
CREATE OR REPLACE TRIGGER RT_RPT
BEFORE UPDATE OR INSERT ON RPT
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'RPT',:old.rpt_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.rpt_id)
      and table_name = 'RPT';
    END IF;
  END IF;
end; 

RT_RPT_DEL
CREATE OR REPLACE TRIGGER RT_RPT_DEL
BEFORE DELETE ON RPT
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'RPT',:old.rpt_id,null,null,null );
end; 

RT_RPTGROUP
CREATE OR REPLACE TRIGGER RT_RPTGROUP
BEFORE UPDATE OR INSERT ON RPTGROUP
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'RPTGROUP',:old.rpt_group_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.rpt_group_id)
      and table_name = 'RPTGROUP';
    END IF;
  END IF;
end; 

RT_RPTGROUP_DEL
CREATE OR REPLACE TRIGGER RT_RPTGROUP_DEL
BEFORE DELETE ON RPTGROUP
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'RPTGROUP',:old.rpt_group_id,null,null,null );
end; 

RT_RSRC
CREATE OR REPLACE TRIGGER RT_RSRC
BEFORE UPDATE OR INSERT ON RSRC
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'RSRC',:old.rsrc_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.rsrc_id)
      and table_name = 'RSRC';
    END IF;
  END IF;
end; 

RT_RSRC_DEL
CREATE OR REPLACE TRIGGER RT_RSRC_DEL
BEFORE DELETE ON RSRC
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'RSRC',:old.rsrc_id,null,null,null );
end; 

RT_RSRCRCAT
CREATE OR REPLACE TRIGGER RT_RSRCRCAT
BEFORE UPDATE OR INSERT ON RSRCRCAT
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.rsrc_id)
and pk2 = TO_CHAR(:new.rsrc_catg_type_id)
    and table_name = 'RSRCRCAT';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'RSRCRCAT',:old.rsrc_id,:old.rsrc_catg_type_id,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.rsrc_id)
and pk2 = TO_CHAR(:old.rsrc_catg_type_id)
      and table_name = 'RSRCRCAT';
    END IF;
  END IF;
end; 

RT_RSRCRCAT_DEL
CREATE OR REPLACE TRIGGER RT_RSRCRCAT_DEL
BEFORE DELETE ON RSRCRCAT
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'RSRCRCAT',:old.rsrc_id,:old.rsrc_catg_type_id,null,null );
end; 

RT_RSRCROLE
CREATE OR REPLACE TRIGGER RT_RSRCROLE
BEFORE UPDATE OR INSERT ON RSRCROLE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.rsrc_id)
and pk2 = TO_CHAR(:new.role_id)
    and table_name = 'RSRCROLE';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'RSRCROLE',:old.rsrc_id,:old.role_id,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.rsrc_id)
and pk2 = TO_CHAR(:old.role_id)
      and table_name = 'RSRCROLE';
    END IF;
  END IF;
end; 

RT_RSRCROLE_DEL
CREATE OR REPLACE TRIGGER RT_RSRCROLE_DEL
BEFORE DELETE ON RSRCROLE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'RSRCROLE',:old.rsrc_id,:old.role_id,null,null );
end; 

RT_SETTINGS
CREATE OR REPLACE TRIGGER RT_SETTINGS
BEFORE UPDATE OR INSERT ON SETTINGS
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.namespace)
and pk2 = :new.setting_name
    and table_name = 'SETTINGS';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'SETTINGS',:old.namespace,:old.setting_name,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.namespace)
and pk2 = :old.setting_name
      and table_name = 'SETTINGS';
    END IF;
  END IF;
end; 

RT_SETTINGS_DEL
CREATE OR REPLACE TRIGGER RT_SETTINGS_DEL
BEFORE DELETE ON SETTINGS
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'SETTINGS',:old.namespace,:old.setting_name,null,null );
end; 

RT_TASK
CREATE OR REPLACE TRIGGER RT_TASK
BEFORE UPDATE OR INSERT ON TASK
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TASK',:old.task_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.task_id)
      and table_name = 'TASK';
    END IF;
  END IF;
end; 

RT_TASK_DEL
CREATE OR REPLACE TRIGGER RT_TASK_DEL
BEFORE DELETE ON TASK
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TASK',:old.task_id,null,null,null
  	,:old.template_id );
end; 

RT_TASKACTV
CREATE OR REPLACE TRIGGER RT_TASKACTV
BEFORE UPDATE OR INSERT ON TASKACTV
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.taskuse_id)
and pk2 = TO_CHAR(:new.actv_code_type_id)
    and table_name = 'TASKACTV';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TASKACTV',:old.taskuse_id,:old.actv_code_type_id,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.taskuse_id)
and pk2 = TO_CHAR(:old.actv_code_type_id)
      and table_name = 'TASKACTV';
    END IF;
  END IF;
end; 

RT_TASKACTV_DEL
CREATE OR REPLACE TRIGGER RT_TASKACTV_DEL
BEFORE DELETE ON TASKACTV
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TASKACTV',:old.taskuse_id,:old.actv_code_type_id,null,null
  	,:old.template_id );
end; 

RT_TASKDOC
CREATE OR REPLACE TRIGGER RT_TASKDOC
BEFORE UPDATE OR INSERT ON TASKDOC
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TASKDOC',:old.taskdoc_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.taskdoc_id)
      and table_name = 'TASKDOC';
    END IF;
  END IF;
end; 

RT_TASKDOC_DEL
CREATE OR REPLACE TRIGGER RT_TASKDOC_DEL
BEFORE DELETE ON TASKDOC
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TASKDOC',:old.taskdoc_id,null,null,null
  	,:old.template_id );
end; 

RT_TASKMEMO
CREATE OR REPLACE TRIGGER RT_TASKMEMO
BEFORE UPDATE OR INSERT ON TASKMEMO
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'TASKMEMO',:old.memo_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.memo_id)
      and table_name = 'TASKMEMO';
    END IF;
  END IF;
end; 

RT_TASKMEMO_DEL
CREATE OR REPLACE TRIGGER RT_TASKMEMO_DEL
BEFORE DELETE ON TASKMEMO
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'TASKMEMO',:old.memo_id,null,null,null );
end; 

RT_TASKPRED
CREATE OR REPLACE TRIGGER RT_TASKPRED
BEFORE UPDATE OR INSERT ON TASKPRED
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TASKPRED',:old.taskuse_pred_id,null,null,null
  	,:old.template_id );
    	
      if :old.pred_template_id != :old.template_id then
        INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
        values ( sysdate,'TASKPRED',:old.taskuse_pred_id,null,null,null
  	,:old.pred_template_id );
      end if;
   	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.taskuse_pred_id)
      and table_name = 'TASKPRED';
    END IF;
  END IF;
end; 

RT_TASKPRED_DEL
CREATE OR REPLACE TRIGGER RT_TASKPRED_DEL
BEFORE DELETE ON TASKPRED
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TASKPRED',:old.taskuse_pred_id,null,null,null
  	,:old.template_id );
	if :old.pred_template_id != :old.template_id then
    INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
    values ( sysdate,'TASKPRED',:old.taskuse_pred_id,null,null,null
  	,:old.pred_template_id );
   end if;
 	
end; 

RT_TASKPROC
CREATE OR REPLACE TRIGGER RT_TASKPROC
BEFORE UPDATE OR INSERT ON TASKPROC
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'TASKPROC',:old.proc_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.proc_id)
      and table_name = 'TASKPROC';
    END IF;
  END IF;
end; 

RT_TASKPROC_DEL
CREATE OR REPLACE TRIGGER RT_TASKPROC_DEL
BEFORE DELETE ON TASKPROC
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'TASKPROC',:old.proc_id,null,null,null );
end; 

RT_TASKQUAL
CREATE OR REPLACE TRIGGER RT_TASKQUAL
BEFORE UPDATE OR INSERT ON TASKQUAL
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.task_id)
and pk2 = TO_CHAR(:new.qual_id)
    and table_name = 'TASKQUAL';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'TASKQUAL',:old.task_id,:old.qual_id,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.task_id)
and pk2 = TO_CHAR(:old.qual_id)
      and table_name = 'TASKQUAL';
    END IF;
  END IF;
end; 

RT_TASKQUAL_DEL
CREATE OR REPLACE TRIGGER RT_TASKQUAL_DEL
BEFORE DELETE ON TASKQUAL
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'TASKQUAL',:old.task_id,:old.qual_id,null,null );
end; 

RT_TASKRSRC
CREATE OR REPLACE TRIGGER RT_TASKRSRC
BEFORE UPDATE OR INSERT ON TASKRSRC
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TASKRSRC',:old.taskrsrc_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.taskrsrc_id)
      and table_name = 'TASKRSRC';
    END IF;
  END IF;
end; 

RT_TASKRSRC_DEL
CREATE OR REPLACE TRIGGER RT_TASKRSRC_DEL
BEFORE DELETE ON TASKRSRC
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TASKRSRC',:old.taskrsrc_id,null,null,null
  	,:old.template_id );
end; 

RT_TASKUSE
CREATE OR REPLACE TRIGGER RT_TASKUSE
BEFORE UPDATE OR INSERT ON TASKUSE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TASKUSE',:old.taskuse_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.taskuse_id)
      and table_name = 'TASKUSE';
    END IF;
  END IF;
end; 

RT_TASKUSE_DEL
CREATE OR REPLACE TRIGGER RT_TASKUSE_DEL
BEFORE DELETE ON TASKUSE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TASKUSE',:old.taskuse_id,null,null,null
  	,:old.template_id );
end; 

RT_TCATTYPE
CREATE OR REPLACE TRIGGER RT_TCATTYPE
BEFORE UPDATE OR INSERT ON TCATTYPE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'TCATTYPE',:old.tmpl_catg_type_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.tmpl_catg_type_id)
      and table_name = 'TCATTYPE';
    END IF;
  END IF;
end; 

RT_TCATTYPE_DEL
CREATE OR REPLACE TRIGGER RT_TCATTYPE_DEL
BEFORE DELETE ON TCATTYPE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'TCATTYPE',:old.tmpl_catg_type_id,null,null,null );
end; 

RT_TCATVAL
CREATE OR REPLACE TRIGGER RT_TCATVAL
BEFORE UPDATE OR INSERT ON TCATVAL
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'TCATVAL',:old.tmpl_catg_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.tmpl_catg_id)
      and table_name = 'TCATVAL';
    END IF;
  END IF;
end; 

RT_TCATVAL_DEL
CREATE OR REPLACE TRIGGER RT_TCATVAL_DEL
BEFORE DELETE ON TCATVAL
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'TCATVAL',:old.tmpl_catg_id,null,null,null );
end; 

RT_TEMPLATE
CREATE OR REPLACE TRIGGER RT_TEMPLATE
BEFORE UPDATE OR INSERT ON TEMPLATE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TEMPLATE',:old.template_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.template_id)
      and table_name = 'TEMPLATE';
    END IF;
  END IF;
end; 

RT_TEMPLATE_DEL
CREATE OR REPLACE TRIGGER RT_TEMPLATE_DEL
BEFORE DELETE ON TEMPLATE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TEMPLATE',:old.template_id,null,null,null
  	,:old.template_id );
end; 

RT_TMPLCOST
CREATE OR REPLACE TRIGGER RT_TMPLCOST
BEFORE UPDATE OR INSERT ON TMPLCOST
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TMPLCOST',:old.cost_item_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.cost_item_id)
      and table_name = 'TMPLCOST';
    END IF;
  END IF;
end; 

RT_TMPLCOST_DEL
CREATE OR REPLACE TRIGGER RT_TMPLCOST_DEL
BEFORE DELETE ON TMPLCOST
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TMPLCOST',:old.cost_item_id,null,null,null
  	,:old.template_id );
end; 

RT_TMPLRISK
CREATE OR REPLACE TRIGGER RT_TMPLRISK
BEFORE UPDATE OR INSERT ON TMPLRISK
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TMPLRISK',:old.risk_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.risk_id)
      and table_name = 'TMPLRISK';
    END IF;
  END IF;
end; 

RT_TMPLRISK_DEL
CREATE OR REPLACE TRIGGER RT_TMPLRISK_DEL
BEFORE DELETE ON TMPLRISK
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TMPLRISK',:old.risk_id,null,null,null
  	,:old.template_id );
end; 

RT_TMPLTCAT
CREATE OR REPLACE TRIGGER RT_TMPLTCAT
BEFORE UPDATE OR INSERT ON TMPLTCAT
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.template_id)
and pk2 = TO_CHAR(:new.tmpl_catg_type_id)
    and table_name = 'TMPLTCAT';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TMPLTCAT',:old.template_id,:old.tmpl_catg_type_id,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.template_id)
and pk2 = TO_CHAR(:old.tmpl_catg_type_id)
      and table_name = 'TMPLTCAT';
    END IF;
  END IF;
end; 

RT_TMPLTCAT_DEL
CREATE OR REPLACE TRIGGER RT_TMPLTCAT_DEL
BEFORE DELETE ON TMPLTCAT
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TMPLTCAT',:old.template_id,:old.tmpl_catg_type_id,null,null
  	,:old.template_id );
end; 

RT_TMPLWBS
CREATE OR REPLACE TRIGGER RT_TMPLWBS
BEFORE UPDATE OR INSERT ON TMPLWBS
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'TMPLWBS',:old.wbs_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.wbs_id)
      and table_name = 'TMPLWBS';
    END IF;
  END IF;
end; 

RT_TMPLWBS_DEL
CREATE OR REPLACE TRIGGER RT_TMPLWBS_DEL
BEFORE DELETE ON TMPLWBS
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'TMPLWBS',:old.wbs_id,null,null,null
  	,:old.template_id );
end; 

RT_UDFCODE
CREATE OR REPLACE TRIGGER RT_UDFCODE
BEFORE UPDATE OR INSERT ON UDFCODE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'UDFCODE',:old.udf_code_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.udf_code_id)
      and table_name = 'UDFCODE';
    END IF;
  END IF;
end; 

RT_UDFCODE_DEL
CREATE OR REPLACE TRIGGER RT_UDFCODE_DEL
BEFORE DELETE ON UDFCODE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'UDFCODE',:old.udf_code_id,null,null,null );
end; 

RT_UDFTYPE
CREATE OR REPLACE TRIGGER RT_UDFTYPE
BEFORE UPDATE OR INSERT ON UDFTYPE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'UDFTYPE',:old.udf_type_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.udf_type_id)
      and table_name = 'UDFTYPE';
    END IF;
  END IF;
end; 

RT_UDFTYPE_DEL
CREATE OR REPLACE TRIGGER RT_UDFTYPE_DEL
BEFORE DELETE ON UDFTYPE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'UDFTYPE',:old.udf_type_id,null,null,null );
end; 

RT_UDFVALUE
CREATE OR REPLACE TRIGGER RT_UDFVALUE
BEFORE UPDATE OR INSERT ON UDFVALUE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.udf_type_id)
and pk2 = TO_CHAR(:new.fk_id)
    and table_name = 'UDFVALUE';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'UDFVALUE',:old.udf_type_id,:old.fk_id,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.udf_type_id)
and pk2 = TO_CHAR(:old.fk_id)
      and table_name = 'UDFVALUE';
    END IF;
  END IF;
end; 

RT_UDFVALUE_DEL
CREATE OR REPLACE TRIGGER RT_UDFVALUE_DEL
BEFORE DELETE ON UDFVALUE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'UDFVALUE',:old.udf_type_id,:old.fk_id,null,null
  	,:old.template_id );
end; 

RT_UMEASURE
CREATE OR REPLACE TRIGGER RT_UMEASURE
BEFORE UPDATE OR INSERT ON UMEASURE
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'UMEASURE',:old.unit_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.unit_id)
      and table_name = 'UMEASURE';
    END IF;
  END IF;
end; 

RT_UMEASURE_DEL
CREATE OR REPLACE TRIGGER RT_UMEASURE_DEL
BEFORE DELETE ON UMEASURE
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'UMEASURE',:old.unit_id,null,null,null );
end; 

RT_USERCOL
CREATE OR REPLACE TRIGGER RT_USERCOL
BEFORE UPDATE OR INSERT ON USERCOL
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'USERCOL',:old.user_col_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.user_col_id)
      and table_name = 'USERCOL';
    END IF;
  END IF;
end; 

RT_USERCOL_DEL
CREATE OR REPLACE TRIGGER RT_USERCOL_DEL
BEFORE DELETE ON USERCOL
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'USERCOL',:old.user_col_id,null,null,null );
end; 

RT_USERDATA
CREATE OR REPLACE TRIGGER RT_USERDATA
BEFORE UPDATE OR INSERT ON USERDATA
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'USERDATA',:old.user_data_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.user_data_id)
      and table_name = 'USERDATA';
    END IF;
  END IF;
end; 

RT_USERDATA_DEL
CREATE OR REPLACE TRIGGER RT_USERDATA_DEL
BEFORE DELETE ON USERDATA
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'USERDATA',:old.user_data_id,null,null,null );
end; 

RT_USERENG
CREATE OR REPLACE TRIGGER RT_USERENG
BEFORE UPDATE OR INSERT ON USERENG
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'USERENG',:old.user_eng_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.user_eng_id)
      and table_name = 'USERENG';
    END IF;
  END IF;
end; 

RT_USERENG_DEL
CREATE OR REPLACE TRIGGER RT_USERENG_DEL
BEFORE DELETE ON USERENG
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'USERENG',:old.user_eng_id,null,null,null );
end; 

RT_USERS
CREATE OR REPLACE TRIGGER RT_USERS
BEFORE UPDATE OR INSERT ON USERS
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
    :NEW.update_user := prm_audit.g_prm_user_name;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.g_prm_user_name;
    :NEW.create_date := SYSDATE;
  END IF;

  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'USERS',:old.user_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.user_id)
      and table_name = 'USERS';
    END IF;
  END IF;
end; 

RT_USERS_DEL
CREATE OR REPLACE TRIGGER RT_USERS_DEL
BEFORE DELETE ON USERS
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'USERS',:old.user_id,null,null,null );
end; 

RT_USERTMPL
CREATE OR REPLACE TRIGGER RT_USERTMPL
BEFORE UPDATE OR INSERT ON USERTMPL
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
    DELETE FROM REFRDEL
    WHERE pk1 = TO_CHAR(:new.user_id)
and pk2 = TO_CHAR(:new.template_id)
    and table_name = 'USERTMPL';
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'USERTMPL',:old.user_id,:old.template_id,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.user_id)
and pk2 = TO_CHAR(:old.template_id)
      and table_name = 'USERTMPL';
    END IF;
  END IF;
end; 

RT_USERTMPL_DEL
CREATE OR REPLACE TRIGGER RT_USERTMPL_DEL
BEFORE DELETE ON USERTMPL
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'USERTMPL',:old.user_id,:old.template_id,null,null
  	,:old.template_id );
end; 

RT_USESSION
CREATE OR REPLACE TRIGGER RT_USESSION
BEFORE UPDATE OR INSERT ON USESSION
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
    :NEW.update_user := prm_audit.g_prm_user_name;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.g_prm_user_name;
    :NEW.create_date := SYSDATE;
  END IF;

  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'USESSION',:old.session_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.session_id)
      and table_name = 'USESSION';
    END IF;
  END IF;
end; 

RT_USESSION_DEL
CREATE OR REPLACE TRIGGER RT_USESSION_DEL
BEFORE DELETE ON USESSION
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'USESSION',:old.session_id,null,null,null );
end; 

RT_VIEWPROP
CREATE OR REPLACE TRIGGER RT_VIEWPROP
BEFORE UPDATE OR INSERT ON VIEWPROP
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
      values ( sysdate,'VIEWPROP',:old.view_id,null,null,null );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.view_id)
      and table_name = 'VIEWPROP';
    END IF;
  END IF;
end; 

RT_VIEWPROP_DEL
CREATE OR REPLACE TRIGGER RT_VIEWPROP_DEL
BEFORE DELETE ON VIEWPROP
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4)
  values ( sysdate,'VIEWPROP',:old.view_id,null,null,null );
end; 

RT_WBSMEMO
CREATE OR REPLACE TRIGGER RT_WBSMEMO
BEFORE UPDATE OR INSERT ON WBSMEMO
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'WBSMEMO',:old.wbs_memo_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.wbs_memo_id)
      and table_name = 'WBSMEMO';
    END IF;
  END IF;
end; 

RT_WBSMEMO_DEL
CREATE OR REPLACE TRIGGER RT_WBSMEMO_DEL
BEFORE DELETE ON WBSMEMO
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'WBSMEMO',:old.wbs_memo_id,null,null,null
  	,:old.template_id );
end; 

RT_WBSSTEP
CREATE OR REPLACE TRIGGER RT_WBSSTEP
BEFORE UPDATE OR INSERT ON WBSSTEP
FOR EACH ROW
DECLARE
BEGIN
  if dbms_reputil.from_remote = true then   return; end if;

  
  :NEW.update_date := SYSDATE;
  :NEW.update_user := prm_audit.get_user;
  IF INSERTING THEN
    :NEW.create_user := prm_audit.get_user;
    :NEW.create_date := SYSDATE;
    
  END IF;
  IF UPDATING ('DELETE_SESSION_ID')  THEN
    IF :old.delete_session_id is null 
       and :new.delete_session_id is not null THEN
      INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
      values ( sysdate,'WBSSTEP',:old.wbs_step_id,null,null,null
  	,:old.template_id );
    	
    ELSIF :old.delete_session_id is not null 
       and :new.delete_session_id is null THEN
      DELETE FROM REFRDEL
      WHERE pk1 = TO_CHAR(:old.wbs_step_id)
      and table_name = 'WBSSTEP';
    END IF;
  END IF;
end; 

RT_WBSSTEP_DEL
CREATE OR REPLACE TRIGGER RT_WBSSTEP_DEL
BEFORE DELETE ON WBSSTEP
FOR EACH ROW
DECLARE
BEGIN
  INSERT INTO REFRDEL ( delete_date,table_name, pk1,pk2,pk3,pk4,template_id)
  values ( sysdate,'WBSSTEP',:old.wbs_step_id,null,null,null
  	,:old.template_id );
end;