[Home] [Help]
PACKAGE BODY: APPS.HR_NAV_UNIT_GLOBAL_USAGES_PKG
Source
1 package body HR_NAV_UNIT_GLOBAL_USAGES_PKG as
2 /* $Header: hrnvulct.pkb 120.1 2011/04/28 11:49:02 sidsaxen ship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out nocopy VARCHAR2,
5 X_GLOBAL_USAGE_ID in NUMBER,
6 X_NAV_UNIT_ID in NUMBER,
7 X_GLOBAL_NAME in VARCHAR2,
8 X_IN_OR_OUT in VARCHAR2,
9 X_MANDATORY_FLAG in VARCHAR2
10 ) is
11 cursor C is select ROWID from HR_NAV_UNIT_GLOBAL_USAGES
12 where GLOBAL_USAGE_ID = X_GLOBAL_USAGE_ID
13 ;
14 begin
15
16 --
17 -- Added the following code as a part of Zero Downtime Patching Project.
18 -- Code Starts Here.
19 --
20
21 BEGIN
22 PER_RIC_PKG.chk_integrity (
23 p_entity_name => 'HR_NAV_UNIT_GLOBAL_USAGES',
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 -- Code Ends Here.
34 --
35 insert into HR_NAV_UNIT_GLOBAL_USAGES (
36 GLOBAL_USAGE_ID,
37 NAV_UNIT_ID,
38 GLOBAL_NAME,
39 IN_OR_OUT,
40 MANDATORY_FLAG
41 ) values (
42 X_GLOBAL_USAGE_ID,
43 X_NAV_UNIT_ID,
44 X_GLOBAL_NAME,
45 X_IN_OR_OUT,
46 X_MANDATORY_FLAG);
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_GLOBAL_USAGE_ID in NUMBER,
60 X_NAV_UNIT_ID in NUMBER,
61 X_GLOBAL_NAME in VARCHAR2,
62 X_IN_OR_OUT in VARCHAR2,
63 X_MANDATORY_FLAG in VARCHAR2
64 ) is
65 cursor c1 is select
66 NAV_UNIT_ID,
67 GLOBAL_NAME,
68 IN_OR_OUT,
69 MANDATORY_FLAG
70 from HR_NAV_UNIT_GLOBAL_USAGES
71 where GLOBAL_USAGE_ID = X_GLOBAL_USAGE_ID
72 for update of GLOBAL_USAGE_ID nowait;
73 begin
74 for tlinfo in c1 loop
75 if ( (tlinfo.GLOBAL_NAME = X_GLOBAL_NAME)
76 AND (tlinfo.NAV_UNIT_ID = X_NAV_UNIT_ID)
77 AND (tlinfo.IN_OR_OUT = X_IN_OR_OUT)
78 AND (tlinfo.MANDATORY_FLAG = X_MANDATORY_FLAG)
79 ) then
80 null;
81 else
82 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
83 app_exception.raise_exception;
84 end if;
85 end loop;
86 return;
87 end LOCK_ROW;
88
89 procedure UPDATE_ROW (
90 X_GLOBAL_USAGE_ID in NUMBER,
91 X_NAV_UNIT_ID in NUMBER,
92 X_GLOBAL_NAME in VARCHAR2,
93 X_IN_OR_OUT in VARCHAR2,
94 X_MANDATORY_FLAG in VARCHAR2
95 ) is
96 begin
97 update HR_NAV_UNIT_GLOBAL_USAGES set
98 NAV_UNIT_ID = X_NAV_UNIT_ID,
99 GLOBAL_NAME = X_GLOBAL_NAME,
100 IN_OR_OUT = X_IN_OR_OUT,
101 MANDATORY_FLAG = X_MANDATORY_FLAG
102 where GLOBAL_USAGE_ID = X_GLOBAL_USAGE_ID;
103
104 if (sql%notfound) then
105 raise no_data_found;
106 end if;
107 end UPDATE_ROW;
108
109 procedure DELETE_ROW (
110 X_GLOBAL_USAGE_ID in NUMBER
111 ) is
112 begin
113 --
114 -- Added the following code as a part of Zero Downtime Patching Project.
115 -- Code Starts Here.
116 --
117
118 BEGIN
119 PER_RIC_PKG.chk_integrity (
120 p_entity_name => 'HR_NAV_UNIT_GLOBAL_USAGES',
121 p_ref_entity => 'HR_NAVIGATION_CONTEXT_RULES',
122 p_ref_column_name => 'GLOBAL_USAGE_ID',
123 p_ref_col_value_number => X_GLOBAL_USAGE_ID,
124 p_ref_col_value_varchar => NULL,
125 p_ref_col_value_date => NULL,
126 p_ref_type => 'DEL');
127
128 END;
129 --
130 -- Code Ends Here.
131 --
132 delete from HR_NAV_UNIT_GLOBAL_USAGES
133 where GLOBAL_USAGE_ID = X_GLOBAL_USAGE_ID;
134
135 if (sql%notfound) then
136 raise no_data_found;
137 end if;
138
139 end DELETE_ROW;
140
141 procedure LOAD_ROW(
142 X_FORM_NAME in VARCHAR2,
143 X_BLOCK_NAME in VARCHAR2,
144 X_GLOBAL_NAME in VARCHAR2,
145 X_IN_OR_OUT in VARCHAR2,
146 X_MANDATORY_FLAG in VARCHAR2
147 ) is
148 X_GLOBAL_USAGE_ID NUMBER;
149 X_NAV_UNIT_ID NUMBER;
150 X_ROWID VARCHAR2(30);
151 Y_MANDATORY_FLAG VARCHAR2(30);
152 begin
153
154 if hr_workflows_pkg.g_load_taskflow <> 'N' then
155
156 if X_FORM_NAME is not null then
157 select NAV_UNIT_ID
158 into X_NAV_UNIT_ID
159 from HR_NAVIGATION_UNITS
160 where FORM_NAME = X_FORM_NAME
161 and nvl(BLOCK_NAME,hr_api.g_varchar2) = nvl(X_BLOCK_NAME,hr_api.g_varchar2);
162 end if;
163
164 begin
165 select GLOBAL_USAGE_ID, MANDATORY_FLAG
166 into X_GLOBAL_USAGE_ID, Y_MANDATORY_FLAG
167 from HR_NAV_UNIT_GLOBAL_USAGES
168 where GLOBAL_NAME = X_GLOBAL_NAME
169 and IN_OR_OUT = X_IN_OR_OUT
170 and NAV_UNIT_ID = X_NAV_UNIT_ID;
171
172 --
173 -- Fix for bug 3274423 starts here.
174 -- Before updating the record, compare the database row with the row in ldt file.
175 -- If both are same skip updating.
176 --
177 IF X_MANDATORY_FLAG <> Y_MANDATORY_FLAG THEN
178 UPDATE_ROW(
179 X_GLOBAL_USAGE_ID,
180 X_NAV_UNIT_ID,
181 X_GLOBAL_NAME,
182 X_IN_OR_OUT,
183 X_MANDATORY_FLAG
184 );
185 END IF;
186
187 exception
188 when no_data_found then
189 select HR_NAV_UNIT_GLOBAL_USAGES_S.NEXTVAL
190 into X_GLOBAL_USAGE_ID
191 from DUAL;
192
193 INSERT_ROW(
194 X_ROWID,
195 X_GLOBAL_USAGE_ID,
196 X_NAV_UNIT_ID,
197 X_GLOBAL_NAME,
198 X_IN_OR_OUT,
199 X_MANDATORY_FLAG
200 );
201 end;
202 --
203 -- Fix for bug 3274423 ends here.
204 --
205
206 end if;
207
208 end LOAD_ROW;
209
210 end HR_NAV_UNIT_GLOBAL_USAGES_PKG;