[Home] [Help]
PACKAGE BODY: APPS.GL_BUDORG_BC_OPTIONS_PKG
Source
1 PACKAGE BODY gl_budorg_bc_options_pkg AS
2 /* $Header: glibebcb.pls 120.4.12010000.1 2008/07/28 13:23:31 appldev ship $ */
3
4 --
5 -- PUBLIC FUNCTIONS
6 --
7
8 PROCEDURE Insert_Row(X_Rowid IN OUT NOCOPY VARCHAR2,
9 X_Last_Update_Date DATE,
10 X_Last_Updated_By NUMBER,
11 X_Creation_Date DATE,
12 X_Created_By NUMBER,
13 X_Last_Update_Login NUMBER,
14 X_Funds_Check_Level_Code VARCHAR2,
15 X_Amount_Type VARCHAR2,
16 X_Boundary_Code VARCHAR2,
17 X_Funding_Budget_Version_Id NUMBER,
18 X_Range_Id NUMBER
19 ) IS
20
21 CURSOR check_overlaps IS
22 SELECT 'Overlap'
23 FROM DUAL
24 WHERE EXISTS
25 (SELECT 'X'
26 FROM gl_budgets b1,
27 gl_budget_versions bv1,
28 gl_budorg_bc_options ba,
29 gl_period_statuses pf1,
30 gl_period_statuses pl1,
31 gl_budgets b2,
32 gl_budget_versions bv2,
33 gl_period_statuses pf2,
34 gl_period_statuses pl2
35 WHERE b1.current_version_id = bv1.version_num
36 AND b1.budget_name = bv1.budget_name
37 AND bv1.budget_version_id = ba.funding_budget_version_id
38 AND b1.first_valid_period_name = pf1.period_name
39 AND b1.last_valid_period_name = pl1.period_name
40 AND b2.current_version_id = bv2.version_num
41 AND b2.budget_name = bv2.budget_name
42 AND bv2.budget_version_id = X_Funding_Budget_Version_Id
43 AND b2.first_valid_period_name = pf2.period_name
44 AND b2.last_valid_period_name = pl2.period_name
45 AND ba.range_id = X_Range_Id
46 AND pf1.application_id = 101
47 AND pf1.ledger_id = b1.ledger_id
48 AND pl1.application_id = 101
49 AND pl1.ledger_id = b1.ledger_id
50 AND pf2.application_id = 101
51 AND pf2.ledger_id = b2.ledger_id
52 AND pl2.application_id = 101
53 AND pl2.ledger_id = b2.ledger_id
54 AND NOT ( (pl1.effective_period_num < pf2.effective_period_num)
55 OR (pf1.effective_period_num > pl2.effective_period_num)
56 )
57 );
58
59 CURSOR C IS
60 SELECT rowid
61 FROM gl_budorg_bc_options
62 WHERE range_id = X_Range_Id
63 AND funding_budget_version_id = X_Funding_Budget_Version_Id;
64
65 dummy VARCHAR2(100);
66 BEGIN
67
68 OPEN check_overlaps;
69 FETCH check_overlaps into dummy;
70 IF check_overlaps%FOUND THEN
71 CLOSE check_overlaps;
72 fnd_message.set_name('SQLGL', 'GL_BC_BUDGET_OVERLAP');
73 app_exception.raise_exception;
74 ELSE
75 CLOSE check_overlaps;
76 END IF;
77
78
79 INSERT INTO gl_budorg_bc_options(
80 last_update_date,
81 last_updated_by,
82 creation_date,
83 created_by,
84 last_update_login,
85 funds_check_level_code,
86 amount_type,
87 boundary_code,
88 funding_budget_version_id,
89 range_id
90 ) VALUES (
91 X_Last_Update_Date,
92 X_Last_Updated_By,
93 X_Creation_Date,
94 X_Created_By,
95 X_Last_Update_Login,
96 X_Funds_Check_Level_Code,
97 X_Amount_Type,
98 X_Boundary_Code,
99 X_Funding_Budget_Version_Id,
100 X_Range_Id
101 );
102
103 OPEN C;
104 FETCH C INTO X_Rowid;
105 if (C%NOTFOUND) then
106 CLOSE C;
107 RAISE NO_DATA_FOUND;
108 end if;
109 CLOSE C;
110 END Insert_Row;
111
112 PROCEDURE Lock_Row(X_Rowid VARCHAR2,
113 X_Funds_Check_Level_Code VARCHAR2,
114 X_Amount_Type VARCHAR2,
115 X_Boundary_Code VARCHAR2,
116 X_Funding_Budget_Version_Id NUMBER,
117 X_Range_Id NUMBER
118 ) IS
119 CURSOR C IS
120 SELECT *
121 FROM gl_budorg_bc_options
122 WHERE rowid = X_Rowid
123 FOR UPDATE of Range_Id NOWAIT;
124 Recinfo C%ROWTYPE;
125 BEGIN
126 OPEN C;
127 FETCH C INTO Recinfo;
128 if (C%NOTFOUND) then
129 CLOSE C;
130 RAISE NO_DATA_FOUND;
131 end if;
132 CLOSE C;
133 if (
134 ( (Recinfo.range_id = X_Range_Id)
135 OR ( (Recinfo.range_id IS NULL)
136 AND (X_Range_Id IS NULL)))
137 AND ( (Recinfo.funding_budget_version_id = X_Funding_Budget_Version_Id)
138 OR ( (Recinfo.funding_budget_version_id IS NULL)
139 AND (X_Funding_Budget_Version_Id IS NULL)))
140 AND ( (Recinfo.funds_check_level_code = X_Funds_Check_Level_Code)
141 OR ( (Recinfo.funds_check_level_code IS NULL)
142 AND (X_Funds_Check_Level_Code IS NULL)))
143 AND ( (Recinfo.amount_type = X_Amount_Type)
144 OR ( (Recinfo.amount_type IS NULL)
145 AND (X_Amount_Type IS NULL)))
146 AND ( (Recinfo.boundary_code = X_Boundary_Code)
147 OR ( (Recinfo.boundary_code IS NULL)
148 AND (X_Boundary_Code IS NULL)))
149 ) then
150 return;
151 else
152 FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
153 APP_EXCEPTION.RAISE_EXCEPTION;
154 end if;
155 END Lock_Row;
156
157 PROCEDURE Update_Row(X_Rowid VARCHAR2,
158 X_Last_Update_Date DATE,
159 X_Last_Updated_By NUMBER,
160 X_Last_Update_Login NUMBER,
161 X_Funds_Check_Level_Code VARCHAR2,
162 X_Amount_Type VARCHAR2,
163 X_Boundary_Code VARCHAR2,
164 X_Funding_Budget_Version_Id NUMBER,
165 X_Range_Id NUMBER
166 ) IS
167 BEGIN
168 UPDATE gl_budorg_bc_options
169 SET
170
171 last_update_date = X_Last_Update_Date,
172 last_updated_by = X_Last_Updated_By,
173 last_update_login = X_Last_Update_Login,
174 funds_check_level_code = X_Funds_Check_Level_Code,
175 amount_type = X_Amount_Type,
176 boundary_code = X_Boundary_Code,
177 funding_budget_version_id = X_Funding_Budget_Version_Id,
178 range_id = X_Range_Id
179 WHERE rowid = X_rowid;
180
181 if (SQL%NOTFOUND) then
182 RAISE NO_DATA_FOUND;
183 end if;
184
185 END Update_Row;
186
187 PROCEDURE Delete_Row(X_Rowid VARCHAR2) IS
188 BEGIN
189 DELETE FROM gl_budorg_bc_options
190 WHERE rowid = X_Rowid;
191
192 if (SQL%NOTFOUND) then
193 RAISE NO_DATA_FOUND;
194 end if;
195 END Delete_Row;
196
197 PROCEDURE delete_budorg_bc_options(xrange_id NUMBER)IS
198 BEGIN
199 DELETE FROM gl_budorg_bc_options
200 WHERE range_id = xrange_id;
201 EXCEPTION
202 WHEN no_data_found THEN
203 RETURN;
204 WHEN OTHERS THEN
205 fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
206 fnd_message.set_token(
207 'PROCEDURE',
208 'gl_budorg_bc_options_pkg.delete_budorg_bc_options');
209 RAISE;
210 END delete_budorg_bc_options;
211
212
213 PROCEDURE Insert_BC_Options(X_Rowid IN OUT NOCOPY VARCHAR2,
214 X_Last_Update_Date DATE,
215 X_Last_Updated_By NUMBER,
216 X_Creation_Date DATE,
217 X_Created_By NUMBER,
218 X_Last_Update_Login NUMBER,
219 X_Funds_Check_Level_Code VARCHAR2,
220 X_Amount_Type VARCHAR2,
221 X_Boundary_Code VARCHAR2,
222 X_Funding_Budget_Version_Id NUMBER,
223 X_Range_Id NUMBER
224 ) IS
225
226 CURSOR check_funds_check_level IS
227 SELECT 'X'
228 FROM GL_LOOKUPS
229 WHERE LOOKUP_TYPE = 'FUNDS_CHECK_LEVEL'
230 AND lookup_code = X_Funds_Check_Level_Code;
231
232 CURSOR check_amount_type IS
233 SELECT 'X'
234 FROM GL_LOOKUPS_AMOUNT_TYPES_V
235 WHERE amount_type = X_Amount_Type;
236
237 CURSOR check_boundary_code IS
238 SELECT 'X'
239 FROM GL_LOOKUPS_BOUNDARIES_V
240 WHERE boundary_code = X_Boundary_Code;
241
242 CURSOR check_budget_version IS
243 SELECT 'X'
244 FROM GL_BUDGET_VERSIONS
245 WHERE budget_version_id = X_Funding_Budget_Version_Id;
246
247 L_Range_Id NUMBER;
248 L_Budgetary_Control_Flag VARCHAR2(1);
249 L_Functional_Currency VARCHAR2(15);
250 L_Entry_Code VARCHAR2(1);
251 L_Currency_Code VARCHAR2(15);
252 dummy VARCHAR2(80);
253
254 BEGIN
255
256 -- Validate Funds Check Level
257 IF (X_Funds_Check_Level_Code IN ('D', 'B')) THEN
258 OPEN check_funds_check_level;
259 FETCH check_funds_check_level INTO dummy;
260 IF check_funds_check_level%NOTFOUND THEN
261 CLOSE check_funds_check_level;
262 fnd_message.set_name('SQLGL', 'GL_API_VALUE_NOT_EXIST');
263 fnd_message.set_token('VALUE', X_Funds_Check_Level_Code);
264 fnd_message.set_token('ATTRIBUTE', 'FundsCheckLevelCode');
265 app_exception.raise_exception;
266 END IF;
267 CLOSE check_funds_check_level;
268 ELSIF (X_Funds_Check_Level_Code IS NULL) THEN
269 fnd_message.set_name('SQLGL', 'GL_API_NULL_VALUE_ERROR');
270 fnd_message.set_token('ATTRIBUTE', 'FundsCheckLevelCode');
271 app_exception.raise_exception;
272 ELSE
273 fnd_message.set_name('SQLGL', 'GL_API_INVALID_VALUE');
274 fnd_message.set_token('VALUE', X_Funds_Check_Level_Code);
275 fnd_message.set_token('ATTRIBUTE', 'FundsCheckLevelCode');
276 app_exception.raise_exception;
277 END IF;
278
279 -- Validate Amount Type
280 IF (X_Amount_Type IS NOT NULL) THEN
281 OPEN check_amount_type;
282 FETCH check_amount_type INTO dummy;
283 IF check_amount_type%NOTFOUND THEN
284 CLOSE check_amount_type;
285 fnd_message.set_name('SQLGL', 'GL_API_VALUE_NOT_EXIST');
286 fnd_message.set_token('VALUE', X_Amount_Type);
287 fnd_message.set_token('ATTRIBUTE', 'AmountType');
288 app_exception.raise_exception;
289 END IF;
290 CLOSE check_amount_type;
291 ELSE
292 fnd_message.set_name('SQLGL', 'GL_API_NULL_VALUE_ERROR');
293 fnd_message.set_token('ATTRIBUTE', 'AmountType');
294 app_exception.raise_exception;
295 END IF;
296
297 -- Validate Boundary Code
298 IF (X_Boundary_Code IS NOT NULL) THEN
299 OPEN check_boundary_code;
300 FETCH check_boundary_code INTO dummy;
301 IF check_boundary_code%NOTFOUND THEN
302 CLOSE check_boundary_code;
303 fnd_message.set_name('SQLGL', 'GL_API_VALUE_NOT_EXIST');
304 fnd_message.set_token('VALUE', X_Boundary_Code);
305 fnd_message.set_token('ATTRIBUTE', 'BoundaryCode');
306 app_exception.raise_exception;
307 END IF;
308 CLOSE check_boundary_code;
309 ELSE
310 fnd_message.set_name('SQLGL', 'GL_API_NULL_VALUE_ERROR');
311 fnd_message.set_token('ATTRIBUTE', 'BoundaryCode');
312 app_exception.raise_exception;
313 END IF;
314
315 -- Validate Budget Version
316 IF (X_Funding_Budget_Version_Id IS NOT NULL) THEN
317 OPEN check_budget_version;
318 FETCH check_budget_version INTO dummy;
319 IF check_budget_version%NOTFOUND THEN
320 CLOSE check_budget_version;
321 fnd_message.set_name('SQLGL', 'GL_API_VALUE_NOT_EXIST');
322 fnd_message.set_token('VALUE', X_Funding_Budget_Version_Id);
323 fnd_message.set_token('ATTRIBUTE', 'FundingBudgetVersionId');
324 app_exception.raise_exception;
325 END IF;
326 CLOSE check_budget_version;
327 ELSE
328 fnd_message.set_name('SQLGL', 'GL_API_NULL_VALUE_ERROR');
329 fnd_message.set_token('ATTRIBUTE', 'FundingBudgetVersionId');
330 app_exception.raise_exception;
331 END IF;
332
333 -- Validate currency_code exists and is enabled in FND_CURRENCIES
334 -- Also, if entry_code is E, only functional currency and STAT is allowed.
335
336 SELECT gl1.currency_code,
337 gl1.enable_budgetary_control_flag,
338 gl2.entry_code,
339 gl2.currency_code
340 INTO L_Functional_Currency,
341 L_Budgetary_Control_Flag,
342 L_Entry_Code,
343 L_Currency_Code
344 FROM gl_ledgers gl1, gl_budget_assignment_ranges gl2
345 WHERE gl2.range_id = X_Range_Id
346 AND gl1.ledger_id = gl2.ledger_id;
347
348
349 -- Validate that funds check level code is D or B only if the set of
350 -- books is budgetary control enabled, entry code is E, currency code
351 -- is the functional currency.
352 IF (X_Funds_Check_Level_Code = 'D' OR X_Funds_Check_Level_Code = 'B') THEN
353 IF ((L_Budgetary_Control_Flag = 'Y') AND
354 (L_Entry_Code = 'E') AND
355 (L_Currency_Code = L_Functional_Currency)) THEN
356 NULL;
357 ELSE
358 fnd_message.set_name('SQLGL', 'GL_API_BUDORG_BUD_CTRL_OPT_ERR');
359 app_exception.raise_exception;
360 END IF;
361 END IF;
362
363 -- Validate that boundary code is a logical selection depending on the
364 -- amount type
365 IF (X_Amount_Type = 'PTD') THEN
366 IF (X_Boundary_Code <> 'P') THEN
367 fnd_message.set_name('SQLGL', 'GL_API_BUDORG_BOUNDARY_ERR');
368 app_exception.raise_exception;
369 END IF;
370 ELSIF (X_Amount_Type = 'QTD') THEN
371 IF (X_Boundary_Code NOT IN ('P', 'Q')) THEN
372 fnd_message.set_name('SQLGL', 'GL_API_BUDORG_BOUNDARY_ERR');
373 app_exception.raise_exception;
374 END IF;
375 ELSIF (X_Amount_Type = 'YTD') THEN
376 IF (X_Boundary_Code NOT IN ('P', 'Q', 'Y')) THEN
377 fnd_message.set_name('SQLGL', 'GL_API_BUDORG_BOUNDARY_ERR');
378 app_exception.raise_exception;
379 END IF;
380 ELSIF (X_Amount_Type = 'PJTD') THEN
381 -- Already checked boundary code is J, P, Q or Y
382 NULL;
383 END IF;
384
385 Insert_Row(
386 X_Rowid,
387 X_Last_Update_Date,
388 X_Last_Updated_By,
389 X_Creation_Date,
390 X_Created_By,
391 X_Last_Update_Login,
392 X_Funds_Check_Level_Code,
393 X_Amount_Type,
394 X_Boundary_Code,
395 X_Funding_Budget_Version_Id,
396 X_Range_Id);
397
398
399 EXCEPTION
400 WHEN app_exceptions.application_exception THEN
401 RAISE;
402 WHEN OTHERS THEN
403 fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
404 fnd_message.set_token('PROCEDURE',
405 'GL_BUDORG_BC_OPTIONS_PKG.Insert_BC_Options');
406 RAISE;
407
408 END Insert_BC_Options;
409
410
411 PROCEDURE Update_BC_Options(X_Range_Id NUMBER,
412 X_Last_Update_Date DATE,
413 X_Last_Updated_By NUMBER,
414 X_Last_Update_Login NUMBER,
415 X_Funds_Check_Level_Code VARCHAR2,
416 X_Amount_Type VARCHAR2,
417 X_Boundary_Code VARCHAR2,
418 X_Funding_Budget_Version_Id NUMBER
419 ) IS
420
421 CURSOR check_funds_check_level IS
422 SELECT 'X'
423 FROM GL_LOOKUPS
424 WHERE LOOKUP_TYPE = 'FUNDS_CHECK_LEVEL'
425 AND lookup_code = X_Funds_Check_Level_Code;
426
427 CURSOR check_amount_type IS
428 SELECT 'X'
429 FROM GL_LOOKUPS_AMOUNT_TYPES_V
430 WHERE amount_type = X_Amount_Type;
431
432 CURSOR check_boundary_code IS
433 SELECT 'X'
434 FROM GL_LOOKUPS_BOUNDARIES_V
435 WHERE boundary_code = X_Boundary_Code;
436
437 CURSOR check_budget_version IS
438 SELECT 'X'
439 FROM GL_BUDGET_VERSIONS
440 WHERE budget_version_id = X_Funding_Budget_Version_Id;
441
442 L_Range_Id NUMBER;
443 L_Budgetary_Control_Flag VARCHAR2(1);
444 L_Functional_Currency VARCHAR2(15);
445 L_Entry_Code VARCHAR2(1);
446 L_Currency_Code VARCHAR2(15);
447 dummy VARCHAR2(80);
448
449 BEGIN
450
451 -- Validate Funds Check Level
452 IF (X_Funds_Check_Level_Code IN ('D', 'B')) THEN
453 OPEN check_funds_check_level;
454 FETCH check_funds_check_level INTO dummy;
455 IF check_funds_check_level%NOTFOUND THEN
456 CLOSE check_funds_check_level;
457 fnd_message.set_name('SQLGL', 'GL_API_VALUE_NOT_EXIST');
458 fnd_message.set_token('VALUE', X_Funds_Check_Level_Code);
459 fnd_message.set_token('ATTRIBUTE', 'FundsCheckLevelCode');
460 app_exception.raise_exception;
461 END IF;
462 CLOSE check_funds_check_level;
463 ELSIF (X_Funds_Check_Level_Code IS NULL) THEN
464 fnd_message.set_name('SQLGL', 'GL_API_NULL_VALUE_ERROR');
465 fnd_message.set_token('ATTRIBUTE', 'FundsCheckLevelCode');
466 app_exception.raise_exception;
467 ELSE
468 fnd_message.set_name('SQLGL', 'GL_API_INVALID_VALUE');
469 fnd_message.set_token('VALUE', X_Funds_Check_Level_Code);
473
470 fnd_message.set_token('ATTRIBUTE', 'FundsCheckLevelCode');
471 app_exception.raise_exception;
472 END IF;
474 -- Validate Amount Type
475 IF (X_Amount_Type IS NOT NULL) THEN
476 OPEN check_amount_type;
477 FETCH check_amount_type INTO dummy;
478 IF check_amount_type%NOTFOUND THEN
479 CLOSE check_amount_type;
480 fnd_message.set_name('SQLGL', 'GL_API_VALUE_NOT_EXIST');
481 fnd_message.set_token('VALUE', X_Amount_Type);
482 fnd_message.set_token('ATTRIBUTE', 'AmountType');
483 app_exception.raise_exception;
484 END IF;
485 CLOSE check_amount_type;
486 ELSE
487 fnd_message.set_name('SQLGL', 'GL_API_NULL_VALUE_ERROR');
488 fnd_message.set_token('ATTRIBUTE', 'AmountType');
489 app_exception.raise_exception;
490 END IF;
491
492 -- Validate Boundary Code
493 IF (X_Boundary_Code IS NOT NULL) THEN
494 OPEN check_boundary_code;
495 FETCH check_boundary_code INTO dummy;
496 IF check_boundary_code%NOTFOUND THEN
497 CLOSE check_boundary_code;
498 fnd_message.set_name('SQLGL', 'GL_API_VALUE_NOT_EXIST');
499 fnd_message.set_token('VALUE', X_Boundary_Code);
500 fnd_message.set_token('ATTRIBUTE', 'BoundaryCode');
501 app_exception.raise_exception;
502 END IF;
503 CLOSE check_boundary_code;
504 ELSE
505 fnd_message.set_name('SQLGL', 'GL_API_NULL_VALUE_ERROR');
506 fnd_message.set_token('ATTRIBUTE', 'BoundaryCode');
507 app_exception.raise_exception;
508 END IF;
509
510 -- Validate Budget Version
511 IF (X_Funding_Budget_Version_Id IS NOT NULL) THEN
512 OPEN check_budget_version;
513 FETCH check_budget_version INTO dummy;
514 IF check_budget_version%NOTFOUND THEN
515 CLOSE check_budget_version;
516 fnd_message.set_name('SQLGL', 'GL_API_VALUE_NOT_EXIST');
517 fnd_message.set_token('VALUE', X_Funding_Budget_Version_Id);
518 fnd_message.set_token('ATTRIBUTE', 'FundingBudgetVersionId');
519 app_exception.raise_exception;
520 END IF;
521 CLOSE check_budget_version;
522 ELSE
523 fnd_message.set_name('SQLGL', 'GL_API_NULL_VALUE_ERROR');
524 fnd_message.set_token('ATTRIBUTE', 'FundingBudgetVersionId');
525 app_exception.raise_exception;
526 END IF;
527
528 -- Validate currency_code exists and is enabled in FND_CURRENCIES
529 -- Also, if entry_code is E, only functional currency and STAT is allowed.
530
531 SELECT gl1.currency_code,
532 gl1.enable_budgetary_control_flag,
533 gl2.entry_code,
534 gl2.currency_code
535 INTO L_Functional_Currency,
536 L_Budgetary_Control_Flag,
537 L_Entry_Code,
538 L_Currency_Code
539 FROM gl_ledgers gl1, gl_budget_assignment_ranges gl2
540 WHERE gl2.range_id = X_Range_Id
541 AND gl1.ledger_id = gl2.ledger_id;
542
543
544 -- Validate that funds check level code is D or B only if the set of
545 -- books is budgetary control enabled, entry code is E, currency code
546 -- is the functional currency.
547 IF (X_Funds_Check_Level_Code = 'D' OR X_Funds_Check_Level_Code = 'B') THEN
548 IF ((L_Budgetary_Control_Flag = 'Y') AND
549 (L_Entry_Code = 'E') AND
550 (L_Currency_Code = L_Functional_Currency)) THEN
551 NULL;
552 ELSE
553 fnd_message.set_name('SQLGL', 'GL_API_BUDORG_BUD_CTRL_OPT_ERR');
554 app_exception.raise_exception;
555 END IF;
556 END IF;
557
558 -- Validate that boundary code is a logical selection depending on the
559 -- amount type
560 IF (X_Amount_Type = 'PTD') THEN
561 IF (X_Boundary_Code <> 'P') THEN
562 fnd_message.set_name('SQLGL', 'GL_API_BUDORG_BOUNDARY_ERR');
563 app_exception.raise_exception;
564 END IF;
565 ELSIF (X_Amount_Type = 'QTD') THEN
566 IF (X_Boundary_Code NOT IN ('P', 'Q')) THEN
567 fnd_message.set_name('SQLGL', 'GL_API_BUDORG_BOUNDARY_ERR');
568 app_exception.raise_exception;
569 END IF;
570 ELSIF (X_Amount_Type = 'YTD') THEN
571 IF (X_Boundary_Code NOT IN ('P', 'Q', 'Y')) THEN
572 fnd_message.set_name('SQLGL', 'GL_API_BUDORG_BOUNDARY_ERR');
573 app_exception.raise_exception;
574 END IF;
575 ELSIF (X_Amount_Type = 'PJTD') THEN
576 -- Already checked boundary code is J, P, Q or Y
577 NULL;
578 END IF;
579
580
581 UPDATE gl_budorg_bc_options
582 SET
583 last_update_date = X_Last_Update_Date,
584 last_updated_by = X_Last_Updated_By,
585 last_update_login = X_Last_Update_Login,
586 funds_check_level_code = X_Funds_Check_Level_Code,
587 amount_type = X_Amount_Type,
588 boundary_code = X_Boundary_Code
589 WHERE range_id = X_range_id
590 AND funding_budget_version_id = X_Funding_Budget_Version_Id;
591
592 if (SQL%NOTFOUND) then
593 RAISE NO_DATA_FOUND;
594 end if;
595
596
597 EXCEPTION
598 WHEN app_exceptions.application_exception THEN
599 RAISE;
600 WHEN OTHERS THEN
601 fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
602 fnd_message.set_token('PROCEDURE',
603 'GL_BUDORG_BC_OPTIONS_PKG.Update_BC_Options');
604 RAISE;
605
606 END Update_BC_Options;
607
608
609 END gl_budorg_bc_options_pkg;