DBA Data[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;