DBA Data[Home] [Help]

PACKAGE BODY: APPS.JAI_AR_TAX_PROCESSING_PKG

Source


1 PACKAGE BODY JAI_AR_TAX_PROCESSING_PKG AS
2 /* $Header: jai_ar_tax_proc.plb 120.0.12020000.2 2013/03/19 00:25:18 vkaranam noship $ */
3 /*------------------------------------------------------------------------------------------------------------
4   CHANGE HISTORY
5   ------------------------------------------------------------------------------------------------------------
6   Sl.No.          Date          Developer   BugNo       Version        Remarks
7   ------------------------------------------------------------------------------------------------------------
8   1.              13-June-2012   qinglei     14040855     115.1          Created the initial version
9 
10 --------------------------------------------------------------------------------------------------------------*/
11 
12   G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
13   G_LEVEL_UNEXPECTED      CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
14   G_LEVEL_ERROR           CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
15   G_LEVEL_EXCEPTION       CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
16   G_LEVEL_EVENT           CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
17   G_LEVEL_PROCEDURE       CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
18   G_LEVEL_STATEMENT       CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
19   G_MODULE_NAME           CONSTANT VARCHAR2(100) := 'JAI.PLSQL.JAI_AR_TAX_PROCESSING_PKG.';
20   G_PACKAGE_NAME          CONSTANT VARCHAR2(100) := 'JAI_AR_TAX_PROCESSING_PKG';
21 
22   PROCEDURE CALCULATE_TAX(p_transaction_rec   ZX_API_PUB.transaction_rec_type DEFAULT NULL,
23                           p_event_class_rec   ZX_API_PUB.event_class_rec_type DEFAULT NULL,
24                           p_line_level_action VARCHAR2 DEFAULT NULL,
25                           p_trx_line_id       NUMBER DEFAULT NULL,
26                           pv_return_code OUT NOCOPY VARCHAR2,
27                           pv_return_message OUT NOCOPY VARCHAR2) IS
28     lv_api_name CONSTANT VARCHAR2(200) := 'CALCULATE_TAX';
29     lv_debug_info VARCHAR2(4000);
30     lb_jai_exists               BOOLEAN;
31     lv_action                   VARCHAR2(20);
32     t_ra_customer_trx_rec       RA_CUSTOMER_TRX_ALL%ROWTYPE;
33     t_ra_customer_trx_lines_rec RA_CUSTOMER_TRX_LINES_ALL%ROWTYPE;
34     t_jai_ar_trx_rec            JAI_AR_TRXS%ROWTYPE;
35     t_jai_ar_trx_lines_rec      JAI_AR_TRX_LINES%ROWTYPE;
36     lv_return_message           VARCHAR2(2000);
37     lv_return_code              VARCHAR2(100);
38     ln_trx_line_id              NUMBER;
39     le_error EXCEPTION;
40 
41     CURSOR c_ra_customer_trx(p_customer_trx_id NUMBER) IS
42       SELECT *
43         FROM RA_CUSTOMER_TRX_ALL
44        WHERE CUSTOMER_TRX_ID = p_customer_trx_id;
45 
46     CURSOR c_ra_customer_trx_lines(p_customer_trx_line_id NUMBER) IS
47       SELECT *
48         FROM RA_CUSTOMER_TRX_LINES_ALL
49        WHERE CUSTOMER_TRX_LINE_ID = p_customer_trx_line_id;
50 
51     CURSOR c_jai_ar_trx(p_customer_trx_id NUMBER) IS
52       SELECT * FROM JAI_AR_TRXS WHERE CUSTOMER_TRX_ID = p_customer_trx_id;
53 
54     CURSOR c_jai_ar_trx_lines(p_customer_trx_line_id NUMBER) IS
55       SELECT *
56         FROM JAI_AR_TRX_LINES
57        WHERE CUSTOMER_TRX_LINE_ID = p_customer_trx_line_id;
58 
59     CURSOR inclu_flag_cur IS
60       SELECT NVL(ja.inclusive_tax_flag, 'N') inclusive_tax_flag
61         FROM jai_ap_tds_years ja
62        WHERE ja.legal_entity_id = t_ra_customer_trx_rec.org_id
63          AND sysdate between ja.start_date and ja.end_date;
64     CURSOR organization_id_check(p_customer_trx_id number) IS
65       SELECT NVL(organization_id, -1) organization_id
66         FROM jai_ar_trxs
67        WHERE customer_trx_id = p_customer_trx_id;
68 
69     v_organization_id NUMBER;
70     lv_inclu_tax_flag VARCHAR2(3);
71 
72     lv_excise_inv_no JAI_AR_TRX_LINES.excise_invoice_no%Type;
73     lv_vat_inv_no    JAI_AR_TRXS.VAT_INVOICE_NO%TYPE;
74 
75     CURSOR get_excise_inv_no_cur(pn_customer_trx_id NUMBER) IS
76       SELECT l.excise_invoice_no
77         FROM JAI_AR_TRX_LINES L
78        WHERE l.customer_trx_id = pn_customer_trx_id;
79 
80     CURSOR get_vat_inv_no_cur(pn_customer_trx_id NUMBER) IS
81       SELECT h.vat_invoice_no
82         FROM JAI_AR_TRXS h
83        WHERE h.customer_trx_id = pn_customer_trx_id;
84 
85   BEGIN
86     IF G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL THEN
87        lv_debug_info := G_PACKAGE_NAME||lv_api_name||'.BEGIN()+';
88        fnd_log.STRING(LOG_LEVEL => G_LEVEL_PROCEDURE,MODULE => G_MODULE_NAME||lv_api_name,MESSAGE => lv_debug_info);
89        lv_debug_info := 'p_transaction_rec.entity_code = '||p_transaction_rec.ENTITY_CODE||
90                 'p_transaction_rec.event_class_code = '||p_transaction_rec.EVENT_CLASS_CODE||
91                 'p_transaction_rec.event_type_code = '||p_transaction_rec.EVENT_TYPE_CODE;
92       fnd_log.STRING(LOG_LEVEL => G_LEVEL_PROCEDURE,MODULE => G_MODULE_NAME||lv_api_name,MESSAGE => lv_debug_info);
93     END IF;
94 
95     IF p_transaction_rec.entity_code = 'TRANSACTIONS' AND
96           p_transaction_rec.event_class_code IN
97           ('INVOICE', 'CREDIT_MEMO', 'DEBIT_MEMO') AND
98           p_transaction_rec.event_type_code IN
99           ('INV_DELETE', 'CM_DELETE', 'DM_DELETE') THEN
100 
101       lv_action := JAI_CONSTANTS.DELETING;
102 
103       OPEN c_jai_ar_trx(p_transaction_rec.TRX_ID);
104       FETCH c_jai_ar_trx
105         INTO t_jai_ar_trx_rec;
106       CLOSE c_jai_ar_trx;
107       JAI_AR_TRX_HEADERS_PKG.DELETE_AR_TRXS(pr_old            => t_jai_ar_trx_rec,
108                                             pv_action         => lv_action,
109                                             pv_return_code    => lv_return_code,
110                                             pv_return_message => lv_return_message);
111       IF lv_return_code <> jai_constants.successful then
112         pv_return_code := lv_return_code;
113               pv_return_message := lv_return_message;
114         RAISE le_error;
115       END IF;
116 
117       FOR c_ra_customer_line IN (SELECT customer_trx_line_id
118                                    FROM RA_CUSTOMER_TRX_LINES_ALL rctla
119                                   WHERE rctla.customer_trx_id =
120                                         p_transaction_rec.trx_id
121                                     AND rctla.line_type = 'LINE') LOOP
122 
123         OPEN c_jai_ar_trx_lines(c_ra_customer_line.customer_trx_line_id);
124         FETCH c_jai_ar_trx_lines
125           INTO t_jai_ar_trx_lines_rec;
126         CLOSE c_jai_ar_trx_lines;
127 
128         JAI_AR_TRX_LINES_PKG.DELETE_AR_TRX_LINES(pr_old            => t_jai_ar_trx_lines_rec,
129                                                  pr_new            => NULL,
130                                                  pv_action         => lv_action,
131                                                  pv_return_code    => lv_return_code,
132                                                  pv_return_message => lv_return_message);
133         IF lv_return_code <> jai_constants.successful then
134           pv_return_code := lv_return_code;
135               pv_return_message := lv_return_message;
136           RAISE le_error;
137         END IF;
138       END LOOP;
139 
140       IF(G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) then
141             FND_LOG.STRING(G_LEVEL_PROCEDURE,
142                            G_MODULE_NAME || lv_api_name,
143                            'p_transaction_rec.EVENT_CLASS_CODE = '||p_transaction_rec.EVENT_CLASS_CODE||
144                            'p_transaction_rec.EVENT_TYPE_CODE = '||p_transaction_rec.EVENT_TYPE_CODE);
145       END IF;
146 
147     ELSIF p_transaction_rec.entity_code = 'TRANSACTIONS' AND
148           p_transaction_rec.event_class_code IN
149           ('INVOICE', 'CREDIT_MEMO', 'DEBIT_MEMO') AND
150           p_transaction_rec.event_type_code IN
151           ('INV_COMPLETE', 'CM_COMPLETE', 'DM_COMPLETE') THEN
152 
153       lv_action := JAI_CONSTANTS.updating;
154 
155       OPEN c_ra_customer_trx(p_transaction_rec.trx_id);
156       FETCH c_ra_customer_trx
157         INTO t_ra_customer_trx_rec;
158       CLOSE c_ra_customer_trx;
159 
160       OPEN c_jai_ar_trx(p_transaction_rec.trx_id);
161       FETCH c_jai_ar_trx
162         INTO t_jai_ar_trx_rec;
163       CLOSE c_jai_ar_trx;
164 
165       JAI_AR_TRX_HEADERS_PKG.GENERATE_VAT_INVOICE_NUMBER(pr_old            => t_jai_ar_trx_rec,
166                                                          pr_new            => t_ra_customer_trx_rec,
167                                                          pv_action         => lv_action,
168                                                          pv_return_code    => lv_return_code,
169                                                          pv_return_message => lv_return_message);
170 
171       IF lv_return_code <> jai_constants.successful then
172         pv_return_code := lv_return_code;
173         pv_return_message := lv_return_message;
174         RAISE le_error;
175       END IF;
176 
177       IF (t_ra_customer_trx_rec.COMPLETE_FLAG = 'Y' AND
178          NVL(t_ra_customer_trx_rec.CREATED_FROM, '###') IN
179          ('ARXTWMAI', 'ARXTWCMI')) THEN
180         JAI_AR_TRX_HEADERS_PKG.VAT_ACCOUNTING(pr_old            => t_jai_ar_trx_rec,
181                                               pr_new            => t_ra_customer_trx_rec,
182                                               pv_action         => lv_action,
183                                               pv_return_code    => lv_return_code,
184                                               pv_return_message => lv_return_message);
185         IF lv_return_code <> jai_constants.successful THEN
186           pv_return_code := lv_return_code;
187           pv_return_message := lv_return_message;
188           RAISE le_error;
189 
190         ELSE
191           IF (t_ra_customer_trx_rec.COMPLETE_FLAG = 'Y' AND
192              t_jai_ar_trx_rec.COMPLETE_FLAG = 'N' AND
193              NVL(t_ra_customer_trx_rec.CREATED_FROM, '###') IN
194              ('ARXTWMAI', 'ARXTWCMI')) THEN
195             --Added by JMEENA for bug#8451356
196 
197             OPEN organization_id_check(t_ra_customer_trx_rec.CUSTOMER_TRX_ID);
198             FETCH organization_id_check
199               INTO v_organization_id;
200             CLOSE organization_id_check;
201 
202             IF v_organization_id <> -1 THEN
203 
204               OPEN inclu_flag_cur;
205               FETCH inclu_flag_cur
206                 INTO lv_inclu_tax_flag;
207               CLOSE inclu_flag_cur;
208 
209               IF lv_inclu_tax_flag = 'Y' THEN
210                 jai_ar_match_tax_pkg.acct_inclu_taxes(pn_customer_trx_id  => t_ra_customer_trx_rec.customer_trx_id,
211                                                       pn_org_id           => t_ra_customer_trx_rec.org_id,
212                                                       pn_cust_trx_type_id => t_ra_customer_trx_rec.cust_trx_type_id,
213                                                       xv_process_flag     => lv_return_code,
214                                                       xv_process_message  => lv_return_message);
215 
216                 IF lv_return_code <> jai_constants.successful THEN
217                   pv_return_code := lv_return_code;
218                   pv_return_message := lv_return_message;
219                   RAISE le_error;
220                 END IF;
221               END IF;
222             END IF;
223           END IF;
224         END IF;
225       END IF;
226 
227       IF (t_ra_customer_trx_rec.COMPLETE_FLAG = 'Y') THEN
228 
229         JAI_AR_TRX_HEADERS_PKG.PROCESS_EXCISE_TAXES(pr_old            => t_jai_ar_trx_rec,
230                                                     pr_new            => t_ra_customer_trx_rec,
231                                                     pv_action         => lv_action,
232                                                     pv_return_code    => lv_return_code,
233                                                     pv_return_message => lv_return_message);
234 
235         IF lv_return_code <> jai_constants.successful then
236           pv_return_code := lv_return_code;
237           pv_return_message := lv_return_message;
238           RAISE le_error;
239         END IF;
240 
241         -- get the excise invoice number
242         OPEN get_excise_inv_no_cur(t_ra_customer_trx_rec.CUSTOMER_TRX_ID);
243         FETCH get_excise_inv_no_cur
244           INTO lv_excise_inv_no;
245         CLOSE get_excise_inv_no_cur;
246 
247         -- get the vat invoice number
248         OPEN get_vat_inv_no_cur(t_ra_customer_trx_rec.CUSTOMER_TRX_ID);
249         FETCH get_vat_inv_no_cur
250           INTO lv_vat_inv_no;
251         CLOSE get_vat_inv_no_cur;
252 
253         IF (t_ra_customer_trx_rec.CREATED_FROM = 'ARXTWMAI' AND
254            ((lv_excise_inv_no IS NOT NULL AND
255            instr(nvl(t_ra_customer_trx_rec.CT_REFERENCE, '$$'),
256                     lv_excise_inv_no) = 0) OR
257            (lv_vat_inv_no IS NOT NULL AND
258            instr(nvl(t_ra_customer_trx_rec.CT_REFERENCE, '$$'),
259                     lv_vat_inv_no) = 0))) THEN
260 
261            jai_ar_trx_pkg.update_reference(retcode => lv_return_code,
262                                           errbuf => lv_return_message,
263                                           pn_customer_trx_id => t_ra_customer_trx_rec.customer_trx_id);
264 
265            IF lv_return_code <> '0' THEN
266                IF G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL THEN
267                   lv_debug_info := 'Error occurred when execute jai_ar_trx_pkg.update_reference. Error message: '||lv_return_message;
268                   fnd_log.STRING(LOG_LEVEL => G_LEVEL_PROCEDURE,MODULE => G_MODULE_NAME||lv_api_name||'().END',MESSAGE => lv_debug_info);
269                END IF;
270                pv_return_code := lv_return_code;
271                pv_return_message := lv_return_message;
272                raise le_error;
273            END IF;
274            IF G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL THEN
275                   lv_debug_info := 'Successfully executed jai_ar_trx_pkg.update_reference. Return message: '||lv_return_message;
276                   fnd_log.STRING(LOG_LEVEL => G_LEVEL_PROCEDURE,MODULE => G_MODULE_NAME||lv_api_name||'().END',MESSAGE => lv_debug_info);
277            END IF;
278         END IF;
279       END IF;
280 
281       IF (NVL(t_jai_ar_trx_rec.COMPLETE_FLAG, 'N') = 'N' AND
282          NVL(t_ra_customer_trx_rec.COMPLETE_FLAG, '$') = 'Y') -- COMPLETION
283          OR (NVL(t_jai_ar_trx_rec.COMPLETE_FLAG, 'N') = 'Y' AND
284          NVL(t_ra_customer_trx_rec.COMPLETE_FLAG, '$') = 'N') -- INCOMPLETION
285        THEN
286         JAI_AR_TRX_HEADERS_PKG.PROCESS_TCS_TAXES(pr_old            => t_jai_ar_trx_rec,
287                                                  pr_new            => t_ra_customer_trx_rec,
288                                                  pv_action         => lv_action,
289                                                  pv_return_code    => lv_return_code,
290                                                  pv_return_message => lv_return_message);
291 
292         IF lv_return_code <> jai_constants.successful then
293           pv_return_code := lv_return_code;
294           pv_return_message := lv_return_message;
295           RAISE le_error;
296         END IF;
297       END IF;
298 
299      IF NVL(t_jai_ar_trx_rec.COMPLETE_FLAG, 'N') <> NVL(t_ra_customer_trx_rec.COMPLETE_FLAG, 'N') THEN
300          UPDATE jai_ar_trxs
301            SET complete_flag = t_ra_customer_trx_rec.complete_flag
302          WHERE customer_trx_id = p_transaction_rec.trx_id;
303       END IF;
304 
305     ELSIF p_event_class_rec.entity_code =
306        'TRANSACTIONS' AND p_event_class_rec.event_class_code IN
307        ('INVOICE', 'CREDIT_MEMO', 'DEBIT_MEMO') AND
308        p_event_class_rec.event_type_code IN
309        ('INV_CREATE', 'CM_CREATE', 'DM_CREATE') THEN
310       lv_action := JAI_CONSTANTS.inserting;
311       OPEN c_ra_customer_trx(p_event_class_rec.trx_id);
312       FETCH c_ra_customer_trx
313         INTO t_ra_customer_trx_rec;
314       CLOSE c_ra_customer_trx;
315       JAI_AR_TRX_HEADERS_PKG.POPULATE_JAI_AR_TRXS(pr_new            => t_ra_customer_trx_rec,
316                                                   pv_action         => lv_action,
317                                                   pv_return_code    => lv_return_code,
318                                                   pv_return_message => lv_return_message);
319       IF lv_return_code <> jai_constants.successful THEN
320         pv_return_code := lv_return_code;
321         pv_return_message := lv_return_message;
322         RAISE le_error;
323       END IF;
324 
325       JAI_AR_TRX_HEADERS_PKG.POPULATE_COPIED_TRANSACTIONS(pr_new            => t_ra_customer_trx_rec,
326                                                           pv_action         => lv_action,
327                                                           pv_return_code    => lv_return_code,
328                                                           pv_return_message => lv_return_message);
329 
330       IF lv_return_code <> jai_constants.successful then
331         pv_return_code := lv_return_code;
332         pv_return_message := lv_return_message;
333         RAISE le_error;
334       END IF;
335 
336       FOR c_ra_customer_line IN (SELECT customer_trx_line_id
337                                    FROM RA_CUSTOMER_TRX_LINES_ALL rctla
338                                   WHERE rctla.customer_trx_id =
339                                         p_event_class_rec.trx_id
340                                     AND rctla.line_type = 'LINE') LOOP
341         OPEN c_ra_customer_trx_lines(c_ra_customer_line.customer_trx_line_id);
342         FETCH c_ra_customer_trx_lines
343           INTO t_ra_customer_trx_lines_rec;
344         CLOSE c_ra_customer_trx_lines;
345 
346         JAI_AR_TRX_LINES_PKG.POPULATE_JAI_AR_LINES(pr_new            => t_ra_customer_trx_lines_rec,
347                                                    pv_action         => lv_action,
348                                                    pv_return_code    => lv_return_code,
349                                                    pv_return_message => lv_return_message);
350         IF lv_return_code <> jai_constants.successful then
351           pv_return_code := lv_return_code;
352           pv_return_message := lv_return_message;
353           RAISE le_error;
354         END IF;
355 
356         JAI_AR_TRX_LINES_PKG.DEFAULT_TAX(pr_old            => NULL,
357                                          pr_new            => t_ra_customer_trx_lines_rec,
358                                          pv_action         => lv_action,
359                                          pv_return_code    => lv_return_code,
360                                          pv_return_message => lv_return_message);
361         IF lv_return_code <> jai_constants.successful then
362           pv_return_code := lv_return_code;
363           pv_return_message := lv_return_message;
364           RAISE le_error;
365         END IF;
366       END LOOP;
367     ELSIF p_event_class_rec.entity_code =
368           'TRANSACTIONS' AND p_event_class_rec.event_class_code IN
369           ('INVOICE', 'CREDIT_MEMO', 'DEBIT_MEMO') AND
370           p_event_class_rec.event_type_code IN
371           ('INV_UPDATE', 'CM_UPDATE', 'DM_UPDATE') THEN
372       lv_action := JAI_CONSTANTS.updating;
373       OPEN c_ra_customer_trx(p_event_class_rec.trx_id);
374       FETCH c_ra_customer_trx
375         INTO t_ra_customer_trx_rec;
376       CLOSE c_ra_customer_trx;
377 
378       OPEN c_jai_ar_trx(p_event_class_rec.trx_id);
379       FETCH c_jai_ar_trx
380         INTO t_jai_ar_trx_rec;
381       CLOSE c_jai_ar_trx;
382       IF ((t_ra_customer_trx_rec.TRX_NUMBER <> t_jai_ar_trx_rec.TRX_NUMBER) OR
383          (t_ra_customer_trx_rec.CUSTOMER_TRX_ID <>
384          t_jai_ar_trx_rec.CUSTOMER_TRX_ID)) THEN
385         JAI_AR_TRX_HEADERS_PKG.UPDATE_TRX_NUMBER(pr_old            => t_jai_ar_trx_rec,
386                                                  pr_new            => t_ra_customer_trx_rec,
387                                                  pv_action         => lv_action,
388                                                  pv_return_code    => lv_return_code,
389                                                  pv_return_message => lv_return_message);
390         IF lv_return_code <> jai_constants.successful then
391           pv_return_code := lv_return_code;
392           pv_return_message := lv_return_message;
393           RAISE le_error;
394         END IF;
395       END IF;
396       IF ((NVL(t_ra_customer_trx_rec.Ship_To_Customer_ID, 0) <>
397          NVL(t_jai_ar_trx_rec.Ship_To_Customer_ID, 0)) OR
398          (NVL(t_ra_customer_trx_rec.Ship_To_Site_Use_ID, 0) <>
399          NVL(t_jai_ar_trx_rec.Ship_To_Site_Use_ID, 0)) OR
400          t_ra_customer_trx_rec.invoice_currency_code <>
401          t_jai_ar_trx_rec.invoice_currency_code) THEN
402         JAI_AR_TRX_HEADERS_PKG.RECALCULATE_TAX(pr_old            => t_jai_ar_trx_rec,
403                                                pr_new            => t_ra_customer_trx_rec,
404                                                pv_action         => lv_action,
405                                                pv_return_code    => lv_return_code,
406                                                pv_return_message => lv_return_message);
407         IF lv_return_code <> jai_constants.successful then
408           pv_return_code := lv_return_code;
409           pv_return_message := lv_return_message;
410           RAISE le_error;
411         END IF;
412 
413       END IF;
414 
415       FOR c_ra_customer_line IN (SELECT customer_trx_line_id
416                                    FROM RA_CUSTOMER_TRX_LINES_ALL rctla
417                                   WHERE rctla.customer_trx_id =
418                                         p_event_class_rec.trx_id
419                                     AND rctla.line_type = 'LINE') LOOP
420         OPEN c_ra_customer_trx_lines(c_ra_customer_line.customer_trx_line_id);
421         FETCH c_ra_customer_trx_lines
422           INTO t_ra_customer_trx_lines_rec;
423         CLOSE c_ra_customer_trx_lines;
424 
425         OPEN c_jai_ar_trx_lines(c_ra_customer_line.customer_trx_line_id);
426         FETCH c_jai_ar_trx_lines
427           INTO t_jai_ar_trx_lines_rec;
428         CLOSE c_jai_ar_trx_lines;
429 
430         --For case that add new line of invoice
431         IF t_jai_ar_trx_lines_rec.customer_trx_line_id <>
432            t_ra_customer_trx_lines_rec.customer_trx_line_id THEN
433           JAI_AR_TRX_LINES_PKG.POPULATE_JAI_AR_LINES(pr_new            => t_ra_customer_trx_lines_rec,
434                                                      pv_action         => lv_action,
435                                                      pv_return_code    => lv_return_code,
436                                                      pv_return_message => lv_return_message);
437           IF lv_return_code <> jai_constants.successful then
438             pv_return_code := lv_return_code;
439             pv_return_message := lv_return_message;
440             RAISE le_error;
441           END IF;
442 
443           JAI_AR_TRX_LINES_PKG.DEFAULT_TAX(pr_old            => NULL,
444                                            pr_new            => t_ra_customer_trx_lines_rec,
445                                            pv_action         => lv_action,
446                                            pv_return_code    => lv_return_code,
447                                            pv_return_message => lv_return_message);
448           IF lv_return_code <> jai_constants.successful then
449             pv_return_code := lv_return_code;
450             pv_return_message := lv_return_message;
451             RAISE le_error;
452           END IF;
453           --For case that modify an existing line of invoice
454         ELSE
455 
456           IF t_jai_ar_trx_lines_rec.quantity <>
457              t_ra_customer_trx_lines_rec.quantity_credited OR
458              t_jai_ar_trx_lines_rec.unit_selling_price <>
459              t_ra_customer_trx_lines_rec.unit_selling_price OR
460              t_jai_ar_trx_lines_rec.unit_code <>
461              t_ra_customer_trx_lines_rec.uom_code THEN
462             JAI_AR_TRX_LINES_PKG.RECALCULATE_TAX_FOR_DM(pr_old            => t_jai_ar_trx_lines_rec,
463                                                         pr_new            => t_ra_customer_trx_lines_rec,
464                                                         pv_action         => lv_action,
465                                                         pv_return_code    => lv_return_code,
466                                                         pv_return_message => lv_return_message);
467 
468             IF lv_return_code <> jai_constants.successful then
469               pv_return_code := lv_return_code;
470               pv_return_message := lv_return_message;
471               RAISE le_error;
472             END IF;
473           END IF;
474 
475           IF (nvl(t_jai_ar_trx_lines_rec.inventory_item_id, -9999) =
476              nvl(t_ra_customer_trx_lines_rec.inventory_item_id, -9999) OR
477              t_jai_ar_trx_lines_rec.inventory_item_id IS NULL) AND
478              (t_jai_ar_trx_lines_rec.quantity <>
479              t_ra_customer_trx_lines_rec.quantity_invoiced OR
480              t_jai_ar_trx_lines_rec.quantity <>
481              t_ra_customer_trx_lines_rec.quantity_credited OR
482              t_jai_ar_trx_lines_rec.unit_selling_price <>
483              t_ra_customer_trx_lines_rec.unit_selling_price OR
484              t_jai_ar_trx_lines_rec.unit_code <>
485              t_ra_customer_trx_lines_rec.uom_code) THEN
486             JAI_AR_TRX_LINES_PKG.RECALCULATE_TAX_FOR_INV_CM(pr_old            => t_jai_ar_trx_lines_rec,
487                                                             pr_new            => t_ra_customer_trx_lines_rec,
488                                                             pv_action         => lv_action,
489                                                             pv_return_code    => lv_return_code,
490                                                             pv_return_message => lv_return_message);
491             IF lv_return_code <> jai_constants.successful then
492               pv_return_code := lv_return_code;
493               pv_return_message := lv_return_message;
494               RAISE le_error;
495             END IF;
496           END IF;
497 
498           IF (NVL(t_ra_customer_trx_lines_rec.inventory_item_id, 0) <>
499              NVL(t_jai_ar_trx_lines_rec.inventory_item_id, 0)) OR
500              (t_jai_ar_trx_lines_rec.inventory_item_id IS NULL AND
501              t_jai_ar_trx_lines_rec.Description IS NULL) THEN
502             JAI_AR_TRX_LINES_PKG.DEFAULT_TAX(pr_old            => t_jai_ar_trx_lines_rec,
503                                              pr_new            => t_ra_customer_trx_lines_rec,
504                                              pv_action         => lv_action,
505                                              pv_return_code    => lv_return_code,
506                                              pv_return_message => lv_return_message);
507             IF lv_return_code <> jai_constants.successful then
508               pv_return_code := lv_return_code;
509               pv_return_message := lv_return_message;
510               RAISE le_error;
511             END IF;
512 
513           END IF;
514         END IF;
515       END LOOP;
516 
517       --For case that deleting existing lines
518       FOR c_ra_customer_line IN (SELECT customer_trx_line_id
519                                    FROM JAI_AR_TRX_LINES
520                                   WHERE customer_trx_line_id NOT IN
521                                         (SELECT customer_trx_line_id
522                                            FROM RA_CUSTOMER_TRX_LINES_ALL rctla
523                                           WHERE rctla.customer_trx_id =
524                                                 p_event_class_rec.trx_id
525                                             AND rctla.line_type = 'LINE')
526                                     AND customer_trx_id =
527                                         p_event_class_rec.trx_id) LOOP
528         /*OPEN c_ra_customer_trx_lines(c_ra_customer_line.customer_trx_line_id);
529         FETCH c_ra_customer_trx_lines INTO t_ra_customer_trx_lines_rec;
530         CLOSE c_ra_customer_trx_lines;*/
531         OPEN c_jai_ar_trx_lines(c_ra_customer_line.customer_trx_line_id);
532         FETCH c_jai_ar_trx_lines
533           INTO t_jai_ar_trx_lines_rec;
534         CLOSE c_jai_ar_trx_lines;
535         JAI_AR_TRX_LINES_PKG.DELETE_AR_TRX_LINES(pr_old            => t_jai_ar_trx_lines_rec,
536                                                  pr_new            => NULL,
537                                                  pv_action         => lv_action,
538                                                  pv_return_code    => lv_return_code,
539                                                  pv_return_message => lv_return_message);
540         IF lv_return_code <> jai_constants.successful then
541           pv_return_code := lv_return_code;
542           pv_return_message := lv_return_message;
543           RAISE le_error;
544         END IF;
545       END LOOP;
546     END IF;
547 
548     IF G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL THEN
549        lv_debug_info := G_PACKAGE_NAME||lv_api_name||'.END()-';
550        fnd_log.STRING(LOG_LEVEL => G_LEVEL_PROCEDURE,MODULE => G_MODULE_NAME||lv_api_name||'().END',MESSAGE => lv_debug_info);
551     END IF;
552 
553     --Added by Qinglei for bug#14627780 on 17-Sep-2012 begin
554     EXCEPTION
555     WHEN le_error THEN
556       pv_return_code := lv_return_code;
557       pv_return_message := lv_return_message;
558       IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
559         FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||lv_api_name||'.END', 'le_error occurred. lv_return_code = '||lv_return_code||
560         ', lv_return_message = '||lv_return_message);
561       END IF;
562     --Added by Qinglei for bug#14627780 on 17-Sep-2012 end
563   END CALCULATE_TAX;
564 
565   PROCEDURE IMPORT_DOCUMENT_WITH_TAX IS
566   BEGIN
567     NULL;
568   END IMPORT_DOCUMENT_WITH_TAX;
569 
570   PROCEDURE DETERMINE_RECOVERY IS
571   BEGIN
572     NULL;
573   END DETERMINE_RECOVERY;
574 END JAI_AR_TAX_PROCESSING_PKG;