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