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