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.0 2005/05/30 23:56:41 appldev noship $ */
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   insert into HR_NAVIGATION_NODES (
15     NAV_NODE_ID,
16     NAV_UNIT_ID,
17     NAME,
18     CUSTOMIZED_RESTRICTION_ID
19   ) values (
20     X_NAV_NODE_ID,
21     X_NAV_UNIT_ID,
22     X_NAME,
23     X_CUSTOMIZED_RESTRICTION_ID);
24 
25   open c;
26   fetch c into X_ROWID;
27   if (c%notfound) then
28     close c;
29     raise no_data_found;
30   end if;
31   close c;
32 
33 end INSERT_ROW;
34 
35 procedure LOCK_ROW (
36   X_NAV_NODE_ID in NUMBER,
37   X_NAV_UNIT_ID in NUMBER,
38   X_NAME in VARCHAR2,
39   X_CUSTOMIZED_RESTRICTION_ID in NUMBER
40 ) is
41   cursor c1 is select
42       NAV_UNIT_ID,
43       CUSTOMIZED_RESTRICTION_ID,
44       NAME
45     from HR_NAVIGATION_NODES
46     where NAV_NODE_ID = X_NAV_NODE_ID
47     for update of NAV_NODE_ID nowait;
48 begin
49   for tlinfo in c1 loop
50       if (    (tlinfo.NAME = X_NAME)
51           AND (tlinfo.NAV_UNIT_ID = X_NAV_UNIT_ID)
52           AND ((tlinfo.CUSTOMIZED_RESTRICTION_ID = X_CUSTOMIZED_RESTRICTION_ID)
53                OR ((tlinfo.CUSTOMIZED_RESTRICTION_ID is null) AND (X_CUSTOMIZED_RESTRICTION_ID is null)))
54       ) then
55         null;
56       else
57         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
58         app_exception.raise_exception;
59       end if;
60   end loop;
61   return;
62 end LOCK_ROW;
63 
64 procedure UPDATE_ROW (
65   X_NAV_NODE_ID in NUMBER,
66   X_NAV_UNIT_ID in NUMBER,
67   X_NAME in VARCHAR2,
68   X_CUSTOMIZED_RESTRICTION_ID in NUMBER
69 ) is
70 begin
71   update HR_NAVIGATION_NODES set
72     NAV_UNIT_ID = X_NAV_UNIT_ID,
73     NAME = X_NAME,
74     CUSTOMIZED_RESTRICTION_ID = X_CUSTOMIZED_RESTRICTION_ID
75   where NAV_NODE_ID = X_NAV_NODE_ID;
76 
77   if (sql%notfound) then
78     raise no_data_found;
79   end if;
80 end UPDATE_ROW;
81 
82 procedure DELETE_ROW (
83   X_NAV_NODE_ID in NUMBER
84 ) is
85 begin
86   delete from HR_NAVIGATION_NODES
87   where NAV_NODE_ID = X_NAV_NODE_ID;
88 
89   if (sql%notfound) then
90     raise no_data_found;
91   end if;
92 
93 end DELETE_ROW;
94 
95 procedure LOAD_ROW (
96   X_NODE_NAME in VARCHAR2,
97   X_NAV_FORM_NAME in VARCHAR2,
98   X_BLOCK_NAME in VARCHAR2,
99   X_ORG_NAME in VARCHAR2,
100   X_LEGISLATION_CODE in VARCHAR2,
101   X_APPLICATION_SHORT_NAME in VARCHAR2,
102   X_CUSTOMIZED_FORM_NAME in VARCHAR2,
103   X_CUSTOMIZATION_NAME in VARCHAR2
104 ) is
105 X_NAV_NODE_ID NUMBER;
106 X_NAV_UNIT_ID NUMBER;
107 X_ROWID VARCHAR2(30);
108 X_CUSTOMIZED_RESTRICTION_ID NUMBER;
109 X_APPLICATION_ID NUMBER;
110 X_BUSINESS_GROUP_ID NUMBER;
111 Y_NAV_UNIT_ID NUMBER;
112 Y_NODE_NAME VARCHAR2(80);
113 Y_CUSTOMIZED_RESTRICTION_ID NUMBER;
114 begin
115 
116   if hr_workflows_pkg.g_load_taskflow <> 'N' then
117 
118     if X_NAV_FORM_NAME is not null then
119       select NAV_UNIT_ID
120       into X_NAV_UNIT_ID
121       from HR_NAVIGATION_UNITS
122       where FORM_NAME = X_NAV_FORM_NAME
123       and nvl(BLOCK_NAME,hr_api.g_varchar2) = nvl(X_BLOCK_NAME,hr_api.g_varchar2);
124     else
125       X_NAV_UNIT_ID := null;
126     end if;
127 
128     if X_APPLICATION_SHORT_NAME is not null then
129       select APPLICATION_ID
130       into X_APPLICATION_ID
131       from FND_APPLICATION
132       where APPLICATION_SHORT_NAME = X_APPLICATION_SHORT_NAME;
133     else
134       X_APPLICATION_ID := null;
135     end if;
136 
137     if X_ORG_NAME is not null then
138       select ORGANIZATION_ID
139       into X_BUSINESS_GROUP_ID
140       from HR_ORGANIZATION_UNITS
141       where NAME = X_ORG_NAME;
142     else
143       X_BUSINESS_GROUP_ID := null;
144     end if;
145 
146     if X_CUSTOMIZATION_NAME is not null
147     and X_APPLICATION_SHORT_NAME is not null
148     and X_CUSTOMIZED_FORM_NAME is not null then
149       BEGIN
150 	select CUSTOMIZED_RESTRICTION_ID
151 	into X_CUSTOMIZED_RESTRICTION_ID
152 	from PAY_CUSTOMIZED_RESTRICTIONS
153 	where NAME = X_CUSTOMIZATION_NAME
154 	and APPLICATION_ID = X_APPLICATION_ID
155 	and FORM_NAME = X_CUSTOMIZED_FORM_NAME
156 	and nvl(BUSINESS_GROUP_ID,hr_api.g_number) =
157             nvl(X_BUSINESS_GROUP_ID,hr_api.g_number)
158 	and nvl(LEGISLATION_CODE,hr_api.g_varchar2) =
159             nvl(X_LEGISLATION_CODE,hr_api.g_varchar2);
160       EXCEPTION
161         when no_data_found then
162           X_CUSTOMIZED_RESTRICTION_ID := null;
163         when others then
164           raise;
165       END;
166     else
167       X_CUSTOMIZED_RESTRICTION_ID := null;
168     end if;
169 
170     begin
171       select NAV_NODE_ID, NAV_UNIT_ID, NAME, CUSTOMIZED_RESTRICTION_ID
172       into X_NAV_NODE_ID, Y_NAV_UNIT_ID, Y_NODE_NAME, Y_CUSTOMIZED_RESTRICTION_ID
173       from HR_NAVIGATION_NODES
174       where NAME = X_NODE_NAME;
175       --
176       -- Fix for bug 3274423 starts here.
177       -- Before updating the record, compare the database row with the row in ldt file.
178       -- If both are same skip updating.
179       --
180       -- bug 3503352 Starts Here
181       -- Description : modified the condition for CUSTOMIZED_RESTRICTION_ID.
182       IF X_NAV_UNIT_ID <> Y_NAV_UNIT_ID OR
183          X_NODE_NAME   <> Y_NODE_NAME   OR
184          X_CUSTOMIZED_RESTRICTION_ID is null and Y_CUSTOMIZED_RESTRICTION_ID is not null OR
185          X_CUSTOMIZED_RESTRICTION_ID is not null and Y_CUSTOMIZED_RESTRICTION_ID is null OR
186          (X_CUSTOMIZED_RESTRICTION_ID is not null and Y_CUSTOMIZED_RESTRICTION_ID is not null
187          and X_CUSTOMIZED_RESTRICTION_ID <> Y_CUSTOMIZED_RESTRICTION_ID) THEN
188         UPDATE_ROW(
189         X_NAV_NODE_ID,
190         X_NAV_UNIT_ID,
191         X_NODE_NAME,
192         X_CUSTOMIZED_RESTRICTION_ID
193         );
194       END IF;
195     exception
196         when no_data_found then
197           select HR_NAVIGATION_NODES_S.NEXTVAL
198           into X_NAV_NODE_ID
199           from DUAL;
200 
201           INSERT_ROW(
202             X_ROWID,
203             X_NAV_NODE_ID,
204             X_NAV_UNIT_ID,
205             X_NODE_NAME,
206             X_CUSTOMIZED_RESTRICTION_ID
207           );
208     end;
209     -- bug 3503352 Ends Here
210     --
211     -- Fix for bug 3274423 ends here.
212     --
213 
214 
215   end if;
216 
217 end LOAD_ROW;
218 
219 end HR_NAVIGATION_NODES_PKG;