DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_NAVIGATION_NODES_PKG

Source


1 package body HR_NAVIGATION_NODES_PKG as
2 /* $Header: hrdwnlct.pkb 120.1 2011/04/28 12:01:35 sidsaxen ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out nocopy VARCHAR2,
5   X_NAV_NODE_ID in NUMBER,
6   X_NAV_UNIT_ID in NUMBER,
7   X_NAME in VARCHAR2,
8   X_CUSTOMIZED_RESTRICTION_ID in NUMBER
9 ) is
10   cursor C is select ROWID from HR_NAVIGATION_NODES
11     where NAV_NODE_ID = X_NAV_NODE_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 
22    PER_RIC_PKG.chk_integrity (
23 		p_entity_name			=> 'HR_NAVIGATION_NODES',
24 		p_ref_entity			=> 'HR_NAVIGATION_UNITS',
25 		p_ref_column_name		=> 'NAV_UNIT_ID',
26 		p_ref_col_value_number	=>	X_NAV_UNIT_ID,
27 		p_ref_col_value_varchar =>	null,
28 		p_ref_col_value_date    =>	null,
29 		p_ref_type				=>	'INS');
30 
31 END;
32 
33 --
34 -- Code Ends Here.
35 --
36 
37   insert into HR_NAVIGATION_NODES (
38     NAV_NODE_ID,
39     NAV_UNIT_ID,
40     NAME,
41     CUSTOMIZED_RESTRICTION_ID
42   ) values (
43     X_NAV_NODE_ID,
44     X_NAV_UNIT_ID,
45     X_NAME,
46     X_CUSTOMIZED_RESTRICTION_ID);
47 
48   open c;
49   fetch c into X_ROWID;
50   if (c%notfound) then
51     close c;
52     raise no_data_found;
53   end if;
54   close c;
55 
56 end INSERT_ROW;
57 
58 procedure LOCK_ROW (
59   X_NAV_NODE_ID in NUMBER,
60   X_NAV_UNIT_ID in NUMBER,
61   X_NAME in VARCHAR2,
62   X_CUSTOMIZED_RESTRICTION_ID in NUMBER
63 ) is
64   cursor c1 is select
65       NAV_UNIT_ID,
66       CUSTOMIZED_RESTRICTION_ID,
67       NAME
68     from HR_NAVIGATION_NODES
69     where NAV_NODE_ID = X_NAV_NODE_ID
70     for update of NAV_NODE_ID nowait;
71 begin
72   for tlinfo in c1 loop
73       if (    (tlinfo.NAME = X_NAME)
74           AND (tlinfo.NAV_UNIT_ID = X_NAV_UNIT_ID)
75           AND ((tlinfo.CUSTOMIZED_RESTRICTION_ID = X_CUSTOMIZED_RESTRICTION_ID)
76                OR ((tlinfo.CUSTOMIZED_RESTRICTION_ID is null) AND (X_CUSTOMIZED_RESTRICTION_ID is null)))
77       ) then
78         null;
79       else
80         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
81         app_exception.raise_exception;
82       end if;
83   end loop;
84   return;
85 end LOCK_ROW;
86 
87 procedure UPDATE_ROW (
88   X_NAV_NODE_ID in NUMBER,
89   X_NAV_UNIT_ID in NUMBER,
90   X_NAME in VARCHAR2,
91   X_CUSTOMIZED_RESTRICTION_ID in NUMBER
92 ) is
93 begin
94   update HR_NAVIGATION_NODES set
95     NAV_UNIT_ID = X_NAV_UNIT_ID,
96     NAME = X_NAME,
97     CUSTOMIZED_RESTRICTION_ID = X_CUSTOMIZED_RESTRICTION_ID
98   where NAV_NODE_ID = X_NAV_NODE_ID;
99 
100   if (sql%notfound) then
101     raise no_data_found;
102   end if;
103 end UPDATE_ROW;
104 
105 procedure DELETE_ROW (
106   X_NAV_NODE_ID in NUMBER
107 ) is
108 begin
109 
110 --
111 -- Added the following code as a part of Zero Downtime Patching Project.
112 -- Code Starts Here.
113 --
114 	BEGIN
115 		  PER_RIC_PKG.chk_integrity (
116 			p_entity_name			=> 'HR_NAVIGATION_NODES',
117 			p_ref_entity			=> 'HR_NAVIGATION_NODE_USAGES',
118 			p_ref_column_name		=> 'NAV_NODE_ID',
119 			p_ref_col_value_number	=>	X_NAV_NODE_ID,
120 			p_ref_col_value_varchar =>	null,
121 			p_ref_col_value_date    =>	null,
122 			p_ref_type				=>	'DEL');
123 	END;
124 
125 --
126 -- Code Ends Here.
127 --
128 
129   delete from HR_NAVIGATION_NODES
130   where NAV_NODE_ID = X_NAV_NODE_ID;
131 
132   if (sql%notfound) then
133     raise no_data_found;
134   end if;
135 
136 end DELETE_ROW;
137 
138 procedure LOAD_ROW (
139   X_NODE_NAME in VARCHAR2,
140   X_NAV_FORM_NAME in VARCHAR2,
141   X_BLOCK_NAME in VARCHAR2,
142   X_ORG_NAME in VARCHAR2,
143   X_LEGISLATION_CODE in VARCHAR2,
144   X_APPLICATION_SHORT_NAME in VARCHAR2,
145   X_CUSTOMIZED_FORM_NAME in VARCHAR2,
146   X_CUSTOMIZATION_NAME in VARCHAR2
147 ) is
148 X_NAV_NODE_ID NUMBER;
149 X_NAV_UNIT_ID NUMBER;
150 X_ROWID VARCHAR2(30);
151 X_CUSTOMIZED_RESTRICTION_ID NUMBER;
152 X_APPLICATION_ID NUMBER;
153 X_BUSINESS_GROUP_ID NUMBER;
154 Y_NAV_UNIT_ID NUMBER;
155 Y_NODE_NAME VARCHAR2(80);
156 Y_CUSTOMIZED_RESTRICTION_ID NUMBER;
157 begin
158 
159   if hr_workflows_pkg.g_load_taskflow <> 'N' then
160 
161     if X_NAV_FORM_NAME is not null then
162       select NAV_UNIT_ID
163       into X_NAV_UNIT_ID
164       from HR_NAVIGATION_UNITS
165       where FORM_NAME = X_NAV_FORM_NAME
166       and nvl(BLOCK_NAME,hr_api.g_varchar2) = nvl(X_BLOCK_NAME,hr_api.g_varchar2);
167     else
168       X_NAV_UNIT_ID := null;
169     end if;
170 
171     if X_APPLICATION_SHORT_NAME is not null then
172       select APPLICATION_ID
173       into X_APPLICATION_ID
174       from FND_APPLICATION
175       where APPLICATION_SHORT_NAME = X_APPLICATION_SHORT_NAME;
176     else
177       X_APPLICATION_ID := null;
178     end if;
179 
180     if X_ORG_NAME is not null then
181       select ORGANIZATION_ID
182       into X_BUSINESS_GROUP_ID
183       from HR_ORGANIZATION_UNITS
184       where NAME = X_ORG_NAME;
185     else
186       X_BUSINESS_GROUP_ID := null;
187     end if;
188 
189     if X_CUSTOMIZATION_NAME is not null
190     and X_APPLICATION_SHORT_NAME is not null
191     and X_CUSTOMIZED_FORM_NAME is not null then
192       BEGIN
193 	select CUSTOMIZED_RESTRICTION_ID
194 	into X_CUSTOMIZED_RESTRICTION_ID
195 	from PAY_CUSTOMIZED_RESTRICTIONS
196 	where NAME = X_CUSTOMIZATION_NAME
197 	and APPLICATION_ID = X_APPLICATION_ID
198 	and FORM_NAME = X_CUSTOMIZED_FORM_NAME
199 	and nvl(BUSINESS_GROUP_ID,hr_api.g_number) =
200             nvl(X_BUSINESS_GROUP_ID,hr_api.g_number)
201 	and nvl(LEGISLATION_CODE,hr_api.g_varchar2) =
202             nvl(X_LEGISLATION_CODE,hr_api.g_varchar2);
203       EXCEPTION
204         when no_data_found then
205           X_CUSTOMIZED_RESTRICTION_ID := null;
206         when others then
207           raise;
208       END;
209     else
210       X_CUSTOMIZED_RESTRICTION_ID := null;
211     end if;
212 
213     begin
214       select NAV_NODE_ID, NAV_UNIT_ID, NAME, CUSTOMIZED_RESTRICTION_ID
215       into X_NAV_NODE_ID, Y_NAV_UNIT_ID, Y_NODE_NAME, Y_CUSTOMIZED_RESTRICTION_ID
216       from HR_NAVIGATION_NODES
217       where NAME = X_NODE_NAME;
218       --
219       -- Fix for bug 3274423 starts here.
220       -- Before updating the record, compare the database row with the row in ldt file.
221       -- If both are same skip updating.
222       --
223       -- bug 3503352 Starts Here
224       -- Description : modified the condition for CUSTOMIZED_RESTRICTION_ID.
225       IF X_NAV_UNIT_ID <> Y_NAV_UNIT_ID OR
226          X_NODE_NAME   <> Y_NODE_NAME   OR
227          X_CUSTOMIZED_RESTRICTION_ID is null and Y_CUSTOMIZED_RESTRICTION_ID is not null OR
228          X_CUSTOMIZED_RESTRICTION_ID is not null and Y_CUSTOMIZED_RESTRICTION_ID is null OR
229          (X_CUSTOMIZED_RESTRICTION_ID is not null and Y_CUSTOMIZED_RESTRICTION_ID is not null
230          and X_CUSTOMIZED_RESTRICTION_ID <> Y_CUSTOMIZED_RESTRICTION_ID) THEN
231         UPDATE_ROW(
232         X_NAV_NODE_ID,
233         X_NAV_UNIT_ID,
234         X_NODE_NAME,
235         X_CUSTOMIZED_RESTRICTION_ID
236         );
237       END IF;
238     exception
239         when no_data_found then
240           select HR_NAVIGATION_NODES_S.NEXTVAL
241           into X_NAV_NODE_ID
242           from DUAL;
243 
244           INSERT_ROW(
245             X_ROWID,
246             X_NAV_NODE_ID,
247             X_NAV_UNIT_ID,
248             X_NODE_NAME,
249             X_CUSTOMIZED_RESTRICTION_ID
250           );
251     end;
252     -- bug 3503352 Ends Here
253     --
254     -- Fix for bug 3274423 ends here.
255     --
256 
257 
258   end if;
259 
260 end LOAD_ROW;
261 
262 end HR_NAVIGATION_NODES_PKG;