DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_DEDUCTIONS_PUB

Source


1 PACKAGE BODY PA_DEDUCTIONS_PUB AS
2 -- /* $Header: PADCTNPB.pls 120.2.12010000.3 2010/04/15 07:25:23 vchilla noship $ */
3 
4   G_PKG_NAME      CONSTANT VARCHAR2(30) := 'PA_DEDUCTIONS_PUB';
5 
6   Procedure Create_Deduction_Hdr( p_api_version_number     IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7                                  ,p_commit                 IN VARCHAR2 := FND_API.G_FALSE
8                                  ,p_init_msg_list          IN VARCHAR2 := FND_API.G_FALSE
9                                  ,p_pm_product_code        IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
10                                  ,p_msg_count              OUT NOCOPY NUMBER
11                                  ,p_msg_data               OUT NOCOPY VARCHAR2
12                                  ,p_return_status          OUT NOCOPY VARCHAR2
13                                  ,p_project_id             IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14                                  ,p_vendor_id              IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
15                                  ,p_vendor_site_id         IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
16                                  ,p_ci_id                  IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
17                                  ,p_po_header_id           IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18                                  ,p_deduction_req_num      IN OUT NOCOPY VARCHAR2
19                                  ,p_debit_memo_num         IN OUT NOCOPY VARCHAR2
20                                  ,p_currency_code          IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
21                                  ,p_conversion_ratetype    IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
22                                  ,p_conversion_ratedate    IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
23                                  ,p_conversion_rate        IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
24                                  ,p_deduction_req_date     IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
25                                  ,p_debit_memo_date        IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
26                                  ,p_description            IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
27                                  ,p_status                 IN OUT NOCOPY VARCHAR2
28                                  ,p_org_id                 IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
29                                 ) IS
30     l_ded_req_id      NUMBER;
31     l_dctn_hdrtbl     g_pub_dctn_hdr_tbl%TYPE;
32     l_msg_count       NUMBER;
33     l_msg_data        VARCHAR2(4000);
34     l_return_status   VARCHAR2(1);
35     l_function_allowed VARCHAR2(1);
36     l_api_name        VARCHAR2(30) :=  'CREATE_DEDUCTION_HDR';
37 
38     -- bug 9052223 start
39     v_converted_amount            NUMBER;
40     v_denominator            	  NUMBER;
41     v_numerator                   NUMBER;
42     v_rate                        NUMBER;
43     v_status	      		      Varchar2(100);
44     v_proj_func_cur               VARCHAR2(10);
45     v_proj_func_rate              VARCHAR2(10);
46     l_conversion_ratetype        VARCHAR2(50);
47     l_conversion_ratedate        DATE;
48     l_conversion_rate            NUMBER;
49     -- bug 9052223 end
50 
51     CURSOR C1 IS
52         SELECT segment1
53         FROM   PO_HEADERS_ALL
54         WHERE  PO_HEADER_ID = p_po_header_id;
55 
56     CURSOR C2 IS
57         SELECT ci_number,
58                DECODE(ci_type_class_code,'CHANGE_ORDER', 'Change Order',
59                                          'CHANGE_REQUEST', 'Change Request') document_type
60         FROM   PA_CONTROL_ITEMS citem,
61                PA_CI_TYPES_VL ctype
62         WHERE  citem.ci_type_id = ctype.ci_type_id
63         AND    citem.ci_id = p_ci_id;
64 
65   Begin
66 
67         l_conversion_ratetype        := p_conversion_ratetype;
68         l_conversion_ratedate        := p_conversion_ratedate;
69         l_conversion_rate            := p_conversion_rate;
70 
71         p_return_status := 'S';
72         SAVEPOINT create_deduction_hdr;   --bug9052223
73 
74         IF NOT FND_API.Compatible_API_Call ( g_api_version_number  ,
75                                              p_api_version_number  ,
76                                              l_api_name            ,
77                                              G_PKG_NAME         )
78         THEN
79 
80           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
81 
82         END IF;
83 
84         PA_PM_FUNCTION_SECURITY_PUB.check_function_security
85              (p_api_version_number => p_api_version_number,
86               p_responsibility_id  => g_resp_id,
87               p_function_name      => 'PA_UPD_SBMT_DEDUCTIONS',
88               p_msg_count          => l_msg_count,
89               p_msg_data           => l_msg_data,
90               p_return_status      => l_return_status,
91               p_function_allowed   => l_function_allowed
92              );
93 
94         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
95             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
96         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
97             RAISE FND_API.G_EXC_ERROR;
98         END IF;
99         IF l_function_allowed = 'N' THEN
100             pa_interface_utils_pub.map_new_amg_msg
101               ( p_old_message_code => 'PA_FUNCTION_SECURITY_ENFORCED'
102                ,p_msg_attribute    => 'CHANGE'
103                ,p_resize_flag      => 'Y'
104                ,p_msg_context      => 'GENERAL'
105                ,p_attribute1       => ''
106                ,p_attribute2       => ''
107                ,p_attribute3       => ''
108                ,p_attribute4       => ''
109                ,p_attribute5       => '');
110 
111                 p_return_status := FND_API.G_RET_STS_ERROR;
112                 RAISE FND_API.G_EXC_ERROR;
113         END IF;
114 
115         IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
116           FND_MSG_PUB.initialize;
117         END IF;
118 
119         SELECT PA_DEDUCTIONS_S.nextval
120         INTO   l_ded_req_id
121         FROM   DUAL;
122 
123         l_dctn_hdrtbl(1).deduction_req_id    :=  l_ded_req_id           ;
124         l_dctn_hdrtbl(1).project_id          :=  p_project_id           ;
125         l_dctn_hdrtbl(1).vendor_id           :=  p_vendor_id            ;
126         l_dctn_hdrtbl(1).vendor_site_id      :=  p_vendor_site_id       ;
127         l_dctn_hdrtbl(1).ci_id               :=  p_ci_id                ;
128         l_dctn_hdrtbl(1).po_header_id        :=  p_po_header_id         ;
129 
130 
131         -- bug 9052223 start
132 
133             pa_multi_Currency_txn.get_def_ProjFunc_Cst_Rate_Type(
134             0 ,
135             v_proj_func_cur,
136             v_proj_func_rate);
137 
138         if p_currency_code <> v_proj_func_cur then
139 
140            if p_conversion_ratetype is null or p_conversion_ratedate is null then
141 
142                       pa_utils.add_message
143                              ( p_app_short_name   => 'PA'
144                               ,p_msg_name         => 'PA_MISS_CURR_CONV_INFO'
145                              );
146                       RAISE FND_API.G_EXC_ERROR;
147 
148            else
149 
150               pa_multi_currency.convert_amount (  P_from_currency => v_proj_func_cur,
151 		      P_to_currency           => p_currency_code,
152 		      P_conversion_date       => l_conversion_ratedate,
153 		      P_conversion_type       => l_conversion_ratetype,
154 		      P_amount                => 0,
155 		      P_user_validate_flag    => 'N',
156 		      P_handle_exception_flag => 'N',
157 		      P_converted_amount      => v_converted_amount,
158 		      P_denominator           => v_denominator,
159 		      P_numerator             => v_numerator,
160 		      P_rate                  => v_rate,
161               X_status                => v_status);
162 
163               IF v_status is not null then
164                  pa_utils.add_message
165                              ( p_app_short_name   => 'PA'
166                               ,p_msg_name         => v_status
167                              );
168                  RAISE FND_API.G_EXC_ERROR;
169               end if;
170 
171            end if;
172 
173         end if;
174 
175 
176         IF l_dctn_hdrtbl(1).po_header_id IS NOT NULL THEN
177            OPEN C1;
178            FETCH C1 INTO l_dctn_hdrtbl(1).po_number;
179            CLOSE C1;
180         END IF;
181 
182         IF l_dctn_hdrtbl(1).ci_Id IS NOT NULL THEN
183            OPEN C2;
184            FETCH C2 INTO l_dctn_hdrtbl(1).change_doc_num,
185                          l_dctn_hdrtbl(1).change_doc_type;
186            CLOSE C2;
187         END IF;
188 
189         IF p_deduction_req_num IS NULL THEN
190            p_deduction_req_num:=l_ded_req_id;
191         END IF;
192 
193         l_dctn_hdrtbl(1).deduction_req_num   :=  p_deduction_req_num    ;
194         l_dctn_hdrtbl(1).debit_memo_num      :=  p_debit_memo_num       ;
195 
196         IF p_currency_code IS NULL THEN
197        /*    p_msg_data:='PA_DCTN_DMEMO_CURR_NULL'; --  bug9052223
198            p_return_status := 'E';
199            p_msg_count :=1;
200            return;*/
201 
202         pa_utils.add_message
203         ( p_app_short_name   => 'PA'
204          ,p_msg_name         => 'PA_DCTN_DMEMO_CURR_NULL'
205         );
206         RAISE FND_API.G_EXC_ERROR;
207 
208         END IF;
209 
210 
211         l_dctn_hdrtbl(1).currency_code       :=  p_currency_code        ;
212 
213         l_dctn_hdrtbl(1).conversion_ratetype :=  l_conversion_ratetype  ;
214         l_dctn_hdrtbl(1).conversion_ratedate :=  l_conversion_ratedate  ;
215         l_dctn_hdrtbl(1).conversion_rate     :=  l_conversion_rate      ;
216 
217         IF p_deduction_req_date IS NULL THEN
218          /*  p_msg_data:='PA_DCTN_REQ_DATE_NULL'; --  bug9052223
219            p_return_status := 'E';
220            p_msg_count :=1;
221            return;*/
222 
223         pa_utils.add_message
224         ( p_app_short_name   => 'PA'
225          ,p_msg_name         => 'PA_DCTN_REQ_DATE_NULL'
226         );
227         RAISE FND_API.G_EXC_ERROR;
228 
229         END IF;
230 
231         l_dctn_hdrtbl(1).deduction_req_date  :=  p_deduction_req_date   ;
232 
233         l_dctn_hdrtbl(1).debit_memo_date     :=  p_debit_memo_date      ;
234         l_dctn_hdrtbl(1).description         :=  p_description          ;
235         l_dctn_hdrtbl(1).status              :=  'WORKING'              ;
236 
237         l_dctn_hdrtbl(1).org_id              :=  p_org_id               ;
238 
239         PA_DEDUCTIONS.Create_Deduction_Hdr( l_dctn_hdrtbl
240                                            ,l_msg_count
241                                            ,l_msg_data
242                                            ,l_return_status
243                                            ,'PUB');
244 
245         IF l_return_status = 'S' AND p_commit ='T' THEN -- Added p_commit check for bug 9052223
246            Commit;
247 	   p_return_status :='S';
248         ELSIF l_return_status <> 'S' THEN
249            p_msg_data := l_msg_data;
250            p_return_status := 'E';
251         END IF;
252 
253   EXCEPTION
254     WHEN FND_API.G_EXC_ERROR THEN
255        ROLLBACK TO create_deduction_hdr;
256        p_return_status := FND_API.G_RET_STS_ERROR;
257 
258        FND_MSG_PUB.Count_And_Get
259           (   p_count    =>  p_msg_count  ,
260               p_data    =>  p_msg_data  );
261 
262      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
263         ROLLBACK TO create_deduction_hdr;
264         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
265 
266         FND_MSG_PUB.Count_And_Get
267             (   p_count    =>  p_msg_count  ,
268                 p_data     =>  p_msg_data  );
269 
270      WHEN OTHERS THEN
271         ROLLBACK TO create_deduction_hdr;
272         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
273 
274        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)   THEN
275           FND_MSG_PUB.add_exc_msg
276             ( p_pkg_name    => G_PKG_NAME
277              ,p_procedure_name  => l_api_name  );
278        END IF;
279 
280 	FND_MSG_PUB.Count_And_Get
281           (   p_count    =>  p_msg_count  ,
282               p_data    =>  p_msg_data  );
283   End;
284 
285   Procedure Create_Deduction_Txn( p_api_version_number     IN NUMBER  :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
286                                  ,p_commit                 IN VARCHAR2 := FND_API.G_FALSE
287                                  ,p_init_msg_list          IN VARCHAR2 := FND_API.G_FALSE
288                                  ,p_pm_product_code        IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
289                                  ,p_msg_count              OUT NOCOPY NUMBER
290                                  ,p_msg_data               OUT NOCOPY VARCHAR2
291                                  ,p_return_status          OUT NOCOPY VARCHAR2
292                                  ,p_deduction_req_num          IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
293                                  ,p_task_id                    IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
294                                  ,p_expenditure_type           IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
295                                  ,p_expenditure_item_date      IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
296                                  ,p_gl_date                    IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
297                                  ,p_expenditure_org_id         IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
298                                  ,p_quantity                   IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
299                                 -- ,p_override_quantity          IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- bug9052223
300                                  ,p_expenditure_item_id        IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
301                                --  ,p_projfunc_currency_code     IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
302                                  ,p_orig_projfunc_amount       IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
303                                 -- ,p_override_projfunc_amount   IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- bug9052223
304                                  ,p_conversion_ratetype        IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
305                                  ,p_conversion_ratedate        IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
306                                  ,p_conversion_rate            IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
307                                --  ,p_amount                     IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- bug9052223
308                                  ,p_description                IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
309                                 ) IS
310 
311     l_dctn_txntbl g_pub_dctn_txn_tbl%TYPE;
312 
313     CURSOR C1(c_deduction_req_num PA_DEDUCTIONS_ALL.deduction_req_num%TYPE) IS
314       SELECT *
315       FROM   PA_DEDUCTIONS_ALL
316       WHERE  deduction_req_num = c_deduction_req_num
317       AND    status = 'WORKING';
318 
319 
320     cur_dctn_hdr C1%ROWTYPE;
321     l_deduction_req_tran_id PA_DEDUCTION_TRANSACTIONS_ALL.deduction_req_tran_id%TYPE;
322 
323     l_msg_count       NUMBER;
324     l_msg_data        VARCHAR2(4000);
325     l_return_status   VARCHAR2(1);
326     l_function_allowed VARCHAR2(1);
327     l_api_name         VARCHAR2(30) :=  'CREATE_DEDUCTION_TXN';
328 
329    -- bug 9052223 start
330     v_converted_amount            NUMBER;
331     v_denominator            	  NUMBER;
332     v_numerator                   NUMBER;
333     v_rate                        NUMBER;
334     v_status	      		      Varchar2(100);
335     v_proj_func_cur               VARCHAR2(10);
336     v_proj_func_rate              VARCHAR2(10);
337     -- bug 9052223 end
338 
339     l_conversion_ratetype        VARCHAR2(50);
340     l_conversion_ratedate        DATE;
341     l_conversion_rate            NUMBER;
342 
343   Begin
344         p_return_status :='S';
345         SAVEPOINT create_deduction_txn;   --bug9052223
346 
347         l_conversion_ratetype        :=p_conversion_ratetype        ;
348         l_conversion_ratedate        :=p_conversion_ratedate        ;
349         l_conversion_rate            :=p_conversion_rate            ;
350 
351         IF NOT FND_API.Compatible_API_Call ( g_api_version_number  ,
352                                              p_api_version_number  ,
353                                              l_api_name            ,
354                                              G_PKG_NAME         )
355         THEN
356 
357           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
358 
359         END IF;
360 
361         PA_PM_FUNCTION_SECURITY_PUB.check_function_security
362              (p_api_version_number => p_api_version_number,
363               p_responsibility_id  => g_resp_id,
364               p_function_name      => 'PA_UPD_SBMT_DEDUCTIONS',
365               p_msg_count          => l_msg_count,
366               p_msg_data           => l_msg_data,
367               p_return_status      => l_return_status,
368               p_function_allowed   => l_function_allowed
369              );
370 
371         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
372             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
373         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
374             RAISE FND_API.G_EXC_ERROR;
375         END IF;
376         IF l_function_allowed = 'N' THEN
377             pa_interface_utils_pub.map_new_amg_msg
378               ( p_old_message_code => 'PA_FUNCTION_SECURITY_ENFORCED'
379                ,p_msg_attribute    => 'CHANGE'
380                ,p_resize_flag      => 'Y'
381                ,p_msg_context      => 'GENERAL'
382                ,p_attribute1       => ''
383                ,p_attribute2       => ''
384                ,p_attribute3       => ''
385                ,p_attribute4       => ''
386                ,p_attribute5       => '');
387            p_return_status := FND_API.G_RET_STS_ERROR;
388            RAISE FND_API.G_EXC_ERROR;
389         END IF;
390 
391 
392        IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
393           FND_MSG_PUB.initialize;
394        END IF;
395 
396         OPEN C1(p_deduction_req_num);
397         FETCH C1 INTO cur_dctn_hdr;
398         IF C1%NOTFOUND THEN
399            /* p_msg_data := 'PA_DCTN_HDR_NOT_EXISTS'; -- bug9052223
400             p_return_status :='E';
401             p_msg_count :=1;*/
402 
403         pa_utils.add_message
404         ( p_app_short_name   => 'PA'
405          ,p_msg_name         => 'PA_DCTN_HDR_NOT_EXISTS'
406         );
407 
408             CLOSE C1;
409             RAISE FND_API.G_EXC_ERROR;
410 
411         END IF;
412         CLOSE C1;
413 
414         SELECT PA_DEDUCTION_TXNS_S.nextval
415         INTO   l_deduction_req_tran_id
416         FROM   DUAL;
417 
418             pa_multi_Currency_txn.get_def_ProjFunc_Cst_Rate_Type(
419             0 ,
420             v_proj_func_cur,
421             v_proj_func_rate);
422 
423         if cur_dctn_hdr.currency_code <> v_proj_func_cur then
424 
425            if p_conversion_ratetype is null or p_conversion_ratedate is null then
426 
427                       pa_utils.add_message
428                              ( p_app_short_name   => 'PA'
429                               ,p_msg_name         => 'PA_MISS_CURR_CONV_INFO'
430                              );
431                       RAISE FND_API.G_EXC_ERROR;
432 
433            else
434 
435 
436               pa_multi_currency.convert_amount (  P_from_currency => v_proj_func_cur,
437 		      P_to_currency           => cur_dctn_hdr.currency_code,
438 		      P_conversion_date       => l_conversion_ratedate,
439 		      P_conversion_type       => l_conversion_ratetype,
440 		      P_amount                => p_orig_projfunc_amount,
441 		      P_user_validate_flag    => 'N',
442 		      P_handle_exception_flag => 'Y',
443 		      P_converted_amount      => v_converted_amount,
444 		      P_denominator           => v_denominator,
445 		      P_numerator             => v_numerator,
446 		      P_rate                  => v_rate,
447               X_status                => v_status);
448 
449               IF v_status is not null then
450                             pa_utils.add_message
451                              ( p_app_short_name   => 'PA'
452                               ,p_msg_name         => v_status
453                              );
454                       RAISE FND_API.G_EXC_ERROR;
455               end if;
456 
457            end if;
458         ELSE
459           v_converted_amount:=p_orig_projfunc_amount;
460         end if;
461 
462 
463         l_dctn_txntbl(1).deduction_req_id          := cur_dctn_hdr.deduction_req_id;
464         l_dctn_txntbl(1).deduction_req_tran_id     := l_deduction_req_tran_id   ;
465         l_dctn_txntbl(1).project_id                := cur_dctn_hdr.project_id   ;
466         l_dctn_txntbl(1).task_id                   := p_task_id                 ;
467         l_dctn_txntbl(1).expenditure_type          := p_expenditure_type        ;
468         l_dctn_txntbl(1).expenditure_item_date     := p_expenditure_item_date   ;
469         l_dctn_txntbl(1).gl_date                   := p_gl_date                 ;
470         l_dctn_txntbl(1).expenditure_org_id        := p_expenditure_org_id      ;
471         l_dctn_txntbl(1).quantity                  := p_quantity                ;
472       --  l_dctn_txntbl(1).override_quantity         := p_override_quantity       ;  --bug9052223
473         l_dctn_txntbl(1).expenditure_item_id       := p_expenditure_item_id     ;
474         l_dctn_txntbl(1).projfunc_currency_code    := v_proj_func_cur  ;
475         l_dctn_txntbl(1).orig_projfunc_amount      := p_orig_projfunc_amount    ;
476        -- l_dctn_txntbl(1).override_projfunc_amount  := p_override_projfunc_amount;  --bug9052223
477         l_dctn_txntbl(1).conversion_ratetype       := l_conversion_ratetype     ;
478         l_dctn_txntbl(1).conversion_ratedate       := l_conversion_ratedate     ;
479         l_dctn_txntbl(1).conversion_rate           := l_conversion_rate         ;
480          l_dctn_txntbl(1).amount                   := v_converted_amount;    --bug9052223
481         l_dctn_txntbl(1).description               := p_description             ;
482 
483 
484         PA_DEDUCTIONS.Create_Deduction_Txn( l_dctn_txntbl
485                                            ,l_msg_count
486                                            ,l_msg_data
487                                            ,l_return_status
488                                            ,'PUB');
489 
490 	IF l_return_status = 'S' AND p_commit ='T' THEN -- Added p_commit check for bug 9052223
491            Commit;
492 	   p_return_status :='S';
493         ELSIF l_return_status <> 'S' THEN
494            p_msg_data := l_msg_data;
495            p_return_status := 'E';
496         END IF;
497 
498   EXCEPTION
499     WHEN FND_API.G_EXC_ERROR THEN
500        ROLLBACK TO create_deduction_txn;
501        p_return_status := FND_API.G_RET_STS_ERROR;
502 
503        FND_MSG_PUB.Count_And_Get
504           (   p_count    =>  p_msg_count  ,
505               p_data    =>  p_msg_data  );
506 
507      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
508         ROLLBACK TO create_deduction_txn;
509         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
510 
511         FND_MSG_PUB.Count_And_Get
512             (   p_count    =>  p_msg_count  ,
513                 p_data     =>  p_msg_data  );
514 
515      WHEN OTHERS THEN
516         ROLLBACK TO create_deduction_txn;
517         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
518 
519        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)   THEN
520           FND_MSG_PUB.add_exc_msg
521             ( p_pkg_name    => G_PKG_NAME
522              ,p_procedure_name  => l_api_name  );
523        END IF;
524 
525        FND_MSG_PUB.Count_And_Get
526          ( p_count    =>  p_msg_count,
527            p_data    =>   p_msg_data  );
528 
529   End;
530 
531 END PA_DEDUCTIONS_PUB;