[Home] [Help]
PACKAGE BODY: APPS.GL_ACCESS_SETS_PKG
Source
1 PACKAGE BODY gl_access_sets_pkg AS
2 /* $Header: glistaxb.pls 120.9 2005/05/05 01:22:42 kvora ship $ */
3
4 --
5 -- Procedure
6 -- select_row
7 -- Purpose
8 -- Used to select a particular access set row
9 -- History
10 -- 06-26-2001 T Cheng Created
11 -- Arguments
12 -- recinfo Varies information about the row
13 -- Notes
14 --
15 PROCEDURE select_row(recinfo IN OUT NOCOPY gl_access_sets%ROWTYPE) IS
16 BEGIN
17 SELECT *
18 INTO recinfo
19 FROM gl_access_sets
20 WHERE access_set_id = recinfo.access_set_id;
21 END select_row;
22
23 --
24 -- PUBLIC FUNCTIONS
25 --
26
27 FUNCTION get_unique_id RETURN NUMBER IS
28 CURSOR get_new_id IS
29 SELECT GL_ACCESS_SETS_S.NEXTVAL
30 FROM dual;
31 new_id NUMBER;
32 BEGIN
33 OPEN get_new_id;
34 FETCH get_new_id INTO new_id;
35
36 IF get_new_id%FOUND THEN
37 CLOSE get_new_id;
38 RETURN (new_id);
39 ELSE
40 CLOSE get_new_id;
41 fnd_message.set_name('SQLGL', 'GL_ERROR_GETTING_UNIQUE_ID');
42 fnd_message.set_token('SEQUENCE', 'GL_ACCESS_SETS_S');
43 app_exception.raise_exception;
44 END IF;
45
46 EXCEPTION
47 WHEN app_exceptions.application_exception THEN
48 RAISE;
49 WHEN OTHERS THEN
50 fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
51 fnd_message.set_token('PROCEDURE', 'gl_access_sets_pkg.get_unique_id');
52 RAISE;
53 END get_unique_id;
54
55 FUNCTION has_details_in_db (X_Access_Set_Id NUMBER) RETURN BOOLEAN IS
56 num NUMBER;
57 CURSOR details IS
58 SELECT 1
59 FROM dual
60 WHERE EXISTS (SELECT 1
61 FROM GL_ACCESS_SET_NORM_ASSIGN
62 WHERE access_set_id = X_Access_Set_Id
63 AND (status_code <> 'D' OR status_code IS NULL));
64 BEGIN
65 OPEN details;
66 FETCH details INTO num;
67 IF details%NOTFOUND THEN
68 CLOSE details;
69 RETURN FALSE;
70 END IF;
71
72 CLOSE details;
73 RETURN TRUE;
74 END has_details_in_db;
75
76 FUNCTION maintain_def_ledger_assign(X_Access_Set_Id NUMBER) RETURN BOOLEAN IS
77 CURSOR default_ledger_assign (def_ledger NUMBER) IS
78 SELECT 1
79 FROM GL_ACCESS_SET_NORM_ASSIGN
80 WHERE access_set_id = X_Access_Set_Id
81 AND ledger_id = def_ledger
82 AND (status_code <> 'D' OR status_code IS NULL)
83 AND rownum < 2;
84
85 dumnum NUMBER;
86 rowid VARCHAR2(30);
87
88 def_ledger_id NUMBER;
89 updated_by NUMBER;
90 update_login NUMBER;
91 update_date DATE;
92 BEGIN
93 SELECT default_ledger_id, last_updated_by,
94 last_update_login, last_update_date
95 INTO def_ledger_id, updated_by, update_login, update_date
96 FROM GL_ACCESS_SETS
97 WHERE access_set_id = X_Access_Set_ID;
98
99 OPEN default_ledger_assign(def_ledger_id);
100 FETCH default_ledger_assign INTO dumnum;
101 IF default_ledger_assign%FOUND THEN
102 CLOSE default_ledger_assign;
103 RETURN FALSE;
104 END IF;
105 CLOSE default_ledger_assign;
106
107 -- Insert default ledger assignment
108 GL_ACCESS_DETAILS_PKG.Insert_Row(
109 rowid,
110 X_Access_Set_Id,
111 def_ledger_id,
112 'Y', -- all_segment_value_flag
113 'S', -- segment_value_type_code
114 'B', -- access_privilege_code
115 GL_ACCESS_DETAILS_PKG.get_record_id, -- record_id
116 updated_by,
117 update_login,
118 update_date,
119 NULL, -- segment_value
120 NULL, -- start_date
121 NULL, -- end_date
122 'I'); -- status_code
123
124 RETURN TRUE;
125 END maintain_def_ledger_assign;
126
127 FUNCTION get_value_set_id (X_Chart_Of_Accounts_Id NUMBER,
128 X_Segment_Type VARCHAR2) RETURN NUMBER
129 IS
130 value_set_id NUMBER;
131 CURSOR get_vs_id IS
132 SELECT t1.flex_value_set_id
133 FROM fnd_id_flex_segments t1, fnd_segment_attribute_values t2
134 WHERE t1.application_id = t2.application_id
135 AND t1.id_flex_code = t2.id_flex_code
136 AND t1.id_flex_num = t2.id_flex_num
137 AND t1.application_column_name = t2.application_column_name
138 AND t1.application_id = 101
139 AND t1.id_flex_code = 'GL#'
140 AND t1.id_flex_num = X_Chart_Of_Accounts_Id
141 AND t2.segment_attribute_type = X_Segment_Type
142 AND t2.attribute_value = 'Y';
143
144 dummy VARCHAR2(20);
145 CURSOR check_mgt_seg IS
146 SELECT 'management segment'
147 FROM fnd_segment_attribute_values
148 WHERE application_id = 101
149 AND id_flex_code = 'GL#'
150 AND id_flex_num = X_Chart_Of_Accounts_Id
151 AND segment_attribute_type = 'GL_MANAGEMENT'
152 AND attribute_value = 'Y';
153 BEGIN
154 OPEN get_vs_id;
155 FETCH get_vs_id INTO value_set_id;
156
157 IF get_vs_id%NOTFOUND THEN
158 CLOSE get_vs_id;
159 IF (X_Segment_Type = 'GL_BALANCING') THEN
160 FND_MESSAGE.SET_NAME('SQLGL', 'GL_LEDGER_ERR_GETTING_BAL_SEG');
161
162 ELSIF (X_Segment_Type = 'GL_MANAGEMENT') THEN
163 -- Check if the management segment is specified for the COA
164 OPEN check_mgt_seg;
165 FETCH check_mgt_seg INTO dummy;
166
167 IF check_mgt_seg%NOTFOUND THEN
168 -- The COA does not have a management segment.
169 FND_MESSAGE.SET_NAME('SQLGL', 'GL_ACCESS_COA_NO_MGT_SEG');
170 ELSE
171 FND_MESSAGE.SET_NAME('SQLGL', 'GL_LEDGER_ERR_GETTING_MGT_SEG');
172 END IF;
173
174 CLOSE check_mgt_seg;
175
176 END IF;
177 APP_EXCEPTION.RAISE_EXCEPTION;
178 END IF;
179
180 CLOSE get_vs_id;
181 RETURN value_set_id;
182
183 EXCEPTION
184 WHEN APP_EXCEPTION.APPLICATION_EXCEPTION THEN
185 RAISE;
186 WHEN OTHERS THEN
187 FND_MESSAGE.SET_NAME('SQLGL', 'GL_UNHANDLED_EXCEPTION');
188 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'gl_access_sets_pkg.get_value_set_id');
189 RAISE;
190 END get_value_set_id;
191
192 PROCEDURE select_columns(X_access_set_id NUMBER,
193 X_name IN OUT NOCOPY VARCHAR2,
194 X_security_segment_code IN OUT NOCOPY VARCHAR2,
195 X_coa_id IN OUT NOCOPY NUMBER,
196 X_period_set_name IN OUT NOCOPY VARCHAR2,
197 X_accounted_period_type IN OUT NOCOPY VARCHAR2,
198 X_auto_created_flag IN OUT NOCOPY VARCHAR2) IS
199 recinfo gl_access_sets%ROWTYPE;
200 BEGIN
201 recinfo.access_set_id := X_access_set_id;
202 select_row(recinfo);
203
204 X_name := recinfo.name;
205 X_security_segment_code := recinfo.security_segment_code;
206 X_coa_id := recinfo.chart_of_accounts_id;
207 X_period_set_name := recinfo.period_set_name;
208 X_accounted_period_type := recinfo.accounted_period_type;
209 X_auto_created_flag := recinfo.automatically_created_flag;
210 END select_columns;
211
212
213 FUNCTION Create_Implicit_Access_Set(X_Name VARCHAR2,
214 X_Security_Segment_Code VARCHAR2,
215 X_Chart_Of_Accounts_Id NUMBER,
216 X_Period_Set_Name VARCHAR2,
217 X_Accounted_Period_Type VARCHAR2,
218 X_Secured_Seg_Value_Set_Id NUMBER,
219 X_Default_Ledger_Id NUMBER,
220 X_Last_Updated_By NUMBER,
221 X_Last_Update_Login NUMBER,
222 X_Creation_Date DATE,
223 X_Description VARCHAR2) RETURN NUMBER
224 IS
225 X_Access_Set_Id NUMBER(15) := null;
226 X_Row_Id ROWID := null;
227 BEGIN
228 -- Get unique access set id
229 X_Access_Set_Id := GL_ACCESS_SETS_PKG.get_unique_id;
230
231 -- Create an implicit access set header for the corresponding new created ledger.
232 GL_ACCESS_SETS_PKG.Insert_Row(
233 X_Row_Id,
234 X_Access_Set_Id,
235 X_Name,
236 X_Security_Segment_Code,
237 'Y',
238 X_Chart_Of_Accounts_Id,
239 X_Period_Set_Name,
240 X_Accounted_Period_Type,
241 'Y',
242 X_Secured_Seg_Value_Set_Id,
243 X_Default_Ledger_Id,
244 X_Last_Updated_By,
245 X_Last_Update_Login,
246 X_Creation_Date,
247 X_Description);
248
249 RETURN X_Access_Set_Id;
250
251 END Create_Implicit_Access_Set;
252
253 PROCEDURE Update_Implicit_Access_Set(X_Access_Set_Id NUMBER,
254 X_Name VARCHAR2,
255 X_Last_Update_Date DATE,
256 X_Last_Updated_By NUMBER,
257 X_Last_Update_Login NUMBER)
258 IS
259 BEGIN
260 -- Update the name of an implicit access set header when it is updated
261 -- for the corresponding ledger.
262 UPDATE GL_ACCESS_SETS
263 SET
264 name = X_Name,
265 last_update_date = X_Last_Update_Date,
266 last_updated_by = X_Last_Updated_By,
267 last_update_login = X_Last_Update_Login
268 WHERE
269 access_set_id = X_Access_Set_Id
270 AND automatically_created_flag = 'Y';
271
272 END Update_Implicit_Access_Set;
273
274 PROCEDURE Insert_Row(
275 X_Rowid IN OUT NOCOPY VARCHAR2,
276 X_Access_Set_Id NUMBER,
277 X_Name VARCHAR2,
278 X_Security_Segment_Code VARCHAR2,
279 X_Enabled_Flag VARCHAR2,
280 X_Chart_Of_Accounts_Id NUMBER,
281 X_Period_Set_Name VARCHAR2,
282 X_Accounted_Period_Type VARCHAR2,
283 X_Automatically_Created_Flag VARCHAR2,
284 X_Secured_Seg_Value_Set_Id NUMBER,
285 X_Default_Ledger_Id NUMBER,
286 X_User_Id NUMBER,
287 X_Login_Id NUMBER,
288 X_Date DATE,
289 X_Description VARCHAR2 DEFAULT NULL,
290 X_Context VARCHAR2 DEFAULT NULL,
291 X_Attribute1 VARCHAR2 DEFAULT NULL,
292 X_Attribute2 VARCHAR2 DEFAULT NULL,
293 X_Attribute3 VARCHAR2 DEFAULT NULL,
294 X_Attribute4 VARCHAR2 DEFAULT NULL,
295 X_Attribute5 VARCHAR2 DEFAULT NULL,
296 X_Attribute6 VARCHAR2 DEFAULT NULL,
297 X_Attribute7 VARCHAR2 DEFAULT NULL,
298 X_Attribute8 VARCHAR2 DEFAULT NULL,
299 X_Attribute9 VARCHAR2 DEFAULT NULL,
300 X_Attribute10 VARCHAR2 DEFAULT NULL,
301 X_Attribute11 VARCHAR2 DEFAULT NULL,
302 X_Attribute12 VARCHAR2 DEFAULT NULL,
303 X_Attribute13 VARCHAR2 DEFAULT NULL,
304 X_Attribute14 VARCHAR2 DEFAULT NULL,
305 X_Attribute15 VARCHAR2 DEFAULT NULL
306 ) IS
307 CURSOR C IS
308 SELECT rowid
309 FROM GL_ACCESS_SETS
310 WHERE access_set_id = X_Access_Set_Id;
311 BEGIN
312 INSERT INTO GL_ACCESS_SETS (
313 access_set_id,
314 name,
315 security_segment_code,
316 enabled_flag,
317 chart_of_accounts_id,
318 period_set_name,
319 accounted_period_type,
320 automatically_created_flag,
321 last_update_date,
322 last_updated_by,
323 creation_date,
324 created_by,
325 last_update_login,
326 secured_seg_value_set_id,
327 default_ledger_id,
328 description,
329 context,
330 attribute1,
331 attribute2,
332 attribute3,
333 attribute4,
334 attribute5,
335 attribute6,
336 attribute7,
337 attribute8,
338 attribute9,
339 attribute10,
340 attribute11,
341 attribute12,
342 attribute13,
343 attribute14,
344 attribute15
345 ) VALUES (
346 X_Access_Set_Id,
347 X_Name,
348 X_Security_Segment_Code,
349 X_Enabled_Flag,
350 X_Chart_Of_Accounts_Id,
351 X_Period_Set_Name,
352 X_Accounted_Period_Type,
353 X_Automatically_Created_Flag,
354 X_Date,
355 X_User_Id,
356 X_Date,
357 X_User_Id,
358 X_Login_Id,
359 X_Secured_Seg_Value_Set_Id,
360 X_Default_Ledger_Id,
361 X_Description,
362 X_Context,
363 X_Attribute1,
364 X_Attribute2,
365 X_Attribute3,
366 X_Attribute4,
367 X_Attribute5,
368 X_Attribute6,
369 X_Attribute7,
370 X_Attribute8,
371 X_Attribute9,
372 X_Attribute10,
373 X_Attribute11,
374 X_Attribute12,
375 X_Attribute13,
376 X_Attribute14,
377 X_Attribute15
378 );
379
380 OPEN C;
381 FETCH C INTO X_Rowid;
382 if (C%NOTFOUND) then
383 CLOSE C;
384 RAISE NO_DATA_FOUND;
385 end if;
386 CLOSE C;
387 END Insert_Row;
388
389 PROCEDURE Update_Row(
390 X_Rowid VARCHAR2,
391 X_Access_Set_Id NUMBER,
392 X_Name VARCHAR2,
393 X_Security_Segment_Code VARCHAR2,
394 X_Enabled_Flag VARCHAR2,
395 X_Chart_Of_Accounts_Id NUMBER,
396 X_Period_Set_Name VARCHAR2,
397 X_Accounted_Period_Type VARCHAR2,
398 X_Automatically_Created_Flag VARCHAR2,
399 X_Secured_Seg_Value_Set_Id NUMBER,
400 X_Default_Ledger_Id NUMBER,
401 X_User_Id NUMBER,
402 X_Login_Id NUMBER,
403 X_Date DATE,
404 X_Description VARCHAR2 DEFAULT NULL,
405 X_Context VARCHAR2 DEFAULT NULL,
406 X_Attribute1 VARCHAR2 DEFAULT NULL,
407 X_Attribute2 VARCHAR2 DEFAULT NULL,
408 X_Attribute3 VARCHAR2 DEFAULT NULL,
409 X_Attribute4 VARCHAR2 DEFAULT NULL,
410 X_Attribute5 VARCHAR2 DEFAULT NULL,
411 X_Attribute6 VARCHAR2 DEFAULT NULL,
412 X_Attribute7 VARCHAR2 DEFAULT NULL,
413 X_Attribute8 VARCHAR2 DEFAULT NULL,
414 X_Attribute9 VARCHAR2 DEFAULT NULL,
415 X_Attribute10 VARCHAR2 DEFAULT NULL,
416 X_Attribute11 VARCHAR2 DEFAULT NULL,
417 X_Attribute12 VARCHAR2 DEFAULT NULL,
418 X_Attribute13 VARCHAR2 DEFAULT NULL,
419 X_Attribute14 VARCHAR2 DEFAULT NULL,
420 X_Attribute15 VARCHAR2 DEFAULT NULL
421 ) IS
422 BEGIN
423 UPDATE GL_ACCESS_SETS
424 SET
425 access_set_id = X_Access_Set_Id,
426 name = X_Name,
427 security_segment_code = X_Security_Segment_Code,
428 enabled_flag = X_Enabled_Flag,
429 chart_of_accounts_id = X_Chart_Of_Accounts_Id,
430 period_set_name = X_Period_Set_Name,
431 accounted_period_type = X_Accounted_Period_Type,
432 automatically_created_flag = X_Automatically_Created_Flag,
433 secured_seg_value_set_id = X_Secured_Seg_Value_Set_Id,
434 default_ledger_id = X_Default_Ledger_Id,
435 last_update_date = X_Date,
436 last_updated_by = X_User_Id,
437 last_update_login = X_Login_Id,
438 description = X_Description,
439 context = X_Context,
440 attribute1 = X_Attribute1,
441 attribute2 = X_Attribute2,
442 attribute3 = X_Attribute3,
443 attribute4 = X_Attribute4,
444 attribute5 = X_Attribute5,
445 attribute6 = X_Attribute6,
446 attribute7 = X_Attribute7,
447 attribute8 = X_Attribute8,
448 attribute9 = X_Attribute9,
449 attribute10 = X_Attribute10,
450 attribute11 = X_Attribute11,
451 attribute12 = X_Attribute12,
452 attribute13 = X_Attribute13,
453 attribute14 = X_Attribute14,
454 attribute15 = X_Attribute15
455 WHERE
456 rowid = X_Rowid;
457 END Update_Row;
458
459 PROCEDURE Lock_Row(
460 X_Rowid VARCHAR2,
461 X_Access_Set_Id NUMBER,
462 X_Name VARCHAR2,
463 X_Security_Segment_Code VARCHAR2,
464 X_Enabled_Flag VARCHAR2,
465 X_Chart_Of_Accounts_Id NUMBER,
466 X_Period_Set_Name VARCHAR2,
467 X_Accounted_Period_Type VARCHAR2,
468 X_Automatically_Created_Flag VARCHAR2,
469 X_Secured_Seg_Value_Set_Id NUMBER,
470 X_Default_Ledger_Id NUMBER,
471 X_Last_Update_Date DATE,
472 X_Last_Updated_By NUMBER,
473 X_Creation_Date DATE,
474 X_Created_By NUMBER,
475 X_Last_Update_Login NUMBER,
476 X_Description VARCHAR2 DEFAULT NULL,
477 X_Context VARCHAR2 DEFAULT NULL,
478 X_Attribute1 VARCHAR2 DEFAULT NULL,
479 X_Attribute2 VARCHAR2 DEFAULT NULL,
480 X_Attribute3 VARCHAR2 DEFAULT NULL,
481 X_Attribute4 VARCHAR2 DEFAULT NULL,
482 X_Attribute5 VARCHAR2 DEFAULT NULL,
483 X_Attribute6 VARCHAR2 DEFAULT NULL,
484 X_Attribute7 VARCHAR2 DEFAULT NULL,
485 X_Attribute8 VARCHAR2 DEFAULT NULL,
486 X_Attribute9 VARCHAR2 DEFAULT NULL,
487 X_Attribute10 VARCHAR2 DEFAULT NULL,
488 X_Attribute11 VARCHAR2 DEFAULT NULL,
489 X_Attribute12 VARCHAR2 DEFAULT NULL,
490 X_Attribute13 VARCHAR2 DEFAULT NULL,
491 X_Attribute14 VARCHAR2 DEFAULT NULL,
492 X_Attribute15 VARCHAR2 DEFAULT NULL
493 ) IS
494 CURSOR C IS
495 SELECT *
496 FROM GL_ACCESS_SETS
497 WHERE rowid = X_Rowid
498 FOR UPDATE of Access_Set_Id NOWAIT;
499 Recinfo C%ROWTYPE;
500 BEGIN
501 OPEN C;
502 FETCH C INTO Recinfo;
503 if (C%NOTFOUND) then
504 CLOSE C;
505 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
506 app_exception.raise_exception;
507 end if;
508 CLOSE C;
509
510 if (
511 ( (Recinfo.access_set_id = X_Access_Set_Id)
512 OR ( (Recinfo.access_set_id IS NULL)
513 AND (X_Access_Set_Id IS NULL)))
514 AND ( (Recinfo.name = X_Name)
515 OR ( (Recinfo.name IS NULL)
516 AND (X_Name IS NULL)))
517 AND ( (Recinfo.security_segment_code = X_Security_Segment_Code)
518 OR ( (Recinfo.security_segment_code IS NULL)
519 AND (X_Security_Segment_Code IS NULL)))
520 AND ( (Recinfo.enabled_flag = X_Enabled_Flag)
521 OR ( (Recinfo.enabled_flag IS NULL)
522 AND (X_Enabled_Flag IS NULL)))
523 AND ( (Recinfo.chart_of_accounts_id = X_Chart_Of_Accounts_Id)
524 OR ( (Recinfo.chart_of_accounts_id IS NULL)
525 AND (X_Chart_Of_Accounts_Id IS NULL)))
526 AND ( (Recinfo.period_set_name = X_Period_Set_Name)
527 OR ( (Recinfo.period_set_name IS NULL)
528 AND (X_Period_Set_Name IS NULL)))
529 AND ( (Recinfo.accounted_period_type = X_Accounted_Period_Type)
530 OR ( (Recinfo.accounted_period_type IS NULL)
531 AND (X_Accounted_Period_Type IS NULL)))
532 AND ( (Recinfo.automatically_created_flag = X_Automatically_created_Flag)
533 OR ( (Recinfo.automatically_created_flag IS NULL)
534 AND (X_Automatically_Created_Flag IS NULL)))
535 AND ( (Recinfo.secured_seg_value_set_id = X_Secured_Seg_Value_Set_Id)
536 OR ( (Recinfo.secured_seg_value_set_id IS NULL)
537 AND (X_Secured_Seg_Value_Set_Id IS NULL)))
538 AND ( (Recinfo.default_ledger_id = X_Default_Ledger_Id)
539 OR ( (Recinfo.default_ledger_id IS NULL)
540 AND (X_Default_Ledger_Id IS NULL)))
541 AND ( (Recinfo.last_update_date = X_Last_Update_Date)
542 OR ( (Recinfo.last_update_date IS NULL)
543 AND (X_Last_Update_Date IS NULL)))
544 AND ( (Recinfo.last_updated_by = X_Last_Updated_By)
545 OR ( (Recinfo.last_updated_by IS NULL)
546 AND (X_Last_Updated_By IS NULL)))
547 AND ( (Recinfo.creation_date = X_Creation_Date)
548 OR ( (Recinfo.creation_date IS NULL)
549 AND (X_Creation_Date IS NULL)))
550 AND ( (Recinfo.created_by = X_Created_By)
551 OR ( (Recinfo.created_by IS NULL)
552 AND (X_Created_By IS NULL)))
553 AND ( (Recinfo.last_update_login = X_Last_Update_Login)
554 OR ( (Recinfo.last_update_login IS NULL)
555 AND (X_Last_Update_Login IS NULL)))
556 AND ( (Recinfo.description = X_Description)
557 OR ( (Recinfo.description IS NULL)
558 AND (X_Description IS NULL)))
559 AND ( (Recinfo.context = X_Context)
560 OR ( (Recinfo.context IS NULL)
561 AND (X_Context IS NULL)))
562 AND ( (Recinfo.attribute1 = X_Attribute1)
563 OR ( (Recinfo.attribute1 IS NULL)
564 AND (X_Attribute1 IS NULL)))
565 AND ( (Recinfo.attribute2 = X_Attribute2)
566 OR ( (Recinfo.attribute2 IS NULL)
567 AND (X_Attribute2 IS NULL)))
568 AND ( (Recinfo.attribute3 = X_Attribute3)
569 OR ( (Recinfo.attribute3 IS NULL)
570 AND (X_Attribute3 IS NULL)))
571 AND ( (Recinfo.attribute4 = X_Attribute4)
572 OR ( (Recinfo.attribute4 IS NULL)
573 AND (X_Attribute4 IS NULL)))
574 AND ( (Recinfo.attribute5 = X_Attribute5)
575 OR ( (Recinfo.attribute5 IS NULL)
576 AND (X_Attribute5 IS NULL)))
577 AND ( (Recinfo.attribute6 = X_Attribute6)
578 OR ( (Recinfo.attribute6 IS NULL)
579 AND (X_Attribute6 IS NULL)))
580 AND ( (Recinfo.attribute7 = X_Attribute7)
581 OR ( (Recinfo.attribute7 IS NULL)
582 AND (X_Attribute7 IS NULL)))
583 AND ( (Recinfo.attribute8 = X_Attribute8)
584 OR ( (Recinfo.attribute8 IS NULL)
585 AND (X_Attribute8 IS NULL)))
586 AND ( (Recinfo.attribute9 = X_Attribute9)
587 OR ( (Recinfo.attribute9 IS NULL)
588 AND (X_Attribute9 IS NULL)))
589 AND ( (Recinfo.attribute10 = X_Attribute10)
590 OR ( (Recinfo.attribute10 IS NULL)
591 AND (X_Attribute10 IS NULL)))
592 AND ( (Recinfo.attribute11 = X_Attribute11)
593 OR ( (Recinfo.attribute11 IS NULL)
594 AND (X_Attribute11 IS NULL)))
595 AND ( (Recinfo.attribute12 = X_Attribute12)
596 OR ( (Recinfo.attribute12 IS NULL)
597 AND (X_Attribute12 IS NULL)))
598 AND ( (Recinfo.attribute13 = X_Attribute13)
599 OR ( (Recinfo.attribute13 IS NULL)
600 AND (X_Attribute13 IS NULL)))
601 AND ( (Recinfo.attribute14 = X_Attribute14)
602 OR ( (Recinfo.attribute14 IS NULL)
603 AND (X_Attribute14 IS NULL)))
604 AND ( (Recinfo.attribute15 = X_Attribute15)
605 OR ( (Recinfo.attribute15 IS NULL)
606 AND (X_Attribute15 IS NULL)))
607 ) then
608 return;
609 else
610 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
611 app_exception.raise_exception;
612 end if;
613
614 END Lock_Row;
615
616 END gl_access_sets_pkg;