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