DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_SUBSIDY_POOL_BUDGET_PVT

Source


1 PACKAGE BODY OKL_SUBSIDY_POOL_BUDGET_PVT AS
2  /* $Header: OKLRSIBB.pls 120.2 2005/10/30 03:17:02 appldev noship $ */
3 
4 G_WF_EVT_BUDGET_LINE_PENDING  CONSTANT wf_events.name%TYPE DEFAULT 'oracle.apps.okl.subsidy_pool.budget_line_pending_approval';
5 G_WF_EVT_BUDGET_LINE_APPROVED CONSTANT wf_events.name%TYPE DEFAULT 'oracle.apps.okl.subsidy_pool.budget_line_approved';
6 G_WF_EVT_BUDGET_LINE_REJECTED CONSTANT wf_events.name%TYPE DEFAULT 'oracle.apps.okl.subsidy_pool.budget_line_rejected';
7 G_WF_ITM_SUB_POOL_ID          CONSTANT VARCHAR2(30)    := 'SUBSIDY_POOL_ID';
8 G_WF_ITM_BUDGET_LINE_ID       CONSTANT VARCHAR2(30)    := 'BUDGET_LINE_ID';
9 
10 -------------------------------------------------------------------------------
11 -- PROCEDURE raise_business_event
12 -------------------------------------------------------------------------------
13 -- Start of comments
14 --
15 -- Procedure Name  : raise_business_event
16 -- Description     : This procedure is a wrapper that raises a business event
17 --                 : when ever a subsidy pool record is submitted for approval, approved, rejected
18 -- Business Rules  : the event is raised based on the decision_status_code passed and successful updation of the pool record
19 -- Parameters      :
20 -- Version         : 1.0
21 -- History         :
22 -- End of comments
23 
24 PROCEDURE raise_business_event(p_api_version IN NUMBER,
25                                p_init_msg_list IN VARCHAR2,
26                                x_return_status OUT NOCOPY VARCHAR2,
27                                x_msg_count OUT NOCOPY NUMBER,
28                                x_msg_data OUT NOCOPY VARCHAR2,
29                                p_event_name IN VARCHAR2,
30                                p_event_param_list IN WF_PARAMETER_LIST_T
31                                ) IS
32   l_event_param_list WF_PARAMETER_LIST_T;
33 BEGIN
34   l_event_param_list := p_event_param_list;
35   x_return_status := OKL_API.G_RET_STS_SUCCESS;
36 
37   OKL_WF_PVT.raise_event(p_api_version    => p_api_version,
38                          p_init_msg_list  => p_init_msg_list,
39                          x_return_status  => x_return_status,
40                          x_msg_count      => x_msg_count,
41                          x_msg_data       => x_msg_data,
42                          p_event_name     => p_event_name,
43                          p_parameters     => l_event_param_list);
44 EXCEPTION
45   WHEN OTHERS THEN
46   x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
47   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
48 END raise_business_event;
49 
50 ---------------------------------------------------------------------------
51 -- Procedures and Functions
52 ---------------------------------------------------------------------------
53  ---------------------------------------------------------------------------
54  -- PROCEDURE create_budget_line
55  ---------------------------------------------------------------------------
56   -- Start of comments
57   --
58   -- Procedure Name  : create_budget_line
59   -- Description     : procedure for inserting the records in
60   --                   table OKL_SUBSIDY_POOL_BUDGETS
61   -- Business Rules  : This procedure creates budget lines for a subsidy pool
62   --                   where subsidy pool id of table OKL_SUBSIDY_POOL_BUDGETS
63   --                   represents that pool id.
64   -- Parameters      : p_api_version, p_init_msg_list, x_return_status, x_msg_count,
65   --                   x_msg_data, p_budget_line_tbl, x_budget_line_tbl.
66   -- Version         : 1.0
67   -- End of comments
68   ---------------------------------------------------------------------------
69 
70   PROCEDURE create_budget_line  ( p_api_version      IN  NUMBER
71                                  ,p_init_msg_list    IN  VARCHAR2
72                                  ,x_return_status    OUT NOCOPY VARCHAR2
73                                  ,x_msg_count        OUT NOCOPY NUMBER
74                                  ,x_msg_data         OUT NOCOPY VARCHAR2
75                                  ,p_budget_line_tbl  IN  budget_line_tbl
76                                  ,x_budget_line_tbl  OUT NOCOPY budget_line_tbl
77                                 ) IS
78 
79 ---------------------------
80 -- DECLARE Local Variables
81 ---------------------------
82   L_MODULE              CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_BUDGET_PVT.CREATE_BUDGET_LINE';
83   L_DEBUG_ENABLED       VARCHAR2(10);
84   L_LEVEL_PROCEDURE     fnd_log_messages.log_level%TYPE;
85   IS_DEBUG_PROCEDURE_ON BOOLEAN;
86   l_budget_line_rec              budget_line_rec;
87   l_budget_line_tbl              budget_line_tbl ;
88   l_api_version		             	 NUMBER ;
89   l_init_msg_list	              VARCHAR2(1) ;
90   l_return_status            		 VARCHAR2(1);
91   l_msg_count        	        	 NUMBER ;
92   l_msg_data	    	            	 VARCHAR2(2000);
93   l_api_name                     CONSTANT VARCHAR2(30) := 'create_budget_line';
94 
95 -------------------
96 -- DECLARE Cursors
97 -------------------
98 
99 
100 BEGIN
101   L_DEBUG_ENABLED := Okl_Debug_Pub.CHECK_LOG_ENABLED;
102   IF(L_DEBUG_ENABLED='Y') THEN
103     L_LEVEL_PROCEDURE :=Fnd_Log.LEVEL_PROCEDURE;
104     IS_DEBUG_PROCEDURE_ON := Okl_Debug_Pub.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
105   END IF;
106   IF(IS_DEBUG_PROCEDURE_ON) THEN
107     BEGIN
108         Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRSIBB.pls call okl_sib_pvt.insert_row');
109     END;
110   END IF;
111 
112    l_budget_line_tbl := p_budget_line_tbl;
113    l_api_version := 1.0;
114    l_init_msg_list := Okl_Api.g_false;
115    l_msg_count := 0;
116 
117    SAVEPOINT create_budget_line_PVT;
118    l_return_status := OKL_API.START_ACTIVITY( l_api_name,
119                                               G_PKG_NAME,
120                                               p_init_msg_list,
121                                               l_api_version,
122                                               p_api_version,
123                                               '_PVT',
124                                               l_return_status);
125 
126    IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
127       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
128    ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
129       RAISE OKL_API.G_EXCEPTION_ERROR;
130    END IF;
131    -- TAPI call which inserts the budget line records in the table OKL_SUBSIDY_POOL_BUDGETS_B.
132    okl_sib_pvt.insert_row(l_api_version,
133                             l_init_msg_list,
134                             l_return_status,
135                             l_msg_count,
136                             l_msg_data,
137                             l_budget_line_tbl,
138                             x_budget_line_tbl);
139 
140    IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
141       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
142    ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
143       RAISE OKL_API.G_EXCEPTION_ERROR;
144    END IF;
145 
146    okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
147    x_return_status := l_return_status;
148    x_msg_data      := l_msg_data;
149    x_msg_count     := l_msg_count;
150 
151   IF(IS_DEBUG_PROCEDURE_ON) THEN
152     BEGIN
153         Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRSIBB.pls call okl_sib_pvt.insert_row ');
154     END;
155   END IF;
156 
157   EXCEPTION
158      WHEN G_EXCEPTION_HALT_VALIDATION THEN
159        x_return_status := OKL_API.HANDLE_EXCEPTIONS
160        (
161         l_api_name,
162         G_PKG_NAME,
163         'OKL_API.G_RET_STS_ERROR',
164         x_msg_count,
165         x_msg_data,
166         '_PVT'
167        );
168 
169 
170      WHEN OKL_API.G_EXCEPTION_ERROR THEN
171        x_return_status := OKL_API.HANDLE_EXCEPTIONS
172        (
173         l_api_name,
174         G_PKG_NAME,
175         'OKL_API.G_RET_STS_ERROR',
176         x_msg_count,
177         x_msg_data,
178         '_PVT'
179        );
180 
181      WHEN OTHERS THEN
182        x_return_status := OKL_API.HANDLE_EXCEPTIONS
183        (
184         l_api_name,
185         G_PKG_NAME,
186         'OKL_API.G_OTHERS',
187         x_msg_count,
188         x_msg_data,
189         '_PVT'
190        );
191 
192 END create_budget_line;
193 
194  ---------------------------------------------------------------------------
195  -- PROCEDURE update_budget_line
196  ---------------------------------------------------------------------------
197   -- Start of comments
198   --
199   -- Procedure Name  : update_budget_line
200   -- Description     : procedure for updating the records in
201   --                   table OKL_SUBSIDY_POOL_BUDGETS
202   -- Business Rules  : This procedure updates the existing budget lines
203   --                   only when the budget line status is "new".
204   -- Parameters      : p_api_version, p_init_msg_list, x_return_status, x_msg_count,
205   --                   x_msg_data, p_budget_line_tbl, x_budget_line_tbl.
206   -- Version         : 1.0
207   -- End of comments
208   ---------------------------------------------------------------------------
209 
210   PROCEDURE update_budget_line  ( p_api_version      IN  NUMBER
211                                  ,p_init_msg_list    IN  VARCHAR2
212                                  ,x_return_status    OUT NOCOPY VARCHAR2
213                                  ,x_msg_count        OUT NOCOPY NUMBER
214                                  ,x_msg_data         OUT NOCOPY VARCHAR2
215                                  ,p_budget_line_tbl  IN  budget_line_tbl
216                                  ,x_budget_line_tbl  OUT NOCOPY budget_line_tbl
217                                 ) IS
218 
219 ---------------------------
220 -- DECLARE Local Variables
221 ---------------------------
222   L_MODULE              CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_BUDGET_PVT.UPDATE_BUDGET_LINE';
223   L_DEBUG_ENABLED       VARCHAR2(10);
224   L_LEVEL_PROCEDURE     fnd_log_messages.log_level%TYPE;
225   IS_DEBUG_PROCEDURE_ON BOOLEAN;
226   l_budget_line_rec              budget_line_rec;
227   l_budget_line_tbl              budget_line_tbl ;
228   l_api_version			              NUMBER ;
229   l_init_msg_list                VARCHAR2(1) ;
230   l_return_status		             VARCHAR2(1);
231   l_msg_count                 	 NUMBER ;
232   l_msg_data	    	            	 VARCHAR2(2000);
233   l_api_name                     CONSTANT VARCHAR2(30) := 'create_budget_line';
234   i NUMBER DEFAULT 0;
235   l_currency_code  okl_subsidy_pools_v.currency_code%TYPE DEFAULT NULL;
236 
237 -------------------
238 -- DECLARE Cursors
239 -------------------
240 
241 BEGIN
242    L_DEBUG_ENABLED := Okl_Debug_Pub.CHECK_LOG_ENABLED;
243    IF(L_DEBUG_ENABLED='Y') THEN
244      L_LEVEL_PROCEDURE :=Fnd_Log.LEVEL_PROCEDURE;
245      IS_DEBUG_PROCEDURE_ON := Okl_Debug_Pub.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
246    END IF;
247    IF(IS_DEBUG_PROCEDURE_ON) THEN
248      BEGIN
249          Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRSIBB.pls call okl_sib_pvt.update_row ');
250      END;
251    END IF;
252 
253    l_budget_line_tbl := p_budget_line_tbl;
254    l_api_version := 1.0;
255    l_init_msg_list := Okl_Api.g_false;
256    l_msg_count := 0;
257 
258    SAVEPOINT update_budget_line_PVT;
259    l_return_status := OKL_API.START_ACTIVITY( l_api_name,
260                                               G_PKG_NAME,
261                                               p_init_msg_list,
262                                               l_api_version,
263                                               p_api_version,
264                                               '_PVT',
265                                               l_return_status);
266 
267    IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
268      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
269    ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
270       RAISE OKL_API.G_EXCEPTION_ERROR;
271    END IF;
272 
273    -- TAPI call which updates the budget line records in the table OKL_SUBSIDY_POOL_BUDGETS_B.
274    okl_sib_pvt.update_row  (l_api_version,
275                             l_init_msg_list,
276                             l_return_status,
277                             l_msg_count,
278                             l_msg_data,
279                             l_budget_line_tbl,
280                             x_budget_line_tbl);
281 
282    IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
283       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
284    ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
285       RAISE OKL_API.G_EXCEPTION_ERROR;
286    END IF;
287 
288    okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
289    x_return_status := l_return_status;
290    x_msg_data      := l_msg_data;
291    x_msg_count     := l_msg_count;
292 
293   IF(IS_DEBUG_PROCEDURE_ON) THEN
294     BEGIN
295         Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRSIBB.pls call okl_sib_pvt.update_row ');
296     END;
297   END IF;
298 
299   EXCEPTION
300      WHEN G_EXCEPTION_HALT_VALIDATION THEN
301        x_return_status := OKL_API.HANDLE_EXCEPTIONS
302        (
303         l_api_name,
304         G_PKG_NAME,
305         'OKL_API.G_RET_STS_ERROR',
306         x_msg_count,
307         x_msg_data,
308         '_PVT'
309        );
310 
311 
312      WHEN OKL_API.G_EXCEPTION_ERROR THEN
313        x_return_status := OKL_API.HANDLE_EXCEPTIONS
314        (
315         l_api_name,
316         G_PKG_NAME,
317         'OKL_API.G_RET_STS_ERROR',
318         x_msg_count,
319         x_msg_data,
320         '_PVT'
321        );
322 
323      WHEN OTHERS THEN
324        x_return_status := OKL_API.HANDLE_EXCEPTIONS
325        (
326         l_api_name,
327         G_PKG_NAME,
328         'OKL_API.G_OTHERS',
329         x_msg_count,
330         x_msg_data,
331         '_PVT'
332        );
333 END update_budget_line;
334 
335  ---------------------------------------------------------------------------
336  -- PROCEDURE set_decision_status_code
337  ---------------------------------------------------------------------------
338   -- Start of comments
339   --
340   -- Procedure Name  : set_decision_status_code
341   -- Description     : procedure for updating the decision status code
342   --                   table OKL_SUBSIDY_POOL_BUDGETS_B.
343   -- Business Rules  : This procedure sets the value of column desicion_status_code
344   --                   with the value passed to this procedure for the given line id.
345   --                   decision_status_code is a status of the corresponding budget line.
346   -- Parameters      : p_api_version, p_init_msg_list, x_return_status, x_msg_count,
347   --                   x_msg_data, p_sub_pool_budget_id, p_decision_status_code.
348   -- Version         : 1.0
349   -- End of comments
350   ---------------------------------------------------------------------------
351 
352 PROCEDURE set_decision_status_code ( p_api_version                  IN  NUMBER,
353                                      p_init_msg_list                IN  VARCHAR2,
354                                      x_return_status                OUT NOCOPY VARCHAR2,
355                                      x_msg_count                    OUT NOCOPY NUMBER,
356                                      x_msg_data                     OUT NOCOPY VARCHAR2,
357                                      p_sub_pool_budget_id           IN  okl_subsidy_pool_budgets_b.id%TYPE,
358                                      p_decision_status_code         IN OUT NOCOPY okl_subsidy_pool_budgets_b.decision_status_code%TYPE)IS
359 ---------------------------
360 -- DECLARE Local Variables
361 ---------------------------
362   L_MODULE              CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_BUDGET_PVT.SET_DECISION_STATUS_CODE';
363   L_DEBUG_ENABLED       VARCHAR2(10);
364   L_LEVEL_PROCEDURE     fnd_log_messages.log_level%TYPE;
365   IS_DEBUG_PROCEDURE_ON BOOLEAN;
366   l_budget_line_rec        budget_line_rec;
367   l_sub_pool_budget_id     OKL_SUBSIDY_POOL_BUDGETS_B.ID%TYPE ;
368   x_budget_line_rec        budget_line_rec;
369   l_row_found		   BOOLEAN;
370   l_api_version		   NUMBER ;
371   l_init_msg_list	   VARCHAR2(1) ;
372   l_return_status	   VARCHAR2(1);
373   l_msg_count	           NUMBER ;
374   l_msg_data	    	   VARCHAR2(2000);
375   l_api_name               CONSTANT VARCHAR2(30) := 'set_decision_status_code';
376   l_parameter_list WF_PARAMETER_LIST_T;
377   l_event_name      wf_events.name%TYPE;
378   l_system_date              DATE ;
379 -------------------
380 -- DECLARE Cursors
381 -------------------
382    -- cursor to fetch a record with the passed id.
383    CURSOR   c_get_budget_id (cp_sub_pool_budget_id IN okl_subsidy_pool_budgets_b.id%type) IS
384    SELECT   id
385            ,object_version_number
386            ,sfwt_flag
387            ,note
388            ,budget_type_code
389            ,effective_from_date
390            ,decision_status_code
391            ,budget_amount
392            ,subsidy_pool_id
393            ,decision_date
394            ,attribute_category
395            ,attribute1
396            ,attribute2
397            ,attribute3
398            ,attribute4
399            ,attribute5
400            ,attribute6
401            ,attribute7
402            ,attribute8
403            ,attribute9
404            ,attribute10
405            ,attribute11
406            ,attribute12
407            ,attribute13
408            ,attribute14
409            ,attribute15
410            ,created_by
411            ,creation_date
412            ,last_updated_by
413            ,last_update_date
414            ,last_update_login
415    FROM   OKL_SUBSIDY_POOL_BUDGETS_V
416    WHERE  id = cp_sub_pool_budget_id;
417 
418    BEGIN
419      L_DEBUG_ENABLED := Okl_Debug_Pub.CHECK_LOG_ENABLED;
420      IF(L_DEBUG_ENABLED='Y') THEN
421        L_LEVEL_PROCEDURE :=Fnd_Log.LEVEL_PROCEDURE;
422        IS_DEBUG_PROCEDURE_ON := Okl_Debug_Pub.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
423      END IF;
424      IF(IS_DEBUG_PROCEDURE_ON) THEN
425        BEGIN
426            Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRSIBB.pls call okl_sib_pvt.update_row ');
427        END;
428      END IF;
429      l_row_found := FALSE;
430      l_api_version := 1.0;
431      l_init_msg_list := OKL_API.g_false;
432      l_msg_count := 0;
433      l_sub_pool_budget_id := p_sub_pool_budget_id;
434      l_system_date := TRUNC(SYSDATE);
435 
436      SAVEPOINT set_decision_status_code_PVT;
437      l_return_status := OKL_API.START_ACTIVITY( l_api_name,
438                                                  G_PKG_NAME,
439                                                  p_init_msg_list,
440                                                  l_api_version,
441                                                  p_api_version,
442                                                  '_PVT',
443                                                  l_return_status);
444 
445      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
446         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
447      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
448         RAISE OKL_API.G_EXCEPTION_ERROR;
449      END IF;
450      -- fetch the record with the passed id and check whether the row exists.
451      OPEN c_get_budget_id(l_sub_pool_budget_id);
452       FETCH c_get_budget_id INTO l_budget_line_rec;
453       l_row_found := c_get_budget_id%FOUND;
454      CLOSE c_get_budget_id;
455 
456      --if row is found then update the decision_status_code with the value passed to this procedure and
457      --set the decision date to the system date.
458      IF l_row_found THEN
459        l_budget_line_rec.decision_status_code := p_decision_status_code;
460        l_budget_line_rec.decision_date := l_system_date;
461        --TAPI call to update the record.
462        okl_sib_pvt.update_row(l_api_version,
463                               l_init_msg_list,
464                               l_return_status,
465                               l_msg_count,
466                               l_msg_data,
467                               l_budget_line_rec,
468                               x_budget_line_rec);
469        IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
470           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
471        ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
472           RAISE OKL_API.G_EXCEPTION_ERROR;
473        END IF;
474        IF(l_budget_line_rec.decision_status_code = 'PENDING')THEN
475           -- add subsidy pool id and subsidy pool to the parameter list and raise the corresponding business event.
476           wf_event.AddParameterToList(G_WF_ITM_SUB_POOL_ID, l_budget_line_rec.subsidy_pool_id, l_parameter_list);
477           wf_event.AddParameterToList(G_WF_ITM_BUDGET_LINE_ID, l_budget_line_rec.id, l_parameter_list);
478           l_event_name := G_WF_EVT_BUDGET_LINE_PENDING;
479        ELSIF(l_budget_line_rec.decision_status_code = 'ACTIVE') THEN
480           -- add subsidy pool id and subsidy pool to the parameter list and raise the corresponding business event.
481           wf_event.AddParameterToList(G_WF_ITM_SUB_POOL_ID, l_budget_line_rec.subsidy_pool_id, l_parameter_list);
482           wf_event.AddParameterToList(G_WF_ITM_BUDGET_LINE_ID, l_budget_line_rec.id, l_parameter_list);
483           l_event_name := G_WF_EVT_BUDGET_LINE_APPROVED;
484        ELSIF(l_budget_line_rec.decision_status_code = 'REJECTED')THEN
485           -- add subsidy pool id and subsidy pool to the parameter list and raise the corresponding business event.
486           wf_event.AddParameterToList(G_WF_ITM_SUB_POOL_ID, l_budget_line_rec.subsidy_pool_id, l_parameter_list);
487           wf_event.AddParameterToList(G_WF_ITM_BUDGET_LINE_ID, l_budget_line_rec.id, l_parameter_list);
488           l_event_name := G_WF_EVT_BUDGET_LINE_REJECTED;
489        END IF;
490        IF (l_event_name IS NOT NULL) THEN
491          raise_business_event(p_api_version      => p_api_version,
492                               p_init_msg_list    => p_init_msg_list,
493                               x_return_status    => x_return_status,
494                               x_msg_count        => x_msg_count,
495                               x_msg_data         => x_msg_data,
496                               p_event_name       => l_event_name,
497                               p_event_param_list => l_parameter_list
498                              );
499      END IF;
500    END IF;
501       okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
502       x_return_status := l_return_status;
503       x_msg_data      := l_msg_data;
504       x_msg_count     := l_msg_count;
505 
506     IF(IS_DEBUG_PROCEDURE_ON) THEN
507       BEGIN
508         Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRSIBB.pls call okl_sib_pvt.update_row ');
509       END;
510     END IF;
511 
512      EXCEPTION
513         WHEN G_EXCEPTION_HALT_VALIDATION THEN
514           x_return_status := OKL_API.HANDLE_EXCEPTIONS
515           (
516            l_api_name,
517            G_PKG_NAME,
518            'OKL_API.G_RET_STS_ERROR',
519            x_msg_count,
520            x_msg_data,
521            '_PVT'
522           );
523 
524         WHEN OKL_API.G_EXCEPTION_ERROR THEN
525           x_return_status := OKL_API.HANDLE_EXCEPTIONS
526           (
527            l_api_name,
528            G_PKG_NAME,
529            'OKL_API.G_RET_STS_ERROR',
530            x_msg_count,
531            x_msg_data,
532            '_PVT'
533           );
534 
535         WHEN OTHERS THEN
536           x_return_status := OKL_API.HANDLE_EXCEPTIONS
537           (
538            l_api_name,
539            G_PKG_NAME,
540            'OKL_API.G_OTHERS',
541            x_msg_count,
542            x_msg_data,
543            '_PVT'
544           );
545 
546     END set_decision_status_code;
547 
548 
549  ---------------------------------------------------------------------------
550  -- PROCEDURE validate_budget_line
551  ---------------------------------------------------------------------------
552   -- Start of comments
553   --
554   -- Procedure Name  : validate_budget_line
555   -- Description     : procedure for validating the records in
556   --                   table OKL_SUBSIDY_POOL_BUDGETS
557   -- Business Rules  : Validates the attributes.
558   -- Parameters      : p_api_version, p_init_msg_list, x_return_status, x_msg_count,
559   --                   x_msg_data, p_budget_line_tbl.
560   -- Version         : 1.0
561   -- End of comments
562   ---------------------------------------------------------------------------
563 
564 PROCEDURE validate_budget_line( p_api_version                 IN  NUMBER,
565                                 p_init_msg_list                IN  VARCHAR2,
566                                 x_return_status                OUT NOCOPY VARCHAR2,
567                                 x_msg_count                    OUT NOCOPY NUMBER,
568                                 x_msg_data                     OUT NOCOPY VARCHAR2,
569                                 p_budget_line_tbl              IN  budget_line_tbl) IS
570 
571 ---------------------------
572 -- DECLARE Local Variables
573 ---------------------------
574   L_MODULE              CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_BUDGET_PVT.VALIDATE_BUDGET_LINE';
575   L_DEBUG_ENABLED       VARCHAR2(10);
576   L_LEVEL_PROCEDURE     fnd_log_messages.log_level%TYPE;
577   IS_DEBUG_PROCEDURE_ON BOOLEAN;
578   l_api_name            CONSTANT VARCHAR2(30) := 'VALIDATE_BUDGET_LINE';
579   l_api_version	        CONSTANT NUMBER	      := 1.0;
580   l_return_status	VARCHAR2(1);
581   l_budget_line_tbl     budget_line_tbl ;
582 
583 BEGIN
584   L_DEBUG_ENABLED := Okl_Debug_Pub.CHECK_LOG_ENABLED;
585   IF(L_DEBUG_ENABLED='Y') THEN
586     L_LEVEL_PROCEDURE :=Fnd_Log.LEVEL_PROCEDURE;
587     IS_DEBUG_PROCEDURE_ON := Okl_Debug_Pub.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
588   END IF;
589   IF(IS_DEBUG_PROCEDURE_ON) THEN
590     BEGIN
591         Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRSIBB.pls call okl_sib_pvt.validate_row ');
592     END;
593   END IF;
594   l_return_status := OKL_API.G_RET_STS_SUCCESS;
595     -- call START_ACTIVITY to create savepoint, check compatibility
596     -- and initialize message list
597 
598     l_return_status := OKL_API.START_ACTIVITY(
599 			p_api_name      => l_api_name,
600 			p_pkg_name      => g_pkg_name,
601 			p_init_msg_list => p_init_msg_list,
602 			l_api_version   => l_api_version,
603 			p_api_version   => p_api_version,
604 			p_api_type      => g_api_type,
605 			x_return_status => x_return_status);
606 
607     -- check if activity started successfully
608     If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
609        raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
610     Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
611        raise OKL_API.G_EXCEPTION_ERROR;
612     End If;
613 
614     l_budget_line_tbl := p_budget_line_tbl;
615 
616     -- TAPI call to validate the records passed to it.
617     okl_sib_pvt.validate_row(	 p_api_version	     => p_api_version,
618                              	 p_init_msg_list	   => p_init_msg_list,
619                              	 x_return_status 	  => x_return_status,
620                                  x_msg_count     	  => x_msg_count,
621                                  x_msg_data      	  => x_msg_data,
622                                  p_sibv_tbl	        => l_budget_line_tbl);
623 
624     -- check return status
625     If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
626 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
627     Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
628 	  raise OKL_API.G_EXCEPTION_ERROR;
629     End If;
630 
631     OKL_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
632 			 x_msg_data		=> x_msg_data);
633 
634   IF(IS_DEBUG_PROCEDURE_ON) THEN
635     BEGIN
636         Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRSIBB.pls call okl_sib_pvt.validate_row ');
637     END;
638   END IF;
639 
640   EXCEPTION
641     when OKL_API.G_EXCEPTION_ERROR then
642       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
643 			p_api_name  => l_api_name,
644 			p_pkg_name  => g_pkg_name,
645 			p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
646 			x_msg_count => x_msg_count,
647 			x_msg_data  => x_msg_data,
648 			p_api_type  => g_api_type);
649 
650     when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
651       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
652 			p_api_name  => l_api_name,
653 			p_pkg_name  => g_pkg_name,
654 			p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
655 			x_msg_count => x_msg_count,
656 			x_msg_data  => x_msg_data,
657 			p_api_type  => g_api_type);
658 
659     when OTHERS then
660       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
661 			p_api_name  => l_api_name,
662 			p_pkg_name  => g_pkg_name,
663 			p_exc_name  => 'OTHERS',
664 			x_msg_count => x_msg_count,
665 			x_msg_data  => x_msg_data,
666 			p_api_type  => g_api_type);
667 
668 
669 END validate_budget_line;
670 
671 END okl_subsidy_pool_budget_pvt;