DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_NAV_CONTEXT_RULES_PKG

Source


1 package body HR_NAV_CONTEXT_RULES_PKG as
2 /* $Header: hrwcrlct.pkb 120.1 2011/04/28 10:23:43 sidsaxen ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out nocopy VARCHAR2,
5   X_NAV_CONTEXT_RULE_ID in NUMBER,
6   X_GLOBAL_USAGE_ID in NUMBER,
7   X_EVALUATION_TYPE_CODE in VARCHAR2,
8   X_VALUE in VARCHAR2
9 ) is
10   cursor C is select ROWID from HR_NAVIGATION_CONTEXT_RULES
11     where NAV_CONTEXT_RULE_ID = X_NAV_CONTEXT_RULE_ID
12     ;
13 begin
14 
15 --
16 -- Added the following code as a part of Zero Downtime Patching Project.
17 -- Code Starts Here.
18 --
19 
20 BEGIN
21 	PER_RIC_PKG.chk_integrity (
22     p_entity_name			=>	'HR_NAVIGATION_CONTEXT_RULES',
23     p_ref_entity         	=>	'HR_NAV_UNIT_GLOBAL_USAGES',
24     p_ref_column_name    	=>	'GLOBAL_USAGE_ID',
25     p_ref_col_value_number  =>	X_GLOBAL_USAGE_ID,
26     p_ref_col_value_varchar =>	NULL,
27     p_ref_col_value_date    =>	NULL,
28     p_ref_type        		=>	'INS');
29 
30 END;
31 --
32 -- Code Ends Here.
33 --
34   insert into HR_NAVIGATION_CONTEXT_RULES (
35     NAV_CONTEXT_RULE_ID,
36     GLOBAL_USAGE_ID,
37     EVALUATION_TYPE_CODE,
38     VALUE
39   ) values (
40     X_NAV_CONTEXT_RULE_ID,
41     X_GLOBAL_USAGE_ID,
42     X_EVALUATION_TYPE_CODE,
43     X_VALUE);
44 
45   open c;
46   fetch c into X_ROWID;
47   if (c%notfound) then
48     close c;
49     raise no_data_found;
50   end if;
51   close c;
52 
53 end INSERT_ROW;
54 
55 procedure LOCK_ROW (
56   X_NAV_CONTEXT_RULE_ID in NUMBER,
57   X_GLOBAL_USAGE_ID in NUMBER,
58   X_EVALUATION_TYPE_CODE in VARCHAR2,
59   X_VALUE in VARCHAR2
60 ) is
61   cursor c1 is select
62       GLOBAL_USAGE_ID,
63       EVALUATION_TYPE_CODE,
64       VALUE
65     from HR_NAVIGATION_CONTEXT_RULES
66     where NAV_CONTEXT_RULE_ID = X_NAV_CONTEXT_RULE_ID
67     for update of NAV_CONTEXT_RULE_ID nowait;
68 begin
69   for tlinfo in c1 loop
70       if (    (tlinfo.EVALUATION_TYPE_CODE = X_EVALUATION_TYPE_CODE)
71           AND (tlinfo.GLOBAL_USAGE_ID = X_GLOBAL_USAGE_ID)
72           AND ((tlinfo.VALUE = X_VALUE)
73                OR ((tlinfo.VALUE is null) AND (X_VALUE is null)))
74       ) then
75         null;
76       else
77         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
78         app_exception.raise_exception;
79       end if;
80   end loop;
81   return;
82 end LOCK_ROW;
83 
84 procedure UPDATE_ROW (
85   X_NAV_CONTEXT_RULE_ID in NUMBER,
86   X_GLOBAL_USAGE_ID in NUMBER,
87   X_EVALUATION_TYPE_CODE in VARCHAR2,
88   X_VALUE in VARCHAR2
89 ) is
90 begin
91   update HR_NAVIGATION_CONTEXT_RULES set
92     GLOBAL_USAGE_ID = X_GLOBAL_USAGE_ID,
93     EVALUATION_TYPE_CODE = X_EVALUATION_TYPE_CODE,
94     VALUE = X_VALUE
95   where NAV_CONTEXT_RULE_ID = X_NAV_CONTEXT_RULE_ID;
96 
97   if (sql%notfound) then
98     raise no_data_found;
99   end if;
100 end UPDATE_ROW;
101 
102 procedure DELETE_ROW (
103   X_NAV_CONTEXT_RULE_ID in NUMBER
104 ) is
105 begin
106   delete from HR_NAVIGATION_CONTEXT_RULES
107   where NAV_CONTEXT_RULE_ID = X_NAV_CONTEXT_RULE_ID;
108 
109   if (sql%notfound) then
110     raise no_data_found;
111   end if;
112 
113 end DELETE_ROW;
114 
115 procedure LOAD_ROW (
116   X_FORM_NAME in VARCHAR2,
117   X_BLOCK_NAME in VARCHAR2,
118   X_GLOBAL_NAME in VARCHAR2,
119   X_IN_OR_OUT in VARCHAR2,
120   X_EVALUATION_TYPE_CODE in VARCHAR2,
121   X_VALUE in VARCHAR2
122 ) is
123 X_NAV_CONTEXT_RULE_ID NUMBER;
124 X_GLOBAL_USAGE_ID NUMBER;
125 X_ROWID VARCHAR2(30);
126 X_NAV_UNIT_ID NUMBER;
127 begin
128 
129   if hr_workflows_pkg.g_load_taskflow <> 'N' then
130 
131     begin
132       select NAV_UNIT_ID
133       into X_NAV_UNIT_ID
134       from HR_NAVIGATION_UNITS
135       where FORM_NAME = X_FORM_NAME
136       and nvl(BLOCK_NAME,hr_api.g_varchar2) = nvl(X_BLOCK_NAME,hr_api.g_varchar2);
137     end;
138 
139     select GLOBAL_USAGE_ID
140     into X_GLOBAL_USAGE_ID
141     from HR_NAV_UNIT_GLOBAL_USAGES
142     where GLOBAL_NAME = X_GLOBAL_NAME
143     and IN_OR_OUT = X_IN_OR_OUT
144     and NAV_UNIT_ID = X_NAV_UNIT_ID;
145 
146     --
147     -- Fix for bug 3274423 starts here.
148     -- Before updating the record, compare the database row with the row in ldt file.
149     -- The SELECT statement is comparing for the complete row. So no need for explicit check.
150     -- Therefore, if no data found INSERT.
151     --
152     begin
153       select NCR.NAV_CONTEXT_RULE_ID
154       into X_NAV_CONTEXT_RULE_ID
155       from HR_NAVIGATION_CONTEXT_RULES NCR
156       where NCR.EVALUATION_TYPE_CODE = X_EVALUATION_TYPE_CODE
157       and nvl(NCR.VALUE,hr_api.g_varchar2) = nvl(X_VALUE,hr_api.g_varchar2)
158       and NCR.GLOBAL_USAGE_ID = X_GLOBAL_USAGE_ID;
159     exception
160         when no_data_found then
161           select HR_NAVIGATION_CONTEXT_RULES_S.NEXTVAL
162           into X_NAV_CONTEXT_RULE_ID
163           from DUAL;
164 
165            INSERT_ROW(
166             X_ROWID,
167             X_NAV_CONTEXT_RULE_ID,
168             X_GLOBAL_USAGE_ID,
169             X_EVALUATION_TYPE_CODE,
170             X_VALUE
171           );
172 
173         when too_many_rows then
174           raise_application_error(-20001,X_EVALUATION_TYPE_CODE||':'||X_VALUE||':'||X_GLOBAL_USAGE_ID);
175     end;
176 
177     /*begin
178       UPDATE_ROW(
179         X_NAV_CONTEXT_RULE_ID,
180         X_GLOBAL_USAGE_ID,
181         X_EVALUATION_TYPE_CODE,
182         X_VALUE
183       );
184     exception
185         when no_data_found then
186           INSERT_ROW(
187             X_ROWID,
188             X_NAV_CONTEXT_RULE_ID,
189             X_GLOBAL_USAGE_ID,
190             X_EVALUATION_TYPE_CODE,
191             X_VALUE
192           );
193     end; */
194    --
195    -- Fix for bug 3274423 ends here.
196    --
197 
198   end if;
199 
200 end LOAD_ROW;
201 
202 end HR_NAV_CONTEXT_RULES_PKG;