1 PACKAGE BODY gl_elimination_sets_pkg As
2 /* $Header: gliesetb.pls 120.6 2005/05/05 01:07:26 kvora ship $ */
3
4 ---
5 --- PRIVATE VARIABLES
6 ---
7
8 --- Position of the balancing segment
9 company_seg_num NUMBER := null;
10
11
12 -- Function
13 -- get_unique_id
14 -- Purpose
15 -- Returns nextval from gl_elimination_sets_s
16 -- Parameters
17 -- None
18 -- History
19 -- 11-06-1998 W Wong Created
20 -- Notes
21 -- Raises GL_ERROR_GETTING_UNIQUE_ID on failure
22 --
23 FUNCTION get_unique_id RETURN NUMBER IS
24
25 CURSOR get_new_id IS
26 SELECT gl_elimination_sets_s.NEXTVAL
27 FROM dual;
28 new_id number;
29
30 BEGIN
31 OPEN get_new_id;
32 FETCH get_new_id INTO new_id;
33
34 IF get_new_id%FOUND THEN
35 CLOSE get_new_id;
36 return(new_id);
37 ELSE
38 CLOSE get_new_id;
39 fnd_message.set_name('SQLGL', 'GL_ERROR_GETTING_UNIQUE_ID');
40 fnd_message.set_token('SEQUENCE', 'GL_ELIMINATION_SETS_S');
41 app_exception.raise_exception;
42 END IF;
43
44 EXCEPTION
45
46 WHEN app_exceptions.application_exception THEN
47 RAISE;
48
49 WHEN OTHERS THEN
50 fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
51 fnd_message.set_token(
52 'PROCEDURE',
53 'gl_elimination_sets_pkg.get_unique_id');
54 RAISE;
55 END get_unique_id;
56
57 --
58 -- Procedure
59 -- get_company_description
60 -- Purpose
61 -- Gets the description for the elimination company value
62 -- History
63 -- 05-Nov-98 W Wong Created
64 -- Parameters
65 -- x_coa_id ID of the current chart of accounts
66 -- x_company_val Elimination company value
67 -- Notes
68 -- None
69 --
70 FUNCTION get_company_description(
71 x_coa_id NUMBER,
72 x_company_val VARCHAR2
73 ) RETURN VARCHAR2 IS
74 BEGIN
75 IF (company_seg_num IS NULL) THEN
76 IF (NOT fnd_flex_apis.get_qualifier_segnum(
77 appl_id => 101,
78 key_flex_code => 'GL#',
79 structure_number => x_coa_id,
80 flex_qual_name => 'GL_BALANCING',
81 segment_number => company_seg_num)
82 ) THEN
83 app_exception.raise_exception;
84 END IF;
85 END IF;
86
87 -- Get the description
88 IF (fnd_flex_keyval.validate_segs(
89 operation => 'CHECK_SEGMENTS',
90 appl_short_name => 'SQLGL',
91 key_flex_code => 'GL#',
92 structure_number => x_coa_id,
93 concat_segments => x_company_val,
94 displayable => 'GL_BALANCING',
95 allow_nulls => TRUE,
96 allow_orphans => TRUE)) THEN
97 null;
98 END IF;
99
100 RETURN(fnd_flex_keyval.segment_description(company_seg_num));
101 END get_company_description;
102
103
104 --
105 -- Procedure
106 -- Check_unique_name
107 -- Purpose
108 -- Unique check for name
109 -- History
110 -- 05-Nov-98 W Wong Created
111 -- 31-OCT-02 J Huang sobid-->ledgerid
112 -- Parameters
113 -- x_rowid Rowid
114 -- x_ledgerid Ledger ID
115 -- x_name Name of elimination set
116 --
117 -- Notes
118 -- None
119 --
120 PROCEDURE check_unique_name(X_rowid VARCHAR2,
121 X_ledgerid NUMBER,
122 X_name VARCHAR2) IS
123 counter NUMBER;
124
125 CURSOR name_count IS
126 SELECT 1
127 FROM DUAL
128 WHERE EXISTS (SELECT 1
129 FROM gl_elimination_sets
130 WHERE name = X_name
131 AND ledger_id = X_ledgerid
132 AND ((X_rowid IS NULL) OR (rowid <> X_rowid)));
133 BEGIN
134
135 OPEN name_count;
136 FETCH name_count INTO counter;
137
138 IF name_count%FOUND THEN
139 CLOSE name_count;
140 FND_MESSAGE.set_name('SQLGL', 'GL_DUPLICATE_NAME');
141 APP_EXCEPTION.raise_exception;
142
143 ELSE
144 CLOSE name_count;
145 END IF;
146
147 EXCEPTION
148 WHEN app_exceptions.application_exception THEN
149 RAISE;
150 WHEN OTHERS THEN
151 fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
152 fnd_message.set_token(
153 'PROCEDURE',
154 'gl_elimination_sets_pkg.check_unique_name');
155 RAISE;
156 END check_unique_name;
157
158 --
159 -- Function
160 -- Allow_delete_record
161 -- Purpose
162 -- Check if we can allow deletion of the record.
163 -- Deletion is not allowed if an elimination set is marked for tracking
164 -- and it has generated at least once.
165 -- History
166 -- 05-Nov-98 W Wong Created
167 -- Parameters
168 -- x_setid Elimination Set ID
169 --
170 -- Notes
171 -- None
172 --
173 FUNCTION allow_delete_record( X_setid NUMBER ) RETURN BOOLEAN IS
174
175 counter NUMBER;
176
177 CURSOR set_count IS
178 SELECT 1
179 FROM DUAL
180 WHERE EXISTS (SELECT 1
181 FROM gl_elimination_sets
182 WHERE elimination_set_id = X_setid
183 AND track_elimination_status_flag = 'Y'
184 AND last_executed_period IS NOT NULL);
185 BEGIN
186
187 OPEN set_count;
188 FETCH set_count INTO counter;
189
190 IF set_count%FOUND THEN
191 CLOSE set_count;
192 return( FALSE );
193
194 ELSE
195 CLOSE set_count;
196 return( TRUE );
197 END IF;
198
199 EXCEPTION
200 WHEN app_exceptions.application_exception THEN
201 RAISE;
202 WHEN OTHERS THEN
203 fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
204 fnd_message.set_token(
205 'PROCEDURE',
206 'gl_elimination_sets_pkg.allow_delete_record');
207 RAISE;
208 END allow_delete_record;
209
210 --
211 -- Procedure
212 -- lock_row
213 -- Purpose
214 -- Locks a row in GL_ELIMINATION_SETS table.
215 -- History
216 -- 10-SEP-03 P Sahay Created (For Definition Access Set Project)
217 -- Parameters
218 -- All the columns of GL_ELIMINATION_SETS table
219 -- (except WHO columns)
220 --
221 -- Notes
222 -- None
223 --
224 PROCEDURE lock_row (X_Rowid IN OUT NOCOPY VARCHAR2,
225 X_Elimination_Set_Id IN OUT NOCOPY NUMBER,
226 X_Name VARCHAR2,
227 X_Ledger_Id NUMBER,
228 X_Track_Elimination_Status VARCHAR2,
229 X_Start_Date_Active DATE,
230 X_End_Date_Active DATE,
231 X_Elimination_Company VARCHAR2,
232 X_Last_Executed_Period VARCHAR2,
233 X_Description VARCHAR2,
234 X_Attribute1 VARCHAR2,
235 X_Attribute2 VARCHAR2,
236 X_Attribute3 VARCHAR2,
237 X_Attribute4 VARCHAR2,
238 X_Attribute5 VARCHAR2,
239 X_Attribute6 VARCHAR2,
240 X_Attribute7 VARCHAR2,
241 X_Attribute8 VARCHAR2,
242 X_Attribute9 VARCHAR2,
243 X_Attribute10 VARCHAR2,
244 X_Attribute11 VARCHAR2,
245 X_Attribute12 VARCHAR2,
246 X_Attribute13 VARCHAR2,
247 X_Attribute14 VARCHAR2,
248 X_Attribute15 VARCHAR2,
249 X_Context VARCHAR2,
250 X_Security_Flag VARCHAR2) IS
251 CURSOR C IS SELECT
252 elimination_set_id,
253 name,
254 ledger_id,
255 track_elimination_status_flag,
256 start_date_active,
257 end_date_active,
258 elimination_company,
259 last_executed_period,
260 description,
261 attribute1,
262 attribute2,
263 attribute3,
264 attribute4,
265 attribute5,
266 attribute6,
267 attribute7,
268 attribute8,
269 attribute9,
270 attribute10,
271 attribute11,
272 attribute12,
273 attribute13,
274 attribute14,
275 attribute15,
276 context,
277 security_flag
278 FROM GL_ELIMINATION_SETS
279 WHERE ROWID = X_Rowid
280 FOR UPDATE OF elimination_set_id NOWAIT;
281 recinfo C%ROWTYPE;
282
283 BEGIN
284 OPEN C;
285 FETCH C INTO recinfo;
286 IF (C%NOTFOUND) THEN
287 CLOSE C;
288 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
289 app_exception.raise_exception;
290 END IF;
291 CLOSE C;
292
293 IF (
294 (recinfo.elimination_set_id = x_elimination_set_id)
295 AND (recinfo.name = x_name)
296 AND (recinfo.ledger_id = x_ledger_id)
297 AND (recinfo.track_elimination_status_flag = x_track_elimination_status)
298 AND (recinfo.security_flag = x_security_flag)
299
300 AND ((recinfo.start_date_active = x_start_date_active)
301 OR ((recinfo.start_date_active is null)
302 AND (x_start_date_active is null)))
303
304 AND ((recinfo.end_date_active = x_end_date_active)
305 OR ((recinfo.end_date_active is null)
306 AND (x_end_date_active is null)))
307
308 AND ((recinfo.elimination_company = x_elimination_company)
309 OR ((recinfo.elimination_company is null)
310 AND (x_elimination_company is null)))
311
312 AND ((recinfo.last_executed_period = x_last_executed_period)
313 OR ((recinfo.last_executed_period is null)
314 AND (x_last_executed_period is null)))
315
316 AND ((recinfo.description = x_description)
317 OR ((recinfo.description is null)
318 AND (x_description is null)))
319
320 AND ((recinfo.context = x_context)
321 OR ((recinfo.context is null)
322 AND (x_context is null)))
323
324 AND ((recinfo.attribute1 = x_attribute1)
325 OR ((recinfo.attribute1 is null)
326 AND (x_attribute1 is null)))
327
328 AND ((recinfo.attribute2 = x_attribute2)
329 OR ((recinfo.attribute2 is null)
330 AND (x_attribute2 is null)))
331
332 AND ((recinfo.attribute3 = x_attribute3)
333 OR ((recinfo.attribute3 is null)
334 AND (x_attribute3 is null)))
335
336 AND ((recinfo.attribute4 = x_attribute4)
337 OR ((recinfo.attribute4 is null)
338 AND (x_attribute4 is null)))
339
340 AND ((recinfo.attribute5 = x_attribute5)
341 OR ((recinfo.attribute5 is null)
342 AND (x_attribute5 is null)))
343
344 AND ((recinfo.attribute6 = x_attribute6)
345 OR ((recinfo.attribute6 is null)
346 AND (x_attribute6 is null)))
347
348 AND ((recinfo.attribute7 = x_attribute7)
349 OR ((recinfo.attribute7 is null)
350 AND (x_attribute7 is null)))
351
352 AND ((recinfo.attribute8 = x_attribute8)
353 OR ((recinfo.attribute8 is null)
354 AND (x_attribute8 is null)))
355
356 AND ((recinfo.attribute9 = x_attribute9)
357 OR ((recinfo.attribute9 is null)
358 AND (x_attribute9 is null)))
359
360 AND ((recinfo.attribute10 = x_attribute10)
361 OR ((recinfo.attribute10 is null)
362 AND (x_attribute10 is null)))
363
364 AND ((recinfo.attribute11 = x_attribute11)
365 OR ((recinfo.attribute11 is null)
366 AND (x_attribute11 is null)))
367
368 AND ((recinfo.attribute12 = x_attribute12)
369 OR ((recinfo.attribute12 is null)
370 AND (x_attribute12 is null)))
371
372 AND ((recinfo.attribute13 = x_attribute13)
373 OR ((recinfo.attribute13 is null)
374 AND (x_attribute13 is null)))
375
376 AND ((recinfo.attribute14 = x_attribute14)
377 OR ((recinfo.attribute14 is null)
378 AND (x_attribute14 is null)))
379
380 AND ((recinfo.attribute15 = x_attribute15)
381 OR ((recinfo.attribute15 is null)
382 AND (x_attribute15 is null)))
383 ) THEN
384 return;
385 ELSE
386 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
387 app_exception.raise_exception;
388 END IF;
389
390 END lock_row;
391
392 End gl_elimination_sets_pkg;