[Home] [Help]
PACKAGE BODY: APPS.AP_ETAX_UTILITY_PKG
Source
1 PACKAGE BODY AP_ETAX_UTILITY_PKG AS
2 /* $Header: apetxutb.pls 120.179.12020000.10 2013/02/15 12:31:04 cmaredup ship $*/
3 -- Create global variables to maintain the session info
4 l_user_id ap_invoices_all.created_by%TYPE := FND_GLOBAL.user_id;
5 l_login_id ap_invoices_all.last_update_login%TYPE := FND_GLOBAL.login_id;
6 --l_sysdate DATE := sysdate; /*Bug10101457: Commented the global variable and used sysdate where applicable*/
7
8 Global_Exception EXCEPTION; -- bug 7126676
9
10 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AP_ETAX_UTILITY_PKG';
11 G_MSG_UERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
12 G_MSG_ERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_ERROR;
13 G_MSG_SUCCESS CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
14 G_MSG_HIGH CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
15 G_MSG_MEDIUM CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
16 G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
17 G_LINES_PER_FETCH CONSTANT NUMBER := 1000;
18
19 G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
20 G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
21 G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
22 G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
23 G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
24 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
25 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
26 G_MODULE_NAME CONSTANT VARCHAR2(30) := 'AP.PLSQL.AP_ETAX_UTILITY_PKG.';
27
28 -- This record type is used for ap_invoice_distributions_all and ap_self_assessed_tax_dist_all
29
30 TYPE r_ins_tax_dist_info IS RECORD (
31 accounting_date ap_invoice_distributions_all.accounting_date%TYPE,
32 dist_code_combination_id ap_invoice_distributions_all.dist_code_combination_id%TYPE,
33 line_type_lookup_code ap_invoice_distributions_all.line_type_lookup_code%TYPE,
34 period_name ap_invoice_distributions_all.period_name%TYPE,
35 amount ap_invoice_distributions_all.amount%TYPE,
36 base_amount ap_invoice_distributions_all.base_amount%TYPE,
37 description ap_invoice_distributions_all.description%TYPE,
38 income_tax_region ap_invoice_distributions_all.income_tax_region%TYPE,
39 po_distribution_id ap_invoice_distributions_all.po_distribution_id%TYPE,
40 type_1099 ap_invoice_distributions_all.type_1099%TYPE,
41 attribute1 ap_invoice_distributions_all.attribute1%TYPE,
42 attribute10 ap_invoice_distributions_all.attribute10%TYPE,
43 attribute11 ap_invoice_distributions_all.attribute11%TYPE,
44 attribute12 ap_invoice_distributions_all.attribute12%TYPE,
45 attribute13 ap_invoice_distributions_all.attribute13%TYPE,
46 attribute14 ap_invoice_distributions_all.attribute14%TYPE,
47 attribute15 ap_invoice_distributions_all.attribute15%TYPE,
48 attribute2 ap_invoice_distributions_all.attribute2%TYPE,
49 attribute3 ap_invoice_distributions_all.attribute3%TYPE,
50 attribute4 ap_invoice_distributions_all.attribute4%TYPE,
51 attribute5 ap_invoice_distributions_all.attribute5%TYPE,
52 attribute6 ap_invoice_distributions_all.attribute6%TYPE,
53 attribute7 ap_invoice_distributions_all.attribute7%TYPE,
54 attribute8 ap_invoice_distributions_all.attribute8%TYPE,
55 attribute9 ap_invoice_distributions_all.attribute9%TYPE,
56 attribute_category ap_invoice_distributions_all.attribute_category%TYPE,
57 expenditure_item_date ap_invoice_distributions_all.expenditure_item_date%TYPE,
58 expenditure_organization_id ap_invoice_distributions_all.expenditure_organization_id%TYPE,
59 expenditure_type ap_invoice_distributions_all.expenditure_type%TYPE,
60 parent_invoice_id ap_invoice_distributions_all.parent_invoice_id%TYPE,
61 pa_addition_flag ap_invoice_distributions_all.pa_addition_flag%TYPE,
62 pa_quantity ap_invoice_distributions_all.pa_quantity%TYPE,
63 project_accounting_context ap_invoice_distributions_all.project_accounting_context%TYPE,
64 project_id ap_invoice_distributions_all.project_id%TYPE,
65 task_id ap_invoice_distributions_all.task_id%TYPE,
66 awt_group_id ap_invoice_distributions_all.awt_group_id%TYPE,
67 global_attribute_category ap_invoice_distributions_all.global_attribute_category%TYPE,
68 global_attribute1 ap_invoice_distributions_all.global_attribute1%TYPE,
69 global_attribute2 ap_invoice_distributions_all.global_attribute2%TYPE,
70 global_attribute3 ap_invoice_distributions_all.global_attribute3%TYPE,
71 global_attribute4 ap_invoice_distributions_all.global_attribute4%TYPE,
72 global_attribute5 ap_invoice_distributions_all.global_attribute5%TYPE,
73 global_attribute6 ap_invoice_distributions_all.global_attribute6%TYPE,
74 global_attribute7 ap_invoice_distributions_all.global_attribute7%TYPE,
75 global_attribute8 ap_invoice_distributions_all.global_attribute8%TYPE,
76 global_attribute9 ap_invoice_distributions_all.global_attribute9%TYPE,
77 global_attribute10 ap_invoice_distributions_all.global_attribute10%TYPE,
78 global_attribute11 ap_invoice_distributions_all.global_attribute11%TYPE,
79 global_attribute12 ap_invoice_distributions_all.global_attribute12%TYPE,
80 global_attribute13 ap_invoice_distributions_all.global_attribute13%TYPE,
81 global_attribute14 ap_invoice_distributions_all.global_attribute14%TYPE,
82 global_attribute15 ap_invoice_distributions_all.global_attribute15%TYPE,
83 global_attribute16 ap_invoice_distributions_all.global_attribute16%TYPE,
84 global_attribute17 ap_invoice_distributions_all.global_attribute17%TYPE,
85 global_attribute18 ap_invoice_distributions_all.global_attribute18%TYPE,
86 global_attribute19 ap_invoice_distributions_all.global_attribute19%TYPE,
87 global_attribute20 ap_invoice_distributions_all.global_attribute20%TYPE,
88 award_id ap_invoice_distributions_all.award_id%TYPE,
89 dist_match_type ap_invoice_distributions_all.dist_match_type%TYPE,
90 rcv_transaction_id ap_invoice_distributions_all.rcv_transaction_id%TYPE,
91 tax_recoverable_flag ap_invoice_distributions_all.tax_recoverable_flag%TYPE,
92 merchant_document_number ap_invoice_distributions_all.merchant_document_number%TYPE, --Bug14658408: Start
93 merchant_name ap_invoice_distributions_all.merchant_name%TYPE,
94 merchant_reference ap_invoice_distributions_all.merchant_reference%TYPE,
95 merchant_tax_reg_number ap_invoice_distributions_all.merchant_tax_reg_number%TYPE,
96 merchant_taxpayer_id ap_invoice_distributions_all.merchant_taxpayer_id%TYPE, --Bug14658408: End
97 cancellation_flag ap_invoice_distributions_all.cancellation_flag%TYPE,
98 invoice_line_number ap_invoice_distributions_all.invoice_line_number%TYPE,
99 corrected_invoice_dist_id ap_invoice_distributions_all.corrected_invoice_dist_id%TYPE,
100 rounding_amt ap_invoice_distributions_all.rounding_amt%TYPE,
101 charge_applicable_to_dist_id ap_invoice_distributions_all.charge_applicable_to_dist_id%TYPE,
102 distribution_class ap_invoice_distributions_all.distribution_class%TYPE,
103 tax_code_id ap_invoice_distributions_all.tax_code_id%TYPE,
104 detail_tax_dist_id ap_invoice_distributions_all.detail_tax_dist_id%TYPE,
105 rec_nrec_rate ap_invoice_distributions_all.rec_nrec_rate%TYPE,
106 recovery_rate_id ap_invoice_distributions_all.recovery_rate_id%TYPE,
107 recovery_rate_name ap_invoice_distributions_all.recovery_rate_name%TYPE,
108 recovery_type_code ap_invoice_distributions_all.recovery_type_code%TYPE,
109 summary_tax_line_id ap_invoice_distributions_all.summary_tax_line_id%TYPE,
110 extra_po_erv ap_invoice_distributions_all.extra_po_erv%TYPE,
111 taxable_amount ap_invoice_distributions_all.taxable_amount%TYPE,
112 taxable_base_amount ap_invoice_distributions_all.taxable_base_amount%TYPE,
113 accrue_on_receipt_flag po_distributions_all.accrue_on_receipt_flag%TYPE,
114 allow_flex_override_flag ap_system_parameters_all.allow_flex_override_flag%TYPE,
115 purch_encumbrance_flag financials_system_params_all.purch_encumbrance_flag%TYPE,
116 org_id ap_invoice_distributions_all.org_id%TYPE,
117 tax_regime_id zx_rec_nrec_dist.tax_regime_id%TYPE,
118 tax_id zx_rec_nrec_dist.tax_id%TYPE,
119 tax_status_id zx_rec_nrec_dist.tax_status_id%TYPE,
120 tax_jurisdiction_id zx_lines.tax_jurisdiction_id%TYPE,
121 par_dist_assets_tracking_flag ap_invoice_distributions_all.assets_tracking_flag%TYPE, -- Bug 13821160
122 parent_dist_cancellation_flag ap_invoice_distributions_all.cancellation_flag%TYPE,
123 parent_dist_reversal_flag ap_invoice_distributions_all.reversal_flag%TYPE,
124 parent_dist_parent_reversal_id ap_invoice_distributions_all.parent_reversal_id%TYPE,
125 reversed_tax_dist_id zx_rec_nrec_dist.reversed_tax_dist_id%TYPE,
126 adjusted_doc_tax_dist_id zx_rec_nrec_dist.adjusted_doc_tax_dist_id%TYPE,
127 applied_from_tax_dist_id zx_rec_nrec_dist.applied_from_tax_dist_id%TYPE,
128 prepay_distribution_id ap_invoice_distributions_all.prepay_distribution_id%TYPE,
129 prepay_tax_diff_amount ap_invoice_distributions_all.prepay_tax_diff_amount%TYPE,
130 invoice_id ap_invoice_distributions_all.invoice_id%TYPE,
131 batch_id ap_invoice_distributions_all.batch_id%TYPE,
132 set_of_books_id ap_invoice_distributions_all.set_of_books_id%TYPE,
133 pay_awt_group_id ap_invoice_distributions_all.pay_awt_group_id%TYPE, --bug8345264
134 account_source_tax_rate_id zx_rec_nrec_dist.account_source_tax_rate_id%TYPE
135 );
136
137 --bug 12728634 Added new function
138
139 /* Bug13399833: Commented this and made the function public by declaring in spec*/
140 /*FUNCTION GET_CCID_FROM_PROJECTS
141 ( p_invoice_id IN ap_invoice_distributions_all.invoice_id%TYPE,
142 p_line_number IN ap_invoice_distributions_all.invoice_line_number%TYPE,
143 p_ccid OUT NOCOPY AP_INVOICE_DISTRIBUTIONS_ALL.DIST_CODE_COMBINATION_ID%TYPE ) RETURN BOOLEAN; */
144
145 PROCEDURE insert_tax_distributions
146 (p_invoice_header_rec IN ap_invoices_all%ROWTYPE,
147 p_inv_dist_rec IN r_ins_tax_dist_info,
148 p_dist_code_combination_id IN NUMBER,
149 p_user_id IN NUMBER,
150 p_sysdate IN DATE,
151 p_login_id IN NUMBER,
152 p_calling_sequence IN VARCHAR2);
153
154
155 --Added a new funtion for the bug 10621602 . It will accept the invoice_distribution_id as parameter
156 -- and retrun 0 if the value is there in the ret_dists record which says that this distribution is related to
157 --retainage.
158
159 FUNCTION find_val(p_invoice_dist IN NUMBER) RETURN NUMBER
160 IS
161 l_number NUMBER ;
162 l_debug_info VARCHAR2(2000);
163 l_api_name CONSTANT VARCHAR2(100) := 'FIND_VAL';
164
165 BEGIN
166 IF (ap_etax_services_pkg.ret_dists.EXISTS(p_invoice_dist)) THEN
167
168 ------------------------------------------------------------------
169 l_debug_info := 'Found Collection Populated Returning 0 ';
170 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
171 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
172 END IF;
173 ------------------------------------------------------------------
174
175 l_number := 0;
176
177 ELSE
178
179 ------------------------------------------------------------------
180 l_debug_info := 'Found Collection Not Populated Returning 1 ';
181 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
182 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
183 END IF;
184 ------------------------------------------------------------------
185
186 l_number := 1;
187
188 END IF ;
189
190 RETURN (l_number);
191
192 END find_val;
193 --bug 10621602 ends
194
195 /*bug 10282701 Added the following function */
196 FUNCTION TAX_ONLY_LINE_EXIST
197 (p_invoice_id IN NUMBER) RETURN BOOLEAN;
198
199 /*=============================================================================
200 | FUNCTION - Get_Event_Class_Code()
201 |
202 | DESCRIPTION
203 | Public function that will get the event class code required to call
204 | the eTax services based on the invoice type. These event class code is
205 | AP specific. eTax will convert this event class code to the tax class
206 | code used by eTax.
207 |
208 | PARAMETERS
209 | P_Invoice_Type_Lookup_Code - Invoice Type
210 | P_Event_Class_Code - event class code
211 | P_error_code - Error code to be returned
212 | P_calling_sequence - Calling sequence
213 |
214 | MODIFICATION HISTORY
215 | DATE Author Action
216 | 08-OCT-2003 SYIDNER Created
217 |
218 *============================================================================*/
219 FUNCTION Get_Event_Class_Code(
220 P_Invoice_Type_Lookup_Code IN VARCHAR2,
221 P_Event_Class_Code OUT NOCOPY VARCHAR2,
222 P_Error_Code OUT NOCOPY VARCHAR2,
223 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
224 IS
225
226 l_debug_info VARCHAR2(2000);
227 l_curr_calling_sequence VARCHAR2(4000);
228 l_return_var BOOLEAN := TRUE;
229 l_api_name CONSTANT VARCHAR2(100) := 'Get_Event_Class_Code';
230
231 BEGIN
232
233 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Event_Class_Code<-' ||
234 P_calling_sequence;
235
236 -- The following invoice types are not included to get an event class due to:
237 -- AWT and INTEREST: Withholding Tax and Interest invoices do not require
238 -- tax calculation.
239 -- QUICKDEFAULT and QUICKMATCH: These defined types for invoices are only
240 -- entry mechanisms. When the invoice is commit
241 -- the type is STANDARD.
242
243 IF (P_Invoice_Type_Lookup_Code IN ('STANDARD','CREDIT','DEBIT','MIXED',
244 'ADJUSTMENT','PO PRICE ADJUST',
245 'INVOICE REQUEST','CREDIT MEMO REQUEST',
246 'RETAINAGE RELEASE','PAYMENT REQUEST')) THEN -- for bug 5948586
247
248
249 P_Event_Class_Code := 'STANDARD INVOICES';
250
251 ------------------------------------------------------------------
252 l_debug_info := 'Step 1: Event Class Code is STANDARD INVOICES '||P_Event_Class_Code;
253 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
254 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
255 END IF;
256 ------------------------------------------------------------------
257
258
259 ELSIF (P_Invoice_Type_Lookup_Code IN ('PREPAYMENT')) THEN
260
261
262 P_Event_Class_Code := 'PREPAYMENT INVOICES';
263
264 ------------------------------------------------------------------
265 l_debug_info := 'Step 2: Event Class Code is PREPAYMENT INVOICES '||P_Event_Class_Code;
266 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
267 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
268 END IF;
269 ------------------------------------------------------------------
270
271 ELSIF (P_Invoice_Type_Lookup_Code IN ('EXPENSE REPORT')) THEN
272
273 P_Event_Class_Code := 'EXPENSE REPORTS';
274
275 ------------------------------------------------------------------
276 l_debug_info := 'Step 3: Event Class Code is EXPENSE REPORTS '||P_Event_Class_Code;
277 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
278 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
279 END IF;
280 ------------------------------------------------------------------
281
282 ELSE
283
284 P_Event_Class_Code := NULL;
285 l_return_var := FALSE;
286
287 ------------------------------------------------------------------
288 l_debug_info := 'Step 4: Event Class Code is NULL and function '||
289 'returns FALSE because eTax is not defined to be '||
290 'called for this Invoice type ';
291 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
292 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
293 END IF;
294 ------------------------------------------------------------------
295
296 END IF;
297
298 RETURN l_return_var;
299
300 EXCEPTION
301 WHEN OTHERS THEN
302 IF (SQLCODE <> -20001) THEN
303 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
304 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
305 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
306 FND_MESSAGE.SET_TOKEN('PARAMETERS',
307 ' P_Invoice_Type_Lookup_Code = '||P_Invoice_Type_Lookup_Code||
308 ' P_Error_Code = '||P_Error_Code||
309 ' P_Calling_Sequence = '||P_Calling_Sequence);
310 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
311 END IF;
312
313 APP_EXCEPTION.RAISE_EXCEPTION;
314
315 END Get_Event_Class_Code;
316
317
318 /*=============================================================================
319 | FUNCTION - Get_Event_Type_Code()
320 |
321 | DESCRIPTION
322 | Public function that will get the event type code required to call
323 | eTax services based on the event class code, calling_mode and if
324 | eTax was already called or not.
325 |
326 | PARAMETERS
327 | P_Event_Class_Code - Event class code
328 | P_Calling_Mode - Calling mode
329 | P_eTax_Already_called_flag - Is eTax already called?
330 | P_Event_Type_Code - event type code
331 | P_error_code - Error code to be returned
332 | P_calling_sequence - Calling sequence
333 |
334 | MODIFICATION HISTORY
335 | DATE Author Action
336 | 09-OCT-2003 SYIDNER Created
337 |
338 *============================================================================*/
339
340 FUNCTION Get_Event_Type_Code(
341 P_Event_Class_Code IN VARCHAR2,
342 P_Calling_Mode IN VARCHAR2,
343 P_eTax_Already_called_flag IN VARCHAR2,
344 P_Event_Type_Code OUT NOCOPY VARCHAR2,
345 P_Error_Code OUT NOCOPY VARCHAR2,
346 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
347
348 IS
349
350 l_debug_info VARCHAR2(2000);
351 l_curr_calling_sequence VARCHAR2(4000);
352 l_class_section VARCHAR2(500);
353 l_action_section VARCHAR2(500);
354
355 l_api_name CONSTANT VARCHAR2(100) := 'Get_Event_Type_Code';
356
357 BEGIN
358
359 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Event_Type_Code<-' ||
360 P_calling_sequence;
361
362 -- There are 3 different event classes defined for AP to handle tax in 11ix.
363 -- They are: STANDARD INVOICES, PREPAYMENT INVOICES and EXPENSE REPORTS.
364 -- There are different event type codes per event type and event class due to
365 -- a requirement of SLA. The event type code should be unique per product.
366 -- So, we can say the event type code is composed of 2 sections:
367 -- The class section (STANDARD, PREPAYMENT or EXPENSE REPORT) and the
368 -- action section that determines the action ocurred to the class
369 -- (CREATE, UPDATE, CANCELLED, FROZEN, etc).
370
371 ------------------------------------------------------------------
372 l_debug_info := 'Step 1: Event Class Code is: '||p_event_class_code;
373 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
374 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
375 END IF;
376 ------------------------------------------------------------------
377
378 IF ( P_Event_Class_Code = 'STANDARD INVOICES' ) THEN
379 l_class_section := 'STANDARD ';
380
381 ELSIF ( P_Event_Class_Code = 'PREPAYMENT INVOICES' ) THEN
382 l_class_section := 'PREPAYMENT ';
383
384 ELSIF ( P_Event_Class_Code = 'EXPENSE REPORTS' ) THEN
385 l_class_section := 'EXPENSE REPORT ';
386
387 END IF;
388
389 ------------------------------------------------------------------
390 l_debug_info := 'Step 2: Calling mode is: '||p_calling_mode;
391 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
392 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
393 END IF;
394 ------------------------------------------------------------------
395 IF ( p_calling_mode IN
396 ('CALCULATE', 'CALCULATE QUOTE', 'APPLY PREPAY',
397 'UNAPPLY PREPAY', 'RECOUPMENT','DISCARD LINE')) THEN --Bug8811102
398 IF ( P_eTax_Already_called_flag = 'N' ) THEN
399 l_action_section := 'CREATED';
400 ELSE
401 l_action_section := 'UPDATED';
402
403 END IF;
404
405 ELSIF ( p_calling_mode IN ('CALCULATE IMPORT', 'VALIDATE IMPORT',
406 'IMPORT INTERFACE')) THEN
407 l_action_section := 'CREATED';
408
409 ELSIF ( p_calling_mode IN ('DISTRIBUTE', 'DISTRIBUTE RECOUP') ) THEN
410 IF ( P_eTax_Already_called_flag = 'N' ) THEN
411 l_action_section := 'DISTRIBUTE';
412
413 ELSE
414 l_action_section := 'REDISTRIBUTE';
415
416 END IF;
417
418 ELSIF ( p_calling_mode = 'DISTRIBUTE IMPORT' ) THEN
419 l_action_section := 'DISTRIBUTE';
420
421 ELSIF ( p_calling_mode = 'REVERSE INVOICE' ) THEN
422 l_action_section := 'FULLY REVERSED';
423
424 ELSIF ( p_calling_mode = 'OVERRIDE TAX' ) THEN
425 l_action_section := 'OVERRIDE TAX';
426
427 ELSIF ( p_calling_mode = 'OVERRIDE RECOVERY' ) THEN
428 l_action_section := 'OVERRIDE DIST';
429
430 ELSIF ( p_calling_mode = 'CANCEL INVOICE' ) THEN
431 l_action_section := 'CANCELLED TAX';
432
433 ELSIF ( p_calling_mode = 'FREEZE INVOICE' ) THEN
434 l_action_section := 'FROZEN';
435
436 ELSIF ( p_calling_mode = 'UNFREEZE INVOICE' ) THEN
437 l_action_section := 'UNFROZEN';
438
439 ELSIF ( p_calling_mode = 'RELEASE TAX HOLDS' ) THEN
440 l_action_section := 'HOLDS RELEASED';
441
442 ELSIF ( p_calling_mode
443 IN ('MARK TAX LINES DELETED', 'FREEZE DISTRIBUTIONS')) THEN
444 l_action_section := 'UPDATED';
445
446 ELSIF ( p_calling_mode = 'VALIDATE' ) THEN
447 l_action_section := 'VALIDATED TAX';
448
449 /*Introduced this condition for the bug 7388641 */
450 ELSIF ( p_calling_mode = 'DELETE INVOICE' ) THEN
451 l_action_section := 'PURGED';
452
453 END IF;
454
455 -- Construct the code from the class and action sections
456 p_event_type_code := l_class_section||l_action_section;
457
458 ------------------------------------------------------------------
459 l_debug_info := 'Step 3: Event Type Code: '||p_event_type_code;
460 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
461 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
462 END IF;
463 ------------------------------------------------------------------
464
465 RETURN(TRUE);
466
467 EXCEPTION
468 WHEN OTHERS THEN
469 IF (SQLCODE <> -20001) THEN
470 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
471 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
472 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
473 FND_MESSAGE.SET_TOKEN('PARAMETERS',
474 ' P_Event_Class_Code = '||P_Event_Class_Code||
475 ' P_Calling_Mode ='||P_Calling_Mode||
476 ' P_eTax_Already_called_flag ='||P_eTax_Already_called_flag||
477 ' P_Error_Code = '||P_Error_Code||
478 ' P_Calling_Sequence = '||P_Calling_Sequence);
479 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
480 END IF;
481
482 APP_EXCEPTION.RAISE_EXCEPTION;
483
484 END Get_Event_Type_Code;
485
486 /*=============================================================================
487 | FUNCTION - Get_Corrected_Invoice_Info()
488 |
489 | DESCRIPTION
490 | This function return the additional information required to populate
491 | the zx_transaction_lines_gt global temporary table for eTax.
492 |
493 | PARAMETERS
494 | P_Corrected_Invoice_Id - Invoice Id for the corrected line
495 | P_corrected_Line_number - Line number for the corrected line
496 | P_Application_Id - Application Id for the corrected invoice
497 | P_Entity_code - entity code required for the event class
498 | P_Event_Class_Code - Event class code for the corrected invoice
499 | P_Invoice_Number - Corrected invoice number
500 | P_Invoice_Date - corrected invoice date
501 | P_error_code - Error code to be returned
502 | P_calling_sequence - Calling sequence
503 |
504 | MODIFICATION HISTORY
505 | DATE Author Action
506 | 13-OCT-2003 SYIDNER Created
507 |
508 *============================================================================*/
509 FUNCTION Get_Corrected_Invoice_Info(
510 P_Corrected_Invoice_Id IN NUMBER,
511 P_Corrected_Line_Number IN NUMBER,
512 P_Application_Id OUT NOCOPY NUMBER,
513 P_Entity_code OUT NOCOPY VARCHAR2,
514 P_Event_Class_Code OUT NOCOPY VARCHAR2,
515 P_Invoice_Number OUT NOCOPY VARCHAR2,
516 P_Invoice_Date OUT NOCOPY DATE,
517 P_Error_Code OUT NOCOPY VARCHAR2,
518 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
519
520 IS
521
522 l_debug_info VARCHAR2(2000);
523 l_curr_calling_sequence VARCHAR2(4000);
524 l_corrected_invoice_type ap_invoices_all.invoice_type_lookup_code%TYPE;
525
526 l_api_name CONSTANT VARCHAR2(100) := 'Get_Corrected_Invoice_Info';
527
528
529 CURSOR corrected_inv( c_corrected_inv_id IN NUMBER) IS
530 SELECT invoice_num, invoice_date, invoice_type_lookup_code
531 FROM ap_invoices_all
532 WHERE invoice_id = c_corrected_inv_id;
533
534 BEGIN
535
536 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Corrected_Invoice_Info<-'||
537 P_calling_sequence;
538
539 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
540 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
541 END IF;
542
543 -------------------------------------------------------------------
544 l_debug_info := 'Step 1: Get corrected invoice info';
545 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
546 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
547 END IF;
548 -------------------------------------------------------------------
549 IF ( P_Corrected_Invoice_Id IS NOT NULL) THEN
550
551 P_Application_Id := 200; -- Oracle Payables
552 P_Entity_code := 'AP_INVOICES';
553
554 BEGIN
555 OPEN corrected_inv (P_Corrected_Invoice_Id);
556 FETCH corrected_inv
557 INTO P_Invoice_Number, P_Invoice_Date,
558 l_corrected_invoice_type;
559 CLOSE corrected_inv;
560 END ;
561 -------------------------------------------------------------------
562 l_debug_info := 'Step 1.1: Corrected Inv Id Info '||P_Invoice_Number||' & '||P_Invoice_Date||' & '||l_corrected_invoice_type;
563 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
564 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
565 END IF;
566 -------------------------------------------------------------------
567 --------------------------------------------------------------------------
568 l_debug_info := 'Step 2: Get event class code corrected_invoice_id';
569 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
570 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
571 END IF;
572 --------------------------------------------------------------------------
573 IF NOT(AP_ETAX_UTILITY_PKG.Get_Event_Class_Code(
574 P_Invoice_Type_Lookup_Code => l_corrected_invoice_type,
575 P_Event_Class_Code => P_Event_Class_Code,
576 P_error_code => P_error_code,
577 P_calling_sequence => l_curr_calling_sequence)) THEN
578
579 RETURN FALSE;
580 END IF;
581
582 END IF;
583 RETURN TRUE;
584
585 EXCEPTION
586 WHEN OTHERS THEN
587 IF (SQLCODE <> -20001) THEN
588 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
589 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
590 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
591 FND_MESSAGE.SET_TOKEN('PARAMETERS',
592 ' P_Corrected_Invoice_Id = '||P_Corrected_Invoice_Id||
593 ' P_Corrected_Line_Number = '||P_Corrected_Line_Number||
594 ' P_Error_Code = '||P_Error_Code||
595 ' P_Calling_Sequence = '||P_Calling_Sequence);
596 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
597 END IF;
598
599 --bug10140354
600 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
601 APP_EXCEPTION.RAISE_EXCEPTION;
602 ELSE
603
604 RETURN FALSE;
605 END IF;
606 END Get_Corrected_Invoice_Info;
607
608 /*=============================================================================
609 | FUNCTION - Get_Prepay_Invoice_Info()
610 |
611 | DESCRIPTION
612 | This function return the additional information required to populate
613 | the zx_transaction_lines_gt global temporary table for eTax.
614 |
615 | PARAMETERS
616 | P_Prepay_Invoice_Id - Invoice Id for the applied prepay line
617 | P_Prepay_Line_number - Line number for the applied prepay line
618 | P_Application_Id - Application Id for the applied prepay invoice
619 | P_Entity_code - entity code required for the event class
620 | P_Event_Class_Code - Event class code for the applied prepay invoice
621 | P_Invoice_Number - Applied Prepayment number
622 | P_Invoice_Date - Applied prepayment invoice date
623 | P_error_code - Error code to be returned
624 | P_calling_sequence - Calling sequence
625 |
626 | MODIFICATION HISTORY
627 | DATE Author Action
628 | 15-OCT-2003 SYIDNER Created
629 |
630 *============================================================================*/
631
632 FUNCTION Get_Prepay_Invoice_Info(
633 P_Prepay_Invoice_Id IN NUMBER,
634 P_Prepay_Line_Number IN NUMBER,
635 P_Application_Id OUT NOCOPY NUMBER,
636 P_Entity_code OUT NOCOPY VARCHAR2,
637 P_Event_Class_Code OUT NOCOPY VARCHAR2,
638 P_Invoice_Number OUT NOCOPY VARCHAR2,
639 P_Invoice_Date OUT NOCOPY DATE,
640 P_Error_Code OUT NOCOPY VARCHAR2,
641 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
642 IS
643
644 l_debug_info VARCHAR2(2000);
645 l_curr_calling_sequence VARCHAR2(4000);
646 l_prepay_invoice_type ap_invoices_all.invoice_type_lookup_code%TYPE;
647
648 l_api_name CONSTANT VARCHAR2(100) := 'Get_Prepay_Invoice_Info';
649
650 CURSOR prepay_inv (c_prepay_inv_id IN NUMBER) IS
651 SELECT invoice_num, invoice_date, invoice_type_lookup_code
652 FROM ap_invoices_all
653 WHERE invoice_id = c_prepay_inv_id;
654
655 BEGIN
656
657 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Prepay_Invoice_Info<-' ||
658 P_calling_sequence;
659
660 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
661 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
662 END IF;
663
664 -------------------------------------------------------------------
665 l_debug_info := 'Step 1: Get applied prepayment invoice info';
666 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
667 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
668 END IF;
669 -------------------------------------------------------------------
670 IF ( P_Prepay_Invoice_Id IS NOT NULL) THEN
671
672 P_Application_Id := 200;
673 P_Entity_code := 'AP_INVOICES';
674
675 BEGIN
676 OPEN prepay_inv (P_Prepay_Invoice_Id);
677 FETCH prepay_inv
678 INTO P_Invoice_Number, P_Invoice_Date,
679 l_prepay_invoice_type;
680 CLOSE prepay_inv;
681 END ;
682 -------------------------------------------------------------------
683 l_debug_info := 'Step 1.1: Applied prepayment invoice info '||P_Invoice_Number||' & '||P_Invoice_Date||' & '||l_prepay_invoice_type;
684 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
685 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
686 END IF;
687 -------------------------------------------------------------------
688 --------------------------------------------------------------------------
689 l_debug_info := 'Step 2: Get event class code prepay_invoice_id';
690 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
691 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
692 END IF;
693 --------------------------------------------------------------------------
694 IF NOT(AP_ETAX_UTILITY_PKG.Get_Event_Class_Code(
695 P_Invoice_Type_Lookup_Code => l_prepay_invoice_type,
696 P_Event_Class_Code => P_Event_Class_Code,
697 P_error_code => P_error_code,
698 P_calling_sequence => l_curr_calling_sequence)) THEN
699
700 RETURN FALSE;
701 END IF;
702
703 END IF;
704 RETURN TRUE;
705
706 EXCEPTION
707 WHEN OTHERS THEN
708 IF (SQLCODE <> -20001) THEN
709 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
710 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
711 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
712 FND_MESSAGE.SET_TOKEN('PARAMETERS',
713 ' P_Prepay_Invoice_Id = '||P_Prepay_Invoice_Id||
714 ' P_Prepay_Line_Number = '||P_Prepay_Line_Number||
715 ' P_Error_Code = '||P_Error_Code||
716 ' P_Calling_Sequence = '||P_Calling_Sequence);
717 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
718 END IF;
719
720 --bug10140354
721 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
722 APP_EXCEPTION.RAISE_EXCEPTION;
723 ELSE
724
725 RETURN FALSE;
726 END IF;
727
728 END Get_Prepay_Invoice_Info;
729
730 /*=============================================================================
731 | FUNCTION - Get_Receipt_Info()
732 |
733 | DESCRIPTION
734 | This function return the additional information required to populate
735 | the zx_transaction_lines_gt global temporary table for eTax.
736 |
737 | PARAMETERS
738 | P_Rcv_Transaction_Id - Receipt id
739 | P_Application_Id - Application Id for the Receipt (201)
740 | P_Entity_code - entity code required for the event class
741 | P_Event_Class_Code - Event class code for the receipt
742 | P_Transaction_Date - Transaction date
743 | P_error_code - Error code to be returned
744 | P_calling_sequence - Calling sequence
745 |
746 | MODIFICATION HISTORY
747 | DATE Author Action
748 | 15-OCT-2003 SYIDNER Created
749 |
750 *============================================================================*/
751 FUNCTION Get_Receipt_Info(
752 P_Rcv_Transaction_Id IN NUMBER,
753 P_Application_Id OUT NOCOPY NUMBER,
754 P_Entity_code OUT NOCOPY VARCHAR2,
755 P_Event_Class_Code OUT NOCOPY VARCHAR2,
756 P_Transaction_Date OUT NOCOPY DATE,
757 P_Error_Code OUT NOCOPY VARCHAR2,
758 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
759 IS
760
761 l_debug_info VARCHAR2(2000);
762 l_curr_calling_sequence VARCHAR2(4000);
763 l_return_status VARCHAR2(100);
764 l_msg_count NUMBER;
765 l_msg_data VARCHAR2(2000);
766
767 l_transaction_type rcv_transactions.transaction_type%TYPE;
768
769 l_api_name CONSTANT VARCHAR2(100) := 'Get_Receipt_Info';
770
771 CURSOR receipt_info (c_rcv_transaction IN NUMBER) IS
772 SELECT transaction_date, transaction_type
773 FROM rcv_transactions
774 WHERE transaction_id = c_rcv_transaction;
775
776 BEGIN
777
778 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Receipt_Info<-' ||
779 P_calling_sequence;
780 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
781 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
782 END IF;
783 -------------------------------------------------------------------
784 l_debug_info := 'Step 1: Get receipt info';
785 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
786 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
787 END IF;
788 -------------------------------------------------------------------
789 IF (P_Rcv_Transaction_Id IS NOT NULL) THEN
790
791 OPEN receipt_info (P_Rcv_Transaction_Id);
792 FETCH receipt_info
793 INTO P_Transaction_Date, l_transaction_type;
794 CLOSE receipt_info;
795
796 -------------------------------------------------------------------
797 l_debug_info := 'Step 1.1: Receipt info '||P_Transaction_Date||' & '||l_transaction_type;
798 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
799 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
800 END IF;
801 -------------------------------------------------------------------
802
803 --------------------------------------------------------------------------
804 l_debug_info := 'Step 2: Call PO API to get additional receipt info';
805 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
806 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
807 END IF;
808 --------------------------------------------------------------------------
809 CST_UTILITY_PUB.Get_Receipt_Event_Info (
810 p_api_version => 1.0 ,
811 p_transaction_type => 'MATCH',
812 x_return_status => l_return_status,
813 x_msg_count => l_msg_count,
814 x_msg_data => l_msg_data,
815 p_entity_code => p_entity_code,
816 p_application_id => p_application_id,
817 p_event_class_code => p_event_class_code);
818
819 END IF;
820
821 RETURN TRUE;
822
823 EXCEPTION
824 WHEN OTHERS THEN
825 IF (SQLCODE <> -20001) THEN
826 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
827 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
828 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
829 FND_MESSAGE.SET_TOKEN('PARAMETERS',
830 ' P_Rcv_Transaction_Id = '||P_Rcv_Transaction_Id||
831 ' P_Error_Code = '||P_Error_Code||
832 ' P_Calling_Sequence = '||P_Calling_Sequence);
833 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
834 END IF;
835
836 --bug10140354
837 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
838 APP_EXCEPTION.RAISE_EXCEPTION;
839 ELSE
840
841 RETURN FALSE;
842 END IF;
843
844 END Get_Receipt_Info;
845
846 /*=============================================================================
847 | FUNCTION - Get_PO_Info()
848 |
849 | DESCRIPTION
850 | This function return the additional information required to populate
851 | the zx_transaction_lines_gt and the zx_distribution_lines_gt global
852 | temporary tables for eTax.
853 | The parameters po_line_location_id and po_distribution_id are mutual
854 | exclusive.
855 |
856 | PARAMETERS
857 | P_Po_line_location_id - PO line location
858 | P_Po_Distribution_id - Po distribution
859 | P_Application_Id - Application Id for the PO document (201)
860 | P_Entity_code - entity code required for the event class
861 | P_Event_Class_Code - Event class code for the PO doc
862 | P_PO_Quantity - PO quantity
863 | P_Product_Org_Id - Product Org_id
864 | P_Po_Header_Id - Po header Id
865 | P_Po_Header_Curr_Conv_Rate - Po Header currency conversion rate
866 | P_error_code - Error code to be returned
867 | P_calling_sequence - Calling sequence
868 |
869 | MODIFICATION HISTORY
870 | DATE Author Action
871 | 15-OCT-2003 SYIDNER Created
872 | 20-OCT-2003 SYIDNER Included po_distribution as a parameter
873 | and modify the function to return Po data
874 | for the call to the determine_recovery serv
875 *============================================================================*/
876 FUNCTION Get_PO_Info(
877 P_PO_Line_Location_Id IN OUT NOCOPY NUMBER,
878 P_Po_Distribution_Id IN NUMBER,
879 P_Application_Id OUT NOCOPY NUMBER,
880 P_Entity_code OUT NOCOPY VARCHAR2,
881 P_Event_Class_Code OUT NOCOPY VARCHAR2,
882 P_PO_Quantity OUT NOCOPY NUMBER,
883 P_Product_Org_Id OUT NOCOPY NUMBER,
884 P_Po_Header_Id OUT NOCOPY NUMBER,
885 P_Po_Header_Curr_Conv_Rate OUT NOCOPY NUMBER,
886 P_Uom_Code OUT NOCOPY VARCHAR2,
887 P_Dist_Qty OUT NOCOPY NUMBER,
888 P_Ship_Price OUT NOCOPY NUMBER,
889 P_Error_Code OUT NOCOPY VARCHAR2,
890 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
891
892 IS
893
894 l_debug_info VARCHAR2(2000);
895 l_curr_calling_sequence VARCHAR2(4000);
896 l_return_status VARCHAR2(100);
897 l_msg_count NUMBER;
898 l_msg_data VARCHAR2(2000);
899
900 l_org_id po_line_locations_all.org_id%type;
901 l_po_release_id po_line_locations_all.po_release_id%type;
902 l_doc_type VARCHAR2(20);
903
904 l_api_name CONSTANT VARCHAR2(100) := 'Get_PO_Info';
905
906 CURSOR PO_Info_from_line_loc (c_po_line_location_Id IN NUMBER) IS
907 SELECT pll.org_id, pll.quantity, pll.po_header_id, nvl(ph.rate ,1), pll.po_release_id, mum.uom_code
908 FROM po_line_locations_all pll, po_headers_all ph, mtl_units_of_measure mum
909 WHERE pll.line_location_id = c_po_line_location_Id
910 AND pll.po_header_id = ph.po_header_id
911 AND pll.unit_meas_lookup_code = mum.unit_of_measure (+);
912
913 CURSOR PO_Info_from_dist (c_po_dist_Id IN NUMBER) IS
914 SELECT pll.org_id, pll.quantity, pll.line_location_id,
915 pll.po_header_id, nvl(ph.rate,1), pll.po_release_id, mum.uom_code,
916 pd.quantity_ordered, pll.price_override
917 FROM po_line_locations_all pll, po_distributions_all pd,
918 po_headers_all ph, mtl_units_of_measure mum
919 WHERE pd.po_distribution_id = c_po_dist_Id
920 AND pd.line_location_id = pll.line_location_id
921 AND pll.po_header_id = ph.po_header_id
922 AND pll.unit_meas_lookup_code = mum.unit_of_measure (+);
923
924 BEGIN
925
926 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_PO_Info<-' ||
927 P_calling_sequence;
928 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
929 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
930 END IF;
931
932 -------------------------------------------------------------------
933 l_debug_info := 'Step 1: Get PO additional info';
934 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
935 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
936 END IF;
937 -------------------------------------------------------------------
938
939 IF ( P_PO_Line_Location_Id IS NOT NULL) THEN
940 OPEN PO_info_from_line_loc (P_PO_Line_Location_Id);
941 FETCH PO_info_from_line_loc
942 INTO l_org_Id, P_PO_Quantity,
943 P_Po_Header_Id, P_Po_header_curr_conv_rate, l_po_release_id, p_uom_code;
944 CLOSE PO_info_from_line_loc;
945
946 -------------------------------------------------------------------
947 l_debug_info := 'Step 1.1: PO additional info '||l_org_Id||' & '||P_PO_Quantity||' & '||P_Po_Header_Id||' &' ||P_Po_header_curr_conv_rate ||' & '||l_po_release_id||' & '||p_uom_code ;
948 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
949 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
950 END IF;
951 -------------------------------------------------------------------
952
953 ELSIF ( P_PO_Distribution_Id IS NOT NULL) THEN
954 OPEN PO_info_from_dist (P_PO_Distribution_Id);
955 FETCH PO_info_from_dist
956 INTO l_org_id, P_PO_Quantity, P_PO_Line_Location_Id,
957 P_Po_Header_Id, P_Po_header_curr_conv_rate, l_po_release_id, p_uom_code,
958 P_Dist_Qty, P_Ship_Price;
959 CLOSE PO_info_from_dist;
960
961 -------------------------------------------------------------------
962 l_debug_info := 'Step 1.1: PO additional info '||l_org_Id||' & '||P_PO_Quantity||' & '||P_PO_Line_Location_Id||' & '||P_Po_Header_Id||' &' ||P_Po_header_curr_conv_rate ||' & '||l_po_release_id||' & '||p_uom_code ;
963 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
964 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
965 END IF;
966 -------------------------------------------------------------------
967
968
969
970 END IF;
971
972 IF NOT AP_ETAX_SERVICES_PKG.g_fsp_attributes.exists(l_org_id) THEN
973
974 SELECT inventory_organization_id
975 INTO AP_ETAX_SERVICES_PKG.g_fsp_attributes(l_org_id).inventory_organization_id
976 FROM financials_system_params_all
977 WHERE org_id = l_org_id;
978
979 END IF;
980
981 p_product_org_id := AP_ETAX_SERVICES_PKG.g_fsp_attributes(l_org_id).inventory_organization_id;
982
983 -------------------------------------------------------------------
984 l_debug_info := 'Step 2: Product Org Id '||p_product_org_id;
985 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
986 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
987 END IF;
988 -------------------------------------------------------------------
989
990 -- Bug 5193570
991 -- Set ref_doc_trx_id to po_release_id when matched to a Release.
992
993 IF l_po_release_id IS NOT NULL THEN
994 p_po_header_id := l_po_release_id;
995 l_doc_type := 'RELEASE';
996
997 -------------------------------------------------------------------
998 l_debug_info := 'Step 3: p_po_header_id and l_doc_type '||p_po_header_id||' & '||l_doc_type;
999 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1000 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1001 END IF;
1002 -------------------------------------------------------------------
1003
1004 ELSE
1005 l_doc_type := 'PO';
1006
1007 -------------------------------------------------------------------
1008 l_debug_info := 'Step 3: l_doc_type '||l_doc_type;
1009 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1010 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1011 END IF;
1012 -------------------------------------------------------------------
1013
1014 END IF;
1015
1016
1017
1018
1019 PO_TAX_INTERFACE_GRP.get_document_tax_constants(
1020 p_api_version => 1.0,
1021 p_init_msg_list => NULL,
1022 p_commit => 'N',
1023 p_validation_level => NULL,
1024 x_return_status => l_return_status,
1025 x_msg_count => l_msg_count,
1026 x_msg_data => l_msg_data,
1027 p_doc_type => l_doc_type,
1028 x_application_id => p_application_id,
1029 x_entity_code => p_entity_code,
1030 x_event_class_code => p_event_class_code );
1031
1032 -------------------------------------------------------------------
1033 l_debug_info := 'Step 4: Calling PO API to get PO etax document '||
1034 ' setup info '||l_doc_type||' & '||p_application_id||' & '||p_entity_code||' & '||p_event_class_code;
1035
1036 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1037 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1038 END IF;
1039 -------------------------------------------------------------------
1040
1041 RETURN TRUE;
1042
1043 EXCEPTION
1044 WHEN OTHERS THEN
1045 IF (SQLCODE <> -20001) THEN
1046 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
1047 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
1048 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
1049 FND_MESSAGE.SET_TOKEN('PARAMETERS',
1050 ' P_PO_Line_Location_Id = '||P_PO_Line_Location_Id||
1051 ' P_Error_Code = '||P_Error_Code||
1052 ' P_Calling_Sequence = '||P_Calling_Sequence);
1053 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
1054 END IF;
1055
1056 --bug10140354
1057 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
1058 APP_EXCEPTION.RAISE_EXCEPTION;
1059 ELSE
1060
1061 RETURN FALSE;
1062 END IF;
1063 END Get_PO_Info;
1064
1065 /*=============================================================================
1066 | FUNCTION - Get_Prepay_Awt_Group_Id()
1067 |
1068 | DESCRIPTION
1069 | This function return the awt_group_id for a parent prepay item line
1070 | based on the prepayment distribution id.
1071 |
1072 | PARAMETERS
1073 | P_Prepay_Distribution_id - Distribution Id of the prepayment
1074 |
1075 | MODIFICATION HISTORY
1076 | DATE Author Action
1077 | 15-OCT-2003 SYIDNER Created
1078 |
1079 *============================================================================*/
1080 FUNCTION Get_Prepay_Awt_Group_Id(
1081 P_Prepay_Distribution_id IN NUMBER,
1082 P_Calling_Sequence IN VARCHAR2) RETURN NUMBER
1083 IS
1084
1085 l_debug_info VARCHAR2(240);
1086 l_curr_calling_sequence VARCHAR2(4000);
1087 l_api_name CONSTANT VARCHAR2(100) := 'Get_Prepay_Awt_Group_Id';
1088
1089 CURSOR prepay_awt_group_id (c_prepay_dist_id IN NUMBER) IS
1090 SELECT aid.awt_group_id
1091 FROM ap_invoice_distributions_all aid
1092 -- ,ap_invoice_lines_all ail
1093 WHERE aid.invoice_distribution_id = c_prepay_dist_id;
1094 -- AND aid.invoice_id = ail.invoice_id
1095 -- AND aid.invoice_line_number = ail.line_number;
1096 --Bug8334059 Awt_group_id will be retrieved from ap_invoice_distributions_all
1097
1098 l_awt_group_id ap_invoice_lines_all.awt_group_id%TYPE;
1099
1100 BEGIN
1101
1102 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Prepay_Awt_Group_Id<-'||
1103 P_calling_sequence;
1104
1105 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1106 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
1107 END IF;
1108
1109
1110 OPEN prepay_awt_group_id( P_Prepay_Distribution_id);
1111 FETCH prepay_awt_group_id
1112 INTO l_awt_group_id;
1113 CLOSE prepay_awt_group_id;
1114
1115 -------------------------------------------------------------------
1116 l_debug_info := 'Step 1: Get awt_group_id from prepay item line '||l_awt_group_id;
1117
1118 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1119 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1120 END IF;
1121 -------------------------------------------------------------------
1122
1123 RETURN l_awt_group_id;
1124
1125 EXCEPTION
1126 WHEN OTHERS THEN
1127 IF (SQLCODE <> -20001) THEN
1128 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
1129 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
1130 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
1131 FND_MESSAGE.SET_TOKEN('PARAMETERS',
1132 ' P_Prepay_Distribution_id = '||P_Prepay_Distribution_id||
1133 ' P_Calling_Sequence = '||P_Calling_Sequence);
1134 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
1135 END IF;
1136
1137 IF ( prepay_awt_group_id%ISOPEN ) THEN
1138 CLOSE prepay_awt_group_id;
1139 END IF;
1140
1141 APP_EXCEPTION.RAISE_EXCEPTION;
1142 END Get_Prepay_Awt_Group_Id;
1143
1144 /*=============================================================================
1145 | FUNCTION - Return_Tax_Lines()
1146 |
1147 | DESCRIPTION
1148 | This function handles the return of tax lines. It includes creation,
1149 | update, or delete of existing exclusive tax lines in AP if required.
1150 | It also handles the update of the total tax amounts. (Inclusive and
1151 | self-assessed.
1152 |
1153 | PARAMETERS
1154 | P_Invoice_Header_Rec - Header info
1155 | P_error_code - Error code to be returned
1156 | P_calling_sequence - Calling sequence
1157 |
1158 | MODIFICATION HISTORY
1159 | DATE Author Action
1160 | 15-OCT-2003 SYIDNER Created
1161 |
1162 *============================================================================*/
1163 FUNCTION Return_Tax_Lines(
1164 P_Invoice_Header_Rec IN ap_invoices_all%ROWTYPE,
1165 P_Error_Code OUT NOCOPY VARCHAR2,
1166 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
1167 IS
1168
1169 l_debug_info VARCHAR2(240);
1170 l_curr_calling_sequence VARCHAR2(4000);
1171
1172 l_period_name gl_period_statuses.period_name%TYPE;
1173 l_gl_date ap_invoice_lines_all.accounting_date%TYPE;
1174 l_wfapproval_flag ap_system_parameters_all.approval_workflow_flag%TYPE;
1175 l_awt_include_tax_amt ap_system_parameters_all.awt_include_tax_amt%TYPE;
1176 l_base_currency_code ap_system_parameters_all.base_currency_code%TYPE;
1177 l_combined_filing_flag ap_system_parameters_all.combined_filing_flag%TYPE;
1178 l_income_tax_region_flag ap_system_parameters_all.income_tax_region_flag%TYPE;
1179 l_income_tax_region ap_system_parameters_all.income_tax_region%TYPE;
1180 l_disc_is_inv_less_tax_flag ap_system_parameters_all.disc_is_inv_less_tax_flag%TYPE;
1181 l_wfapproval_status ap_invoice_lines_all.wfapproval_status%TYPE;
1182 l_new_amt_applicable_to_disc ap_invoices_all.amount_applicable_to_discount%TYPE;
1183 l_payment_priority ap_batches_all.payment_priority%TYPE;
1184
1185 l_total_tax_amount NUMBER;
1186 l_self_assessed_tax_amt NUMBER;
1187
1188 -- Allocations
1189 Cursor c_item_line (c_invoice_id IN NUMBER) IS
1190 Select ail.line_number
1191 From ap_invoice_lines_all ail
1192 Where ail.invoice_id = c_invoice_id
1193 And ail.line_type_lookup_code = 'TAX'
1194 And ail.prepay_invoice_id IS NULL;
1195
1196 /*
1197 And NOT EXISTS
1198 (Select chrg_invoice_line_number
1199 From ap_allocation_rule_lines arl
1200 Where arl.invoice_id = ail.invoice_id
1201 And arl.chrg_invoice_line_number = ail.line_number);
1202 */
1203
1204 l_item_line c_item_line%rowtype;
1205
1206 l_ap_summary_tax_line_id NUMBER;
1207 l_invoice_line_number NUMBER;
1208
1209 l_api_name CONSTANT VARCHAR2(100) := 'RETURN_TAX_LINES';
1210
1211 BEGIN
1212
1213 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Return_Tax_Lines<-'||
1214 P_calling_sequence;
1215
1216 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1217 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
1218 END IF;
1219
1220 -------------------------------------------------------------------
1221 l_debug_info := 'Incorrect Summary Tax Line Check';
1222 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1223 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1224 END IF;
1225 -------------------------------------------------------------------
1226
1227 BEGIN
1228
1229 l_ap_summary_tax_line_id := NULL;
1230
1231 SELECT ail.line_number, ail.summary_tax_line_id
1232 INTO l_invoice_line_number, l_ap_summary_tax_line_id
1233 FROM AP_INVOICE_LINES_ALL ail
1234 WHERE ail.invoice_id = P_Invoice_Header_Rec.invoice_id
1235 AND ail.line_type_lookup_code = 'TAX'
1236 AND NOT EXISTS
1237 (SELECT ls.summary_tax_line_id
1238 FROM zx_lines_summary ls
1239 WHERE ls.summary_tax_line_id = ail.summary_tax_line_id
1240 AND ls.trx_id = ail.invoice_id
1241 AND NVL(ls.tax_amt_included_flag, 'N') = 'N'
1242 AND NVL(ls.self_assessed_flag, 'N') = 'N'
1243 AND NVL(ls.reporting_only_flag, 'N') = 'N'
1244 )
1245 AND EXISTS
1246 (SELECT 'Invoice Distributions Exist'
1247 FROM ap_invoice_distributions_all aid
1248 WHERE aid.invoice_id = ail.invoice_id
1249 AND aid.invoice_line_number = ail.line_number
1250 AND (aid.accounting_event_id IS NOT NULL
1251 OR NVL(aid.match_status_flag,'N') IN ('A','T')
1252 OR aid.bc_event_id IS NOT NULL
1253 OR NVL(aid.encumbered_flag, 'N') IN ('Y','D','W','X')
1254 ) --This is done for Mexicana Bug7623255 to avoid such Data Fix Condition
1255 )
1256
1257 --commented this condition as this is not required
1258 --summary line should not be allowed to delete if it has frozen distribution
1259 --as checked in above EXISTS hence no further checks needed. bug 10621602
1260 /* AND EXISTS
1261 (SELECT zl.summary_tax_line_id
1262 FROM zx_lines_summary zl
1263 WHERE zl.application_id = 200
1264 AND zl.entity_code = 'AP_INVOICES'
1265 AND zl.event_class_code IN ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
1266 AND zl.trx_id = ail.invoice_id
1267 AND zl.tax_regime_code = ail.tax_regime_code
1268 AND zl.tax = ail.tax
1269 AND zl.tax_status_code = ail.tax_status_code
1270 AND (zl.tax_rate_code = ail.tax_rate_code
1271 OR zl.tax_rate_id = ail.tax_rate_id)
1272 AND (zl.tax_jurisdiction_code = ail.tax_jurisdiction_code
1273 OR zl.tax_jurisdiction_code IS NULL)
1274 AND zl.tax_rate = ail.tax_rate
1275 AND zl.tax_amt = ail.amount
1276 AND NVL(zl.reporting_only_flag, 'N') = 'N'
1277 AND NVL(zl.self_assessed_flag, 'N') = 'N'
1278 AND NVL(zl.cancel_flag, 'N') = NVL(ail.cancelled_flag,'N')
1279 AND zl.summary_tax_line_id <> ail.summary_tax_line_id
1280 ) */
1281
1282 AND rownum = 1;
1283
1284 --Bug 7485573 -- Move the exception block above the if condition.
1285
1286 EXCEPTION
1287 WHEN NO_DATA_FOUND THEN
1288 NULL;
1289
1290 WHEN OTHERS THEN
1291 NULL;
1292 END;
1293
1294 IF l_ap_summary_tax_line_id IS NOT NULL THEN
1295
1296 -------------------------------------------------------------------
1297 l_debug_info := 'Invoice Line Number that causes this failure: '||l_invoice_line_number;
1298 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1299 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1300 END IF;
1301
1302 l_debug_info := 'Summary Tax Line ID for this line: '||l_ap_summary_tax_line_id;
1303 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1304 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1305 END IF;
1306 -------------------------------------------------------------------
1307 /* Bug 9777752
1308 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
1309 FND_MESSAGE.SET_TOKEN('ERROR', 'Summary Tax Line Deleted by EBTax. This would cause orphan distributions.');
1310 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
1311 FND_MESSAGE.SET_TOKEN('PARAMETERS',
1312 ' P_Invoice_Id = '||P_Invoice_Header_Rec.invoice_id||
1313 ' P_Error_Code = '||P_Error_Code||
1314 ' P_Calling_Sequence = '||P_Calling_Sequence);
1315 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
1316 */
1317 FND_MESSAGE.SET_NAME( 'SQLAP', 'AP_SUM_TAX_LINE_DEL' ); -- Bug 9777752
1318
1319 --Bug9395593
1320
1321 --bug10140354
1322 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
1323 APP_EXCEPTION.RAISE_EXCEPTION;
1324 ELSE
1325
1326 insert into ap_errors_gt(invoice_id , message_text) values(P_Invoice_Header_Rec.Invoice_id , 'Summary Tax Line Deleted by EBTax. This would cause orphan distributions.');
1327 RETURN FALSE;
1328 END IF;
1329
1330
1331 --Bug9395593
1332
1333
1334 END IF;
1335
1336
1337 -------------------------------------------------------------------
1338 l_debug_info := 'Get ap_system_parameters data';
1339 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1340 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1341 END IF;
1342 -------------------------------------------------------------------
1343
1344 BEGIN
1345 SELECT
1346 approval_workflow_flag,
1347 awt_include_tax_amt,
1348 disc_is_inv_less_tax_flag,
1349 base_currency_code,
1350 combined_filing_flag,
1351 income_tax_region_flag,
1352 income_tax_region
1353 INTO
1354 l_wfapproval_flag,
1355 l_awt_include_tax_amt,
1356 l_disc_is_inv_less_tax_flag,
1357 l_base_currency_code,
1358 l_combined_filing_flag,
1359 l_income_tax_region_flag,
1360 l_income_tax_region
1361 FROM ap_system_parameters_all
1362 WHERE org_id = P_Invoice_Header_Rec.org_id;
1363 END;
1364
1365 -------------------------------------------------------------------
1366 l_debug_info := 'Update existing exclusive tax lines';
1367 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1368 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1369 END IF;
1370 -------------------------------------------------------------------
1371 BEGIN
1372 UPDATE ap_invoice_lines_all ail
1373 SET
1374 (-- Bug 10157751 ail.description,
1375 ail.amount,
1376 ail.base_amount,
1377 ail.discarded_flag, --Bug9346774 Changed From Canceled_flag to discarded_flag
1378 ail.last_updated_by,
1379 ail.last_update_login,
1380 ail.last_update_date,
1381 ail.tax_regime_code,
1382 ail.tax,
1383 ail.tax_jurisdiction_code,
1384 ail.tax_status_code,
1385 ail.tax_rate_id,
1386 ail.tax_rate_code,
1387 ail.tax_rate,
1388 ail.generate_dists) =
1389 (
1390 SELECT
1391 /* Bug 10157751
1392 DECODE( ail.line_source,
1393 'MANUAL LINE ENTRY', ail.description,
1394 'IMPORTED' , ail.description,
1395 zls.tax_regime_code||' - '||zls.tax ), -- description : Bug 9383712 - Added DECODE
1396 */
1397 zls.tax_amt, -- amount
1398 zls.tax_amt_funcl_curr, -- base_amount
1399 zls.cancel_flag, -- cancelled_flag
1400 l_user_id, -- last_updated_by
1401 l_login_id, -- last_update_login
1402 sysdate, -- last_update_date /*Bug10101457: replaced l_sysdate with sysdate*/
1403 zls.tax_regime_code, -- tax_regime_code
1404 zls.tax, -- tax
1405 zls.tax_jurisdiction_code, -- tax_jurisdiction_code
1406 zls.tax_status_code, -- tax_status_code
1407 zls.tax_rate_id, -- tax_rate_id
1408 zls.tax_rate_code, -- tax_rate_code
1409 zls.tax_rate, -- tax_rate
1410 DECODE(ail.generate_dists,'D','D','Y') -- generate_dists bug 5460342
1411 FROM zx_lines_summary zls
1412 WHERE zls.summary_tax_line_id = ail.summary_tax_line_id
1413 AND nvl(zls.reporting_only_flag, 'N') = 'N'
1414 )
1415 WHERE ail.invoice_id = P_Invoice_Header_Rec.invoice_id
1416 AND ail.line_type_lookup_code = 'TAX'
1417 AND EXISTS
1418 (SELECT ls.summary_tax_line_id
1419 FROM zx_lines_summary ls
1420 WHERE ls.summary_tax_line_id = ail.summary_tax_line_id
1421 AND ls.trx_id = ail.invoice_id
1422 AND NVL(ls.tax_amt_included_flag, 'N') = 'N'
1423 AND NVL(ls.self_assessed_flag, 'N') = 'N'
1424 AND NVL(ls.reporting_only_flag, 'N') = 'N');
1425
1426 EXCEPTION
1427 WHEN NO_DATA_FOUND THEN
1428 NULL;
1429
1430 WHEN OTHERS THEN
1431 IF (SQLCODE <> -20001) THEN
1432 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
1433 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
1434 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
1435 FND_MESSAGE.SET_TOKEN('PARAMETERS',
1436 ' P_Invoice_Id = '||P_Invoice_Header_Rec.Invoice_Id||
1437 ' P_Error_Code = '||P_Error_Code||
1438 ' P_Calling_Sequence = '||P_Calling_Sequence);
1439 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
1440 END IF;
1441
1442 APP_EXCEPTION.RAISE_EXCEPTION;
1443 END;
1444
1445 /* Start for bug 5943074-- updating summary_tax_line_id of ap_invoice_lines_all based on zx_lines
1446 for manual tax lines and tax only lines so that we do not delete and regenerate the tax lines . */
1447 -------------------------------------------------------------------
1448 l_debug_info := 'Update summary tax line id for manual tax lines';
1449 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1450 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1451 END IF;
1452 -------------------------------------------------------------------
1453 BEGIN
1454
1455 UPDATE ap_invoice_lines_all ail
1456 SET ail.summary_tax_line_id = (SELECT zl.summary_tax_line_id
1457 FROM zx_lines zl
1458 WHERE zl.application_id = 200
1459 AND zl.entity_code = 'AP_INVOICES'
1460 AND zl.event_class_code IN
1461 ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
1462 AND zl.trx_id = ail.invoice_id
1463 AND zl.tax_regime_code = ail.tax_regime_code
1464 AND zl.tax = ail.tax
1465 AND zl.tax_status_code = ail.tax_status_code
1466 AND (zl.tax_rate_code = ail.tax_rate_code OR zl.tax_rate_id = ail.tax_rate_id)
1467 AND (zl.tax_jurisdiction_code = ail.tax_jurisdiction_code OR zl.tax_jurisdiction_code IS NULL)
1468 AND zl.tax_rate = ail.tax_rate
1469 AND zl.manually_entered_flag = 'Y'
1470 AND nvl(zl.reporting_only_flag, 'N') = 'N'
1471 AND nvl(zl.self_assessed_flag, 'N') = 'N'
1472 AND nvl(zl.cancel_flag, 'N') = nvl(ail.cancelled_flag,'N')
1473 AND zl.proration_code = 'REGULAR_IMPORT' --Bug8524286
1474 AND rownum = 1 )
1475 WHERE ail.invoice_id = P_Invoice_Header_Rec.invoice_id
1476 AND ail.line_type_lookup_code = 'TAX'
1477 AND ail.line_source in ('MANUAL LINE ENTRY','IMPORTED')
1478 AND ail.summary_tax_line_id IS NULL
1479 AND NOT EXISTS
1480 (SELECT 1
1481 FROM ap_invoice_lines_all ail2
1482 WHERE ail2.invoice_id = ail.invoice_id
1483 AND ail2.line_number <> ail.line_number
1484 AND ail2.tax_regime_code = ail.tax_regime_code
1485 AND ail2.tax = ail.tax
1486 AND ail2.tax_status_code = ail.tax_status_code
1487 AND (ail2.tax_rate_code = ail.tax_rate_code OR ail2.tax_rate_id = ail.tax_rate_id)
1488 AND (ail2.tax_jurisdiction_code = ail.tax_jurisdiction_code OR ail2.tax_jurisdiction_code IS NULL)
1489 AND ail2.tax_rate = ail.tax_rate
1490 AND ail2.line_type_lookup_code = 'TAX'
1491 AND ail2.line_source in ('MANUAL LINE ENTRY','IMPORTED')
1492 AND NVL(ail.prorate_across_all_items,'N') = NVL(ail2.prorate_across_all_items,'N')); --Bug7331216 --Bug9113046
1493
1494 EXCEPTION
1495 WHEN NO_DATA_FOUND THEN
1496 NULL;
1497
1498 WHEN OTHERS THEN
1499 IF (SQLCODE <> -20001) THEN
1500 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
1501 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
1502 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
1503 FND_MESSAGE.SET_TOKEN('PARAMETERS',' P_Invoice_Id = '||P_Invoice_Header_Rec.Invoice_Id
1504 ||' P_Error_Code = '||P_Error_Code
1505 ||' P_Calling_Sequence = '||P_Calling_Sequence);
1506 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
1507 END IF;
1508 APP_EXCEPTION.RAISE_EXCEPTION;
1509 END;
1510 /* End for bug 5943074 */
1511
1512 -------------------------------------------------------------------
1513 l_debug_info := 'Delete exclusive tax lines if required';
1514 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1515 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1516 END IF;
1517 -------------------------------------------------------------------
1518 BEGIN
1519 DELETE ap_invoice_lines_all ail
1520 WHERE ail.invoice_id = P_Invoice_Header_Rec.invoice_id
1521 AND ail.line_type_lookup_code = 'TAX'
1522 AND NOT EXISTS (SELECT ls.summary_tax_line_id
1523 FROM zx_lines_summary ls
1524 WHERE ls.summary_tax_line_id = ail.summary_tax_line_id
1525 AND ls.trx_id = ail.invoice_id
1526 AND NVL(ls.tax_amt_included_flag, 'N') = 'N'
1527 AND NVL(ls.self_assessed_flag, 'N') = 'N'
1528 AND NVL(ls.reporting_only_flag, 'N') = 'N');
1529 -- Bug 7260087 Starts
1530 -- When ever invoice line is deleted corresponding
1531 -- allocations should be deleted.
1532 DELETE FROM ap_allocation_rules ar
1533 WHERE ar.invoice_id = p_invoice_header_rec.invoice_id
1534 AND NOT EXISTS
1535 (SELECT 'y'
1536 FROM ap_invoice_lines_all l
1537 WHERE l.invoice_id = ar.invoice_id
1538 AND l.line_number = ar.chrg_invoice_line_number);
1539
1540 DELETE FROM ap_allocation_rule_lines arl
1541 WHERE arl.invoice_id = p_invoice_header_rec.invoice_id
1542 AND NOT EXISTS
1543 (SELECT 'y'
1544 FROM ap_invoice_lines_all l
1545 WHERE l.invoice_id = arl.invoice_id
1546 AND l.line_number = arl.chrg_invoice_line_number);
1547 -- Bug 7260087 ends
1548
1549 EXCEPTION
1550 WHEN NO_DATA_FOUND THEN
1551 NULL;
1552
1553 WHEN OTHERS THEN
1554 IF (SQLCODE <> -20001) THEN
1555 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
1556 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
1557 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
1558 FND_MESSAGE.SET_TOKEN('PARAMETERS',
1559 ' P_Invoice_Id = '||P_Invoice_Header_Rec.invoice_id||
1560 ' P_Error_Code = '||P_Error_Code||
1561 ' P_Calling_Sequence = '||P_Calling_Sequence);
1562 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
1563 END IF;
1564
1565 APP_EXCEPTION.RAISE_EXCEPTION;
1566 END;
1567
1568 -------------------------------------------------------------------
1569 l_debug_info := 'Get open gl_date';
1570 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1571 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1572 END IF;
1573 -------------------------------------------------------------------
1574
1575 l_period_name := AP_UTILITIES_PKG.get_current_gl_date (P_Invoice_Header_Rec.gl_date, P_Invoice_header_Rec.org_id);
1576
1577 IF (l_period_name IS NULL) THEN
1578 AP_UTILITIES_PKG.get_open_gl_date(
1579 P_Date => P_Invoice_Header_Rec.gl_date,
1580 P_Period_Name => l_period_name,
1581 P_GL_Date => l_gl_date,
1582 P_Org_Id => P_Invoice_Header_Rec.org_id);
1583 ELSE
1584 l_gl_date := P_Invoice_Header_Rec.gl_date;
1585 END IF;
1586
1587 IF NVL(l_wfapproval_flag,'N') = 'Y' THEN
1588 l_wfapproval_status := 'REQUIRED';
1589 ELSE
1590 l_wfapproval_status := 'NOT REQUIRED';
1591 END IF;
1592
1593 -------------------------------------------------------------------
1594 l_debug_info := 'Insert exclusive tax lines';
1595 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1596 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1597 END IF;
1598 -------------------------------------------------------------------
1599 BEGIN
1600 INSERT INTO ap_invoice_lines_all (
1601 invoice_id,
1602 line_number,
1603 line_type_lookup_code,
1604 requester_id,
1605 description,
1606 line_source,
1607 org_id,
1608 line_group_number,
1609 inventory_item_id,
1610 item_description,
1611 serial_number,
1612 manufacturer,
1613 model_number,
1614 warranty_number,
1615 generate_dists,
1616 match_type,
1617 distribution_set_id,
1618 account_segment,
1619 balancing_segment,
1620 cost_center_segment,
1621 overlay_dist_code_concat,
1622 default_dist_ccid,
1623 prorate_across_all_items,
1624 accounting_date,
1625 period_name,
1626 deferred_acctg_flag,
1627 def_acctg_start_date,
1628 def_acctg_end_date,
1629 def_acctg_number_of_periods,
1630 def_acctg_period_type,
1631 set_of_books_id,
1632 amount,
1633 base_amount,
1634 rounding_amt,
1635 quantity_invoiced,
1636 unit_meas_lookup_code,
1637 unit_price,
1638 wfapproval_status,
1639 discarded_flag,
1640 original_amount,
1641 original_base_amount,
1642 original_rounding_amt,
1643 cancelled_flag,
1644 income_tax_region,
1645 type_1099,
1646 stat_amount,
1647 prepay_invoice_id,
1648 prepay_line_number,
1649 invoice_includes_prepay_flag,
1650 corrected_inv_id,
1651 corrected_line_number,
1652 po_header_id,
1653 po_line_id,
1654 po_release_id,
1655 po_line_location_id,
1656 po_distribution_id,
1657 rcv_transaction_id,
1658 final_match_flag,
1659 assets_tracking_flag,
1660 asset_book_type_code,
1661 asset_category_id,
1662 project_id,
1663 task_id,
1664 expenditure_type,
1665 expenditure_item_date,
1666 expenditure_organization_id,
1667 pa_quantity,
1668 pa_cc_ar_invoice_id,
1669 pa_cc_ar_invoice_line_num,
1670 pa_cc_processed_code,
1671 award_id,
1672 awt_group_id,
1673 reference_1,
1674 reference_2,
1675 receipt_verified_flag,
1676 receipt_required_flag,
1677 receipt_missing_flag,
1678 justification,
1679 expense_group,
1680 start_expense_date,
1681 end_expense_date,
1682 receipt_currency_code,
1683 receipt_conversion_rate,
1684 receipt_currency_amount,
1685 daily_amount,
1686 web_parameter_id,
1687 adjustment_reason,
1688 merchant_document_number,
1689 merchant_name,
1690 merchant_reference,
1691 merchant_tax_reg_number,
1692 merchant_taxpayer_id,
1693 country_of_supply,
1694 credit_card_trx_id,
1695 company_prepaid_invoice_id,
1696 cc_reversal_flag,
1697 creation_date,
1698 created_by,
1699 last_updated_by,
1700 last_update_date,
1701 last_update_login,
1702 program_application_id,
1703 program_id,
1704 program_update_date,
1705 request_id,
1706 attribute_category,
1707 attribute1,
1708 attribute2,
1709 attribute3,
1710 attribute4,
1711 attribute5,
1712 attribute6,
1713 attribute7,
1714 attribute8,
1715 attribute9,
1716 attribute10,
1717 attribute11,
1718 attribute12,
1719 attribute13,
1720 attribute14,
1721 attribute15,
1722 global_attribute_category,
1723 global_attribute1,
1724 global_attribute2,
1725 global_attribute3,
1726 global_attribute4,
1727 global_attribute5,
1728 global_attribute6,
1729 global_attribute7,
1730 global_attribute8,
1731 global_attribute9,
1732 global_attribute10,
1733 global_attribute11,
1734 global_attribute12,
1735 global_attribute13,
1736 global_attribute14,
1737 global_attribute15,
1738 global_attribute16,
1739 global_attribute17,
1740 global_attribute18,
1741 global_attribute19,
1742 global_attribute20,
1743 control_amount,
1744 assessable_value,
1745 total_rec_tax_amount,
1746 total_nrec_tax_amount,
1747 total_rec_tax_amt_funcl_curr,
1748 total_nrec_tax_amt_funcl_curr,
1749 included_tax_amount,
1750 primary_intended_use,
1751 ship_to_location_id,
1752 product_type,
1753 product_category,
1754 product_fisc_classification,
1755 user_defined_fisc_class,
1756 trx_business_category,
1757 summary_tax_line_id,
1758 tax_regime_code,
1759 tax,
1760 tax_jurisdiction_code,
1761 tax_status_code,
1762 tax_rate_id,
1763 tax_rate_code,
1764 tax_rate,
1765 tax_code_id,
1766 pay_awt_group_id) --Bug8345264
1767 SELECT
1768 P_Invoice_Header_Rec.Invoice_Id, -- invoice_id
1769 (SELECT NVL(MAX(ail2.line_number),0)
1770 FROM ap_invoice_lines_all ail2
1771 WHERE ail2.invoice_id = zls.trx_id) + ROWNUM, -- line_number
1772 'TAX', -- line_type_lookup_code
1773 null, -- requester_id
1774 NVL( AI.description, zls.tax_regime_code||' - '||zls.tax ), -- description Bug 10157751
1775 'ETAX', -- line_source
1776 P_Invoice_Header_Rec.org_id, -- org_id
1777 null, -- line_group_number
1778 null, -- inventory_item_id
1779 null, -- item_description
1780 null, -- serial_number
1781 null, -- manufacturer
1782 null, -- model_number
1783 null, -- warranty_number
1784 DECODE(NVL(zls.tax_only_line_flag, 'N'),
1785 'Y', 'D',
1786 'Y'), -- generate_dists
1787 DECODE(zls.applied_to_trx_id,
1788 null, 'NOT_MATCHED',
1789 'OTHER_TO_RECEIPT'), -- match_type
1790 null, -- distribution_set_id
1791 null, -- account_segment
1792 null, -- balancing_segment
1793 null, -- cost_center_segment
1794 null, -- overlay_dist_code_concat
1795 null, -- default_dist_ccid
1796 'N', -- prorate_across_all_items
1797 l_gl_date, -- accounting_date
1798 DECODE(NVL(zls.tax_only_line_flag, 'N'),
1799 'N', DECODE(zls.applied_to_trx_id,
1800 null, null, l_period_name),
1801 l_period_name), -- period_name
1802 'N', -- deferred_acctg_flag
1803 null, -- def_acctg_start_date
1804 null, -- def_acctg_end_date
1805 null, -- def_acctg_number_of_periods
1806 null, -- def_acctg_period_type
1807 P_Invoice_Header_Rec.set_of_books_id, -- set_of_books_id
1808 zls.tax_amt, -- amount
1809 DECODE(P_Invoice_Header_Rec.invoice_currency_code,
1810 l_base_currency_code, NULL,
1811 zls.tax_amt_funcl_curr), -- base_amount
1812 null, -- rounding_amt
1813 null, -- quantity_invoiced
1814 null, -- unit_meas_lookup_code
1815 null, -- unit_price
1816 l_wfapproval_status, -- wfapproval_status
1817 'N', -- discarded_flag
1818 null, -- original_amount
1819 null, -- original_base_amount
1820 null, -- original_rounding_amt
1821 'N', -- cancelled_flag
1822 DECODE(ap.type_1099,
1823 '','',
1824 DECODE(l_combined_filing_flag,
1825 'N', '',
1826 DECODE(l_income_tax_region_flag,
1827 'Y', aps.state,
1828 l_income_tax_region))), -- income_tax_region
1829 ap.type_1099, -- type_1099
1830 null, -- stat_amount
1831 zls.applied_from_trx_id, -- prepay_invoice_id
1832 zls.applied_from_line_id, -- prepay_line_number
1833 prepay.invoice_includes_prepay_flag, -- invoice_includes_prepay_flag
1834 zls.adjusted_doc_trx_id, -- corrected_inv_id
1835 -- zls.adjusted_doc_line_id, -- corrected_line_number
1836 null, -- corrected_line_number
1837 null, -- po_header_id
1838 null, -- po_line_id
1839 null, -- po_release_id
1840 null, -- po_line_location_id
1841 null, -- po_distribution_id
1842 zls.applied_to_trx_id, -- rcv_transaction_id
1843 'N', -- final_match_flag
1844 null, -- assets_tracking_flag
1845 null, -- asset_book_type_code
1846 null, -- asset_category_id
1847 null, -- project_id
1848 null, -- task_id
1849 null, -- expenditure_type
1850 null, -- expenditure_item_date
1851 null, -- expenditure_organization_id
1852 null, -- pa_quantity
1853 null, -- pa_cc_ar_invoice_id
1854 null, -- pa_cc_ar_invoice_line_num
1855 null, -- pa_cc_processed_code
1856 null, -- award_id
1857 null, -- awt_group_id -- bug9035846
1858 /* DECODE(l_awt_include_tax_amt,
1859 'N', null,
1860 DECODE(zls.applied_from_trx_id,
1861 null, P_Invoice_Header_Rec.awt_group_id,
1862 prepay.awt_group_id)), -- awt_group_id */
1863 null, -- reference_1
1864 null, -- reference_2
1865 null, -- receipt_verified_flag
1866 null, -- receipt_required_flag
1867 null, -- receipt_missing_flag
1868 null, -- justification
1869 null, -- expense_group
1870 null, -- start_expense_date
1871 null, -- end_expense_date
1872 null, -- receipt_currency_code
1873 null, -- receipt_conversion_rate
1874 null, -- receipt_currency_amount
1875 null, -- daily_amount
1876 null, -- web_parameter_id
1877 null, -- adjustment_reason
1878 null, -- merchant_document_number
1879 null, -- merchant_name
1880 null, -- merchant_reference
1881 null, -- merchant_tax_reg_number
1882 null, -- merchant_taxpayer_id
1883 null, -- country_of_supply
1884 null, -- credit_card_trx_id
1885 null, -- company_prepaid_invoice_id
1886 null, -- cc_reversal_flag
1887 sysdate, -- creation_date /*Bug10101457: replaced l_sysdate with sysdate*/
1888 l_user_id, -- created_by
1889 l_user_id, -- last_updated_by
1890 sysdate, -- last_update_date /*Bug10101457: replaced l_sysdate with sysdate*/
1891 l_login_id, -- last_update_login
1892 null, -- program_application_id
1893 null, -- program_id
1894 null, -- program_update_date
1895 null, -- request_id
1896 zls.attribute_category, -- attribute_category
1897 zls.attribute1, -- attribute1
1898 zls.attribute2, -- attribute2
1899 zls.attribute3, -- attribute3
1900 zls.attribute4, -- attribute4
1901 zls.attribute5, -- attribute5
1902 zls.attribute6, -- attribute6
1903 zls.attribute7, -- attribute7
1904 zls.attribute8, -- attribute8
1905 zls.attribute9, -- attribute9
1906 zls.attribute10, -- attribute10
1907 zls.attribute11, -- attribute11
1908 zls.attribute12, -- attribute12
1909 zls.attribute13, -- attribute13
1910 zls.attribute14, -- attribute14
1911 zls.attribute15, -- attribute15
1912 zls.global_attribute_category, -- global_attribute_category
1913 zls.global_attribute1, -- global_attribute1
1914 zls.global_attribute2, -- global_attribute2
1915 zls.global_attribute3, -- global_attribute3
1916 zls.global_attribute4, -- global_attribute4
1917 zls.global_attribute5, -- global_attribute5
1918 zls.global_attribute6, -- global_attribute6
1919 zls.global_attribute7, -- global_attribute7
1920 zls.global_attribute8, -- global_attribute8
1921 zls.global_attribute9, -- global_attribute9
1922 zls.global_attribute10, -- global_attribute10
1923 zls.global_attribute11, -- global_attribute11
1924 zls.global_attribute12, -- global_attribute12
1925 zls.global_attribute13, -- global_attribute13
1926 zls.global_attribute14, -- global_attribute14
1927 zls.global_attribute15, -- global_attribute15
1928 zls.global_attribute16, -- global_attribute16
1929 zls.global_attribute17, -- global_attribute17
1930 zls.global_attribute18, -- global_attribute18
1931 zls.global_attribute19, -- global_attribute19
1932 zls.global_attribute20, -- global_attribute20
1933 null, -- control_amount
1934 null, -- assessable_value
1935 null, -- total_rec_tax_amount
1936 null, -- total_nrec_tax_amount
1937 null, -- total_rec_tax_amt_funcl_curr
1938 null, -- total_nrec_tax_amt_funcl_curr
1939 null, -- included_tax_amount
1940 null, -- primary_intended_use
1941 null, -- ship_to_location_id
1942 null, -- product_type
1943 null, -- product_category
1944 null, -- product_fisc_classification
1945 null, -- user_defined_fisc_class
1946 null, -- trx_business_category
1947 zls.summary_tax_line_id, -- summary_tax_line_id
1948 zls.tax_regime_code, -- tax_regime_code
1949 zls.tax, -- tax
1950 zls.tax_jurisdiction_code, -- tax_jurisdiction_code
1951 zls.tax_status_code, -- tax_status_code
1952 zls.tax_rate_id, -- tax_rate_id
1953 zls.tax_rate_code, -- tax_rate_code
1954 zls.tax_rate, -- tax_rate
1955 null, -- tax_code_id
1956 null -- pay_awt_group_id -- bug9035846
1957 /* DECODE(l_awt_include_tax_amt,
1958 'N', null,
1959 DECODE(zls.applied_from_trx_id,
1960 null, P_Invoice_Header_Rec.pay_awt_group_id,
1961 prepay.pay_awt_group_id)) -- pay_awt_group_id Bug8345264 */
1962 FROM ap_invoices_all ai,
1963 ap_suppliers ap,
1964 ap_supplier_sites_all aps,
1965 zx_lines_summary zls,
1966 ap_invoice_lines_all prepay
1967 WHERE ai.invoice_id = p_invoice_header_rec.invoice_id
1968 AND ai.vendor_id = ap.vendor_id
1969 AND ai.vendor_site_id = aps.vendor_site_id
1970 AND zls.application_id = 200
1971 AND zls.entity_code = 'AP_INVOICES'
1972 AND zls.event_class_code IN ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
1973 AND zls.trx_id = ai.invoice_id
1974 AND NVL(zls.tax_amt_included_flag, 'N') = 'N'
1975 AND NVL(zls.self_assessed_flag, 'N') = 'N'
1976 AND NVL(zls.reporting_only_flag, 'N') = 'N'
1977 AND zls.applied_from_trx_id = prepay.invoice_id(+)
1978 AND zls.applied_from_line_id = prepay.line_number(+)
1979 AND NOT EXISTS (SELECT il.summary_tax_line_id
1980 FROM ap_invoice_lines_all il
1981 WHERE il.invoice_id = ai.invoice_id
1982 AND il.summary_tax_line_id = zls.summary_tax_line_id)
1983 AND EXISTS
1984 (SELECT 'Recoupment Exists'
1985 FROM ZX_LINES ZL
1986 WHERE ZL.application_id = ZLS.application_id
1987 AND ZL.entity_code = ZLS.entity_code
1988 AND ZL.event_class_code = ZLS.event_class_code
1989 AND ZL.trx_id = ZLS.trx_id
1990 AND ((nvl(ZL.tax_only_line_flag,'N') <> 'Y'
1991 and sign(ZL.TRX_LINE_ID) <> -1)
1992 OR nvl(ZL.tax_only_line_flag,'N') = 'Y')
1993 AND ZL.SUMMARY_TAX_LINE_ID = ZLS.SUMMARY_TAX_LINE_ID);
1994
1995 EXCEPTION
1996 WHEN NO_DATA_FOUND THEN
1997 NULL;
1998
1999 WHEN OTHERS THEN
2000 IF (SQLCODE <> -20001) THEN
2001 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
2002 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
2003 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
2004 FND_MESSAGE.SET_TOKEN('PARAMETERS',
2005 ' P_Invoice_Id = '||P_Invoice_Header_Rec.invoice_id||
2006 ' P_Error_Code = '||P_Error_Code||
2007 ' P_Calling_Sequence = '||P_Calling_Sequence);
2008 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
2009 END IF;
2010
2011 APP_EXCEPTION.RAISE_EXCEPTION;
2012 END;
2013
2014 -------------------------------------------------------------------
2015 l_debug_info := 'Update Inclusive tax amount';
2016 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2017 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
2018 END IF;
2019 -------------------------------------------------------------------
2020 BEGIN
2021 --bug 6931461
2022 UPDATE ap_invoice_lines_all ail
2023 SET ail.included_tax_amount =
2024 (SELECT /*+ index(ZL ZX_LINES_U1) */SUM(NVL(zl.tax_amt, 0))
2025 FROM zx_lines zl
2026 WHERE zl.application_id = 200
2027 AND zl.entity_code = 'AP_INVOICES'
2028 AND zl.event_class_code IN ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
2029 AND zl.trx_id = ail.invoice_id
2030 AND zl.trx_line_id = ail.line_number
2031 AND NVL(zl.self_assessed_flag, 'N') = 'N'
2032 AND NVL(zl.reporting_only_flag, 'N') = 'N'
2033 AND NVL(zl.tax_amt_included_flag, 'N') = 'Y')
2034 WHERE ail.invoice_id = P_Invoice_Header_Rec.invoice_id
2035 AND ail.line_type_lookup_code NOT IN ('TAX', 'AWT');
2036
2037 EXCEPTION
2038 WHEN NO_DATA_FOUND THEN
2039 NULL;
2040
2041 WHEN OTHERS THEN
2042 IF (SQLCODE <> -20001) THEN
2043 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
2044 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
2045 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
2046 FND_MESSAGE.SET_TOKEN('PARAMETERS',
2047 ' P_Invoice_Id = '||P_Invoice_Header_Rec.invoice_id||
2048 ' P_Error_Code = '||P_Error_Code||
2049 ' P_Calling_Sequence = '||P_Calling_Sequence);
2050 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
2051 END IF;
2052
2053 APP_EXCEPTION.RAISE_EXCEPTION;
2054 END;
2055
2056 --------------------------------------------------
2057 l_debug_info := 'Create Tax Allocations';
2058 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2059 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
2060 END IF;
2061 --------------------------------------------------
2062 BEGIN
2063 OPEN c_item_line(P_Invoice_Header_Rec.invoice_id);
2064 LOOP
2065 FETCH c_item_line
2066 INTO l_item_line;
2067 EXIT WHEN c_item_line%notfound;
2068
2069 IF NOT AP_ALLOCATION_RULES_PKG.insert_tax_allocations (
2070 P_Invoice_Header_Rec.invoice_id,
2071 L_Item_Line.line_number,
2072 P_error_code ) THEN
2073 NULL;
2074 END IF;
2075 END LOOP;
2076 CLOSE c_item_line;
2077 EXCEPTION
2078 WHEN OTHERS THEN
2079 IF (SQLCODE <> -20001) THEN
2080 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
2081 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
2082 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
2083 FND_MESSAGE.SET_TOKEN('PARAMETERS',
2084 ' P_Invoice_Id = '||P_Invoice_Header_Rec.invoice_id||
2085 ' P_Error_Code = '||P_Error_Code||
2086 ' P_Calling_Sequence = '||P_Calling_Sequence);
2087 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
2088 END IF;
2089
2090 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2091 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,sqlerrm);
2092 END IF;
2093
2094 IF ( c_item_line%ISOPEN ) THEN
2095 CLOSE c_item_line;
2096 END IF;
2097
2098 APP_EXCEPTION.RAISE_EXCEPTION;
2099 END;
2100
2101 -------------------------------------------------------------------
2102 l_debug_info := 'Update total_tax_amount and self_assessed tax';
2103 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2104 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
2105 END IF;
2106 -------------------------------------------------------------------
2107
2108 /*Bug 8638881 added CASE in the below SQL to consider the case of invoice includes prepay*/
2109 BEGIN
2110 UPDATE ap_invoices_all ai
2111 SET (ai.total_tax_amount,
2112 ai.self_assessed_tax_amount) =
2113 (SELECT SUM(DECODE(NVL(zls.self_assessed_flag, 'N'),
2114 'N', case when exists (SELECT 'Prepay App Exists'
2115 FROM ap_invoice_lines_all prepay
2116 WHERE prepay.invoice_id = zls.trx_id
2117 AND prepay.line_type_lookup_code = 'PREPAY'
2118 AND prepay.prepay_invoice_id = zls.applied_from_trx_id
2119 AND prepay.prepay_line_number = zls.applied_from_line_id
2120 AND prepay.invoice_includes_prepay_flag = 'Y'
2121 AND (prepay.discarded_flag is null
2122 or prepay.discarded_flag = 'N')) THEN
2123 0
2124 ELSE NVL(zls.tax_amt, 0) end,
2125 0)),
2126 SUM(DECODE(NVL(zls.self_assessed_flag, 'N'),
2127 'Y', NVL(zls.tax_amt, 0),
2128 0))
2129 FROM zx_lines_summary zls
2130 WHERE zls.application_id = 200
2131 AND zls.entity_code = 'AP_INVOICES'
2132 AND zls.event_class_code IN
2133 ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
2134 AND zls.trx_id = ai.invoice_id
2135 AND NVL(zls.reporting_only_flag, 'N') = 'N')
2136 WHERE ai.invoice_id = P_Invoice_Header_Rec.invoice_id
2137 RETURNING ai.total_tax_amount, ai.self_assessed_tax_amount
2138 INTO l_total_tax_amount, l_self_assessed_tax_amt;
2139
2140 --Bug#16022947. Introduced below UPDATE to consider
2141 --Retro Tax amounts which will not be in ZLS tables.
2142
2143 UPDATE ap_invoices_all ai
2144 SET ai.total_tax_amount = (nvl(ai.total_tax_amount,0) +
2145 (SELECT NVL(sum(NVL(ail.amount,0)),0)
2146 FROM ap_invoice_lines_all ail
2147 WHERE ail.invoice_id = ai.invoice_id
2148 AND line_type_lookup_code ='RETROTAX'))
2149
2150 WHERE ai.invoice_id = P_Invoice_Header_Rec.invoice_id
2151 RETURNING ai.total_tax_amount
2152 INTO l_total_tax_amount;
2153
2154 EXCEPTION
2155 WHEN NO_DATA_FOUND THEN
2156 NULL;
2157
2158 WHEN OTHERS THEN
2159 IF (SQLCODE <> -20001) THEN
2160 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
2161 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
2162 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
2163 FND_MESSAGE.SET_TOKEN('PARAMETERS',
2164 ' P_Invoice_Id = '||P_Invoice_Header_Rec.invoice_id||
2165 ' P_Error_Code = '||P_Error_Code||
2166 ' P_Calling_Sequence = '||P_Calling_Sequence);
2167 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
2168 END IF;
2169
2170 APP_EXCEPTION.RAISE_EXCEPTION;
2171 END;
2172
2173 -----------------------------------------------------------------
2174 l_debug_info := 'Update tax_already_calculated_flag';
2175 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2176 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
2177 END IF;
2178 -----------------------------------------------------------------
2179 BEGIN
2180 UPDATE ap_invoice_lines_all ail
2181 SET ail.tax_already_calculated_flag = 'Y'
2182 WHERE ail.invoice_id = P_invoice_header_rec.invoice_id
2183 AND ail.line_type_lookup_code NOT IN ('TAX', 'AWT')
2184 AND NVL(ail.tax_already_calculated_flag, 'N') = 'N';
2185
2186 /* Bug 5013526: We will set tax_already_calculated_flag to 'Y' even if tax lines are
2187 not generated. User could change any of the tax determining attributes
2188 on the invoice invoice line and resubmit tax calculation. In this case
2189 we would need to pass event_type as UPDATED.
2190 AND EXISTS
2191 ( SELECT zl.tax_line_id
2192 FROM zx_lines zl
2193 WHERE zl.trx_id = ail.invoice_id
2194 AND zl.trx_line_id = ail.line_number
2195 AND zl.application_id = 200
2196 AND zl.entity_code = 'AP_INVOICES'
2197 AND nvl(zl.reporting_only_flag, 'N') = 'N');
2198 */
2199
2200 EXCEPTION
2201 WHEN no_data_found THEN
2202 null;
2203 END;
2204
2205 -----------------------------------------------------------------
2206 l_debug_info := 'Update Invoice Includes Prepay Flag';
2207 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2208 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
2209 END IF;
2210 -----------------------------------------------------------------
2211
2212 /*added the case for bug 8638881*/
2213 UPDATE ap_invoice_lines_all tax
2214 SET tax.invoice_includes_prepay_flag = CASE WHEN EXISTS (SELECT 'Prepay App Exists'
2215 FROM ap_invoice_lines_all prepay
2216 WHERE prepay.invoice_id = tax.invoice_id
2217 AND prepay.line_type_lookup_code = 'PREPAY'
2218 AND prepay.prepay_invoice_id = tax.prepay_invoice_id
2219 AND prepay.prepay_line_number = tax.prepay_line_number
2220 AND prepay.invoice_includes_prepay_flag = 'Y'
2221 AND (prepay.discarded_flag is null or
2222 prepay.discarded_flag = 'N')) THEN
2223 'Y'
2224 ELSE
2225 'N'
2226 END /*added the case for bug 8638881*/
2227 WHERE tax.invoice_id = P_Invoice_Header_Rec.Invoice_Id
2228 AND tax.line_type_lookup_code = 'TAX'
2229 AND tax.prepay_invoice_id is not null;
2230
2231 RETURN TRUE;
2232
2233 EXCEPTION
2234 WHEN OTHERS THEN
2235 IF (SQLCODE <> -20001) THEN
2236 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
2237 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
2238 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
2239 FND_MESSAGE.SET_TOKEN('PARAMETERS',
2240 ' P_Invoice_Id = ' ||P_Invoice_Header_Rec.Invoice_Id||
2241 ' P_Error_Code = ' ||P_Error_Code||
2242 ' P_Calling_Sequence = '||P_Calling_Sequence);
2243 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
2244 END IF;
2245
2246 APP_EXCEPTION.RAISE_EXCEPTION;
2247
2248 END Return_Tax_Lines;
2249
2250
2251 /*=============================================================================
2252 | FUNCTION - Return_Tax_Distributions()
2253 |
2254 | DESCRIPTION
2255 | This function handles the return of tax distributions. It includes
2256 | creation, update, or delete of existing distributions and TIPV and
2257 | TERV distributions if required.
2258 | It also handles the creation, update or delete of self-assessed
2259 | distributions.
2260 |
2261 | PARAMETERS
2262 | P_Invoice_Header_Rec - Header info
2263 | P_All_Error_Messages - Should API return 1 error message or allow
2264 | calling point to get them from message stack
2265 | P_error_code - Error code to be returned
2266 | P_calling_sequence - Calling sequence
2267 |
2268 | MODIFICATION HISTORY
2269 | DATE Author Action
2270 | 23-OCT-2003 SYIDNER Created
2271 | 05-MAR-2004 SYIDNER Included changes for returning of tax
2272 | distributions related to prepayment
2273 | application distributions (PREPAY)
2274 | In this case only the primary distribution
2275 | should be created for the total value of
2276 | the distribution (same as eTax.) No tax
2277 | variances will be created for PREPAY type
2278 | distributions
2279 *============================================================================*/
2280
2281 FUNCTION Return_Tax_Distributions(
2282 P_Invoice_Header_Rec IN ap_invoices_all%ROWTYPE,
2283 P_All_Error_Messages IN VARCHAR2,
2284 P_Error_Code OUT NOCOPY VARCHAR2,
2285 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
2286 IS
2287
2288 l_debug_info VARCHAR2(2000);
2289 l_curr_calling_sequence VARCHAR2(4000);
2290 l_api_name CONSTANT VARCHAR2(100) := 'RETURN_TAX_DISTRIBUTIONS';
2291
2292 l_dist_ccid_rec zx_api_pub.distccid_det_facts_rec_type;
2293 l_dist_count NUMBER;
2294
2295 --Bug9021265
2296 l_frozen_tax_dist_id NUMBER;
2297 l_frozen_summary_tax_line_id NUMBER;
2298 --Bug9021265
2299
2300 -- This record type is used for ap_invoice_distributions_all and ap_self_assessed_tax_dist_all
2301
2302 TYPE r_upd_tax_dist_info IS RECORD (
2303 accounting_date ap_invoice_distributions_all.accounting_date%TYPE,
2304 dist_code_combination_id ap_invoice_distributions_all.dist_code_combination_id%TYPE,
2305 line_type_lookup_code ap_invoice_distributions_all.line_type_lookup_code%TYPE,
2306 period_name ap_invoice_distributions_all.period_name%TYPE,
2307 amount ap_invoice_distributions_all.amount%TYPE,
2308 base_amount ap_invoice_distributions_all.base_amount%TYPE,
2309 description ap_invoice_distributions_all.description%TYPE,
2310 income_tax_region ap_invoice_distributions_all.income_tax_region%TYPE,
2311 type_1099 ap_invoice_distributions_all.type_1099%TYPE,
2312 attribute1 ap_invoice_distributions_all.attribute1%TYPE,
2313 attribute10 ap_invoice_distributions_all.attribute10%TYPE,
2314 attribute11 ap_invoice_distributions_all.attribute11%TYPE,
2315 attribute12 ap_invoice_distributions_all.attribute12%TYPE,
2316 attribute13 ap_invoice_distributions_all.attribute13%TYPE,
2317 attribute14 ap_invoice_distributions_all.attribute14%TYPE,
2318 attribute15 ap_invoice_distributions_all.attribute15%TYPE,
2319 attribute2 ap_invoice_distributions_all.attribute2%TYPE,
2320 attribute3 ap_invoice_distributions_all.attribute3%TYPE,
2321 attribute4 ap_invoice_distributions_all.attribute4%TYPE,
2322 attribute5 ap_invoice_distributions_all.attribute5%TYPE,
2323 attribute6 ap_invoice_distributions_all.attribute6%TYPE,
2324 attribute7 ap_invoice_distributions_all.attribute7%TYPE,
2325 attribute8 ap_invoice_distributions_all.attribute8%TYPE,
2326 attribute9 ap_invoice_distributions_all.attribute9%TYPE,
2327 attribute_category ap_invoice_distributions_all.attribute_category%TYPE,
2328 expenditure_item_date ap_invoice_distributions_all.expenditure_item_date%TYPE,
2329 expenditure_organization_id ap_invoice_distributions_all.expenditure_organization_id%TYPE,
2330 expenditure_type ap_invoice_distributions_all.expenditure_type%TYPE,
2331 parent_invoice_id ap_invoice_distributions_all.parent_invoice_id%TYPE,
2332 pa_addition_flag ap_invoice_distributions_all.pa_addition_flag%TYPE,
2333 pa_quantity ap_invoice_distributions_all.pa_quantity%TYPE,
2334 project_accounting_context ap_invoice_distributions_all.project_accounting_context%TYPE,
2335 project_id ap_invoice_distributions_all.project_id%TYPE,
2336 task_id ap_invoice_distributions_all.task_id%TYPE,
2337 awt_group_id ap_invoice_distributions_all.awt_group_id%TYPE,
2338 global_attribute_category ap_invoice_distributions_all.global_attribute_category%TYPE,
2339 global_attribute1 ap_invoice_distributions_all.global_attribute1%TYPE,
2340 global_attribute2 ap_invoice_distributions_all.global_attribute2%TYPE,
2341 global_attribute3 ap_invoice_distributions_all.global_attribute3%TYPE,
2342 global_attribute4 ap_invoice_distributions_all.global_attribute4%TYPE,
2343 global_attribute5 ap_invoice_distributions_all.global_attribute5%TYPE,
2344 global_attribute6 ap_invoice_distributions_all.global_attribute6%TYPE,
2345 global_attribute7 ap_invoice_distributions_all.global_attribute7%TYPE,
2346 global_attribute8 ap_invoice_distributions_all.global_attribute8%TYPE,
2347 global_attribute9 ap_invoice_distributions_all.global_attribute9%TYPE,
2348 global_attribute10 ap_invoice_distributions_all.global_attribute10%TYPE,
2349 global_attribute11 ap_invoice_distributions_all.global_attribute11%TYPE,
2350 global_attribute12 ap_invoice_distributions_all.global_attribute12%TYPE,
2351 global_attribute13 ap_invoice_distributions_all.global_attribute13%TYPE,
2352 global_attribute14 ap_invoice_distributions_all.global_attribute14%TYPE,
2353 global_attribute15 ap_invoice_distributions_all.global_attribute15%TYPE,
2354 global_attribute16 ap_invoice_distributions_all.global_attribute16%TYPE,
2355 global_attribute17 ap_invoice_distributions_all.global_attribute17%TYPE,
2356 global_attribute18 ap_invoice_distributions_all.global_attribute18%TYPE,
2357 global_attribute19 ap_invoice_distributions_all.global_attribute19%TYPE,
2358 global_attribute20 ap_invoice_distributions_all.global_attribute20%TYPE,
2359 award_id ap_invoice_distributions_all.award_id%TYPE,
2360 dist_match_type ap_invoice_distributions_all.dist_match_type%TYPE,
2361 rcv_transaction_id ap_invoice_distributions_all.rcv_transaction_id%TYPE,
2362 tax_recoverable_flag ap_invoice_distributions_all.tax_recoverable_flag%TYPE,
2363 cancellation_flag ap_invoice_distributions_all.cancellation_flag%TYPE,
2364 invoice_line_number ap_invoice_distributions_all.invoice_line_number%TYPE,
2365 corrected_invoice_dist_id ap_invoice_distributions_all.corrected_invoice_dist_id%TYPE,
2366 rounding_amt ap_invoice_distributions_all.rounding_amt%TYPE,
2367 charge_applicable_to_dist_id ap_invoice_distributions_all.charge_applicable_to_dist_id%TYPE,
2368 distribution_class ap_invoice_distributions_all.distribution_class%TYPE,
2369 tax_code_id ap_invoice_distributions_all.tax_code_id%TYPE,
2370 detail_tax_dist_id ap_invoice_distributions_all.detail_tax_dist_id%TYPE,
2371 rec_nrec_rate ap_invoice_distributions_all.rec_nrec_rate%TYPE,
2372 recovery_rate_id ap_invoice_distributions_all.recovery_rate_id%TYPE,
2373 recovery_rate_name ap_invoice_distributions_all.recovery_rate_name%TYPE,
2374 recovery_type_code ap_invoice_distributions_all.recovery_type_code%TYPE,
2375 taxable_amount ap_invoice_distributions_all.taxable_amount%TYPE,
2376 taxable_base_amount ap_invoice_distributions_all.taxable_base_amount%TYPE,
2377 summary_tax_line_id ap_invoice_distributions_all.summary_tax_line_id%TYPE,
2378 extra_po_erv ap_invoice_distributions_all.extra_po_erv%TYPE ,
2379 prepay_tax_diff_amount ap_invoice_distributions_all.prepay_tax_diff_amount%TYPE,
2380 invoice_distribution_id ap_invoice_distributions_all.invoice_distribution_id%TYPE,
2381 pay_awt_group_id ap_invoice_distributions_all.pay_awt_group_id%TYPE, --Bug8345264
2382 account_source_tax_rate_id zx_rec_nrec_dist.account_source_tax_rate_id%TYPE);
2383
2384
2385 TYPE ins_tax_dist_type IS TABLE OF r_ins_tax_dist_info;
2386 TYPE upd_tax_dist_type IS TABLE OF r_upd_tax_dist_info;
2387 TYPE del_tax_dist_type IS TABLE OF ap_invoice_distributions_all.invoice_distribution_id%TYPE;
2388
2389 l_inv_dist_ins ins_tax_dist_type;
2390 l_inv_self_ins ins_tax_dist_type;
2391
2392 l_inv_dist_upd upd_tax_dist_type;
2393 l_inv_self_upd upd_tax_dist_type;
2394
2395 l_inv_dist_del del_tax_dist_type;
2396 l_inv_self_del del_tax_dist_type;
2397
2398 -- bug10140354 begin
2399
2400 cursor frozen_dist_del IS
2401 SELECT /*+ leading(GT) index(GT ZX_TRX_HEADERS_GT_U1) cardinality(GT, 1) use_nl(AID) */ -- 9485828
2402 detail_tax_dist_id,aid.summary_tax_line_id , invoice_id
2403 FROM ap_invoice_distributions_all aid,
2404 zx_trx_headers_gt gt
2405 WHERE aid.line_type_lookup_code IN ('NONREC_TAX','REC_TAX','TRV','TERV','TIPV')
2406 AND (aid.accounting_event_id IS NOT NULL OR
2407 NVL(aid.match_status_flag,'N') IN ('A','T') OR
2408 NVL(aid.posted_flag,'N') ='Y' OR
2409 NVL(aid.encumbered_flag, 'N') IN ('Y','D','W','X'))
2410 AND gt.application_id = AP_ETAX_PKG.AP_APPLICATION_ID
2411 AND gt.entity_code = AP_ETAX_PKG.AP_ENTITY_CODE
2412 AND gt.event_class_code IN (AP_ETAX_PKG.AP_INV_EVENT_CLASS_CODE,
2413 AP_ETAX_PKG.AP_PP_EVENT_CLASS_CODE,
2414 AP_ETAX_PKG.AP_ER_EVENT_CLASS_CODE)
2415 AND gt.trx_id = aid.invoice_id
2416 AND NOT EXISTS(SELECT /*+ NO_UNNEST */ 'Tax Distributions' -- 9485828
2417 FROM zx_rec_nrec_dist zd
2418 WHERE zd.rec_nrec_tax_dist_id = aid.detail_tax_dist_id
2419 AND NVL(SELF_ASSESSED_FLAG, 'N') = 'N');
2420
2421 TYPE frozen_tax_del IS TABLE OF frozen_dist_del%ROWTYPE
2422 INDEX BY BINARY_INTEGER;
2423
2424 l_frozen_tax_del frozen_tax_del;
2425
2426 j NUMBER;
2427
2428 cursor frozen_self_dist_del IS
2429 SELECT /*+ leading(GT) index(GT ZX_TRX_HEADERS_GT_U1) cardinality(GT, 1) use_nl(AID) */ -- 9485828
2430 detail_tax_dist_id, aid.summary_tax_line_id , invoice_id
2431
2432 FROM ap_self_assessed_tax_dist_all aid,
2433 zx_trx_headers_gt gt
2434 WHERE aid.line_type_lookup_code IN ('NONREC_TAX','REC_TAX')
2435 AND (aid.accounting_event_id IS NOT NULL OR
2436 NVL(aid.match_status_flag,'N') IN ('A','T') OR
2437 NVL(aid.posted_flag,'N') ='Y' OR
2438 NVL(aid.encumbered_flag, 'N') IN ('Y','D','W','X'))
2439 AND gt.application_id = AP_ETAX_PKG.AP_APPLICATION_ID
2440 AND gt.entity_code = AP_ETAX_PKG.AP_ENTITY_CODE
2441 AND gt.event_class_code IN (AP_ETAX_PKG.AP_INV_EVENT_CLASS_CODE,
2442 AP_ETAX_PKG.AP_PP_EVENT_CLASS_CODE,
2443 AP_ETAX_PKG.AP_ER_EVENT_CLASS_CODE)
2444 AND gt.trx_id = aid.invoice_id
2445 AND NOT EXISTS(SELECT /*+ NO_UNNEST */ 'Tax Distributions' -- 9485828
2446 FROM zx_rec_nrec_dist zd
2447 WHERE zd.rec_nrec_tax_dist_id = aid.detail_tax_dist_id
2448 AND NVL(SELF_ASSESSED_FLAG, 'N') = 'Y');
2449
2450 TYPE frozen_self_tax_del IS TABLE OF frozen_self_dist_del%ROWTYPE
2451 INDEX BY BINARY_INTEGER;
2452 l_frozen_self_tax_del frozen_self_tax_del;
2453
2454 -- bug10140354 end
2455
2456
2457 CURSOR insert_tax_dist IS
2458 SELECT /*+ leading(gt,zd) cardinality(gt,1) */
2459 zd.gl_date accounting_date , --Bug6809792
2460 /*For tax distributions accounting date will be stamped from zx_rec_nrec_dist
2461 Ebtax will now store accounting date of opne period in their table*/
2462 decode(NVL(zl.tax_only_line_flag,'N'),
2463 'Y',parent_tax_line.default_dist_ccid,
2464 parent_taxable_dist.dist_code_combination_id) dist_code_combination_id, ---for 6010950
2465 -- this ccid is a temporary value that will be used if other
2466 -- conditions are met before inserting the tax distribution.
2467 DECODE(NVL(zd.recoverable_flag, 'N'),
2468 'Y', 'REC_TAX',
2469 'N', 'NONREC_TAX') line_type_lookup_code,
2470 ap_utilities_pkg.get_gl_period_name(zd.gl_date,ai.org_id) period_name,
2471 -- included the decode as part of the prepayment changes.
2472 -- since for prepayment tax variances will not be created,
2473 -- the dist amount should be the total including variances
2474 -- bug 8317515: modify start
2475 --BUG11656125 START--
2476 DECODE(ai.invoice_type_lookup_code,'PREPAYMENT',zd.rec_nrec_tax_amt,DECODE(parent_item_line.line_type_lookup_code,
2477 'PREPAY', zd.rec_nrec_tax_amt,
2478 decode(parent_taxable_dist.line_type_lookup_code, 'PREPAY', zd.rec_nrec_tax_amt,
2479 decode(nvl(zd.recoverable_flag,'N'),
2480 'Y', zd.rec_nrec_tax_amt,
2481 NVL(zd.rec_nrec_tax_amt, 0) -
2482 get_tv(zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt,
2483 nvl(zd.ref_doc_per_unit_nrec_tax_amt,0), zd.per_trx_curr_unit_nr_amt,
2484 zd.ref_per_trx_curr_unit_nr_amt, zd.price_diff, parent_tax_line.corrected_inv_id,
2485 parent_item_line.line_type_lookup_code, parent_item_line.line_source, ai.invoice_currency_code, --Bug10416960
2486 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id ))))) amount, -- bug 9231678
2487 ap_utilities_pkg.ap_round_currency(
2488 DECODE(ai.invoice_type_lookup_code,'PREPAYMENT',zd.rec_nrec_tax_amt_funcl_curr,DECODE(parent_item_line.line_type_lookup_code,
2489 'PREPAY', zd.rec_nrec_tax_amt_funcl_curr,
2490 decode(parent_taxable_dist.line_type_lookup_code, 'PREPAY', zd.rec_nrec_tax_amt_funcl_curr,
2491 decode(nvl(zd.recoverable_flag,'N'),
2492 'Y', zd.rec_nrec_tax_amt_funcl_curr,
2493 zd.rec_nrec_tax_amt_funcl_curr - --Bug12835115
2494 (get_tv_base
2495 (zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt, nvl(zd.ref_doc_per_unit_nrec_tax_amt,0),
2496 zd.per_trx_curr_unit_nr_amt, zd.ref_per_trx_curr_unit_nr_amt, nvl(zd.currency_conversion_rate, 1),
2497 zd.ref_doc_curr_conv_rate, zd.price_diff, parent_tax_line.corrected_inv_id,
2498 parent_item_line.line_type_lookup_code, parent_item_line.line_source, asp.base_currency_code, --Bug10416960
2499 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id )+
2500 find_val(zd.trx_line_dist_id)*
2501 get_terv
2502 (zd.trx_line_dist_qty, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate, zd.applied_to_doc_curr_conv_rate,
2503 NULL, zd.per_unit_nrec_tax_amt, nvl(zd.ref_doc_per_unit_nrec_tax_amt,zd.per_unit_nrec_tax_amt),
2504 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, parent_item_line.line_source, --Bug10416960
2505 asp.base_currency_code , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id,zd.unit_price)))))), --Bug10416960
2506 asp.base_currency_code) base_amount, -- bug 9231678
2507 --BUG11656125 END--
2508 -- bug 8317515: modify end
2509 -- included the decode as part of the prepayment changes.
2510 -- since for prepayments tax variances will not be created,
2511 -- the base_amount should be the total including variances
2512 DECODE(NVL(zd.inclusive_flag, 'N'),
2513 'Y', parent_item_line.description,
2514 'N', parent_tax_line.description) description,
2515 DECODE(NVL(zd.inclusive_flag, 'N'),
2516 'Y', DECODE(parent_item_line.type_1099,
2517 NULL, NULL,
2518 parent_item_line.income_tax_region),
2519 'N', DECODE(parent_tax_line.type_1099,
2520 NULL, NULL,
2521 parent_tax_line.income_tax_region)) income_tax_region,
2522 parent_taxable_dist.po_distribution_id po_distribution_id, --change for bug 8713009
2523 -- now rec_tax dist will also have po_dist_id stamped on it
2524 DECODE(NVL(zd.inclusive_flag, 'N'),
2525 'Y', parent_item_line.type_1099,
2526 'N', parent_tax_line.type_1099) type_1099,
2527 zd.attribute1 attribute1,
2528 zd.attribute10 attribute10,
2529 zd.attribute11 attribute11,
2530 zd.attribute12 attribute12,
2531 zd.attribute13 attribute13,
2532 zd.attribute14 attribute14,
2533 zd.attribute15 attribute15,
2534 zd.attribute2 attribute2,
2535 zd.attribute3 attribute3,
2536 zd.attribute4 attribute4,
2537 zd.attribute5 attribute5,
2538 zd.attribute6 attribute6,
2539 zd.attribute7 attribute7,
2540 zd.attribute8 attribute8,
2541 zd.attribute9 attribute9,
2542 zd.attribute_category attribute_category,
2543 DECODE(NVL(zd.recoverable_flag, 'N'),
2544 'Y', NULL,
2545 'N', nvl(parent_tax_line.expenditure_item_date,parent_taxable_dist.expenditure_item_date)) expenditure_item_date, /* bug 11076722 modified bug 10155425 */
2546 DECODE(NVL(zd.recoverable_flag, 'N'),
2547 'Y', NULL,
2548 'N', nvl(parent_tax_line.expenditure_organization_id,parent_taxable_dist.expenditure_organization_id)) expenditure_organization_id, /* bug 11076722 modified bug 10155425 */
2549 DECODE(NVL(zd.recoverable_flag, 'N'),
2550 'Y', NULL,
2551 'N', nvl(parent_tax_line.expenditure_type,parent_taxable_dist.expenditure_type)) expenditure_type, /* bug 11076722 modified bug 10155425 */
2552 parent_taxable_dist.parent_invoice_id parent_invoice_id,
2553 DECODE(NVL(zd.recoverable_flag, 'N'),
2554 'Y', 'E',
2555 'N', decode(NVL(ZL.tax_only_line_flag,'N'),'Y','N',decode(parent_taxable_dist.pa_addition_flag,'Y','N',parent_taxable_dist.pa_addition_flag))) pa_addition_flag, /*Bug 14248119*/ /*Bug 13106066:added decode logic*/
2556 DECODE(NVL(zd.recoverable_flag, 'N'),
2557 'Y', NULL,
2558 'N', nvl(parent_tax_line.pa_quantity,parent_taxable_dist.pa_quantity)) pa_quantity, /* bug 11076722 modified bug 10155425 */
2559 DECODE(NVL(zd.recoverable_flag, 'N'),
2560 'Y', NULL,
2561 'N', parent_taxable_dist.project_accounting_context) project_accounting_context,
2562 DECODE(NVL(zd.recoverable_flag, 'N'),
2563 'Y', NULL,
2564 'N', nvl(parent_tax_line.project_id,parent_taxable_dist.project_id)) project_id, /* bug 11076722 modified bug 10155425 */
2565 DECODE(NVL(zd.recoverable_flag, 'N'),
2566 'Y', NULL,
2567 'N', nvl(parent_tax_line.task_id,parent_taxable_dist.task_id)) task_id, /* bug 11076722 modified bug 10155425 */
2568 DECODE(NVL(asp.allow_awt_flag, 'N'),
2569 'Y', DECODE(NVL(pvs.allow_awt_flag, 'N'),
2570 'Y', DECODE(parent_tax_line.awt_group_id,
2571 null,DECODE(NVL(asp.awt_include_tax_amt, 'N'),
2572 'Y', DECODE(NVL(zd.inclusive_flag, 'N'),
2573 'Y', DECODE(zd.applied_from_tax_dist_id,
2574 null, parent_taxable_dist.awt_group_id, --Bug8334059
2575 ap_etax_utility_pkg.Get_Prepay_Awt_Group_Id(
2576 parent_taxable_dist.prepay_distribution_id,
2577 P_Calling_Sequence)),
2578 'N', parent_taxable_dist.awt_group_id),
2579 NULL),
2580 parent_tax_line.awt_group_id), --Bug6648050 --bug 9035846 -- bug9117319
2581 --Bug8334059
2582 NULL),
2583 NULL) awt_group_id,
2584 --Bug6505640 Populating DFF's from Invoice distributions instead of Tax dists
2585 parent_taxable_dist.global_attribute_category global_attribute_category,
2586 parent_taxable_dist.global_attribute1 global_attribute1,
2587 parent_taxable_dist.global_attribute2 global_attribute2,
2588 parent_taxable_dist.global_attribute3 global_attribute3,
2589 parent_taxable_dist.global_attribute4 global_attribute4,
2590 parent_taxable_dist.global_attribute5 global_attribute5,
2591 parent_taxable_dist.global_attribute6 global_attribute6,
2592 parent_taxable_dist.global_attribute7 global_attribute7,
2593 parent_taxable_dist.global_attribute8 global_attribute8,
2594 parent_taxable_dist.global_attribute9 global_attribute9,
2595 parent_taxable_dist.global_attribute10 global_attribute10,
2596 parent_taxable_dist.global_attribute11 global_attribute11,
2597 parent_taxable_dist.global_attribute12 global_attribute12,
2598 parent_taxable_dist.global_attribute13 global_attribute13,
2599 parent_taxable_dist.global_attribute14 global_attribute14,
2600 parent_taxable_dist.global_attribute15 global_attribute15,
2601 parent_taxable_dist.global_attribute16 global_attribute16,
2602 parent_taxable_dist.global_attribute17 global_attribute17,
2603 parent_taxable_dist.global_attribute18 global_attribute18,
2604 parent_taxable_dist.global_attribute19 global_attribute19,
2605 parent_taxable_dist.global_attribute20 global_attribute20,
2606 DECODE(NVL(zd.recoverable_flag, 'N'),
2607 'Y', NULL,
2608 'N', nvl(parent_tax_line.award_id,parent_taxable_dist.award_id)) award_id, /* bug 11076722 modified bug 10155425 */
2609 DECODE(zd.ref_doc_dist_id,
2610 NULL, DECODE(zl.applied_to_trx_id,
2611 NULL, 'NOT_MATCHED',
2612 'OTHER_TO_RECEIPT'),
2613 'NOT_MATCHED') dist_match_type,
2614 DECODE(NVL(zd.recoverable_flag, 'N'),
2615 'Y', NULL,
2616 --Bug 8910531
2617 'N', parent_taxable_dist.rcv_transaction_id) rcv_transaction_id,
2618 zd.recoverable_flag tax_recoverable_flag,
2619 parent_taxable_dist.merchant_document_number merchant_document_number, --Bug14658408: Start
2620 parent_taxable_dist.merchant_name merchant_name,
2621 parent_taxable_dist.merchant_reference merchant_reference,
2622 parent_taxable_dist.merchant_tax_reg_number merchant_tax_reg_number,
2623 parent_taxable_dist.merchant_taxpayer_id merchant_taxpayer_id, --Bug14658408: End
2624 parent_taxable_dist.cancellation_flag cancellation_flag,
2625 DECODE(NVL(zd.inclusive_flag, 'N'),
2626 'Y', zd.trx_line_id,
2627 'N', nvl(parent_tax_line.line_number,
2628 parent_taxable_dist.invoice_line_number)) invoice_line_number,
2629 parent_taxable_dist.corrected_invoice_dist_id corrected_invoice_dist_id,
2630 DECODE(NVL(zd.recoverable_flag, 'N'),
2631 'Y', NULL,
2632 zd.func_curr_rounding_adjustment) rounding_amt,
2633 -- the rounding amount in the non-recoverable case will be populated
2634 -- to the primary distribution later in the cycle.
2635 decode(NVL(zl.tax_only_line_flag,'N'),
2636 'Y', NULL, zd.trx_line_dist_id) charge_applicable_to_dist_id,
2637 DECODE(zl.ref_doc_trx_id,
2638 NULL, 'CANDIDATE', 'PERMANENT') distribution_class,
2639 zd.tax_rate_id tax_code_id,
2640 zd.rec_nrec_tax_dist_id detail_tax_dist_id,
2641 zd.rec_nrec_rate rec_nrec_rate,
2642 zd.recovery_rate_id recovery_rate_id,
2643 zd.recovery_rate_code recovery_rate_name,
2644 zd.recovery_type_code recovery_type_code,
2645 zd.summary_tax_line_id summary_tax_line_id,
2646 null extra_po_erv,
2647 zd.taxable_amt taxable_amount,
2648 zd.taxable_amt_funcl_curr taxable_base_amount,
2649 pd.accrue_on_receipt_flag accrue_on_receipt_flag,
2650 asp.allow_flex_override_flag allow_flex_override_flag,
2651 fsp.purch_encumbrance_flag purch_encumbrance_flag,
2652 asp.org_id org_id,
2653 zd.tax_regime_id tax_regime_id,
2654 zd.tax_id tax_id,
2655 zd.tax_status_id tax_status_id,
2656 zl.tax_jurisdiction_id tax_jurisdiction_id,
2657 'N' par_dist_assets_tracking_flag, -- Bug 13821160
2658 parent_taxable_dist.cancellation_flag parent_dist_cancellation_flag,
2659 parent_taxable_dist.reversal_flag parent_dist_reversal_flag,
2660 parent_taxable_dist.parent_reversal_id parent_dist_parent_reversal_id,
2661 zd.reversed_tax_dist_id reversed_tax_dist_id,
2662 zd.adjusted_doc_tax_dist_id adjusted_doc_tax_dist_id,
2663 zd.applied_from_tax_dist_id applied_from_tax_dist_id,
2664 -- the prepay_distribution_id will be populated with
2665 -- invoice_distribution_id for the associated rec or
2666 -- nonrec tax distributions
2667 DECODE(parent_item_line.line_type_lookup_code,
2668 'PREPAY', AP_ETAX_UTILITY_PKG.get_dist_id_for_tax_dist_id
2669 (zd.applied_from_tax_dist_id),
2670 decode(parent_taxable_dist.line_type_lookup_code,
2671 'PREPAY', AP_ETAX_UTILITY_PKG.get_dist_id_for_tax_dist_id
2672 (zd.applied_from_tax_dist_id), NULL)) prepay_distribution_id,
2673 DECODE(parent_item_line.line_type_lookup_code,
2674 'PREPAY', DECODE(NVL(zd.recoverable_flag, 'N'),
2675 'N', (zd.prd_tax_amt - zd.rec_nrec_tax_amt), NULL),
2676 NULL) prepay_tax_diff_amount,
2677 ai.invoice_id invoice_id,
2678 ai.batch_id batch_id,
2679 ai.set_of_books_id set_of_books_id,
2680 DECODE(NVL(asp.allow_awt_flag, 'N'),
2681 'Y', DECODE(NVL(pvs.allow_awt_flag, 'N'),
2682 'Y', DECODE(parent_tax_line.pay_awt_group_id,
2683 NULL, DECODE(NVL(asp.awt_include_tax_amt, 'N'),
2684 'Y', DECODE(NVL(zd.inclusive_flag, 'N'),
2685 'Y',DECODE(zd.applied_from_tax_dist_id,
2686 null, parent_taxable_dist.pay_awt_group_id,
2687 ap_etax_utility_pkg.Get_Prepay_Pay_Awt_Group_Id(
2688 parent_taxable_dist.prepay_distribution_id,
2689 P_Calling_Sequence)),
2690 'N', parent_taxable_dist.pay_awt_group_id),
2691 NULL),
2692 parent_tax_line.pay_awt_group_id), --Bug6648050 -- bug 9035846 -- bug9117319
2693 NULL),
2694 NULL) pay_awt_group_id, --Bug8345264
2695 zd.account_source_tax_rate_id account_source_tax_rate_id
2696 FROM zx_trx_headers_gt gt,
2697 zx_rec_nrec_dist zd,
2698 zx_lines zl,
2699 ap_invoices_all ai,
2700 ap_supplier_sites_all pvs,
2701 ap_system_parameters_all asp,
2702 financials_system_params_all fsp,
2703 po_distributions_all pd,
2704 ap_invoice_lines_all parent_tax_line,
2705 ap_invoice_lines_all parent_item_line,
2706 ap_invoice_distributions_all parent_taxable_dist
2707 WHERE gt.APPLICATION_ID = zd.APPLICATION_ID
2708 AND gt.ENTITY_CODE = zd.ENTITY_CODE
2709 AND gt.EVENT_CLASS_CODE = zd.EVENT_CLASS_CODE
2710 AND gt.TRX_ID = zd.TRX_ID
2711 AND zd.tax_line_id = zl.tax_line_id
2712 AND gt.trx_id = ai.invoice_id
2713 AND ai.vendor_site_id = pvs.vendor_site_id
2714 AND ai.set_of_books_id = asp.set_of_books_id
2715 AND ai.org_id = asp.org_id
2716 AND asp.set_of_books_id = fsp.set_of_books_id
2717 AND asp.org_id = fsp.org_id
2718 AND NVL(zd.self_assessed_flag, 'N') = 'N'
2719 AND NVL(zl.reporting_only_flag, 'N') = 'N'
2720 AND parent_taxable_dist.po_distribution_id = pd.po_distribution_id (+)
2721 AND zd.trx_id = parent_tax_line.invoice_id (+)
2722 AND zd.summary_tax_line_id = parent_tax_line.summary_tax_line_id (+)
2723 AND zd.trx_id = parent_item_line.invoice_id (+)
2724 AND zd.trx_line_id = parent_item_line.line_number (+)
2725 AND zd.trx_id = parent_taxable_dist.invoice_id (+)
2726 AND zd.trx_line_dist_id = parent_taxable_dist.invoice_distribution_id (+)
2727 --BUG11656125 START--
2728 AND (zd.ref_doc_application_id IS NULL
2729 or (zd.ref_doc_application_id IS NOT NULL
2730 and (nvl(zd.recoverable_flag, 'N') = 'Y'
2731 or (ai.invoice_type_lookup_code = 'PREPAYMENT' and nvl(zd.recoverable_flag, 'N') = 'N' )
2732 or (parent_taxable_dist.prepay_distribution_id IS NOT NULL)
2733 or ( zd.rec_nrec_tax_amt = 0 and nvl(zd.recoverable_flag, 'N') = 'N'
2734 /* Commented for Bug 6906867*/ /* and zd.rec_nrec_rate = 100*/ ) -- added the condition for bug fix 6695517
2735 or zd.rec_nrec_tax_amt <> ap_etax_utility_pkg.get_tv
2736 (zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt,
2737 nvl(zd.ref_doc_per_unit_nrec_tax_amt,0), zd.per_trx_curr_unit_nr_amt,
2738 zd.ref_per_trx_curr_unit_nr_amt, zd.price_diff, parent_tax_line.corrected_inv_id,
2739 parent_item_line.line_type_lookup_code, parent_item_line.line_source, ai.invoice_currency_code, --Bug10416960
2740 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id))))
2741 -- AND ((zd.recoverable_flag = 'N' AND zd.rec_nrec_rate<>0) OR zd.recoverable_flag = 'Y') --bug 6350100 -- commented out the condition for bug fix 6695517
2742 --BUG11656125 END --
2743 AND NOT EXISTS
2744 (SELECT aid.detail_tax_dist_id
2745 FROM ap_invoice_distributions_all aid
2746 WHERE aid.invoice_id = zd.trx_id
2747 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
2748 AND aid.line_type_lookup_code IN ('REC_TAX','NONREC_TAX'))
2749 AND NOT EXISTS
2750 (SELECT aid.detail_tax_dist_id
2751 FROM ap_invoice_distributions_all aid
2752 WHERE aid.invoice_id = zd.trx_id
2753 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
2754 AND aid.line_type_lookup_code IN ('TRV','TERV','TIPV')
2755 AND (NVL(aid.posted_flag,'N') = 'Y' OR
2756 aid.accounting_event_id IS NOT NULL OR
2757 NVL(aid.encumbered_flag, 'N') IN ('Y','D','W','X') OR
2758 --Bug7419940 Dont allow any insert from posted / frozen variacnes it should be reversed
2759 NVL(aid.reversal_flag,'N') = 'Y'))
2760 --Bug8481532 Added Condition To exclude reversed distribuion from getting changed
2761 AND (parent_taxable_dist.dist_match_type is null
2762 or nvl(zd.recoverable_flag, 'N') = 'Y'
2763 or parent_taxable_dist.dist_match_type <> 'PRICE_CORRECTION')
2764 AND (parent_taxable_dist.prepay_distribution_id IS NULL
2765 or (parent_taxable_dist.prepay_distribution_id IS NOT NULL
2766 and (parent_item_line.line_number IS NOT NULL
2767 or zd.trx_line_id = (select -1 * (aid.invoice_id || aid.invoice_line_number || parent_taxable_dist.invoice_line_number)
2768 from ap_invoice_distributions_all aid
2769 where aid.invoice_distribution_id = parent_taxable_dist.prepay_distribution_id))))
2770 -- Bug 7462582
2771 -- Reverting the fixes done in bugs 6805527 and 7389822 as Etax bug 7515711 will take care of these fixes.
2772 /* Added by schitlap, epajaril to fix the issue in Bug 6805527 */
2773 /*AND (nvl(parent_taxable_dist.reversal_flag, 'N') <> 'Y'
2774 OR zd.reversed_tax_dist_id IS NULL) -- 7389822*/
2775 ORDER BY detail_tax_dist_id ; --bug 8359426 --bug 9666759 Removed the desc clause
2776
2777
2778 CURSOR insert_tax_variances IS
2779 SELECT /*+ leading(gt,zd) cardinality(gt,1) */
2780 zd.gl_date accounting_date , --Bug6809792
2781 /*For tax distributions accounting date will be stamped from zx_rec_nrec_dist
2782 Ebtax will now store accounting date of opne period in their table*/
2783 (CASE dist.line_type
2784 WHEN 'TERV' THEN
2785 DECODE(pd.destination_type_code, 'EXPENSE', pd.code_combination_id,
2786 parent_taxable_dist.dist_code_combination_id)
2787 ELSE
2788 DECODE(pd.destination_type_code, 'EXPENSE',
2789 DECODE(pd.accrue_on_receipt_flag, 'Y', pd.code_combination_id,
2790 parent_taxable_dist.dist_code_combination_id),
2791 pd.variance_account_id)
2792 END) dist_code_combination_id,
2793 (CASE dist.line_type
2794 WHEN 'TIPV' THEN 'TIPV'
2795 WHEN 'TERV' THEN 'TERV'
2796 WHEN 'TRV' THEN 'TRV'
2797 END) line_type_lookup_code,
2798 ap_utilities_pkg.get_gl_period_name(zd.gl_date,ai.org_id) period_name,
2799 (CASE dist.line_type
2800 WHEN 'TIPV' THEN -- bug 10291717
2801 ap_etax_utility_pkg.get_tipv(
2802 zd.rate_tax_factor, zd.trx_line_dist_qty,
2803 nvl2(parent_taxable_dist.rcv_transaction_id,
2804 ap_etax_utility_pkg.get_converted_price
2805 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
2806 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,zd.per_trx_curr_unit_nr_amt),
2807 zd.price_diff, parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
2808 parent_item_line.line_source, ai.invoice_currency_code, --Bug10416960
2809 parent_item_line.match_type , zd.trx_line_dist_id , zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id)
2810 WHEN 'TRV' THEN
2811 (ap_etax_utility_pkg.get_tv(
2812 zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt,
2813 nvl(zd.ref_doc_per_unit_nrec_tax_amt,0), zd.per_trx_curr_unit_nr_amt,
2814 zd.ref_per_trx_curr_unit_nr_amt, zd.price_diff, parent_tax_line.corrected_inv_id,
2815 parent_item_line.line_type_lookup_code, parent_item_line.line_source, ai.invoice_currency_code, --Bug10416960
2816 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id) -
2817 ap_etax_utility_pkg.get_tipv(
2818 zd.rate_tax_factor, zd.trx_line_dist_qty,
2819 nvl2(parent_taxable_dist.rcv_transaction_id,
2820 ap_etax_utility_pkg.get_converted_price
2821 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
2822 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,per_trx_curr_unit_nr_amt),
2823 zd.price_diff, parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
2824 parent_item_line.line_source, ai.invoice_currency_code, parent_item_line.match_type , zd.trx_line_dist_id , --Bug10416960
2825 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id))
2826 WHEN 'TERV' THEN 0
2827 END) amount,
2828 (CASE dist.line_type
2829 WHEN 'TIPV' THEN
2830 ap_utilities_pkg.ap_round_currency( -- bug 10291717
2831 ap_etax_utility_pkg.get_tipv_base(
2832 zd.rate_tax_factor, zd.trx_line_dist_qty,
2833 nvl2(parent_taxable_dist.rcv_transaction_id,
2834 ap_etax_utility_pkg.get_converted_price
2835 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
2836 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,zd.per_trx_curr_unit_nr_amt),
2837 zd.price_diff, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate, NULL,
2838 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
2839 parent_item_line.line_source, ai.invoice_currency_code, asp.base_currency_code, --Bug10416960
2840 parent_item_line.match_type , zd.trx_line_dist_id , zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id)
2841 ,asp.base_currency_code)
2842 WHEN 'TRV' THEN
2843 ap_utilities_pkg.ap_round_currency(
2844 (ap_etax_utility_pkg.get_tv_base(
2845 zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt,
2846 nvl(zd.ref_doc_per_unit_nrec_tax_amt,0), zd.per_trx_curr_unit_nr_amt,
2847 zd.ref_per_trx_curr_unit_nr_amt, nvl(zd.currency_conversion_rate,1),
2848 zd.ref_doc_curr_conv_rate, zd.price_diff, parent_tax_line.corrected_inv_id,
2849 parent_item_line.line_type_lookup_code, parent_item_line.line_source, asp.base_currency_code, --Bug10416960
2850 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id)
2851 - (DECODE(find_val(zd.trx_line_dist_id),0,1,0)*ap_etax_utility_pkg.get_terv(
2852 zd.trx_line_dist_qty, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate,
2853 zd.applied_to_doc_curr_conv_rate, NULL, zd.per_unit_nrec_tax_amt,
2854 nvl(zd.ref_doc_per_unit_nrec_tax_amt,zd.per_unit_nrec_tax_amt),
2855 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
2856 parent_item_line.line_source, asp.base_currency_code , zd.trx_line_dist_id , zd.ref_doc_unit_price , --Bug10416960
2857 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id, zd.unit_price)) --Bug10416960
2858 - ap_etax_utility_pkg.get_tipv_base(
2859 zd.rate_tax_factor, zd.trx_line_dist_qty,
2860 nvl2(parent_taxable_dist.rcv_transaction_id,
2861 ap_etax_utility_pkg.get_converted_price
2862 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
2863 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,zd.per_trx_curr_unit_nr_amt),
2864 zd.price_diff, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate, NULL,
2865 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
2866 parent_item_line.line_source, ai.invoice_currency_code, asp.base_currency_code, --Bug10416960
2867 parent_item_line.match_type , zd.trx_line_dist_id , zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id)),
2868 asp.base_currency_code) -- bug 9231678
2869 WHEN 'TERV' THEN
2870 ap_utilities_pkg.ap_round_currency
2871 (ap_etax_utility_pkg.get_terv(
2872 zd.trx_line_dist_qty, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate,
2873 zd.applied_to_doc_curr_conv_rate, NULL, zd.per_unit_nrec_tax_amt,
2874 nvl(zd.ref_doc_per_unit_nrec_tax_amt,zd.per_unit_nrec_tax_amt),
2875 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
2876 parent_item_line.line_source, asp.base_currency_code , zd.trx_line_dist_id , zd.ref_doc_unit_price , --Bug10416960
2877 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id, zd.unit_price), asp.base_currency_code) --Bug10416960
2878 END) base_amount,
2879 DECODE(NVL(zd.inclusive_flag, 'N'),
2880 'Y', parent_item_line.description,
2881 'N', parent_tax_line.description) description,
2882 DECODE(NVL(zd.inclusive_flag, 'N'),
2883 'Y', DECODE(parent_item_line.type_1099,
2884 NULL, NULL, parent_item_line.income_tax_region),
2885 'N', DECODE(parent_tax_line.type_1099,
2886 NULL, NULL, parent_tax_line.income_tax_region)) income_tax_region,
2887 parent_taxable_dist.po_distribution_id po_distribution_id, -- change for bug 8713009
2888 DECODE(NVL(zd.inclusive_flag, 'N'),
2889 'Y', parent_item_line.type_1099,
2890 'N', parent_tax_line.type_1099) type_1099,
2891 zd.attribute1 attribute1,
2892 zd.attribute10 attribute10,
2893 zd.attribute11 attribute11,
2894 zd.attribute12 attribute12,
2895 zd.attribute13 attribute13,
2896 zd.attribute14 attribute14,
2897 zd.attribute15 attribute15,
2898 zd.attribute2 attribute2,
2899 zd.attribute3 attribute3,
2900 zd.attribute4 attribute4,
2901 zd.attribute5 attribute5,
2902 zd.attribute6 attribute6,
2903 zd.attribute7 attribute7,
2904 zd.attribute8 attribute8,
2905 zd.attribute9 attribute9,
2906 zd.attribute_category attribute_category,
2907 DECODE(NVL(zd.recoverable_flag, 'N'),
2908 'Y', NULL,
2909 'N', nvl(parent_tax_line.expenditure_item_date,parent_taxable_dist.expenditure_item_date)) expenditure_item_date, /* bug 11076722 modified bug 10155425 */
2910 DECODE(NVL(zd.recoverable_flag, 'N'),
2911 'Y', NULL,
2912 'N', nvl(parent_tax_line.expenditure_organization_id,parent_taxable_dist.expenditure_organization_id)) expenditure_organization_id, /* bug 11076722 modified bug 10155425 */
2913 DECODE(NVL(zd.recoverable_flag, 'N'),
2914 'Y', NULL,
2915 'N', nvl(parent_tax_line.expenditure_type,parent_taxable_dist.expenditure_type)) expenditure_type, /* bug 11076722 modified bug 10155425 */
2916 parent_taxable_dist.parent_invoice_id parent_invoice_id,
2917 DECODE(NVL(zd.recoverable_flag, 'N'),
2918 'Y', 'E',
2919 'N', decode(parent_taxable_dist.pa_addition_flag,'Y','N',parent_taxable_dist.pa_addition_flag)) pa_addition_flag, /*bug13106066:Added decode logic*/
2920 DECODE(NVL(zd.recoverable_flag, 'N'),
2921 'Y', NULL,
2922 'N', nvl(parent_tax_line.pa_quantity,parent_taxable_dist.pa_quantity)) pa_quantity, /* bug 11076722 modified bug 10155425 */
2923 DECODE(NVL(zd.recoverable_flag, 'N'),
2924 'Y', NULL,
2925 'N', parent_taxable_dist.project_accounting_context) project_accounting_context,
2926 DECODE(NVL(zd.recoverable_flag, 'N'),
2927 'Y', NULL,
2928 'N', nvl(parent_tax_line.project_id,parent_taxable_dist.project_id)) project_id, /* bug 11076722 modified bug 10155425 */
2929 DECODE(NVL(zd.recoverable_flag, 'N'),
2930 'Y', NULL,
2931 'N', nvl(parent_tax_line.task_id,parent_taxable_dist.task_id)) task_id, /* bug 11076722 modified bug 10155425 */
2932 DECODE(NVL(asp.allow_awt_flag, 'N'),
2933 'Y', DECODE(NVL(pvs.allow_awt_flag, 'N'),
2934 'Y', DECODE(parent_tax_line.awt_group_id,
2935 null,DECODE(NVL(asp.awt_include_tax_amt, 'N'),
2936 'Y', DECODE(NVL(zd.inclusive_flag, 'N'),
2937 'Y', DECODE(zd.applied_from_tax_dist_id,
2938 null, parent_taxable_dist.awt_group_id, --Bug8334059
2939 ap_etax_utility_pkg.Get_Prepay_Awt_Group_Id(
2940 parent_taxable_dist.prepay_distribution_id,
2941 P_Calling_Sequence)),
2942 'N', parent_taxable_dist.awt_group_id),
2943 NULL),
2944 parent_tax_line.awt_group_id), --Bug6648050 --bug 9035846 -- bug9117319
2945 --Bug8334059 --bug9200123
2946 NULL),
2947 NULL) awt_group_id,
2948 zd.global_attribute_category global_attribute_category,
2949 zd.global_attribute1 global_attribute1,
2950 zd.global_attribute2 global_attribute2,
2951 zd.global_attribute3 global_attribute3,
2952 zd.global_attribute4 global_attribute4,
2953 zd.global_attribute5 global_attribute5,
2954 zd.global_attribute6 global_attribute6,
2955 zd.global_attribute7 global_attribute7,
2956 zd.global_attribute8 global_attribute8,
2957 zd.global_attribute9 global_attribute9,
2958 zd.global_attribute10 global_attribute10,
2959 zd.global_attribute11 global_attribute11,
2960 zd.global_attribute12 global_attribute12,
2961 zd.global_attribute13 global_attribute13,
2962 zd.global_attribute14 global_attribute14,
2963 zd.global_attribute15 global_attribute15,
2964 zd.global_attribute16 global_attribute16,
2965 zd.global_attribute17 global_attribute17,
2966 zd.global_attribute18 global_attribute18,
2967 zd.global_attribute19 global_attribute19,
2968 zd.global_attribute20 global_attribute20,
2969 DECODE(NVL(zd.recoverable_flag, 'N'),
2970 'Y', NULL,
2971 'N', nvl( parent_tax_line.award_id,parent_taxable_dist.award_id)) award_id, /* bug 11076722 modified bug 10155425 */
2972 DECODE(zd.ref_doc_dist_id,
2973 NULL, DECODE(zl.applied_to_trx_id,
2974 NULL, 'NOT_MATCHED',
2975 'OTHER_TO_RECEIPT'),
2976 'NOT_MATCHED') dist_match_type,
2977 DECODE(NVL(zd.recoverable_flag, 'N'),
2978 'Y', NULL,
2979 --Bug 8910531
2980 'N', parent_taxable_dist.rcv_transaction_id) rcv_transaction_id,
2981 zd.recoverable_flag tax_recoverable_flag,
2982 parent_taxable_dist.merchant_document_number merchant_document_number, --Bug14658408: Start
2983 parent_taxable_dist.merchant_name merchant_name,
2984 parent_taxable_dist.merchant_reference merchant_reference,
2985 parent_taxable_dist.merchant_tax_reg_number merchant_tax_reg_number,
2986 parent_taxable_dist.merchant_taxpayer_id merchant_taxpayer_id, --Bug14658408: End
2987 parent_taxable_dist.cancellation_flag cancellation_flag,
2988 DECODE(NVL(zd.inclusive_flag, 'N'),
2989 'Y', zd.trx_line_id,
2990 'N', parent_tax_line.line_number) invoice_line_number,
2991 parent_taxable_dist.corrected_invoice_dist_id corrected_invoice_dist_id,
2992 NULL rounding_amt,
2993 decode(NVL(zl.tax_only_line_flag,'N'),
2994 'Y', NULL, zd.trx_line_dist_id) charge_applicable_to_dist_id,
2995 DECODE(zl.ref_doc_trx_id,
2996 NULL, 'CANDIDATE', 'PERMANENT') distribution_class,
2997 zd.tax_rate_id tax_code_id,
2998 zd.rec_nrec_tax_dist_id detail_tax_dist_id,
2999 zd.rec_nrec_rate rec_nrec_rate,
3000 zd.recovery_rate_id recovery_rate_id,
3001 zd.recovery_rate_code recovery_rate_name,
3002 zd.recovery_type_code recovery_type_code,
3003 zd.summary_tax_line_id summary_tax_line_id,
3004 NULL extra_po_erv,
3005 NULL taxable_amount,
3006 NULL taxable_base_amount,
3007 pd.accrue_on_receipt_flag accrue_on_receipt_flag,
3008 asp.allow_flex_override_flag allow_flex_override_flag,
3009 fsp.purch_encumbrance_flag purch_encumbrance_flag,
3010 asp.org_id org_id,
3011 zd.tax_regime_id tax_regime_id,
3012 zd.tax_id tax_id,
3013 zd.tax_status_id tax_status_id,
3014 zl.tax_jurisdiction_id tax_jurisdiction_id,
3015 'N' par_dist_assets_tracking_flag, -- Bug 13821160
3016 parent_taxable_dist.cancellation_flag parent_dist_cancellation_flag,
3017 parent_taxable_dist.reversal_flag parent_dist_reversal_flag,
3018 parent_taxable_dist.parent_reversal_id parent_dist_parent_reversal_id,
3019 zd.reversed_tax_dist_id reversed_tax_dist_id,
3020 zd.adjusted_doc_tax_dist_id adjusted_doc_tax_dist_id,
3021 zd.applied_from_tax_dist_id applied_from_tax_dist_id,
3022 NULL prepay_distribution_id,
3023 NULL prepay_tax_diff_amount,
3024 ai.invoice_id invoice_id,
3025 ai.batch_id batch_id,
3026 ai.set_of_books_id set_of_books_id,
3027 DECODE(NVL(asp.allow_awt_flag, 'N'),
3028 'Y', DECODE(NVL(pvs.allow_awt_flag, 'N'),
3029 'Y', DECODE(parent_tax_line.pay_awt_group_id,
3030 NULL, DECODE(NVL(asp.awt_include_tax_amt, 'N'),
3031 'Y', DECODE(NVL(zd.inclusive_flag, 'N'),
3032 'Y',DECODE(zd.applied_from_tax_dist_id,
3033 null, parent_taxable_dist.pay_awt_group_id,
3034 ap_etax_utility_pkg.Get_Prepay_Pay_Awt_Group_Id(
3035 parent_taxable_dist.prepay_distribution_id,
3036 P_Calling_Sequence)),
3037 'N', parent_taxable_dist.pay_awt_group_id),
3038 NULL),
3039 parent_tax_line.pay_awt_group_id), --Bug6648050 -- bug 9035846 -- bug9117319 --bug9200123
3040 NULL),
3041 NULL) pay_awt_group_id, --Bug8345264
3042 zd.account_source_tax_rate_id account_source_tax_rate_id
3043 FROM zx_trx_headers_gt gt,
3044 zx_rec_nrec_dist zd,
3045 zx_lines zl,
3046 ap_invoices_all ai,
3047 ap_supplier_sites_all pvs,
3048 ap_system_parameters_all asp,
3049 financials_system_params_all fsp,
3050 po_distributions_all pd,
3051 ap_invoice_lines_all parent_tax_line,
3052 ap_invoice_lines_all parent_item_line,
3053 ap_invoice_distributions_all parent_taxable_dist,
3054 ap_line_temp_gt dist
3055 WHERE gt.APPLICATION_ID = zd.APPLICATION_ID
3056 AND gt.ENTITY_CODE = zd.ENTITY_CODE
3057 AND gt.EVENT_CLASS_CODE = zd.EVENT_CLASS_CODE
3058 AND gt.TRX_ID = zd.TRX_ID
3059 AND zd.tax_line_id = zl.tax_line_id
3060 AND gt.trx_id = ai.invoice_id
3061 AND ai.vendor_site_id = pvs.vendor_site_id
3062 AND ai.set_of_books_id = asp.set_of_books_id
3063 AND ai.org_id = asp.org_id
3064 AND asp.set_of_books_id = fsp.set_of_books_id
3065 AND asp.org_id = fsp.org_id
3066 AND NVL(zd.recoverable_flag, 'N') = 'N'
3067 AND NVL(zd.self_assessed_flag, 'N') = 'N'
3068 AND NVL(zl.reporting_only_flag, 'N') = 'N'
3069 --Bug9777752 Removed Outer join on PD
3070 AND parent_taxable_dist.po_distribution_id = pd.po_distribution_id
3071 --Bug9777752 Removed Outer join on PD
3072 AND zd.trx_id = parent_tax_line.invoice_id(+)
3073 AND zd.summary_tax_line_id = parent_tax_line.summary_tax_line_id(+)
3074 AND zd.trx_id = parent_item_line.invoice_id(+)
3075 AND zd.trx_line_id = parent_item_line.line_number(+)
3076 AND zd.trx_id = parent_taxable_dist.invoice_id
3077 AND zd.trx_line_dist_id = parent_taxable_dist.invoice_distribution_id
3078 AND ai.invoice_type_lookup_code <> 'PREPAYMENT' --Bug11656125
3079 AND parent_item_line.line_type_lookup_code(+) <> 'PREPAY'
3080 AND parent_taxable_dist.line_type_lookup_code <> 'PREPAY'
3081 AND NOT EXISTS
3082 (SELECT aid.detail_tax_dist_id
3083 FROM ap_invoice_distributions_all aid
3084 WHERE aid.invoice_id = zd.trx_id
3085 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
3086 AND aid.line_type_lookup_code IN ('TIPV', 'TERV', 'TRV'))
3087 AND NOT EXISTS
3088 (SELECT aid.detail_tax_dist_id
3089 FROM ap_invoice_distributions_all aid
3090 WHERE aid.invoice_id = zd.trx_id
3091 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
3092 AND aid.line_type_lookup_code = 'NONREC_TAX'
3093 AND (NVL(aid.posted_flag,'N') = 'Y' OR
3094 aid.accounting_event_id IS NOT NULL OR
3095 NVL(aid.encumbered_flag,'N') IN ('Y','D','W','X') OR
3096 --Bug7419940 Dont allow any insert from posted / frozen variacnes it should be reversed
3097 NVL(aid.reversal_flag,'N')='Y'))
3098 --Bug8481532 Added Condition To exclude reversed distribuion from getting changed
3099 AND ((dist.line_type = 'TIPV'
3100 AND (ap_etax_utility_pkg.get_tipv
3101 (zd.rate_tax_factor, zd.trx_line_dist_qty,
3102 nvl2(parent_taxable_dist.rcv_transaction_id,
3103 ap_etax_utility_pkg.get_converted_price
3104 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
3105 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,zd.per_trx_curr_unit_nr_amt),
3106 zd.price_diff, parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3107 parent_item_line.line_source, ai.invoice_currency_code, parent_item_line.match_type , zd.trx_line_dist_id , --bug10416960
3108 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id) <> 0
3109 or parent_taxable_dist.dist_match_type = 'PRICE_CORRECTION'
3110 ))
3111 OR
3112 (dist.line_type = 'TRV'
3113 and (ap_etax_utility_pkg.get_tv(
3114 zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt,
3115 nvl(zd.ref_doc_per_unit_nrec_tax_amt,0), zd.per_trx_curr_unit_nr_amt,
3116 zd.ref_per_trx_curr_unit_nr_amt, zd.price_diff, parent_tax_line.corrected_inv_id,
3117 parent_item_line.line_type_lookup_code, parent_item_line.line_source, ai.invoice_currency_code, --Bug10416960
3118 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id)
3119 - ap_etax_utility_pkg.get_tipv(
3120 zd.rate_tax_factor, zd.trx_line_dist_qty,
3121 nvl2(parent_taxable_dist.rcv_transaction_id,
3122 ap_etax_utility_pkg.get_converted_price
3123 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
3124 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,per_trx_curr_unit_nr_amt),
3125 zd.price_diff, parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3126 parent_item_line.line_source, ai.invoice_currency_code, parent_item_line.match_type , zd.trx_line_dist_id , --Bug10416960
3127 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id)) <> 0)
3128 OR
3129 (dist.line_type = 'TERV'
3130 AND (ap_etax_utility_pkg.get_terv(
3131 zd.trx_line_dist_qty, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate,
3132 zd.applied_to_doc_curr_conv_rate, NULL, zd.per_unit_nrec_tax_amt,
3133 nvl(zd.ref_doc_per_unit_nrec_tax_amt,zd.per_unit_nrec_tax_amt),
3134 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3135 parent_item_line.line_source, asp.base_currency_code , zd.trx_line_dist_id , zd.ref_doc_unit_price , --Bug10416960
3136 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id, zd.unit_price)) <> 0)) --Bug10416960
3137 -- bug 9231678 removed sign condition
3138 ORDER BY detail_tax_dist_id;
3139
3140
3141 CURSOR update_tax_dist IS
3142 SELECT /*+ leading(gt,zd) cardinality(gt,1) */
3143 zd.gl_date accounting_date , --Bug6809792
3144 /*For tax distributions accounting date will be stamped from zx_rec_nrec_dist
3145 Ebtax will now store accounting date of opne period in their table*/
3146 parent_taxable_dist.dist_code_combination_id dist_code_combination_id,
3147 -- this ccid is a temporary value that will be used if other conditions
3148 -- are met before inserting the tax distribution
3149 DECODE(NVL(zd.recoverable_flag, 'N'),
3150 'Y', 'REC_TAX',
3151 'N', 'NONREC_TAX') line_type_lookup_code,
3152 ap_utilities_pkg.get_gl_period_name(zd.gl_date,ai.org_id) period_name,
3153 -- bug 8317515: modify start
3154 --BUG11656125 START--
3155 DECODE(ai.invoice_type_lookup_code,'PREPAYMENT',zd.rec_nrec_tax_amt,DECODE(parent_item_line.line_type_lookup_code,
3156 'PREPAY', zd.rec_nrec_tax_amt,
3157 decode(parent_taxable_dist.line_type_lookup_code, 'PREPAY', zd.rec_nrec_tax_amt,
3158 decode(nvl(zd.recoverable_flag,'N'),
3159 'Y', zd.rec_nrec_tax_amt,
3160 (NVL(zd.rec_nrec_tax_amt, 0) -
3161 get_tv(zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt,
3162 nvl(zd.ref_doc_per_unit_nrec_tax_amt,0), zd.per_trx_curr_unit_nr_amt,
3163 zd.ref_per_trx_curr_unit_nr_amt, zd.price_diff, parent_tax_line.corrected_inv_id,
3164 parent_item_line.line_type_lookup_code, parent_item_line.line_source, ai.invoice_currency_code, --Bug10416960
3165 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id)))))) amount, -- bug 9231678
3166 ap_utilities_pkg.ap_round_currency(
3167 DECODE(ai.invoice_type_lookup_code,'PREPAYMENT',zd.rec_nrec_tax_amt_funcl_curr,DECODE(parent_item_line.line_type_lookup_code,
3168 'PREPAY', zd.rec_nrec_tax_amt_funcl_curr,
3169 decode(parent_taxable_dist.line_type_lookup_code, 'PREPAY', zd.rec_nrec_tax_amt_funcl_curr,
3170 decode(nvl(zd.recoverable_flag,'N'),
3171 'Y', zd.rec_nrec_tax_amt_funcl_curr,
3172 (zd.rec_nrec_tax_amt_funcl_curr - --Bug12835115
3173 (get_tv_base
3174 (zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt, nvl(zd.ref_doc_per_unit_nrec_tax_amt,0),
3175 zd.per_trx_curr_unit_nr_amt, zd.ref_per_trx_curr_unit_nr_amt, nvl(zd.currency_conversion_rate, 1),
3176 zd.ref_doc_curr_conv_rate, zd.price_diff, parent_tax_line.corrected_inv_id,
3177 parent_item_line.line_type_lookup_code, parent_item_line.line_source, asp.base_currency_code, --Bug10416960
3178 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id)+
3179 find_val(zd.trx_line_dist_id)*get_terv
3180 (zd.trx_line_dist_qty, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate, zd.applied_to_doc_curr_conv_rate,
3181 NULL, zd.per_unit_nrec_tax_amt, nvl(zd.ref_doc_per_unit_nrec_tax_amt,zd.per_unit_nrec_tax_amt),
3182 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, parent_item_line.line_source, --Bug10416960
3183 asp.base_currency_code , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.ref_per_trx_curr_unit_nr_amt ,
3184 zd.rec_nrec_tax_dist_id,zd.unit_price))))))), --Bug10416960
3185 asp.base_currency_code ) base_amount, -- bug 9231678
3186 --BUG11656125 END--
3187 -- bug 8317515: modify end
3188 -- included the decode as part of the prepayment changes.
3189 -- since for prepayment applic tax variances will not be created,
3190 -- the base_amount should be the total including variances
3191 DECODE(NVL(zd.inclusive_flag, 'N'),
3192 'Y', parent_item_line.description,
3193 'N', parent_tax_line.description) description,
3194 DECODE(NVL(zd.inclusive_flag, 'N'),
3195 'Y', DECODE(parent_item_line.type_1099,
3196 NULL, NULL,
3197 parent_item_line.income_tax_region),
3198 'N', DECODE(parent_tax_line.type_1099,
3199 NULL, NULL,
3200 parent_tax_line.income_tax_region)) income_tax_region,
3201 DECODE(NVL(zd.inclusive_flag, 'N'),
3202 'Y', parent_item_line.type_1099,
3203 'N', parent_tax_line.type_1099) type_1099,
3204 -- bug 6914575: modify start
3205 -- Populating DFF's from Invoice distributions instead of Tax dists
3206 aid.attribute1 attribute1,
3207 aid.attribute10 attribute10,
3208 aid.attribute11 attribute11,
3209 aid.attribute12 attribute12,
3210 aid.attribute13 attribute13,
3211 aid.attribute14 attribute14,
3212 aid.attribute15 attribute15,
3213 aid.attribute2 attribute2,
3214 aid.attribute3 attribute3,
3215 aid.attribute4 attribute4,
3216 aid.attribute5 attribute5,
3217 aid.attribute6 attribute6,
3218 aid.attribute7 attribute7,
3219 aid.attribute8 attribute8,
3220 aid.attribute9 attribute9,
3221 aid.attribute_category attribute_category,
3222 -- bug 6914575: modify end
3223 DECODE(NVL(zd.recoverable_flag, 'N'),
3224 'Y', NULL,
3225 'N', nvl(parent_tax_line.expenditure_item_date, parent_taxable_dist.expenditure_item_date)) expenditure_item_date, /* bug 11076722 modified bug 10155425 */
3226 DECODE(NVL(zd.recoverable_flag, 'N'),
3227 'Y', NULL,
3228 'N', nvl(parent_tax_line.expenditure_organization_id,parent_taxable_dist.expenditure_organization_id))
3229 expenditure_organization_id, /* bug 11076722 modified bug 10155425 */
3230 DECODE(NVL(zd.recoverable_flag, 'N'),
3231 'Y', NULL,
3232 'N', nvl(parent_tax_line.expenditure_type,parent_taxable_dist.expenditure_type)) expenditure_type, /* bug 11076722 modified bug 10155425 */
3233 parent_taxable_dist.parent_invoice_id parent_invoice_id,
3234 DECODE(NVL(zd.recoverable_flag, 'N'),
3235 'Y', 'E',
3236 'N', parent_taxable_dist.pa_addition_flag) pa_addition_flag,
3237 DECODE(NVL(zd.recoverable_flag, 'N'),
3238 'Y', NULL,
3239 'N', nvl(parent_tax_line.pa_quantity,parent_taxable_dist.pa_quantity)) pa_quantity, /* bug 11076722 modified bug 10155425 */
3240 DECODE(NVL(zd.recoverable_flag, 'N'),
3241 'Y', NULL,
3242 'N', parent_taxable_dist.project_accounting_context)
3243 project_accounting_context,
3244 DECODE(NVL(zd.recoverable_flag, 'N'),
3245 'Y', NULL,
3246 'N', nvl(parent_tax_line.project_id,parent_taxable_dist.project_id)) project_id, /* bug 11076722 modified bug 10155425 */
3247 DECODE(NVL(zd.recoverable_flag, 'N'),
3248 'Y', NULL,
3249 'N', nvl(parent_tax_line.task_id,parent_taxable_dist.task_id)) task_id, /* bug 11076722 modified bug 10155425 */
3250 aid.awt_group_id awt_group_id,
3251 --Bug6505640 Populating DFF's from Invoice distributions instead of Tax dists
3252 aid.global_attribute_category global_attribute_category,
3253 aid.global_attribute1 global_attribute1,
3254 aid.global_attribute2 global_attribute2,
3255 aid.global_attribute3 global_attribute3,
3256 aid.global_attribute4 global_attribute4,
3257 aid.global_attribute5 global_attribute5,
3258 aid.global_attribute6 global_attribute6,
3259 aid.global_attribute7 global_attribute7,
3260 aid.global_attribute8 global_attribute8,
3261 aid.global_attribute9 global_attribute9,
3262 aid.global_attribute10 global_attribute10,
3263 aid.global_attribute11 global_attribute11,
3264 aid.global_attribute12 global_attribute12,
3265 aid.global_attribute13 global_attribute13,
3266 aid.global_attribute14 global_attribute14,
3267 aid.global_attribute15 global_attribute15,
3268 aid.global_attribute16 global_attribute16,
3269 aid.global_attribute17 global_attribute17,
3270 aid.global_attribute18 global_attribute18,
3271 aid.global_attribute19 global_attribute19,
3272 aid.global_attribute20 global_attribute20,
3273 DECODE(NVL(zd.recoverable_flag, 'N'),
3274 'Y', NULL,
3275 'N', aid.award_id) award_id, /* bug 10155425 bug 10282701 */
3276 DECODE(zd.ref_doc_dist_id,
3277 NULL, DECODE(zl.applied_to_trx_id,
3278 NULL, 'NOT_MATCHED',
3279 'OTHER_TO_RECEIPT'),
3280 'NOT_MATCHED') dist_match_type,
3281 DECODE(NVL(zd.recoverable_flag, 'N'),
3282 'Y', NULL,
3283 --Bug 8910531
3284 'N', parent_taxable_dist.rcv_transaction_id) rcv_transaction_id,
3285 zd.recoverable_flag tax_recoverable_flag,
3286 parent_taxable_dist.cancellation_flag cancellation_flag,
3287 DECODE(NVL(zd.inclusive_flag, 'N'),
3288 'Y', zd.trx_line_id,
3289 'N', nvl(parent_tax_line.line_number,
3290 parent_taxable_dist.invoice_line_number)) invoice_line_number,
3291 parent_taxable_dist.corrected_invoice_dist_id corrected_invoice_dist_id,
3292 DECODE(NVL(zd.recoverable_flag, 'N'),
3293 'Y', NULL,
3294 zd.func_curr_rounding_adjustment) rounding_amt,
3295 -- This will update the rounding_amt in the recoverable dist
3296 -- for the non-recoverable the primary distribution will be
3297 -- updated later on
3298 decode(NVL(zl.tax_only_line_flag,'N'),
3299 'Y', NULL, zd.trx_line_dist_id) charge_applicable_to_dist_id,
3300 DECODE(zl.ref_doc_trx_id,
3301 NULL, 'CANDIDATE',
3302 'PERMANENT') distribution_class,
3303 zd.tax_rate_id tax_code_id,
3304 zd.rec_nrec_tax_dist_id detail_tax_dist_id,
3305 zd.rec_nrec_rate rec_nrec_rate,
3306 zd.recovery_rate_id recovery_rate_id,
3307 zd.recovery_rate_code recovery_rate_name,
3308 zd.recovery_type_code recovery_type_code,
3309 zd.taxable_amt taxable_amount,
3310 zd.taxable_amt_funcl_curr taxable_base_amount,
3311 zd.summary_tax_line_id summary_tax_line_id,
3312 null extra_po_erv,
3313 -- (zd.applied_to_doc_erv - zx.reference_doc_erv) null extra_po_erv,
3314 DECODE(parent_item_line.line_type_lookup_code,
3315 'PREPAY', DECODE(NVL(zd.recoverable_flag, 'N'),
3316 'N', (zd.prd_tax_amt - zd.rec_nrec_tax_amt), NULL),
3317 NULL) prepay_tax_diff_amount,
3318 aid.invoice_distribution_id invoice_distribution_id,
3319 aid.pay_awt_group_id pay_awt_group_id, --bug8345264
3320 zd.account_source_tax_rate_id
3321 FROM zx_trx_headers_gt gt,
3322 zx_rec_nrec_dist zd,
3323 zx_lines zl,
3324 ap_invoices_all ai,
3325 ap_invoice_distributions_all aid,
3326 ap_supplier_sites_all pvs,
3327 ap_system_parameters_all asp,
3328 financials_system_params_all fsp,
3329 po_distributions_all pd,
3330 ap_invoice_lines_all parent_tax_line,
3331 ap_invoice_lines_all parent_item_line,
3332 ap_invoice_distributions_all parent_taxable_dist
3333 WHERE gt.APPLICATION_ID = zd.APPLICATION_ID
3334 AND gt.ENTITY_CODE = zd.ENTITY_CODE
3335 AND gt.EVENT_CLASS_CODE = zd.EVENT_CLASS_CODE
3336 AND gt.TRX_ID = zd.TRX_ID
3337 AND zd.tax_line_id = zl.tax_line_id
3338 AND gt.trx_id = ai.invoice_id
3339 AND ai.invoice_id = aid.invoice_id
3340 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
3341 AND aid.line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
3342 AND nvl(aid.reversal_flag,'N') <> 'Y'
3343 AND (NVL(aid.posted_flag,'N') <> 'Y' AND
3344 aid.accounting_event_id IS NULL AND
3345 NVL(aid.encumbered_flag, 'N') NOT IN ('Y','D','W','X')) --Bug7419940 Dont allow any insert from posted / frozen variacnes it should be reversed)
3346 AND ai.vendor_site_id = pvs.vendor_site_id
3347 AND ai.set_of_books_id = asp.set_of_books_id
3348 AND ai.org_id = asp.org_id
3349 AND asp.set_of_books_id = fsp.set_of_books_id
3350 AND asp.org_id = fsp.org_id
3351 AND parent_taxable_dist.po_distribution_id = pd.po_distribution_id(+)
3352 AND zd.trx_id = parent_tax_line.invoice_id (+)
3353 AND zd.summary_tax_line_id = parent_tax_line.summary_tax_line_id(+)
3354 AND zd.trx_id = parent_item_line.invoice_id(+)
3355 AND zd.trx_line_id = parent_item_line.line_number(+)
3356 AND zd.trx_id = parent_taxable_dist.invoice_id(+)
3357 AND zd.trx_line_dist_id = parent_taxable_dist.invoice_distribution_id(+);
3358
3359
3360 CURSOR update_tax_variances IS
3361 SELECT /*+ leading(gt,zd) cardinality(gt,1) */
3362 zd.gl_date accounting_date , --Bug6809792
3363 /*For tax distributions accounting date will be stamped from zx_rec_nrec_dist
3364 Ebtax will now store accounting date of opne period in their table*/
3365 (CASE aid.line_type_lookup_code
3366 WHEN 'TERV' THEN
3367 DECODE(pd.destination_type_code, 'EXPENSE', pd.code_combination_id,
3368 parent_taxable_dist.dist_code_combination_id)
3369 ELSE
3370 DECODE(pd.destination_type_code, 'EXPENSE',
3371 DECODE(pd.accrue_on_receipt_flag, 'Y', pd.code_combination_id,
3372 parent_taxable_dist.dist_code_combination_id),
3373 pd.variance_account_id)
3374 END) dist_code_combination_id,
3375 (CASE aid.line_type_lookup_code
3376 WHEN 'TIPV' THEN 'TIPV'
3377 WHEN 'TERV' THEN 'TERV'
3378 WHEN 'TRV' THEN 'TRV'
3379 END) line_type_lookup_code,
3380 ap_utilities_pkg.get_gl_period_name(zd.gl_date,ai.org_id) period_name,
3381 (CASE aid.line_type_lookup_code
3382 WHEN 'TIPV' THEN -- bug 10291717
3383 ap_etax_utility_pkg.get_tipv(
3384 zd.rate_tax_factor, zd.trx_line_dist_qty,
3385 nvl2(parent_taxable_dist.rcv_transaction_id,
3386 ap_etax_utility_pkg.get_converted_price
3387 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
3388 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,zd.per_trx_curr_unit_nr_amt),
3389 zd.price_diff, parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3390 parent_item_line.line_source, ai.invoice_currency_code, parent_item_line.match_type , --Bug10416960
3391 zd.trx_line_dist_id , zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id)
3392 WHEN 'TRV' THEN
3393 (ap_etax_utility_pkg.get_tv(
3394 zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt,
3395 nvl(zd.ref_doc_per_unit_nrec_tax_amt,0), zd.per_trx_curr_unit_nr_amt,
3396 zd.ref_per_trx_curr_unit_nr_amt, zd.price_diff, parent_tax_line.corrected_inv_id,
3397 parent_item_line.line_type_lookup_code, parent_item_line.line_source, ai.invoice_currency_code, --Bug10416960
3398 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id) -
3399 ap_etax_utility_pkg.get_tipv(
3400 zd.rate_tax_factor, zd.trx_line_dist_qty,
3401 nvl2(parent_taxable_dist.rcv_transaction_id,
3402 ap_etax_utility_pkg.get_converted_price
3403 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
3404 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,per_trx_curr_unit_nr_amt),
3405 zd.price_diff, parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3406 parent_item_line.line_source, ai.invoice_currency_code, parent_item_line.match_type , zd.trx_line_dist_id , --Bug10416960
3407 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id))
3408 WHEN 'TERV' THEN 0
3409 END) amount,
3410 (CASE aid.line_type_lookup_code
3411 WHEN 'TIPV' THEN
3412 ap_utilities_pkg.ap_round_currency(
3413 ap_etax_utility_pkg.get_tipv_base(
3414 zd.rate_tax_factor, zd.trx_line_dist_qty,
3415 nvl2(parent_taxable_dist.rcv_transaction_id,
3416 ap_etax_utility_pkg.get_converted_price
3417 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
3418 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,zd.per_trx_curr_unit_nr_amt),
3419 zd.price_diff, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate, NULL,
3420 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3421 parent_item_line.line_source, ai.invoice_currency_code, asp.base_currency_code, --Bug10416960
3422 parent_item_line.match_type , zd.trx_line_dist_id , zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id),
3423 asp.base_currency_code)
3424 WHEN 'TRV' THEN
3425 ap_utilities_pkg.ap_round_currency(
3426 (ap_etax_utility_pkg.get_tv_base(
3427 zd.rate_tax_factor, zd.trx_line_dist_qty, zd.per_unit_nrec_tax_amt,
3428 nvl(zd.ref_doc_per_unit_nrec_tax_amt,0), zd.per_trx_curr_unit_nr_amt,
3429 zd.ref_per_trx_curr_unit_nr_amt, nvl(zd.currency_conversion_rate,1),
3430 zd.ref_doc_curr_conv_rate, zd.price_diff, parent_tax_line.corrected_inv_id,
3431 parent_item_line.line_type_lookup_code, parent_item_line.line_source, asp.base_currency_code, --Bug10416960
3432 parent_item_line.match_type, zd.unit_price , zd.trx_line_dist_id , zd.ref_doc_unit_price , zd.rec_nrec_tax_dist_id)
3433 - (DECODE(find_val(zd.trx_line_dist_id),0,1,0)*ap_etax_utility_pkg.get_terv(
3434 zd.trx_line_dist_qty, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate,
3435 zd.applied_to_doc_curr_conv_rate, NULL, zd.per_unit_nrec_tax_amt,
3436 nvl(zd.ref_doc_per_unit_nrec_tax_amt,zd.per_unit_nrec_tax_amt),
3437 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3438 parent_item_line.line_source, asp.base_currency_code , zd.trx_line_dist_id , zd.ref_doc_unit_price , --Bug10416960
3439 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id,zd.unit_price)) --Bug10416960
3440 - ap_etax_utility_pkg.get_tipv_base(
3441 zd.rate_tax_factor, zd.trx_line_dist_qty,
3442 nvl2(parent_taxable_dist.rcv_transaction_id,
3443 ap_etax_utility_pkg.get_converted_price
3444 (parent_taxable_dist.invoice_distribution_id), zd.unit_price),
3445 zd.ref_doc_unit_price, nvl(zd.ref_per_trx_curr_unit_nr_amt,zd.per_trx_curr_unit_nr_amt),
3446 zd.price_diff, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate, NULL,
3447 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3448 parent_item_line.line_source, ai.invoice_currency_code, asp.base_currency_code, --Bug10416960
3449 parent_item_line.match_type , zd.trx_line_dist_id , zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id)),
3450 asp.base_currency_code) -- bug 9231678
3451 WHEN 'TERV' THEN
3452 ap_utilities_pkg.ap_round_currency
3453 (ap_etax_utility_pkg.get_terv(
3454 zd.trx_line_dist_qty, zd.currency_conversion_rate, zd.ref_doc_curr_conv_rate,
3455 zd.applied_to_doc_curr_conv_rate, NULL, zd.per_unit_nrec_tax_amt,
3456 nvl(zd.ref_doc_per_unit_nrec_tax_amt,zd.per_unit_nrec_tax_amt),
3457 parent_tax_line.corrected_inv_id, parent_item_line.line_type_lookup_code, --Bug10416960
3458 parent_item_line.line_source, asp.base_currency_code , zd.trx_line_dist_id , zd.ref_doc_unit_price , --Bug10416960
3459 zd.ref_per_trx_curr_unit_nr_amt , zd.rec_nrec_tax_dist_id,zd.unit_price), asp.base_currency_code) --Bug10416960
3460 END) base_amount,
3461 DECODE(NVL(zd.inclusive_flag, 'N'),
3462 'Y', parent_item_line.description,
3463 'N', parent_tax_line.description) description,
3464 DECODE(NVL(zd.inclusive_flag, 'N'),
3465 'Y', DECODE(parent_item_line.type_1099, NULL, NULL,
3466 parent_item_line.income_tax_region),
3467 'N', DECODE(parent_tax_line.type_1099, NULL, NULL,
3468 parent_tax_line.income_tax_region)) income_tax_region,
3469 DECODE(NVL(zd.inclusive_flag, 'N'),
3470 'Y', parent_item_line.type_1099,
3471 'N', parent_tax_line.type_1099) type_1099,
3472 --Bug9346774
3473 aid.attribute1 attribute1,
3474 aid.attribute10 attribute10,
3475 aid.attribute11 attribute11,
3476 aid.attribute12 attribute12,
3477 aid.attribute13 attribute13,
3478 aid.attribute14 attribute14,
3479 aid.attribute15 attribute15,
3480 aid.attribute2 attribute2,
3481 aid.attribute3 attribute3,
3482 aid.attribute4 attribute4,
3483 aid.attribute5 attribute5,
3484 aid.attribute6 attribute6,
3485 aid.attribute7 attribute7,
3486 aid.attribute8 attribute8,
3487 aid.attribute9 attribute9,
3488 aid.attribute_category attribute_category,
3489 --Bug9346774
3490 DECODE(NVL(zd.recoverable_flag, 'N'),
3491 'Y', NULL, 'N', nvl(parent_tax_line.expenditure_item_date, parent_taxable_dist.expenditure_item_date)) expenditure_item_date, /* bug 11076722 modified bug 10155425 */
3492 DECODE(NVL(zd.recoverable_flag, 'N'),
3493 'Y', NULL, 'N', nvl(parent_tax_line.expenditure_organization_id,parent_taxable_dist.expenditure_organization_id)) expenditure_organization_id, /* bug 11076722 modified bug 10155425 */
3494 DECODE(NVL(zd.recoverable_flag, 'N'),
3495 'Y', NULL, 'N', nvl(parent_tax_line.expenditure_type,parent_taxable_dist.expenditure_type)) expenditure_type, /* bug 11076722 modified bug 10155425 */
3496 parent_taxable_dist.parent_invoice_id parent_invoice_id,
3497 DECODE(NVL(zd.recoverable_flag, 'N'),
3498 'Y', 'E', 'N', parent_taxable_dist.pa_addition_flag) pa_addition_flag,
3499 DECODE(NVL(zd.recoverable_flag, 'N'),
3500 'Y', NULL, 'N', nvl(parent_tax_line.pa_quantity,parent_taxable_dist.pa_quantity)) pa_quantity, /* bug 11076722 modified bug 10155425 */
3501 DECODE(NVL(zd.recoverable_flag, 'N'),
3502 'Y', NULL, 'N', parent_taxable_dist.project_accounting_context) project_accounting_context,
3503 DECODE(NVL(zd.recoverable_flag, 'N'),
3504 'Y', NULL, 'N', nvl(parent_tax_line.project_id,parent_taxable_dist.project_id)) project_id, /* bug 11076722 modified bug 10155425 */
3505 DECODE(NVL(zd.recoverable_flag, 'N'),
3506 'Y', NULL, 'N', nvl(parent_tax_line.task_id,parent_taxable_dist.task_id)) task_id, /* bug 11076722 modified bug 10155425 */
3507 aid.awt_group_id awt_group_id,
3508 --Bug9346774
3509 aid.global_attribute_category global_attribute_category,
3510 aid.global_attribute1 global_attribute1,
3511 aid.global_attribute2 global_attribute2,
3512 aid.global_attribute3 global_attribute3,
3513 aid.global_attribute4 global_attribute4,
3514 aid.global_attribute5 global_attribute5,
3515 aid.global_attribute6 global_attribute6,
3516 aid.global_attribute7 global_attribute7,
3517 aid.global_attribute8 global_attribute8,
3518 aid.global_attribute9 global_attribute9,
3519 aid.global_attribute10 global_attribute10,
3520 aid.global_attribute11 global_attribute11,
3521 aid.global_attribute12 global_attribute12,
3522 aid.global_attribute13 global_attribute13,
3523 aid.global_attribute14 global_attribute14,
3524 aid.global_attribute15 global_attribute15,
3525 aid.global_attribute16 global_attribute16,
3526 aid.global_attribute17 global_attribute17,
3527 aid.global_attribute18 global_attribute18,
3528 aid.global_attribute19 global_attribute19,
3529 aid.global_attribute20 global_attribute20,
3530 --Bug9346774
3531 DECODE(NVL(zd.recoverable_flag, 'N'),
3532 'Y', NULL, 'N', aid.award_id) award_id, /* bug 10155425 bug 10282701 */
3533 DECODE(zd.ref_doc_dist_id,
3534 NULL, DECODE(zl.applied_to_trx_id,
3535 NULL, 'NOT_MATCHED', 'OTHER_TO_RECEIPT'), 'NOT_MATCHED') dist_match_type,
3536 DECODE(NVL(zd.recoverable_flag, 'N'),
3537 --Bug 8910531
3538 'Y', NULL, 'N', parent_taxable_dist.rcv_transaction_id) rcv_transaction_id,
3539 zd.recoverable_flag tax_recoverable_flag,
3540 parent_taxable_dist.cancellation_flag cancellation_flag,
3541 DECODE(NVL(zd.inclusive_flag, 'N'),
3542 'Y', zd.trx_line_id, 'N', parent_tax_line.line_number) invoice_line_number,
3543 parent_taxable_dist.corrected_invoice_dist_id corrected_invoice_dist_id,
3544 NULL rounding_amt,
3545 decode(NVL(zl.tax_only_line_flag,'N'),
3546 'Y', NULL, zd.trx_line_dist_id) charge_applicable_to_dist_id,
3547 DECODE(zl.ref_doc_trx_id, NULL, 'CANDIDATE', 'PERMANENT') distribution_class,
3548 zd.tax_rate_id tax_code_id,
3549 zd.rec_nrec_tax_dist_id detail_tax_dist_id,
3550 zd.rec_nrec_rate rec_nrec_rate,
3551 zd.recovery_rate_id recovery_rate_id,
3552 zd.recovery_rate_code recovery_rate_name,
3553 zd.recovery_type_code recovery_type_code,
3554 NULL taxable_amount,
3555 NULL taxable_base_amount,
3556 zd.summary_tax_line_id summary_tax_line_id,
3557 NULL extra_po_erv,
3558 NULL prepay_tax_diff_amount,
3559 aid.invoice_distribution_id invoice_distribution_id,
3560 aid.pay_awt_group_id pay_awt_group_id, --Bug8345264
3561 zd.account_source_tax_rate_id account_source_tax_rate_id
3562 FROM zx_trx_headers_gt gt,
3563 zx_rec_nrec_dist zd,
3564 zx_lines zl,
3565 ap_invoices_all ai,
3566 ap_invoice_distributions_all aid,
3567 ap_supplier_sites_all pvs,
3568 ap_system_parameters_all asp,
3569 financials_system_params_all fsp,
3570 po_distributions_all pd,
3571 ap_invoice_lines_all parent_tax_line,
3572 ap_invoice_lines_all parent_item_line,
3573 ap_invoice_distributions_all parent_taxable_dist
3574 WHERE gt.APPLICATION_ID = zd.APPLICATION_ID
3575 AND gt.ENTITY_CODE = zd.ENTITY_CODE
3576 AND gt.EVENT_CLASS_CODE = zd.EVENT_CLASS_CODE
3577 AND gt.TRX_ID = zd.TRX_ID
3578 AND zd.tax_line_id = zl.tax_line_id
3579 AND gt.trx_id = ai.invoice_id
3580 AND ai.invoice_id = aid.invoice_id
3581 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
3582 AND aid.line_type_lookup_code IN ('TIPV', 'TRV', 'TERV')
3583 AND nvl(aid.reversal_flag,'N') <> 'Y'
3584 AND (NVL(aid.posted_flag,'N') <> 'Y' AND
3585 aid.accounting_event_id IS NULL AND
3586 NVL(aid.encumbered_flag, 'N') NOT IN ('Y','D','W','X')) --Bug7419940 Dont allow any insert from posted / frozen variacnes it should be reversed)
3587 AND ai.vendor_site_id = pvs.vendor_site_id
3588 AND ai.set_of_books_id = asp.set_of_books_id
3589 AND ai.org_id = asp.org_id
3590 AND asp.set_of_books_id = fsp.set_of_books_id
3591 AND asp.org_id = fsp.org_id
3592 AND parent_taxable_dist.po_distribution_id = pd.po_distribution_id(+)
3593 AND zd.trx_id = parent_tax_line.invoice_id (+)
3594 AND zd.summary_tax_line_id = parent_tax_line.summary_tax_line_id(+)
3595 AND zd.trx_id = parent_item_line.invoice_id(+)
3596 AND zd.trx_line_id = parent_item_line.line_number(+)
3597 AND zd.trx_id = parent_taxable_dist.invoice_id(+)
3598 AND zd.trx_line_dist_id = parent_taxable_dist.invoice_distribution_id(+)
3599 AND ai.invoice_type_lookup_code <> 'PREPAYMENT' --BUG11656125
3600 AND parent_item_line.line_type_lookup_code(+) <> 'PREPAY';
3601 -- bug 9231678 removed sign condition
3602
3603 -- Cursors for self assessed distributions
3604 CURSOR insert_tax_self IS
3605 SELECT /*+ leading(gt,zd) cardinality(gt,1) INDEX (ZD ZX_REC_NREC_DIST_U3) */
3606 zd.gl_date accounting_date , --Bug6809792
3607 /*For tax distributions accounting date will be stamped from zx_rec_nrec_dist
3608 Ebtax will now store accounting date of opne period in their table*/
3609 -- Modified dist_code_combination_id value for bug#Bug9437885
3610 --DECODE(pd.accrue_on_receipt_flag, 'Y', pd.code_combination_id,parent_taxable_dist.dist_code_combination_id) dist_code_combination_id,
3611 DECODE(pd.destination_type_code,
3612 'EXPENSE',DECODE(pd.accrue_on_receipt_flag, 'Y', pd.code_combination_id,parent_taxable_dist.dist_code_combination_id),
3613 'INVENTORY',pd.variance_account_id,
3614 'SHOP FLOOR',pd.variance_account_id, --Bug16003410
3615 parent_taxable_dist.dist_code_combination_id) dist_code_combination_id, /*Bug13084462: Modified bug 9437885 to use variance account on self assess tax for invoice matched to PO for inventory items*/
3616 -- this ccid is a temporary value that will be used if other conditions
3617 -- are met before inserting the tax distribution
3618 DECODE(NVL(zd.recoverable_flag, 'N'),
3619 'Y', 'REC_TAX',
3620 'N', 'NONREC_TAX') line_type_lookup_code,
3621 ap_utilities_pkg.get_gl_period_name(zd.gl_date,ai.org_id) period_name,
3622 zd.rec_nrec_tax_amt amount,
3623 ap_utilities_pkg.ap_round_currency
3624 (zd.rec_nrec_tax_amt_funcl_curr,asp.base_currency_code) base_amount,
3625 parent_item_line.description description,
3626 DECODE(parent_item_line.type_1099,
3627 NULL, NULL,
3628 parent_item_line.income_tax_region) income_tax_region,
3629 parent_taxable_dist.po_distribution_id po_distribution_id, --changed for bug 8713009
3630 parent_item_line.type_1099 type_1099,
3631 zd.attribute1 attribute1,
3632 zd.attribute10 attribute10,
3633 zd.attribute11 attribute11,
3634 zd.attribute12 attribute12,
3635 zd.attribute13 attribute13,
3636 zd.attribute14 attribute14,
3637 zd.attribute15 attribute15,
3638 zd.attribute2 attribute2,
3639 zd.attribute3 attribute3,
3640 zd.attribute4 attribute4,
3641 zd.attribute5 attribute5,
3642 zd.attribute6 attribute6,
3643 zd.attribute7 attribute7,
3644 zd.attribute8 attribute8,
3645 zd.attribute9 attribute9,
3646 zd.attribute_category attribute_category,
3647 DECODE(NVL(zd.recoverable_flag, 'N'),
3648 'Y', NULL,
3649 'N', parent_taxable_dist.expenditure_item_date) expenditure_item_date,
3650 DECODE(NVL(zd.recoverable_flag, 'N'),
3651 'Y', NULL,
3652 'N', parent_taxable_dist.expenditure_organization_id)
3653 expenditure_organization_id,
3654 DECODE(NVL(zd.recoverable_flag, 'N'),
3655 'Y', NULL,
3656 'N', parent_taxable_dist.expenditure_type) expenditure_type,
3657 parent_taxable_dist.parent_invoice_id parent_invoice_id,
3658 DECODE(NVL(zd.recoverable_flag, 'N'),
3659 'Y', 'E',
3660 'N', 'N') pa_addition_flag, /* Bug 13594870 */
3661 /* 'N', decode(parent_taxable_dist.pa_addition_flag,'Y','N',parent_taxable_dist.pa_addition_flag)) pa_addition_flag, Bug 13106066:added decode logic*/
3662 DECODE(NVL(zd.recoverable_flag, 'N'),
3663 'Y', NULL,
3664 'N', parent_taxable_dist.pa_quantity) pa_quantity,
3665 DECODE(NVL(zd.recoverable_flag, 'N'),
3666 'Y', NULL,
3667 'N', parent_taxable_dist.project_accounting_context)
3668 project_accounting_context,
3669 DECODE(NVL(zd.recoverable_flag, 'N'),
3670 'Y', NULL,
3671 'N', parent_taxable_dist.project_id) project_id,
3672 DECODE(NVL(zd.recoverable_flag, 'N'),
3673 'Y', NULL,
3674 'N', parent_taxable_dist.task_id) task_id,
3675 DECODE(NVL(asp.allow_awt_flag, 'N'),
3676 'Y', DECODE(NVL(pvs.allow_awt_flag, 'N'),
3677 'Y', DECODE(NVL(asp.awt_include_tax_amt, 'N'),
3678 'Y', DECODE(NVL(zd.inclusive_flag, 'N'),
3679 'Y', DECODE(zd.applied_from_tax_dist_id,
3680 null, parent_taxable_dist.awt_group_id, --Bug8334059
3681 ap_etax_utility_pkg.Get_Prepay_Awt_Group_Id(
3682 parent_taxable_dist.prepay_distribution_id,
3683 P_Calling_Sequence)),
3684 'N', parent_taxable_dist.awt_group_id),
3685 NULL),
3686 NULL),
3687 NULL) awt_group_id,
3688 zd.global_attribute_category global_attribute_category,
3689 zd.global_attribute1 global_attribute1,
3690 zd.global_attribute2 global_attribute2,
3691 zd.global_attribute3 global_attribute3,
3692 zd.global_attribute4 global_attribute4,
3693 zd.global_attribute5 global_attribute5,
3694 zd.global_attribute6 global_attribute6,
3695 zd.global_attribute7 global_attribute7,
3696 zd.global_attribute8 global_attribute8,
3697 zd.global_attribute9 global_attribute9,
3698 zd.global_attribute10 global_attribute10,
3699 zd.global_attribute11 global_attribute11,
3700 zd.global_attribute12 global_attribute12,
3701 zd.global_attribute13 global_attribute13,
3702 zd.global_attribute14 global_attribute14,
3703 zd.global_attribute15 global_attribute15,
3704 zd.global_attribute16 global_attribute16,
3705 zd.global_attribute17 global_attribute17,
3706 zd.global_attribute18 global_attribute18,
3707 zd.global_attribute19 global_attribute19,
3708 zd.global_attribute20 global_attribute20,
3709 DECODE(NVL(zd.recoverable_flag, 'N'),
3710 'Y', NULL,
3711 'N', parent_taxable_dist.award_id) award_id,
3712 DECODE(zd.ref_doc_dist_id,
3713 NULL, DECODE(zl.applied_to_trx_id,
3714 NULL, 'NOT_MATCHED',
3715 'OTHER_TO_RECEIPT'),
3716 'NOT_MATCHED') dist_match_type,
3717 DECODE(NVL(zd.recoverable_flag, 'N'),
3718 'Y', NULL,
3719 --Bug 8910531
3720 'N', parent_taxable_dist.rcv_transaction_id) rcv_transaction_id,
3721 zd.recoverable_flag tax_recoverable_flag,
3722 parent_taxable_dist.merchant_document_number merchant_document_number, --Bug14658408: Start
3723 parent_taxable_dist.merchant_name merchant_name,
3724 parent_taxable_dist.merchant_reference merchant_reference,
3725 parent_taxable_dist.merchant_tax_reg_number merchant_tax_reg_number,
3726 parent_taxable_dist.merchant_taxpayer_id merchant_taxpayer_id, --Bug14658408: End
3727 parent_taxable_dist.cancellation_flag cancellation_flag,
3728 zd.trx_line_id invoice_line_number,
3729 parent_taxable_dist.corrected_invoice_dist_id corrected_invoice_dist_id,
3730 DECODE(NVL(zd.recoverable_flag, 'N'),
3731 'Y', NULL,
3732 zd.func_curr_rounding_adjustment) rounding_amt,
3733 -- the rounding amount in the non-recoverable case will be populated
3734 -- to the primary distribution later in the cycle.
3735 decode(NVL(zl.tax_only_line_flag,'N'),
3736 'Y', NULL, zd.trx_line_dist_id) charge_applicable_to_dist_id,
3737 DECODE(zl.ref_doc_trx_id,
3738 NULL, 'CANDIDATE',
3739 'PERMANENT') distribution_class,
3740 zd.tax_rate_id tax_code_id,
3741 zd.rec_nrec_tax_dist_id detail_tax_dist_id,
3742 zd.rec_nrec_rate rec_nrec_rate,
3743 zd.recovery_rate_id recovery_rate_id,
3744 zd.recovery_rate_code recovery_rate_name,
3745 zd.recovery_type_code recovery_type_code,
3746 zd.summary_tax_line_id summary_tax_line_id,
3747 null extra_po_erv,
3748 zd.taxable_amt taxable_amount,
3749 zd.taxable_amt_funcl_curr taxable_base_amount,
3750 pd.accrue_on_receipt_flag accrue_on_receipt_flag,
3751 asp.allow_flex_override_flag allow_flex_override_flag,
3752 fsp.purch_encumbrance_flag purch_encumbrance_flag,
3753 asp.org_id org_id,
3754 zd.tax_regime_id tax_regime_id,
3755 zd.tax_id tax_id,
3756 zd.tax_status_id tax_status_id,
3757 zl.tax_jurisdiction_id tax_jurisdiction_id,
3758 'N', -- Bug 13821160
3759 parent_taxable_dist.cancellation_flag parent_dist_cancellation_flag,
3760 parent_taxable_dist.reversal_flag parent_dist_reversal_flag,
3761 parent_taxable_dist.parent_reversal_id parent_dist_parent_reversal_id,
3762 zd.reversed_tax_dist_id reversed_tax_dist_id,
3763 zd.adjusted_doc_tax_dist_id adjusted_doc_tax_dist_id,
3764 zd.applied_from_tax_dist_id applied_from_tax_dist_id,
3765 -- the prepay_distribution_id will be populated with
3766 -- invoice_distribution_id for the TAX rec or nonrec
3767 -- asociated
3768 DECODE(parent_item_line.line_type_lookup_code,
3769 'PREPAY',
3770 AP_ETAX_UTILITY_PKG.Get_Dist_Id_For_Tax_Dist_Id(
3771 zd.applied_from_tax_dist_id),
3772 NULL) prepay_distribution_id,
3773 DECODE(parent_item_line.line_type_lookup_code,
3774 'PREPAY', DECODE(NVL(zd.recoverable_flag, 'N'),
3775 'N', (zd.prd_tax_amt - zd.rec_nrec_tax_amt), NULL),
3776 NULL) prepay_tax_diff_amount,
3777 ai.invoice_id invoice_id,
3778 ai.batch_id batch_id,
3779 ai.set_of_books_id set_of_books_id,
3780 parent_taxable_dist.pay_awt_group_id pay_awt_group_id, --Bug8345264
3781 zd.account_source_tax_rate_id account_source_tax_rate_id
3782 FROM zx_trx_headers_gt gt,
3783 zx_rec_nrec_dist zd,
3784 zx_lines zl,
3785 ap_invoices_all ai,
3786 ap_supplier_sites_all pvs,
3787 ap_system_parameters_all asp,
3788 financials_system_params_all fsp,
3789 po_distributions_all pd,
3790 ap_invoice_lines_all parent_item_line,
3791 ap_invoice_distributions_all parent_taxable_dist
3792 WHERE gt.APPLICATION_ID = zd.APPLICATION_ID
3793 AND gt.ENTITY_CODE = zd.ENTITY_CODE
3794 AND gt.EVENT_CLASS_CODE = zd.EVENT_CLASS_CODE
3795 AND gt.TRX_ID = zd.TRX_ID
3796 AND zd.tax_line_id = zl.tax_line_id
3797 AND gt.trx_id = ai.invoice_id
3798 AND ai.vendor_site_id = pvs.vendor_site_id
3799 AND ai.set_of_books_id = asp.set_of_books_id
3800 AND ai.org_id = asp.org_id
3801 AND asp.set_of_books_id = fsp.set_of_books_id
3802 AND asp.org_id = fsp.org_id
3803 AND NVL(zd.self_assessed_flag, 'N') = 'Y'
3804 AND NVL(zl.reporting_only_flag, 'N') = 'N'
3805 AND parent_taxable_dist.po_distribution_id = pd.po_distribution_id(+)
3806 AND zd.trx_id = parent_item_line.invoice_id(+)
3807 AND zd.trx_line_id = parent_item_line.line_number(+)
3808 AND zd.trx_id = parent_taxable_dist.invoice_id(+)
3809 AND zd.trx_line_dist_id = parent_taxable_dist.invoice_distribution_id(+)
3810 AND NOT EXISTS
3811 (SELECT aid.detail_tax_dist_id
3812 FROM ap_self_assessed_tax_dist_all aid
3813 WHERE aid.invoice_id = ai.invoice_id
3814 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
3815 AND aid.line_type_lookup_code IN ('REC_TAX','NONREC_TAX'))
3816 -- Bug 7462582
3817 -- Reverting the fixes done in bugs 6805527 and 7389822 as Etax bug 7515711 will take care of these fixes.
3818 /* Added by schitlap, epajaril to fix the issue in Bug 6805527 */
3819 /*AND (nvl(parent_taxable_dist.reversal_flag, 'N') <> 'Y'
3820 OR zd.reversed_tax_dist_id IS NULL) -- 7389822*/
3821 ORDER BY detail_tax_dist_id;
3822
3823
3824 CURSOR update_tax_self IS
3825 SELECT /*+ leading(gt,zd) cardinality(gt,1) */
3826 zd.gl_date accounting_date , --Bug6809792
3827 /*For tax distributions accounting date will be stamped from zx_rec_nrec_dist
3828 Ebtax will now store accounting date of opne period in their table*/
3829 aid.dist_code_combination_id dist_code_combination_id, --9437885
3830 -- this ccid is a temporary value that will be used if other conditions
3831 -- are met before inserting the tax distribution
3832 DECODE(NVL(zd.recoverable_flag, 'N'),
3833 'Y', 'REC_TAX',
3834 'N', 'NONREC_TAX') line_type_lookup_code,
3835 ap_utilities_pkg.get_gl_period_name(zd.gl_date,ai.org_id) period_name,
3836 zd.rec_nrec_tax_amt amount,
3837 ap_utilities_pkg.ap_round_currency
3838 (zd.rec_nrec_tax_amt_funcl_curr,asp.base_currency_code) base_amount,
3839 -- included the decode as part of the prepayment changes.
3840 -- since for prepayment applic tax variances will not be created,
3841 -- the base_amount should be the total including variances
3842 DECODE(NVL(zd.inclusive_flag, 'N'),
3843 'Y', parent_item_line.description,
3844 'N', parent_tax_line.description) description,
3845 DECODE(NVL(zd.inclusive_flag, 'N'),
3846 'Y', DECODE(parent_item_line.type_1099,
3847 NULL, NULL,
3848 parent_item_line.income_tax_region),
3849 'N', DECODE(parent_tax_line.type_1099,
3850 NULL, NULL,
3851 parent_tax_line.income_tax_region)) income_tax_region,
3852 DECODE(NVL(zd.inclusive_flag, 'N'),
3853 'Y', parent_item_line.type_1099,
3854 'N', parent_tax_line.type_1099) type_1099,
3855 --Bug9346774
3856 aid.attribute1 attribute1,
3857 aid.attribute10 attribute10,
3858 aid.attribute11 attribute11,
3859 aid.attribute12 attribute12,
3860 aid.attribute13 attribute13,
3861 aid.attribute14 attribute14,
3862 aid.attribute15 attribute15,
3863 aid.attribute2 attribute2,
3864 aid.attribute3 attribute3,
3865 aid.attribute4 attribute4,
3866 aid.attribute5 attribute5,
3867 aid.attribute6 attribute6,
3868 aid.attribute7 attribute7,
3869 aid.attribute8 attribute8,
3870 aid.attribute9 attribute9,
3871 aid.attribute_category attribute_category,
3872 --Bug9346774
3873 DECODE(NVL(zd.recoverable_flag, 'N'),
3874 'Y', NULL,
3875 'N', parent_taxable_dist.expenditure_item_date) expenditure_item_date,
3876 DECODE(NVL(zd.recoverable_flag, 'N'),
3877 'Y', NULL,
3878 'N', parent_taxable_dist.expenditure_organization_id)
3879 expenditure_organization_id,
3880 DECODE(NVL(zd.recoverable_flag, 'N'),
3881 'Y', NULL,
3882 'N', parent_taxable_dist.expenditure_type) expenditure_type,
3883 parent_taxable_dist.parent_invoice_id parent_invoice_id,
3884 DECODE(NVL(zd.recoverable_flag, 'N'),
3885 'Y', 'E',
3886 'N', parent_taxable_dist.pa_addition_flag) pa_addition_flag,
3887 DECODE(NVL(zd.recoverable_flag, 'N'),
3888 'Y', NULL,
3889 'N', parent_taxable_dist.pa_quantity) pa_quantity,
3890 DECODE(NVL(zd.recoverable_flag, 'N'),
3891 'Y', NULL,
3892 'N', parent_taxable_dist.project_accounting_context)
3893 project_accounting_context,
3894 DECODE(NVL(zd.recoverable_flag, 'N'),
3895 'Y', NULL,
3896 'N', parent_taxable_dist.project_id) project_id,
3897 DECODE(NVL(zd.recoverable_flag, 'N'),
3898 'Y', NULL,
3899 'N', parent_taxable_dist.task_id) task_id,
3900 DECODE(NVL(asp.allow_awt_flag, 'N'),
3901 'Y', DECODE(NVL(pvs.allow_awt_flag, 'N'),
3902 'Y', DECODE(NVL(asp.awt_include_tax_amt, 'N'),
3903 'Y', DECODE(NVL(zd.inclusive_flag, 'N'),
3904 'Y', DECODE(zd.applied_from_tax_dist_id,
3905 null, parent_taxable_dist.awt_group_id, --Bug8334059
3906 ap_etax_utility_pkg.Get_Prepay_Awt_Group_Id(
3907 parent_taxable_dist.prepay_distribution_id,
3908 P_Calling_Sequence)),
3909 'N', parent_taxable_dist.awt_group_id),
3910 NULL),
3911 NULL),
3912 NULL) awt_group_id,
3913 --Bug9346774
3914 aid.global_attribute_category global_attribute_category,
3915 aid.global_attribute1 global_attribute1,
3916 aid.global_attribute2 global_attribute2,
3917 aid.global_attribute3 global_attribute3,
3918 aid.global_attribute4 global_attribute4,
3919 aid.global_attribute5 global_attribute5,
3920 aid.global_attribute6 global_attribute6,
3921 aid.global_attribute7 global_attribute7,
3922 aid.global_attribute8 global_attribute8,
3923 aid.global_attribute9 global_attribute9,
3924 aid.global_attribute10 global_attribute10,
3925 aid.global_attribute11 global_attribute11,
3926 aid.global_attribute12 global_attribute12,
3927 aid.global_attribute13 global_attribute13,
3928 aid.global_attribute14 global_attribute14,
3929 aid.global_attribute15 global_attribute15,
3930 aid.global_attribute16 global_attribute16,
3931 aid.global_attribute17 global_attribute17,
3932 aid.global_attribute18 global_attribute18,
3933 aid.global_attribute19 global_attribute19,
3934 aid.global_attribute20 global_attribute20,
3935 --Bug9346774
3936 DECODE(NVL(zd.recoverable_flag, 'N'),
3937 'Y', NULL,
3938 'N', parent_taxable_dist.award_id) award_id,
3939 DECODE(zd.ref_doc_dist_id,
3940 NULL, DECODE(zl.applied_to_trx_id,
3941 NULL, 'NOT_MATCHED',
3942 'OTHER_TO_RECEIPT'),
3943 'NOT_MATCHED') dist_match_type,
3944 DECODE(NVL(zd.recoverable_flag, 'N'),
3945 'Y', NULL,
3946 --Bug 8910531
3947 'N', parent_taxable_dist.rcv_transaction_id) rcv_transaction_id,
3948 zd.recoverable_flag tax_recoverable_flag,
3949 parent_taxable_dist.cancellation_flag cancellation_flag,
3950 zd.trx_line_id invoice_line_number, --Bug13859326
3951 parent_taxable_dist.corrected_invoice_dist_id corrected_invoice_dist_id,
3952 DECODE(NVL(zd.recoverable_flag, 'N'),
3953 'Y', NULL,
3954 zd.func_curr_rounding_adjustment) rounding_amt,
3955 -- This will update the rounding_amt in the recoverable dist
3956 -- for the non-recoverable the primary distribution will be
3957 -- updated later on
3958 decode(NVL(zl.tax_only_line_flag,'N'),
3959 'Y', NULL, zd.trx_line_dist_id) charge_applicable_to_dist_id,
3960 DECODE(zl.ref_doc_trx_id,
3961 NULL, 'CANDIDATE',
3962 'PERMANENT') distribution_class,
3963 zd.tax_rate_id tax_code_id,
3964 zd.rec_nrec_tax_dist_id detail_tax_dist_id,
3965 zd.rec_nrec_rate rec_nrec_rate,
3966 zd.recovery_rate_id recovery_rate_id,
3967 zd.recovery_rate_code recovery_rate_name,
3968 zd.recovery_type_code recovery_type_code,
3969 zd.taxable_amt taxable_amount,
3970 zd.taxable_amt_funcl_curr taxable_base_amount,
3971 zd.summary_tax_line_id summary_tax_line_id,
3972 null extra_po_erv,
3973 -- (zd.applied_to_doc_erv - zx.reference_doc_erv) null extra_po_erv,
3974 DECODE(parent_item_line.line_type_lookup_code,
3975 'PREPAY', DECODE(NVL(zd.recoverable_flag, 'N'),
3976 'N', (zd.prd_tax_amt - zd.rec_nrec_tax_amt), NULL),
3977 NULL) prepay_tax_diff_amount,
3978 aid.invoice_distribution_id invoice_distribution_id,
3979 parent_taxable_dist.pay_awt_group_id pay_awt_group_id, --Bug8345264
3980 zd.account_source_tax_rate_id
3981 FROM zx_trx_headers_gt gt,
3982 zx_rec_nrec_dist zd,
3983 zx_lines zl,
3984 ap_invoices_all ai,
3985 ap_self_assessed_tax_dist_all aid,
3986 ap_supplier_sites_all pvs,
3987 ap_system_parameters_all asp,
3988 financials_system_params_all fsp,
3989 po_distributions_all pd,
3990 ap_invoice_lines_all parent_tax_line,
3991 ap_invoice_lines_all parent_item_line,
3992 ap_invoice_distributions_all parent_taxable_dist
3993 WHERE gt.APPLICATION_ID = zd.APPLICATION_ID
3994 AND gt.ENTITY_CODE = zd.ENTITY_CODE
3995 AND gt.EVENT_CLASS_CODE = zd.EVENT_CLASS_CODE
3996 AND gt.TRX_ID = zd.TRX_ID
3997 AND zd.tax_line_id = zl.tax_line_id
3998 AND gt.trx_id = ai.invoice_id
3999 AND ai.invoice_id = aid.invoice_id
4000 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
4001 AND aid.line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
4002 AND nvl(aid.reversal_flag,'N') <> 'Y'
4003 AND ai.vendor_site_id = pvs.vendor_site_id
4004 AND ai.set_of_books_id = asp.set_of_books_id
4005 AND ai.org_id = asp.org_id
4006 AND asp.set_of_books_id = fsp.set_of_books_id
4007 AND asp.org_id = fsp.org_id
4008 AND parent_taxable_dist.po_distribution_id = pd.po_distribution_id(+)
4009 AND zd.trx_id = parent_tax_line.invoice_id (+)
4010 AND zd.summary_tax_line_id = parent_tax_line.summary_tax_line_id(+)
4011 AND zd.trx_id = parent_item_line.invoice_id(+)
4012 AND zd.trx_line_id = parent_item_line.line_number(+)
4013 AND zd.trx_id = parent_taxable_dist.invoice_id(+)
4014 AND zd.trx_line_dist_id = parent_taxable_dist.invoice_distribution_id(+);
4015
4016
4017 l_dist_code_combination_id ap_invoice_distributions_all.dist_code_combination_id%TYPE;
4018 l_allow_pa_override VARCHAR2(1);
4019
4020 -- Variables for the eTax API to get the default ccids
4021
4022 l_return_status_service VARCHAR2(4000);
4023 l_msg_count NUMBER;
4024 l_msg_data VARCHAR2(4000);
4025 l_tax_liab_ccid ap_invoice_distributions_all.dist_code_combination_id%TYPE;
4026
4027 l_trx_id NUMBER;
4028 l_trx_line_id NUMBER;
4029 l_trx_line_dist_id NUMBER;
4030 l_summary_tax_line_id NUMBER;
4031 l_rec_nrec_tax_dist_id NUMBER;
4032 l_tax_line_id NUMBER;
4033 l_application_id NUMBER;
4034
4035 l_self_assessed_flag VARCHAR2(20);
4036 l_recoverable_flag VARCHAR2(20);
4037 l_reporting_only_flag VARCHAR2(20);
4038
4039 l_first NUMBER;
4040 l_last NUMBER;
4041
4042 l_tax_only_line_flag VARCHAR2(1); --bug12728634
4043 l_pa_success BOOLEAN; --bug12728634
4044 p_ccid AP_INVOICE_DISTRIBUTIONS_ALL.DIST_CODE_COMBINATION_ID%TYPE; --bug12728634
4045 l_pa_called VARCHAR2(1):='N'; --bug12728634
4046
4047
4048 -- Project LCM 7588322
4049 l_lcm_enabled VARCHAR2(1) := 'N';
4050 l_rcv_transaction_id NUMBER;
4051 l_lcm_account_id NUMBER;
4052 l_tax_variance_account_id NUMBER;
4053 l_def_charges_account_id NUMBER;
4054 l_exchange_variance_account_id NUMBER;
4055 l_inv_variance_account_id NUMBER;
4056
4057 --bug 10621602 starts Added the below two variables
4058
4059 l_par_line_type_lookup_code VARCHAR2(30);
4060 l_par_retained_invoice_dist_id NUMBER;
4061
4062 --bug 10621602 ends
4063
4064 TYPE LineList IS TABLE OF VARCHAR2(25);
4065 linetype LineList := LineList('TIPV', 'TRV', 'TERV');
4066
4067 l_err varchar2(2000); --bug10140354
4068
4069 BEGIN
4070
4071 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Return_Tax_Distributions<-'||
4072 P_calling_sequence;
4073
4074 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4075 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'AP_ETAX_UTILITY_PKG.Return_Tax_Distributions(+)');
4076 END IF;
4077
4078 DELETE FROM AP_Line_Temp_GT;
4079
4080 FORALL i IN linetype.FIRST..linetype.LAST
4081 INSERT INTO AP_Line_Temp_GT (Line_Type)
4082 VALUES (linetype(i));
4083
4084 -------------------------------------------------------------------
4085 l_debug_info := 'Get profile option info';
4086 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4087 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
4088 END IF;
4089 -------------------------------------------------------------------
4090
4091 l_allow_pa_override := FND_PROFILE.VALUE('PA_ALLOW_FLEXBUILDER_OVERRIDES');
4092
4093 -------------------------------------------------------------------
4094 l_debug_info := 'Get tax distributions for update';
4095 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4096 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
4097 END IF;
4098 -------------------------------------------------------------------
4099 OPEN UPDATE_TAX_DIST;
4100 LOOP
4101 FETCH UPDATE_TAX_DIST
4102 BULK COLLECT INTO L_INV_DIST_UPD
4103 LIMIT AP_ETAX_PKG.G_BATCH_LIMIT;
4104
4105 EXIT WHEN UPDATE_TAX_DIST%NOTFOUND
4106 AND L_INV_DIST_UPD.COUNT <= 0;
4107
4108 -------------------------------------------------------------------
4109 l_debug_info := 'Tax distributions updated: '||l_inv_dist_upd.count;
4110 -------------------------------------------------------------------
4111 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4112 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4113 END IF;
4114
4115 IF (l_inv_dist_upd.COUNT <> 0) THEN
4116
4117 FOR j IN l_inv_dist_upd.FIRST..l_inv_dist_upd.LAST LOOP
4118
4119 -------------------------------------------------------------------
4120 l_debug_info := ' Excl. Tax New Line Number: '||
4121 l_inv_dist_upd(j).invoice_line_number
4122 ||' '||'Excl Tax dist Id: '||l_inv_dist_upd(j).invoice_distribution_id
4123 ||' '||'Detail Tax Dist Id: '||l_inv_dist_upd(j).detail_tax_dist_id;
4124 -------------------------------------------------------------------
4125 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4126 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4127 END IF;
4128
4129 /*
4130 --bug 10621602 starts
4131 IF AP_ETAX_SERVICES_PKG.ret_dists.exists(l_inv_dist_ins(i).charge_applicable_to_dist_id) THEN
4132 IF ( AP_ETAX_SERVICES_PKG.ret_dists(l_inv_dist_upd(j).charge_applicable_to_dist_id).RETAINED_INVOICE_DIST_ID IS NOT NULL) THEN
4133
4134 IF l_inv_dist_upd(j).line_type_lookup_code = 'NONREC_TAX' THEN
4135
4136 l_inv_dist_upd(j).pa_addition_flag := 'N'; --Make the pa_addition flag N for retainage tax distributions.
4137
4138 END IF;
4139 END IF;
4140 END IF;
4141 --bug 10621602 ends
4142 */ --Update flow should not update pa_addition_flag
4143 UPDATE ap_invoice_distributions_all
4144 SET accounting_date = l_inv_dist_upd(j).accounting_date,
4145 last_updated_by = l_user_id,
4146 last_update_date = sysdate, /*Bug10101457: replaced l_sysdate with sysdate*/
4147 line_type_lookup_code = l_inv_dist_upd(j).line_type_lookup_code,
4148 period_name = l_inv_dist_upd(j).period_name,
4149 amount = l_inv_dist_upd(j).amount,
4150 base_amount = l_inv_dist_upd(j).base_amount, -- bug 10350068
4151 -- Bug 10157751 description = l_inv_dist_upd(j).description,
4152 -- Bug 13880392 income_tax_region = l_inv_dist_upd(j).income_tax_region,
4153 last_update_login = l_login_id,
4154 -- Bug 13880392 type_1099 = l_inv_dist_upd(j).type_1099,
4155 attribute1 = l_inv_dist_upd(j).attribute1,
4156 attribute10 = l_inv_dist_upd(j).attribute10,
4157 attribute11 = l_inv_dist_upd(j).attribute11,
4158 attribute12 = l_inv_dist_upd(j).attribute12,
4159 attribute13 = l_inv_dist_upd(j).attribute13,
4160 attribute14 = l_inv_dist_upd(j).attribute14,
4161 attribute15 = l_inv_dist_upd(j).attribute15,
4162 attribute2 = l_inv_dist_upd(j).attribute2,
4163 attribute3 = l_inv_dist_upd(j).attribute3,
4164 attribute4 = l_inv_dist_upd(j).attribute4,
4165 attribute5 = l_inv_dist_upd(j).attribute5,
4166 attribute6 = l_inv_dist_upd(j).attribute6,
4167 attribute7 = l_inv_dist_upd(j).attribute7,
4168 attribute8 = l_inv_dist_upd(j).attribute8,
4169 attribute9 = l_inv_dist_upd(j).attribute9,
4170 attribute_category = l_inv_dist_upd(j).attribute_category,
4171 expenditure_item_date = l_inv_dist_upd(j).expenditure_item_date,
4172 expenditure_organization_id = l_inv_dist_upd(j).expenditure_organization_id,
4173 expenditure_type = l_inv_dist_upd(j).expenditure_type,
4174 parent_invoice_id = l_inv_dist_upd(j).parent_invoice_id,
4175 pa_addition_flag = pa_addition_flag, --Bug10621602
4176 pa_quantity = l_inv_dist_upd(j).pa_quantity,
4177 project_accounting_context = l_inv_dist_upd(j).project_accounting_context,
4178 project_id = l_inv_dist_upd(j).project_id,
4179 task_id = l_inv_dist_upd(j).task_id,
4180 awt_group_id = l_inv_dist_upd(j).awt_group_id,
4181 global_attribute_category = l_inv_dist_upd(j).global_attribute_category,
4182 global_attribute1 = l_inv_dist_upd(j).global_attribute1,
4183 global_attribute2 = l_inv_dist_upd(j).global_attribute2,
4184 global_attribute3 = l_inv_dist_upd(j).global_attribute3,
4185 global_attribute4 = l_inv_dist_upd(j).global_attribute4,
4186 global_attribute5 = l_inv_dist_upd(j).global_attribute5,
4187 global_attribute6 = l_inv_dist_upd(j).global_attribute6,
4188 global_attribute7 = l_inv_dist_upd(j).global_attribute7,
4189 global_attribute8 = l_inv_dist_upd(j).global_attribute8,
4190 global_attribute9 = l_inv_dist_upd(j).global_attribute9,
4191 global_attribute10 = l_inv_dist_upd(j).global_attribute10,
4192 global_attribute11 = l_inv_dist_upd(j).global_attribute11,
4193 global_attribute12 = l_inv_dist_upd(j).global_attribute12,
4194 global_attribute13 = l_inv_dist_upd(j).global_attribute13,
4195 global_attribute14 = l_inv_dist_upd(j).global_attribute14,
4196 global_attribute15 = l_inv_dist_upd(j).global_attribute15,
4197 global_attribute16 = l_inv_dist_upd(j).global_attribute16,
4198 global_attribute17 = l_inv_dist_upd(j).global_attribute17,
4199 global_attribute18 = l_inv_dist_upd(j).global_attribute18,
4200 global_attribute19 = l_inv_dist_upd(j).global_attribute19,
4201 global_attribute20 = l_inv_dist_upd(j).global_attribute20,
4202 award_id = l_inv_dist_upd(j).award_id,
4203 dist_match_type = l_inv_dist_upd(j).dist_match_type,
4204 rcv_transaction_id = l_inv_dist_upd(j).rcv_transaction_id,
4205 tax_recoverable_flag = l_inv_dist_upd(j).tax_recoverable_flag,
4206 cancellation_flag = l_inv_dist_upd(j).cancellation_flag,
4207 --invoice_line_number = l_inv_dist_upd(j).invoice_line_number,
4208 corrected_invoice_dist_id = l_inv_dist_upd(j).corrected_invoice_dist_id,
4209 rounding_amt = l_inv_dist_upd(j).rounding_amt,
4210 charge_applicable_to_dist_id = l_inv_dist_upd(j).charge_applicable_to_dist_id,
4211 --distribution_class = l_inv_dist_upd(j).distribution_class, --Bug6678578
4212 tax_code_id = l_inv_dist_upd(j).tax_code_id,
4213 detail_tax_dist_id = l_inv_dist_upd(j).detail_tax_dist_id,
4214 rec_nrec_rate = l_inv_dist_upd(j).rec_nrec_rate,
4215 recovery_rate_id = l_inv_dist_upd(j).recovery_rate_id,
4216 recovery_rate_name = l_inv_dist_upd(j).recovery_rate_name,
4217 recovery_type_code = l_inv_dist_upd(j).recovery_type_code,
4218 taxable_amount = l_inv_dist_upd(j).taxable_amount,
4219 taxable_base_amount = l_inv_dist_upd(j).taxable_base_amount,
4220 summary_tax_line_id = l_inv_dist_upd(j).summary_tax_line_id,
4221 extra_po_erv = l_inv_dist_upd(j).extra_po_erv,
4222 prepay_tax_diff_amount = l_inv_dist_upd(j).prepay_tax_diff_amount,
4223 match_status_flag = decode (amount, l_inv_dist_upd(j).amount,
4224 match_status_flag, 'N')
4225 WHERE invoice_distribution_id = l_inv_dist_upd(j).invoice_distribution_id;
4226
4227 -------------------------------------------------------------------
4228 l_debug_info := 'Tax dist id updated: '||l_inv_dist_upd(j).invoice_distribution_id||
4229 ' Tax Detail Tax Dist Id: '||l_inv_dist_upd(j).detail_tax_dist_id||
4230 ' Summary Tax Line Id: '||l_inv_dist_upd(j).summary_tax_line_id||
4231 ' Amt: '||l_inv_dist_upd(j).amount||
4232 ' Base Amt: '||l_inv_dist_upd(j).base_amount;
4233
4234 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4235 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4236 END IF;
4237 -------------------------------------------------------------------
4238
4239 END LOOP;
4240 L_INV_DIST_UPD.DELETE;
4241 END IF;
4242 END LOOP;
4243 CLOSE UPDATE_TAX_DIST;
4244
4245
4246 -------------------------------------------------------------------
4247 l_debug_info := 'Get tax variance distributions for update';
4248 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4249 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4250 END IF;
4251 -------------------------------------------------------------------
4252
4253 OPEN UPDATE_TAX_VARIANCES;
4254 LOOP
4255 FETCH UPDATE_TAX_VARIANCES
4256 BULK COLLECT INTO L_INV_DIST_UPD
4257 LIMIT AP_ETAX_PKG.G_BATCH_LIMIT;
4258
4259 EXIT WHEN UPDATE_TAX_VARIANCES%NOTFOUND
4260 AND L_INV_DIST_UPD.COUNT <= 0;
4261
4262 -------------------------------------------------------------------
4263 l_debug_info := 'Tax Variance distributions updated: '||l_inv_dist_upd.count;
4264 -------------------------------------------------------------------
4265 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4266 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4267 END IF;
4268
4269 IF (l_inv_dist_upd.COUNT <> 0) THEN
4270
4271 FOR j IN l_inv_dist_upd.FIRST..l_inv_dist_upd.LAST LOOP
4272
4273 -------------------------------------------------------------------
4274 l_debug_info := 'Tax Variance New Line Number: '||
4275 l_inv_dist_upd(j).invoice_line_number
4276 ||' '||'Tax Variance dist Id: '||l_inv_dist_upd(j).invoice_distribution_id
4277 ||' '||'Detail Tax Dist Id: '||l_inv_dist_upd(j).detail_tax_dist_id;
4278 -------------------------------------------------------------------
4279 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4280 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4281 END IF;
4282
4283 /*
4284 --bug 10621602 starts
4285 IF AP_ETAX_SERVICES_PKG.ret_dists.exists(l_inv_dist_ins(i).charge_applicable_to_dist_id) THEN
4286 IF ( AP_ETAX_SERVICES_PKG.ret_dists(l_inv_dist_upd(j).charge_applicable_to_dist_id).RETAINED_INVOICE_DIST_ID IS NOT NULL) THEN
4287
4288 l_inv_dist_upd(j).pa_addition_flag := 'N'; --Make the pa_addition flag N for retainage tax distributions.
4289
4290 END IF;
4291 END IF;
4292 --bug 10621602 ends
4293 */
4294 UPDATE ap_invoice_distributions_all
4295 SET accounting_date = l_inv_dist_upd(j).accounting_date,
4296 last_updated_by = l_user_id,
4297 last_update_date = sysdate, /*Bug10101457: replaced l_sysdate with sysdate*/
4298 line_type_lookup_code = l_inv_dist_upd(j).line_type_lookup_code,
4299 period_name = l_inv_dist_upd(j).period_name,
4300 amount = l_inv_dist_upd(j).amount,
4301 base_amount = l_inv_dist_upd(j).base_amount, -- bug 10350068
4302 -- Bug 10157751 description = l_inv_dist_upd(j).description,
4303 -- Bug 13880392 income_tax_region = l_inv_dist_upd(j).income_tax_region,
4304 last_update_login = l_login_id,
4305 -- Bug 13880392 type_1099 = l_inv_dist_upd(j).type_1099,
4306 attribute1 = l_inv_dist_upd(j).attribute1,
4307 attribute10 = l_inv_dist_upd(j).attribute10,
4308 attribute11 = l_inv_dist_upd(j).attribute11,
4309 attribute12 = l_inv_dist_upd(j).attribute12,
4310 attribute13 = l_inv_dist_upd(j).attribute13,
4311 attribute14 = l_inv_dist_upd(j).attribute14,
4312 attribute15 = l_inv_dist_upd(j).attribute15,
4313 attribute2 = l_inv_dist_upd(j).attribute2,
4314 attribute3 = l_inv_dist_upd(j).attribute3,
4315 attribute4 = l_inv_dist_upd(j).attribute4,
4316 attribute5 = l_inv_dist_upd(j).attribute5,
4317 attribute6 = l_inv_dist_upd(j).attribute6,
4318 attribute7 = l_inv_dist_upd(j).attribute7,
4319 attribute8 = l_inv_dist_upd(j).attribute8,
4320 attribute9 = l_inv_dist_upd(j).attribute9,
4321 attribute_category = l_inv_dist_upd(j).attribute_category,
4322 expenditure_item_date = l_inv_dist_upd(j).expenditure_item_date,
4323 expenditure_organization_id = l_inv_dist_upd(j).expenditure_organization_id,
4324 expenditure_type = l_inv_dist_upd(j).expenditure_type,
4325 parent_invoice_id = l_inv_dist_upd(j).parent_invoice_id,
4326 pa_addition_flag = pa_addition_flag, --Bug10621602
4327 pa_quantity = l_inv_dist_upd(j).pa_quantity,
4328 project_accounting_context = l_inv_dist_upd(j).project_accounting_context,
4329 project_id = l_inv_dist_upd(j).project_id,
4330 task_id = l_inv_dist_upd(j).task_id,
4331 awt_group_id = l_inv_dist_upd(j).awt_group_id,
4332 global_attribute_category = l_inv_dist_upd(j).global_attribute_category,
4333 global_attribute1 = l_inv_dist_upd(j).global_attribute1,
4334 global_attribute2 = l_inv_dist_upd(j).global_attribute2,
4335 global_attribute3 = l_inv_dist_upd(j).global_attribute3,
4336 global_attribute4 = l_inv_dist_upd(j).global_attribute4,
4337 global_attribute5 = l_inv_dist_upd(j).global_attribute5,
4338 global_attribute6 = l_inv_dist_upd(j).global_attribute6,
4339 global_attribute7 = l_inv_dist_upd(j).global_attribute7,
4340 global_attribute8 = l_inv_dist_upd(j).global_attribute8,
4341 global_attribute9 = l_inv_dist_upd(j).global_attribute9,
4342 global_attribute10 = l_inv_dist_upd(j).global_attribute10,
4343 global_attribute11 = l_inv_dist_upd(j).global_attribute11,
4344 global_attribute12 = l_inv_dist_upd(j).global_attribute12,
4345 global_attribute13 = l_inv_dist_upd(j).global_attribute13,
4346 global_attribute14 = l_inv_dist_upd(j).global_attribute14,
4347 global_attribute15 = l_inv_dist_upd(j).global_attribute15,
4348 global_attribute16 = l_inv_dist_upd(j).global_attribute16,
4349 global_attribute17 = l_inv_dist_upd(j).global_attribute17,
4350 global_attribute18 = l_inv_dist_upd(j).global_attribute18,
4351 global_attribute19 = l_inv_dist_upd(j).global_attribute19,
4352 global_attribute20 = l_inv_dist_upd(j).global_attribute20,
4353 award_id = l_inv_dist_upd(j).award_id,
4354 dist_match_type = l_inv_dist_upd(j).dist_match_type,
4355 rcv_transaction_id = l_inv_dist_upd(j).rcv_transaction_id,
4356 tax_recoverable_flag = l_inv_dist_upd(j).tax_recoverable_flag,
4357 cancellation_flag = l_inv_dist_upd(j).cancellation_flag,
4358 --invoice_line_number = l_inv_dist_upd(j).invoice_line_number,
4359 corrected_invoice_dist_id = l_inv_dist_upd(j).corrected_invoice_dist_id,
4360 rounding_amt = l_inv_dist_upd(j).rounding_amt,
4361 charge_applicable_to_dist_id = l_inv_dist_upd(j).charge_applicable_to_dist_id,
4362 --distribution_class = l_inv_dist_upd(j).distribution_class, --Bug6678578
4363 tax_code_id = l_inv_dist_upd(j).tax_code_id,
4364 detail_tax_dist_id = l_inv_dist_upd(j).detail_tax_dist_id,
4365 rec_nrec_rate = l_inv_dist_upd(j).rec_nrec_rate,
4366 recovery_rate_id = l_inv_dist_upd(j).recovery_rate_id,
4367 recovery_rate_name = l_inv_dist_upd(j).recovery_rate_name,
4368 recovery_type_code = l_inv_dist_upd(j).recovery_type_code,
4369 taxable_amount = l_inv_dist_upd(j).taxable_amount,
4370 taxable_base_amount = l_inv_dist_upd(j).taxable_base_amount,
4371 summary_tax_line_id = l_inv_dist_upd(j).summary_tax_line_id,
4372 extra_po_erv = l_inv_dist_upd(j).extra_po_erv,
4373 prepay_tax_diff_amount = l_inv_dist_upd(j).prepay_tax_diff_amount,
4374 match_status_flag = decode (amount, l_inv_dist_upd(j).amount,
4375 match_status_flag, 'N')
4376 WHERE invoice_distribution_id = l_inv_dist_upd(j).invoice_distribution_id;
4377
4378 -------------------------------------------------------------------
4379 l_debug_info := 'Tax dist id updated: '||l_inv_dist_upd(j).invoice_distribution_id||
4380 ' Tax Detail Tax Dist Id: '||l_inv_dist_upd(j).detail_tax_dist_id||
4381 ' Summary Tax Line Id: '||l_inv_dist_upd(j).summary_tax_line_id||
4382 ' Amt: '||l_inv_dist_upd(j).amount||
4383 ' Base Amt: '||l_inv_dist_upd(j).base_amount;
4384
4385 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4386 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4387 END IF;
4388 -------------------------------------------------------------------
4389
4390 END LOOP;
4391 L_INV_DIST_UPD.DELETE;
4392 END IF;
4393 END LOOP;
4394 CLOSE UPDATE_TAX_VARIANCES;
4395
4396
4397 -------------------------------------------------------------------
4398 l_debug_info := 'Step 5: Get tax distributions for update';
4399 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4400 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4401 END IF;
4402 -------------------------------------------------------------------
4403
4404 OPEN UPDATE_TAX_SELF;
4405 LOOP
4406 FETCH UPDATE_TAX_SELF
4407 BULK COLLECT INTO L_INV_SELF_UPD
4408 LIMIT AP_ETAX_PKG.G_BATCH_LIMIT;
4409
4410 EXIT WHEN UPDATE_TAX_SELF%NOTFOUND
4411 AND l_inv_self_upd.COUNT <= 0; --Bug13859326
4412
4413 -------------------------------------------------------------------
4414 l_debug_info := 'Step 5: Self assessed dist updated: '||l_inv_self_upd.COUNT;
4415 -------------------------------------------------------------------
4416 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4417 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4418 END IF;
4419
4420 IF (l_inv_self_upd.COUNT <> 0) THEN
4421
4422 FOR j IN l_inv_self_upd.FIRST..l_inv_self_upd.LAST LOOP
4423
4424 -------------------------------------------------------------------
4425 l_debug_info := 'Self Assessed New Line Number: '||l_inv_self_upd(j).invoice_line_number
4426 ||' '||'Self assessed dist Id: '||l_inv_self_upd(j).invoice_distribution_id
4427 ||' '||'Detail Tax Dist Id: '||l_inv_self_upd(j).detail_tax_dist_id;
4428 -------------------------------------------------------------------
4429 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4430 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4431 END IF;
4432
4433 UPDATE ap_self_assessed_tax_dist_all
4434 SET accounting_date = l_inv_self_upd(j).accounting_date,
4435 last_updated_by = l_user_id,
4436 last_update_date = sysdate, /*Bug10101457: replaced l_sysdate with sysdate*/
4437 line_type_lookup_code = l_inv_self_upd(j).line_type_lookup_code,
4438 period_name = l_inv_self_upd(j).period_name,
4439 amount = l_inv_self_upd(j).amount,
4440 base_amount = l_inv_self_upd(j).base_amount, -- bug 10350068
4441 -- Bug 10157751 description = l_inv_self_upd(j).description,
4442 income_tax_region = l_inv_self_upd(j).income_tax_region,
4443 last_update_login = l_login_id,
4444 type_1099 = l_inv_self_upd(j).type_1099,
4445 attribute1 = l_inv_self_upd(j).attribute1,
4446 attribute10 = l_inv_self_upd(j).attribute10,
4447 attribute11 = l_inv_self_upd(j).attribute11,
4448 attribute12 = l_inv_self_upd(j).attribute12,
4449 attribute13 = l_inv_self_upd(j).attribute13,
4450 attribute14 = l_inv_self_upd(j).attribute14,
4451 attribute15 = l_inv_self_upd(j).attribute15,
4452 attribute2 = l_inv_self_upd(j).attribute2,
4453 attribute3 = l_inv_self_upd(j).attribute3,
4454 attribute4 = l_inv_self_upd(j).attribute4,
4455 attribute5 = l_inv_self_upd(j).attribute5,
4456 attribute6 = l_inv_self_upd(j).attribute6,
4457 attribute7 = l_inv_self_upd(j).attribute7,
4458 attribute8 = l_inv_self_upd(j).attribute8,
4459 attribute9 = l_inv_self_upd(j).attribute9,
4460 attribute_category = l_inv_self_upd(j).attribute_category,
4461 expenditure_item_date = l_inv_self_upd(j).expenditure_item_date,
4462 expenditure_organization_id = l_inv_self_upd(j).expenditure_organization_id,
4463 expenditure_type = l_inv_self_upd(j).expenditure_type,
4464 parent_invoice_id = l_inv_self_upd(j).parent_invoice_id,
4465 pa_addition_flag = pa_addition_flag, --Bug10621602
4466 pa_quantity = l_inv_self_upd(j).pa_quantity,
4467 project_accounting_context = l_inv_self_upd(j).project_accounting_context,
4468 project_id = l_inv_self_upd(j).project_id,
4469 task_id = l_inv_self_upd(j).task_id,
4470 --Bug8334059 Awt_group_id need not be updated since awt is not calculated
4471 --awt_group_id = l_inv_self_upd(j).awt_group_id,
4472 global_attribute_category = l_inv_self_upd(j).global_attribute_category,
4473 global_attribute1 = l_inv_self_upd(j).global_attribute1,
4474 global_attribute2 = l_inv_self_upd(j).global_attribute2,
4475 global_attribute3 = l_inv_self_upd(j).global_attribute3,
4476 global_attribute4 = l_inv_self_upd(j).global_attribute4,
4477 global_attribute5 = l_inv_self_upd(j).global_attribute5,
4478 global_attribute6 = l_inv_self_upd(j).global_attribute6,
4479 global_attribute7 = l_inv_self_upd(j).global_attribute7,
4480 global_attribute8 = l_inv_self_upd(j).global_attribute8,
4481 global_attribute9 = l_inv_self_upd(j).global_attribute9,
4482 global_attribute10 = l_inv_self_upd(j).global_attribute10,
4483 global_attribute11 = l_inv_self_upd(j).global_attribute11,
4484 global_attribute12 = l_inv_self_upd(j).global_attribute12,
4485 global_attribute13 = l_inv_self_upd(j).global_attribute13,
4486 global_attribute14 = l_inv_self_upd(j).global_attribute14,
4487 global_attribute15 = l_inv_self_upd(j).global_attribute15,
4488 global_attribute16 = l_inv_self_upd(j).global_attribute16,
4489 global_attribute17 = l_inv_self_upd(j).global_attribute17,
4490 global_attribute18 = l_inv_self_upd(j).global_attribute18,
4491 global_attribute19 = l_inv_self_upd(j).global_attribute19,
4492 global_attribute20 = l_inv_self_upd(j).global_attribute20,
4493 award_id = l_inv_self_upd(j).award_id,
4494 dist_match_type = l_inv_self_upd(j).dist_match_type,
4495 rcv_transaction_id = l_inv_self_upd(j).rcv_transaction_id,
4496 tax_recoverable_flag = l_inv_self_upd(j).tax_recoverable_flag,
4497 cancellation_flag = l_inv_self_upd(j).cancellation_flag,
4498 invoice_line_number = l_inv_self_upd(j).invoice_line_number,
4499 corrected_invoice_dist_id = l_inv_self_upd(j).corrected_invoice_dist_id,
4500 rounding_amt = l_inv_self_upd(j).rounding_amt,
4501 charge_applicable_to_dist_id = l_inv_self_upd(j).charge_applicable_to_dist_id,
4502 --distribution_class = l_inv_self_upd(j).distribution_class, --Bug6678578
4503 tax_code_id = l_inv_self_upd(j).tax_code_id,
4504 detail_tax_dist_id = l_inv_self_upd(j).detail_tax_dist_id,
4505 rec_nrec_rate = l_inv_self_upd(j).rec_nrec_rate,
4506 recovery_rate_id = l_inv_self_upd(j).recovery_rate_id,
4507 recovery_rate_name = l_inv_self_upd(j).recovery_rate_name,
4508 recovery_type_code = l_inv_self_upd(j).recovery_type_code,
4509 taxable_amount = l_inv_self_upd(j).taxable_amount,
4510 taxable_base_amount = l_inv_self_upd(j).taxable_base_amount,
4511 summary_tax_line_id = l_inv_self_upd(j).summary_tax_line_id,
4512 extra_po_erv = l_inv_self_upd(j).extra_po_erv,
4513 prepay_tax_diff_amount = l_inv_self_upd(j).prepay_tax_diff_amount
4514 WHERE invoice_distribution_id = l_inv_self_upd(j).invoice_distribution_id;
4515
4516
4517 -------------------------------------------------------------------
4518 l_debug_info := 'Tax dist id updated: '||l_inv_self_upd(j).invoice_distribution_id||
4519 ' Tax Detail Tax Dist Id: '||l_inv_self_upd(j).detail_tax_dist_id||
4520 ' Summary Tax Line Id: '||l_inv_self_upd(j).summary_tax_line_id||
4521 ' Amt: '||l_inv_self_upd(j).amount||
4522 ' Base Amt: '||l_inv_self_upd(j).base_amount;
4523
4524 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4525 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4526 END IF;
4527 -------------------------------------------------------------------
4528
4529 END LOOP;
4530 L_INV_SELF_UPD.DELETE;
4531 END IF;
4532 END LOOP;
4533 CLOSE UPDATE_TAX_SELF;
4534
4535 -------------------------------------------------------------------
4536 l_debug_info := 'Step 6: Get tax distributions for insert';
4537 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4538 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4539 END IF;
4540 -------------------------------------------------------------------
4541 OPEN INSERT_TAX_DIST;
4542 LOOP
4543
4544 FETCH INSERT_TAX_DIST
4545 BULK COLLECT INTO L_INV_DIST_INS
4546 LIMIT AP_ETAX_PKG.G_BATCH_LIMIT;
4547
4548 EXIT WHEN INSERT_TAX_DIST%NOTFOUND
4549 AND L_INV_DIST_INS.COUNT <= 0;
4550
4551 IF (l_inv_dist_ins.COUNT <> 0) THEN
4552
4553 -------------------------------------------------------------------
4554 l_debug_info := 'Tax distributions to insert: '||l_inv_dist_ins.COUNT;
4555 -------------------------------------------------------------------
4556 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4557 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4558 END IF;
4559
4560 FOR i IN l_inv_dist_ins.FIRST..l_inv_dist_ins.LAST LOOP
4561 l_dist_code_combination_id := NULL; -- bug 9954778
4562
4563 IF (l_inv_dist_ins(i).line_type_lookup_code = 'NONREC_TAX') THEN
4564 l_pa_called := 'N'; /* bug 12728634 */
4565
4566 IF ( l_inv_dist_ins(i).po_distribution_id IS NOT NULL OR
4567 l_inv_dist_ins(i).rcv_transaction_id IS NOT NULL) THEN
4568
4569 --bug 10621602 changes start
4570 -- This block is been added for the tax distributions in the retainage release invoice
4571 -- to get the dist_code_combination id from the parent distributions
4572
4573 BEGIN
4574 /*Bug 12874059 begins */
4575 IF l_inv_dist_ins(i).po_distribution_id is not null and
4576 l_inv_dist_ins(i).charge_applicable_to_dist_id is not null then
4577
4578 SELECT aid.line_type_lookup_code , aid.retained_invoice_dist_id
4579 INTO l_par_line_type_lookup_code , l_par_retained_invoice_dist_id
4580 FROM ap_invoice_distributions_all aid
4581 WHERE aid.invoice_distribution_id = l_inv_dist_ins(i).charge_applicable_to_dist_id
4582 AND aid.po_distribution_id = l_inv_dist_ins(i).po_distribution_id
4583 AND aid.invoice_id = l_inv_dist_ins(i).invoice_id ;
4584
4585 END IF;
4586 /* Bug 12874059 ends */
4587
4588 -------------------------------------------------------------------
4589 l_debug_info := 'Parent Line Lookup Code And Retaind Inv Dist Id: '||l_par_line_type_lookup_code||' -- '||l_par_retained_invoice_dist_id;
4590 -------------------------------------------------------------------
4591 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4592 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4593 END IF;
4594
4595 IF (l_par_line_type_lookup_code = 'RETAINAGE' AND l_par_retained_invoice_dist_id IS NOT NULL) THEN
4596
4597 SELECT aid.dist_code_combination_id
4598 INTO l_dist_code_combination_id
4599 FROM ap_invoice_distributions_all aid , ap_invoice_distributions_all aid1
4600 WHERE aid1.invoice_distribution_id = l_par_retained_invoice_dist_id
4601 AND aid1.line_type_lookup_code = 'RETAINAGE'
4602 AND aid.invoice_distribution_id = aid1.related_retainage_dist_id
4603 AND aid1.invoice_id = aid.invoice_id ;
4604
4605 l_inv_dist_ins(i).pa_addition_flag := 'N'; --Make the pa_addition flag N for retainage tax distributions.
4606
4607 -------------------------------------------------------------------
4608 l_debug_info := 'Disc CCID from parent NONREC_TAX: '||l_dist_code_combination_id;
4609 -------------------------------------------------------------------
4610 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4611 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4612 END IF;
4613
4614 END IF;
4615
4616 EXCEPTION WHEN OTHERS THEN
4617
4618 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4619 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'RETURN_TAX_DISTRIBUTIONS','Error while getting ccid for retainge invoice');
4620 END IF;
4621 APP_EXCEPTION.RAISE_EXCEPTION;
4622 END ;
4623
4624 --bug 10621602 changes end
4625
4626 IF ( l_inv_dist_ins(i).accrue_on_receipt_flag = 'Y' OR
4627 --l_inv_dist_ins(i).allow_flex_override_flag = 'Y' -- Bug 6720793
4628 l_inv_dist_ins(i).purch_encumbrance_flag = 'Y') THEN
4629
4630 -------------------------------------------------------------------
4631 l_debug_info := 'PO: Setting Non-Rec tax account same as its parent';
4632 -------------------------------------------------------------------
4633 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4634 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4635 END IF;
4636
4637 --bug 10621602 changes start
4638
4639 IF l_dist_code_combination_id IS NULL THEN
4640
4641 l_dist_code_combination_id := l_inv_dist_ins(i).dist_code_combination_id;
4642
4643 END IF;
4644
4645 --bug 10621602 changes start
4646
4647 END IF;
4648
4649 /* bug 12728634 begins */
4650
4651 /* ELSIF ( l_inv_dist_ins(i).project_id IS NOT NULL AND
4652 l_allow_pa_override = 'N') THEN
4653
4654 l_dist_code_combination_id := l_inv_dist_ins(i).dist_code_combination_id; */
4655
4656 ELSIF ( l_inv_dist_ins(i).project_id IS NOT NULL) THEN
4657
4658 BEGIN
4659 SELECT TAX_ONLY_LINE_FLAG
4660 INTO L_TAX_ONLY_LINE_FLAG
4661 FROM ZX_REC_NREC_DIST
4662 WHERE TRX_ID = L_INV_DIST_INS(I).INVOICE_ID
4663 AND APPLICATION_ID = 200
4664 AND REC_NREC_TAX_DIST_ID = L_INV_DIST_INS(I).DETAIL_TAX_DIST_ID;
4665 EXCEPTION
4666 WHEN OTHERS THEN
4667 NULL;
4668 END;
4669
4670
4671 IF (l_tax_only_line_flag = 'Y') THEN
4672 --For tax only line we will derive the account from projects if project detail is present
4673
4674 l_pa_success := GET_CCID_FROM_PROJECTS
4675 ( l_inv_dist_ins(i).invoice_id ,
4676 l_inv_dist_ins(i).invoice_line_number ,
4677 p_ccid => l_dist_code_combination_id );
4678 l_pa_called := 'Y';
4679 p_ccid := l_dist_code_combination_id;
4680 IF( NOT l_pa_success) then
4681 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4682 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Error while retriving the ccid from projects');
4683 END IF;
4684
4685 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
4686 APP_EXCEPTION.RAISE_EXCEPTION;
4687 ELSE
4688 P_Error_Code := FND_MESSAGE.GET;
4689 RETURN FALSE;
4690 END IF;
4691
4692 END IF;
4693
4694 IF(l_allow_pa_override = 'Y') then
4695 IF (l_dist_code_combination_id IS NULL
4696 AND l_inv_dist_ins(i).dist_code_combination_id IS NULL) THEN
4697
4698 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4699 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'User has not provided a overide account on line');
4700 END IF;
4701
4702 ELSIF (l_inv_dist_ins(i).dist_code_combination_id IS NOT NULL) then
4703
4704 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4705 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'User has defined a overide account on line');
4706 END IF;
4707
4708 END IF;
4709
4710 ELSIF (l_dist_code_combination_id IS NULL) then
4711
4712 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4713 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'User has not defined a project account and the Project Override Flag is Not Set');
4714 END IF;
4715
4716 END IF;
4717
4718 ELSE
4719 l_dist_code_combination_id := l_inv_dist_ins(i).dist_code_combination_id;
4720 --- We will get the account from the parent line non tax only line
4721
4722 END IF ; -- Tax only flag is Y
4723
4724 /* bug12728634 ends */
4725
4726 END IF;
4727
4728
4729 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4730 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'before geting ccid from corresponding tax distribution');
4731 END IF;
4732 -- This section to get ccid from corresponding tax distribution if
4733 -- line discard/invoice cancellation or correction
4734 -- quick credit or prepayment application/unapplication
4735
4736 IF (l_inv_dist_ins(i).parent_dist_cancellation_flag = 'Y' OR
4737 (l_inv_dist_ins(i).parent_dist_reversal_flag = 'Y'
4738 and l_inv_dist_ins(i).parent_dist_parent_reversal_id IS NOT NULL
4739 AND l_inv_dist_ins(i).reversed_tax_dist_id IS NOT NULL)) THEN -- bug 7389822 --Bugg 9034372
4740
4741 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4742 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'geting ccid for discard, cancellation');
4743 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_inv_dist_ins(i).parent_dist_cancellation_flag '
4744 ||l_inv_dist_ins(i).parent_dist_cancellation_flag);
4745 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_invoice_header_rec.quick_credit '
4746 ||p_invoice_header_rec.quick_credit);
4747 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_invoice_header_rec.credited_invoice_id '
4748 ||to_char(p_invoice_header_rec.credited_invoice_id));
4749 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_inv_dist_ins(i).parent_dist_reversal_flag '
4750 ||l_inv_dist_ins(i).parent_dist_reversal_flag);
4751 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_inv_dist_ins(i).parent_dist_parent_reversal_id '
4752 ||to_char(l_inv_dist_ins(i).parent_dist_parent_reversal_id));
4753 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_inv_dist_ins(i).reversed_tax_dist_id '
4754 ||to_char(l_inv_dist_ins(i).reversed_tax_dist_id));
4755 END IF;
4756
4757 --Bug fix 6653070, bug fix 6687031
4758 SELECT dist_code_combination_id
4759 INTO l_dist_code_combination_id
4760 FROM ap_invoice_distributions_all
4761 WHERE detail_tax_dist_id = l_inv_dist_ins(i).reversed_tax_dist_id
4762 AND line_type_lookup_code IN ('REC_TAX', 'NONREC_TAX','TIPV', 'TRV', 'TERV')
4763 AND rownum =1;--Bug7241425
4764
4765 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4766 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'after geting ccid for discard, cancellation');
4767 END IF;
4768
4769 --Below ELSIF will execute only during Quick Credit Operation
4770 --Batch Validation and Online Validation have no impact due to
4771 --this condition though wrong invoice reference is present in header rec.
4772
4773 ELSIF (nvl(p_invoice_header_rec.quick_credit,'N') <> 'Y' and -- Bug 9034372
4774 l_inv_dist_ins(i).corrected_invoice_dist_id IS NOT NULL) THEN
4775
4776 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4777 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Adjusted Doc Tax Dist Id '||l_inv_dist_ins(i).adjusted_doc_tax_dist_id);
4778 END IF;
4779
4780 SELECT dist_code_combination_id
4781 INTO l_dist_code_combination_id
4782 FROM ap_invoice_distributions_all
4783 WHERE detail_tax_dist_id = l_inv_dist_ins(i).adjusted_doc_tax_dist_id
4784 AND line_type_lookup_code IN ('REC_TAX','NONREC_TAX','TIPV','TRV','TERV')--Bug7241425
4785 AND rownum =1;--Bug7241425
4786 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4787 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'after geting ccid from corresponding tax distribution for correction case');
4788 END IF;
4789
4790 --BUG 8740802
4791 --ELSIF (l_inv_dist_ins(i).applied_from_tax_dist_id IS NOT NULL) THEN
4792
4793 -- l_dist_code_combination_id := l_inv_dist_ins(i).dist_code_combination_id;
4794 --BUG 8740802
4795
4796 END IF;
4797 END IF;
4798
4799
4800 --BUG 8740802
4801 IF (l_inv_dist_ins(i).line_type_lookup_code = 'REC_TAX' OR
4802 l_inv_dist_ins(i).line_type_lookup_code = 'NONREC_TAX') AND
4803 l_inv_dist_ins(i).applied_from_tax_dist_id IS NOT NULL THEN /* bug 12728634 */
4804
4805 -------------------------------------------------------------------
4806 l_debug_info := 'Before Getting CCID based on applied from tax dist id '||l_inv_dist_ins(i).applied_from_tax_dist_id;
4807
4808 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4809 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4810 END IF;
4811 -------------------------------------------------------------------
4812
4813 BEGIN
4814 SELECT dist_code_combination_id
4815 INTO l_dist_code_combination_id
4816 FROM ap_invoice_distributions_all
4817 WHERE invoice_distribution_id = AP_ETAX_UTILITY_PKG.Get_Dist_Id_For_Tax_Dist_Id
4818 (l_inv_dist_ins(i).applied_from_tax_dist_id);
4819 END;
4820
4821 -------------------------------------------------------------------
4822 l_debug_info := 'After Getting CCID based on applied from tax dist id';
4823
4824 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4825 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4826 END IF;
4827 -------------------------------------------------------------------
4828 --It is Expected that no exception will occur.
4829 END IF;
4830 --BUG 8740802
4831
4832 -----------------------------------------------------------
4833 l_debug_info := 'Line Type Lookup Code: '||l_inv_dist_ins(i).line_type_lookup_code||
4834 ' l_dist_code_combination_id: '||l_dist_code_combination_id||
4835 ' l_pa_called: '||l_pa_called||
4836 ' l_allow_pa_override: '||l_allow_pa_override||
4837 ' applied_from_tax_dist_id: '||l_inv_dist_ins(i).applied_from_tax_dist_id;
4838 -----------------------------------------------------------
4839 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4840 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4841 END IF;
4842
4843 /* Bug12728634 starts */
4844 IF ((l_inv_dist_ins(i).line_type_lookup_code = 'REC_TAX' OR
4845 (l_inv_dist_ins(i).line_type_lookup_code = 'NONREC_TAX' AND
4846 ((l_dist_code_combination_id IS NULL AND l_pa_called = 'N') OR
4847 (l_pa_called = 'Y' AND l_allow_pa_override = 'Y')))) AND
4848 l_inv_dist_ins(i).applied_from_tax_dist_id IS NULL) THEN --Bug8740802
4849 /* Bug12728634 ends */
4850
4851
4852 l_dist_ccid_rec.gl_date := l_inv_dist_ins(i).accounting_date;
4853 l_dist_ccid_rec.tax_rate_id := l_inv_dist_ins(i).tax_code_id;
4854 l_dist_ccid_rec.rec_rate_id := l_inv_dist_ins(i).recovery_rate_id;
4855 l_dist_ccid_rec.self_assessed_flag := 'N';
4856 l_dist_ccid_rec.recoverable_flag := l_inv_dist_ins(i).tax_recoverable_flag;
4857 l_dist_ccid_rec.tax_jurisdiction_id := l_inv_dist_ins(i).tax_jurisdiction_id;
4858 l_dist_ccid_rec.tax_regime_id := l_inv_dist_ins(i).tax_regime_id;
4859 l_dist_ccid_rec.tax_id := l_inv_dist_ins(i).tax_id;
4860 l_dist_ccid_rec.internal_organization_id := l_inv_dist_ins(i).org_id;
4861 l_dist_ccid_rec.tax_status_id := l_inv_dist_ins(i).tax_status_id;
4862 l_dist_ccid_rec.ledger_id := l_inv_dist_ins(i).set_of_books_id; /*Bug 13681789*/
4863
4864 l_dist_ccid_rec.revenue_expense_ccid := NVL(l_inv_dist_ins(i).dist_code_combination_id,-99); ---6010950
4865 l_dist_ccid_rec.account_source_tax_rate_id := l_inv_dist_ins(i).account_source_tax_rate_id;
4866
4867 -----------------------------------------------------------
4868 l_debug_info := 'Call zx_api_pub.get_tax_distribution_ccids';
4869 -----------------------------------------------------------
4870 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4871 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4872 END IF;
4873
4874 zx_api_pub.get_tax_distribution_ccids(
4875 p_api_version => 1.0,
4876 p_init_msg_list => FND_API.G_TRUE,
4877 p_commit => FND_API.G_FALSE,
4878 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4879 x_return_status => l_return_status_service,
4880 x_msg_count => l_msg_count,
4881 x_msg_data => l_msg_data,
4882 p_dist_ccid_rec => l_dist_ccid_rec);
4883
4884 l_dist_code_combination_id := l_dist_ccid_rec.rec_nrec_ccid;
4885 l_tax_liab_ccid := l_dist_ccid_rec.tax_liab_ccid;
4886
4887 IF (l_return_status_service <> 'S') THEN
4888 -----------------------------------------------------------
4889 l_debug_info := 'Handle errors returned by API';
4890 -----------------------------------------------------------
4891 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4892 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4893 END IF;
4894
4895 IF NOT(AP_ETAX_UTILITY_PKG.Return_Error_Messages(
4896 P_All_Error_Messages => P_All_Error_Messages,
4897 P_Msg_Count => l_msg_count,
4898 P_Msg_Data => l_msg_data,
4899 P_Error_Code => P_Error_Code,
4900 P_Calling_Sequence => l_curr_calling_sequence)) THEN
4901 NULL;
4902 END IF;
4903
4904 RETURN FALSE;
4905
4906 END IF;
4907 END IF;
4908
4909 /* bug 12728634 */
4910 IF (l_pa_called = 'Y' AND l_allow_pa_override = 'Y' AND
4911 NVL(l_dist_code_combination_id, -99) = -99) THEN
4912
4913 l_debug_info := 'Reassigned the projects account '||p_ccid;
4914 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4915 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4916 END IF;
4917 l_dist_code_combination_id := p_ccid;
4918
4919 END IF;
4920
4921 /* bug 12728634 */
4922 --bug 8359426 start
4923 /*if account is -99 for NONREC_TAX distribution (tax only line) then raise exception
4924 as the account is neither entered in the invoice line nor is an expense account set up*/
4925 -----------------------------------------------------------
4926 l_debug_info := 'Check If Tax Only Non Rec Distribution has CCID';
4927 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4928 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4929 END IF;
4930 -----------------------------------------------------------
4931 IF l_dist_ccid_rec.recoverable_flag = 'N' AND
4932 NVL(l_dist_code_combination_id, -99) = -99 THEN
4933 --bug 8840245, if online validaiton then raise exception else return false
4934 --Bug9021265
4935 FND_MESSAGE.SET_NAME('SQLAP','AP_NO_NON_REC_ACC');
4936 FND_MESSAGE.SET_TOKEN('ERROR', 'Default Account for tax only line not provided or expense account not defined.');
4937 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
4938 FND_MESSAGE.SET_TOKEN('PARAMETERS',
4939 'P_Error_Code = '||P_Error_Code||
4940 'P_Calling_Sequence = '||P_Calling_Sequence);
4941 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
4942 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
4943 APP_EXCEPTION.RAISE_EXCEPTION;
4944 ELSE
4945 P_Error_Code := FND_MESSAGE.GET;
4946 RETURN FALSE;
4947 END IF;
4948 --Bug9021265
4949 END IF;
4950
4951 --bug 8359426 end
4952
4953
4954 -------------------------------------------------------------------
4955 l_debug_info := 'Insert REC/NONREC distributions';
4956 -------------------------------------------------------------------
4957 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4958 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4959 END IF;
4960
4961 -- Bug 13821160: Set asset tracking flag of ccid in l_inv_dist_ins(i) for non allocated lines
4962 IF (l_inv_dist_ins(i).charge_applicable_to_dist_id IS NULL) THEN
4963 select decode(account_type, 'A', 'Y',
4964 'N')
4965 into l_inv_dist_ins(i).par_dist_assets_tracking_flag
4966 from gl_code_combinations
4967 where code_combination_id = l_dist_code_combination_id;
4968
4969 END IF;
4970
4971 ap_etax_utility_pkg.insert_tax_distributions
4972 (p_invoice_header_rec => p_invoice_header_rec,
4973 p_inv_dist_rec => l_inv_dist_ins(i),
4974 p_dist_code_combination_id => l_dist_code_combination_id,
4975 p_user_id => l_user_id,
4976 p_sysdate => sysdate, /*Bug10101457: replaced l_sysdate with sysdate*/
4977 p_login_id => l_login_id,
4978 p_calling_sequence => l_curr_calling_sequence);
4979
4980 END LOOP;
4981 L_INV_DIST_INS.DELETE;
4982 END IF;
4983 END LOOP;
4984 CLOSE INSERT_TAX_DIST;
4985
4986 -------------------------------------------------------------------
4987 l_debug_info := 'Get Tax Variances';
4988 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4989 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4990 END IF;
4991 ------------------------------------------------------------------
4992 OPEN INSERT_TAX_VARIANCES;
4993 LOOP
4994
4995 FETCH INSERT_TAX_VARIANCES
4996 BULK COLLECT INTO L_INV_DIST_INS
4997 LIMIT AP_ETAX_PKG.G_BATCH_LIMIT;
4998
4999 EXIT WHEN INSERT_TAX_VARIANCES%NOTFOUND
5000 AND L_INV_DIST_INS.COUNT <= 0;
5001
5002 IF (l_inv_dist_ins.COUNT <> 0) THEN
5003
5004 FOR i IN l_inv_dist_ins.FIRST..l_inv_dist_ins.LAST LOOP
5005 -------------------------------------------------------------------
5006 l_debug_info := 'CCID From Cursor '||l_inv_dist_ins(i).dist_code_combination_id;
5007 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5008 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5009 END IF;
5010 ------------------------------------------------------------------
5011 l_dist_code_combination_id := l_inv_dist_ins(i).dist_code_combination_id;
5012
5013 -- Project LCM 7588322
5014 BEGIN
5015 SELECT 'Y'
5016 INTO l_lcm_enabled
5017 FROM RCV_TRANSACTIONS
5018 WHERE TRANSACTION_ID = L_INV_DIST_INS(i).rcv_transaction_id
5019 AND LCM_SHIPMENT_LINE_ID IS NOT NULL;
5020 EXCEPTION
5021 WHEN NO_DATA_FOUND THEN NULL;
5022 END;
5023 -------------------------------------------------------------------
5024 l_debug_info := 'Get CCID For LCM Enanbled Transaction ';
5025 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5026 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5027 END IF;
5028 ------------------------------------------------------------------
5029 IF(l_lcm_enabled = 'Y') THEN
5030
5031 -------------------------------------------------------------------
5032 l_debug_info := 'LCM Enabled '||l_lcm_enabled;
5033 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5034 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5035 END IF;
5036 ------------------------------------------------------------------
5037 -------------------------------------------------------------------
5038 l_debug_info := 'RCV Transaction Id '||L_INV_DIST_INS(i).rcv_transaction_id;
5039 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5040 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5041 END IF;
5042 ------------------------------------------------------------------
5043
5044 l_rcv_transaction_id := L_INV_DIST_INS(i).rcv_transaction_id;
5045 RCV_UTILITIES.Get_RtLcmInfo(
5046 p_rcv_transaction_id => l_rcv_transaction_id,
5047 x_lcm_account_id => l_lcm_account_id,
5048 x_tax_variance_account_id => l_tax_variance_account_id,
5049 x_def_charges_account_id => l_def_charges_account_id,
5050 x_exchange_variance_account_id => l_exchange_variance_account_id,
5051 x_inv_variance_account_id => l_inv_variance_account_id
5052 );
5053 l_dist_code_combination_id := l_tax_variance_account_id;
5054 -------------------------------------------------------------------
5055 l_debug_info := 'CCID For LCM Enanbled Transaction '||l_dist_code_combination_id;
5056 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5057 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5058 END IF;
5059 ------------------------------------------------------------------
5060
5061 --Bug12896924 START--
5062 l_tax_variance_account_id := NULL;
5063 ELSIF (l_inv_dist_ins(i).accrue_on_receipt_flag = 'N') THEN
5064
5065 l_dist_ccid_rec.gl_date := l_inv_dist_ins(i).accounting_date;
5066 l_dist_ccid_rec.tax_rate_id := l_inv_dist_ins(i).tax_code_id;
5067 l_dist_ccid_rec.rec_rate_id := l_inv_dist_ins(i).recovery_rate_id;
5068 l_dist_ccid_rec.self_assessed_flag := 'N';
5069 l_dist_ccid_rec.recoverable_flag := l_inv_dist_ins(i).tax_recoverable_flag;
5070 l_dist_ccid_rec.tax_jurisdiction_id := l_inv_dist_ins(i).tax_jurisdiction_id;
5071 l_dist_ccid_rec.tax_regime_id := l_inv_dist_ins(i).tax_regime_id;
5072 l_dist_ccid_rec.tax_id := l_inv_dist_ins(i).tax_id;
5073 l_dist_ccid_rec.internal_organization_id := l_inv_dist_ins(i).org_id;
5074 l_dist_ccid_rec.tax_status_id := l_inv_dist_ins(i).tax_status_id;
5075
5076 l_dist_ccid_rec.revenue_expense_ccid := NVL(l_inv_dist_ins(i).dist_code_combination_id,-99);
5077 l_dist_ccid_rec.account_source_tax_rate_id := l_inv_dist_ins(i).account_source_tax_rate_id;
5078 l_dist_ccid_rec.ledger_id := l_inv_dist_ins(i).set_of_books_id; /*Bug 13681789*/
5079
5080 -----------------------------------------------------------
5081 l_debug_info := 'Call zx_api_pub.get_tax_distribution_ccids - Tax Variance';
5082 -----------------------------------------------------------
5083 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5084 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5085 END IF;
5086
5087 zx_api_pub.get_tax_distribution_ccids(
5088 p_api_version => 1.0,
5089 p_init_msg_list => FND_API.G_TRUE,
5090 p_commit => FND_API.G_FALSE,
5091 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
5092 x_return_status => l_return_status_service,
5093 x_msg_count => l_msg_count,
5094 x_msg_data => l_msg_data,
5095 p_dist_ccid_rec => l_dist_ccid_rec);
5096
5097 l_dist_code_combination_id := l_dist_ccid_rec.rec_nrec_ccid;
5098 l_tax_liab_ccid := l_dist_ccid_rec.tax_liab_ccid;
5099
5100 -------------------------------------------------------------------
5101 l_debug_info := 'Tax Variance CCID ACCRUE ON RECEIPT N '||l_dist_code_combination_id;
5102 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5103 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5104 END IF;
5105 ------------------------------------------------------------------
5106
5107 IF (l_return_status_service <> 'S') THEN
5108 -----------------------------------------------------------
5109 l_debug_info := 'Handle errors returned by API';
5110 -----------------------------------------------------------
5111 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5112 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5113 END IF;
5114
5115 IF NOT(AP_ETAX_UTILITY_PKG.Return_Error_Messages(
5116 P_All_Error_Messages => P_All_Error_Messages,
5117 P_Msg_Count => l_msg_count,
5118 P_Msg_Data => l_msg_data,
5119 P_Error_Code => P_Error_Code,
5120 P_Calling_Sequence => l_curr_calling_sequence)) THEN
5121 NULL;
5122 END IF;
5123
5124 RETURN FALSE;
5125 END IF;
5126 --Bug12896924 END--
5127
5128 END IF;
5129 -- End Project LCM 7588322
5130
5131 --bug 10621602 starts
5132 IF AP_ETAX_SERVICES_PKG.ret_dists.exists(l_inv_dist_ins(i).charge_applicable_to_dist_id) THEN
5133
5134 IF (AP_ETAX_SERVICES_PKG.ret_dists(l_inv_dist_ins(i).charge_applicable_to_dist_id).RETAINED_INVOICE_DIST_ID IS NOT NULL) THEN
5135 l_inv_dist_ins(i).pa_addition_flag := 'N'; --Make the pa_addition flag N for retainage tax distributions.
5136 END IF;
5137
5138 END IF;
5139 --bug 10621602 ends
5140 -------------------------------------------------------------------
5141 l_debug_info := 'Insert Tax Variance Distributions';
5142 -------------------------------------------------------------------
5143 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5144 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5145 END IF;
5146
5147 ap_etax_utility_pkg.insert_tax_distributions(
5148 p_invoice_header_rec => p_invoice_header_rec,
5149 p_inv_dist_rec => l_inv_dist_ins(i),
5150 p_dist_code_combination_id => l_dist_code_combination_id,
5151 p_user_id => l_user_id,
5152 p_sysdate => sysdate, /*Bug10101457: replaced l_sysdate with sysdate*/
5153 p_login_id => l_login_id,
5154 p_calling_sequence => l_curr_calling_sequence);
5155 END LOOP;
5156 L_INV_DIST_INS.DELETE;
5157 END IF;
5158 END LOOP;
5159 CLOSE INSERT_TAX_VARIANCES;
5160
5161
5162 -------------------------------------------------------------------
5163 l_debug_info := 'Get self assessed dist for insert';
5164 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5165 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5166 END IF;
5167 -------------------------------------------------------------------
5168
5169 OPEN INSERT_TAX_SELF;
5170 LOOP
5171
5172 FETCH INSERT_TAX_SELF
5173 BULK COLLECT INTO L_INV_SELF_INS
5174 LIMIT AP_ETAX_PKG.G_BATCH_LIMIT;
5175
5176 EXIT WHEN INSERT_TAX_SELF%NOTFOUND
5177 AND L_INV_SELF_INS.COUNT <= 0;
5178
5179 IF (l_inv_self_ins.COUNT <> 0) THEN
5180
5181 -------------------------------------------------------------------
5182 l_debug_info := 'Insert self assessed tax distributions';
5183 -------------------------------------------------------------------
5184 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5185 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5186 END IF;
5187
5188 FOR i IN l_inv_self_ins.FIRST..l_inv_self_ins.LAST LOOP
5189 l_dist_code_combination_id := NULL; -- bug 9954778
5190 l_tax_liab_ccid := NULL; -- bug 9954778
5191
5192 -------------------------------------------------------------------
5193 l_debug_info := 'Get ccid for self assessed distributions';
5194 -------------------------------------------------------------------
5195 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5196 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5197 END IF;
5198
5199 IF (l_inv_self_ins(i).line_type_lookup_code = 'NONREC_TAX') THEN
5200
5201 IF ( l_inv_self_ins(i).po_distribution_id IS NOT NULL OR
5202 l_inv_self_ins(i).rcv_transaction_id IS NOT NULL) THEN
5203
5204 IF ( l_inv_self_ins(i).accrue_on_receipt_flag = 'Y' OR
5205 --l_inv_self_ins(i).allow_flex_override_flag = 'Y' -- Bug 6720793
5206 l_inv_self_ins(i).purch_encumbrance_flag = 'Y') THEN
5207
5208 -------------------------------------------------------------------
5209 l_debug_info := 'PO: Setting Self Assessed Non-Rec tax account same as its parent';
5210 -------------------------------------------------------------------
5211 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5212 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5213 END IF;
5214
5215 l_dist_code_combination_id := l_inv_self_ins(i).dist_code_combination_id;
5216
5217 END IF;
5218
5219 ELSIF ( l_inv_self_ins(i).project_id IS NOT NULL AND
5220 l_allow_pa_override = 'N') THEN
5221
5222 -------------------------------------------------------------------
5223 l_debug_info := 'Setting Self Assessed Non-Rec tax account same as its parent as invoice is PA Related';
5224 -------------------------------------------------------------------
5225 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5226 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5227 END IF;
5228
5229 l_dist_code_combination_id := l_inv_self_ins(i).dist_code_combination_id;
5230
5231 END IF;
5232
5233 -- This section to get ccid from corresponding tax distribution if
5234 -- line discard/invoice cancellation or correction
5235 -- quick credit or prepayment application/unapplication
5236 IF (l_inv_self_ins(i).parent_dist_cancellation_flag = 'Y' OR
5237 (nvl(p_invoice_header_rec.quick_credit, 'N') = 'Y'
5238 and p_invoice_header_rec.credited_invoice_id IS NOT
5239 NULL) OR --Bug8834205
5240 (l_inv_self_ins(i).parent_dist_reversal_flag = 'Y'
5241 and l_inv_self_ins(i).parent_dist_parent_reversal_id IS NOT NULL
5242 and l_inv_self_ins(i).reversed_tax_dist_id IS NOT NULL)) THEN --Bug14401623
5243
5244
5245 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5246 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'geting ccid for discard, cancellation');
5247 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_inv_self_ins(i).parent_dist_cancellation_flag '
5248 ||l_inv_self_ins(i).parent_dist_cancellation_flag);
5249 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_invoice_header_rec.quick_credit '
5250 ||p_invoice_header_rec.quick_credit);
5251 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_invoice_header_rec.credited_invoice_id '
5252 ||to_char(p_invoice_header_rec.credited_invoice_id));
5253 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_inv_self_ins(i).parent_dist_reversal_flag '
5254 ||l_inv_self_ins(i).parent_dist_reversal_flag);
5255 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_inv_self_ins(i).parent_dist_parent_reversal_id '
5256 ||to_char(l_inv_self_ins(i).parent_dist_parent_reversal_id));
5257 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_inv_self_ins(i).reversed_tax_dist_id '
5258 ||to_char(l_inv_self_ins(i).reversed_tax_dist_id));
5259 END IF;
5260
5261 SELECT dist_code_combination_id
5262 INTO l_dist_code_combination_id
5263 FROM ap_self_assessed_tax_dist_all
5264 WHERE detail_tax_dist_id = l_inv_self_ins(i).reversed_tax_dist_id
5265 AND line_type_lookup_code IN ('REC_TAX','NONREC_TAX','TIPV','TRV','TERV')--Bug8834205
5266 AND rownum =1;
5267
5268 ELSIF (l_inv_self_ins(i).corrected_invoice_dist_id IS NOT NULL) THEN
5269
5270 -------------------------------------------------------------------
5271 l_debug_info := 'Get CCID From Correction '||l_inv_self_ins(i).adjusted_doc_tax_dist_id;
5272 -------------------------------------------------------------------
5273 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5274 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5275 END IF;
5276
5277 SELECT dist_code_combination_id
5278 INTO l_dist_code_combination_id
5279 FROM ap_self_assessed_tax_dist_all
5280 WHERE detail_tax_dist_id = l_inv_self_ins(i).adjusted_doc_tax_dist_id
5281 AND line_type_lookup_code IN ('REC_TAX','NONREC_TAX','TIPV','TRV','TERV')--Bug8834205
5282 AND rownum =1;
5283
5284 --In case of Selfassessed Tax resulted due to prepayment application
5285 --CCID can be derived from its correrponding taxable distribution
5286 --or expense acccount but certainly user cannot change CCID on self
5287 --assessed tax distributions. Hence we can call ZX_API_PUB.GET_TAX_DISTRIBUTION_CCIDS
5288 --This function will return the correct CCID. In case of normal exclusive tax
5289 --we need to fetch it from its original tax distribution on PREPAY invoice.
5290
5291
5292 --Bug8740802
5293 --ELSIF (l_inv_self_ins(i).applied_from_tax_dist_id IS NOT NULL) THEN
5294
5295 --l_dist_code_combination_id := l_inv_self_ins(i).dist_code_combination_id;
5296 --Bug8740802
5297
5298 END IF;
5299
5300 ELSIF (l_inv_self_ins(i).line_type_lookup_code IN
5301 ('TIPV', 'TERV', 'TRV')) THEN
5302
5303 l_dist_code_combination_id := l_inv_self_ins(i).dist_code_combination_id;
5304
5305 END IF;
5306
5307 IF (l_inv_self_ins(i).line_type_lookup_code = 'REC_TAX' OR
5308 (l_inv_self_ins(i).line_type_lookup_code = 'NONREC_TAX' )) THEN --Bug6599804
5309
5310 l_dist_ccid_rec.gl_date := l_inv_self_ins(i).accounting_date;
5311 l_dist_ccid_rec.tax_rate_id := l_inv_self_ins(i).tax_code_id;
5312 l_dist_ccid_rec.rec_rate_id := l_inv_self_ins(i).recovery_rate_id;
5313 l_dist_ccid_rec.self_assessed_flag := 'Y';
5314 l_dist_ccid_rec.recoverable_flag := l_inv_self_ins(i).tax_recoverable_flag;
5315 l_dist_ccid_rec.tax_jurisdiction_id := l_inv_self_ins(i).tax_jurisdiction_id;
5316 l_dist_ccid_rec.tax_regime_id := l_inv_self_ins(i).tax_regime_id;
5317 l_dist_ccid_rec.tax_id := l_inv_self_ins(i).tax_id;
5318 l_dist_ccid_rec.internal_organization_id := l_inv_self_ins(i).org_id;
5319 l_dist_ccid_rec.tax_status_id := l_inv_self_ins(i).tax_status_id;
5320 l_dist_ccid_rec.revenue_expense_ccid := l_inv_self_ins(i).dist_code_combination_id;
5321 l_dist_ccid_rec.account_source_tax_rate_id := l_inv_self_ins(i).account_source_tax_rate_id;
5322 l_dist_ccid_rec.ledger_id := l_inv_self_ins(i).set_of_books_id; /*Bug 13681789*/
5323
5324 zx_api_pub.get_tax_distribution_ccids(
5325 p_api_version => 1.0,
5326 p_init_msg_list => FND_API.G_TRUE,
5327 p_commit => FND_API.G_FALSE,
5328 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
5329 x_return_status => l_return_status_service,
5330 x_msg_count => l_msg_count,
5331 x_msg_data => l_msg_data,
5332 p_dist_ccid_rec => l_dist_ccid_rec);
5333
5334 IF (l_inv_self_ins(i).line_type_lookup_code = 'REC_TAX' OR
5335 (l_inv_self_ins(i).line_type_lookup_code = 'NONREC_TAX'
5336 and l_dist_code_combination_id IS NULL)) THEN --Bug6599804
5337
5338 l_dist_code_combination_id := l_dist_ccid_rec.rec_nrec_ccid;
5339
5340 END IF;
5341
5342 l_tax_liab_ccid := l_dist_ccid_rec.tax_liab_ccid;
5343
5344 IF (l_return_status_service <> 'S') THEN
5345 -----------------------------------------------------------
5346 l_debug_info := 'Handle errors returned by API';
5347 -----------------------------------------------------------
5348 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5349 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5350 END IF;
5351
5352 IF NOT(AP_ETAX_UTILITY_PKG.Return_Error_Messages(
5353 P_All_Error_Messages => P_All_Error_Messages,
5354 P_Msg_Count => l_msg_count,
5355 P_Msg_Data => l_msg_data,
5356 P_Error_Code => P_Error_Code,
5357 P_Calling_Sequence => l_curr_calling_sequence)) THEN
5358 NULL;
5359 END IF;
5360
5361 RETURN FALSE;
5362 END IF;
5363 END IF;
5364
5365 -------------------------------------------------------------------
5366 l_debug_info := 'Insert self assessed distributions';
5367 -------------------------------------------------------------------
5368 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5369 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5370 END IF;
5371
5372 BEGIN
5373 INSERT INTO ap_self_assessed_tax_dist_all (
5374 accounting_date,
5375 accrual_posted_flag,
5376 assets_addition_flag,
5377 assets_tracking_flag,
5378 cash_posted_flag,
5379 distribution_line_number,
5380 dist_code_combination_id,
5381 invoice_id,
5382 last_updated_by,
5383 last_update_date,
5384 line_type_lookup_code,
5385 period_name,
5386 set_of_books_id,
5387 amount,
5388 base_amount,
5389 batch_id,
5390 created_by,
5391 creation_date,
5392 description,
5393 final_match_flag,
5394 income_tax_region,
5395 last_update_login,
5396 match_status_flag,
5397 posted_flag,
5398 po_distribution_id,
5399 program_application_id,
5400 program_id,
5401 program_update_date,
5402 quantity_invoiced,
5403 request_id,
5404 reversal_flag,
5405 type_1099,
5406 unit_price,
5407 encumbered_flag,
5408 stat_amount,
5409 attribute1,
5410 attribute10,
5411 attribute11,
5412 attribute12,
5413 attribute13,
5414 attribute14,
5415 attribute15,
5416 attribute2,
5417 attribute3,
5418 attribute4,
5419 attribute5,
5420 attribute6,
5421 attribute7,
5422 attribute8,
5423 attribute9,
5424 attribute_category,
5425 expenditure_item_date,
5426 expenditure_organization_id,
5427 expenditure_type,
5428 parent_invoice_id,
5429 pa_addition_flag,
5430 pa_quantity,
5431 prepay_amount_remaining,
5432 project_accounting_context,
5433 project_id,
5434 task_id,
5435 packet_id,
5436 awt_flag,
5437 awt_group_id,
5438 awt_tax_rate_id,
5439 awt_gross_amount,
5440 awt_invoice_id,
5441 awt_origin_group_id,
5442 reference_1,
5443 reference_2,
5444 org_id,
5445 awt_invoice_payment_id,
5446 global_attribute_category,
5447 global_attribute1,
5448 global_attribute2,
5449 global_attribute3,
5450 global_attribute4,
5451 global_attribute5,
5452 global_attribute6,
5453 global_attribute7,
5454 global_attribute8,
5455 global_attribute9,
5456 global_attribute10,
5457 global_attribute11,
5458 global_attribute12,
5459 global_attribute13,
5460 global_attribute14,
5461 global_attribute15,
5462 global_attribute16,
5463 global_attribute17,
5464 global_attribute18,
5465 global_attribute19,
5466 global_attribute20,
5467 receipt_verified_flag,
5468 receipt_required_flag,
5469 receipt_missing_flag,
5470 justification,
5471 expense_group,
5472 start_expense_date,
5473 end_expense_date,
5474 receipt_currency_code,
5475 receipt_conversion_rate,
5476 receipt_currency_amount,
5477 daily_amount,
5478 web_parameter_id,
5479 adjustment_reason,
5480 award_id,
5481 credit_card_trx_id,
5482 dist_match_type,
5483 rcv_transaction_id,
5484 invoice_distribution_id,
5485 parent_reversal_id,
5486 tax_recoverable_flag,
5487 merchant_document_number,
5488 merchant_name,
5489 merchant_reference,
5490 merchant_tax_reg_number,
5491 merchant_taxpayer_id,
5492 country_of_supply,
5493 matched_uom_lookup_code,
5494 gms_burdenable_raw_cost,
5495 accounting_event_id,
5496 prepay_distribution_id,
5497 upgrade_posted_amt,
5498 upgrade_base_posted_amt,
5499 inventory_transfer_status,
5500 company_prepaid_invoice_id,
5501 cc_reversal_flag,
5502 awt_withheld_amt,
5503 pa_cmt_xface_flag,
5504 cancellation_flag,
5505 invoice_line_number,
5506 corrected_invoice_dist_id,
5507 rounding_amt,
5508 charge_applicable_to_dist_id,
5509 corrected_quantity,
5510 related_id,
5511 asset_book_type_code,
5512 asset_category_id,
5513 distribution_class,
5514 tax_code_id,
5515 intended_use,
5516 detail_tax_dist_id,
5517 rec_nrec_rate,
5518 recovery_rate_id,
5519 recovery_rate_name,
5520 recovery_type_code,
5521 withholding_tax_code_id,
5522 taxable_amount,
5523 taxable_base_amount,
5524 tax_already_distributed_flag,
5525 summary_tax_line_id,
5526 extra_po_erv,
5527 prepay_tax_diff_amount,
5528 self_assessed_tax_liab_ccid,
5529 rcv_charge_addition_flag,
5530 self_assessed_flag
5531 ) VALUES (
5532 l_inv_self_ins(i).accounting_date, -- accounting_date
5533 'N', -- accrual_posted_flag
5534 'U', -- assets_addition_flag
5535 'N', -- assets_tracking_flag
5536 'N', -- cash_posted_flag
5537 AP_ETAX_UTILITY_PKG.get_max_dist_num_self(
5538 --P_Invoice_Header_Rec.invoice_id,
5539 l_inv_self_ins(i).invoice_id,
5540 l_inv_self_ins(i).invoice_line_number)+1, --Bug7611551
5541 -- distribution_line_number
5542 l_dist_code_combination_id, -- dist_code_combination_id
5543 l_inv_self_ins(i).invoice_id, -- invoice_id Bug7611551
5544 --P_Invoice_Header_Rec.invoice_id, -- invoice_id
5545 l_user_id, -- last_updated_by
5546 sysdate, -- last_update_date /*Bug10101457: replaced l_sysdate with sysdate*/
5547 l_inv_self_ins(i).line_type_lookup_code,
5548 -- line_type_lookup_code
5549 l_inv_self_ins(i).period_name, -- period_name
5550 l_inv_self_ins(i).set_of_books_id, -- set_of_books_id bug7611551
5551 --P_Invoice_Header_Rec.set_of_books_id, -- set_of_books_id
5552 l_inv_self_ins(i).amount, -- amount
5553 l_inv_self_ins(i).base_amount, -- base_amount -- bug 10350068
5554 l_inv_self_ins(i).batch_id, -- batch_id --Bug7611551
5555 --P_Invoice_Header_Rec.batch_id, -- batch_id
5556 l_user_id, -- created_by
5557 sysdate, -- creation_date /*Bug10101457: replaced l_sysdate with sysdate*/
5558 l_inv_self_ins(i).description, -- description
5559 NULL, -- final_match_flag
5560 l_inv_self_ins(i).income_tax_region, -- income_tax_region
5561 l_login_id, -- last_update_login
5562 NULL, -- match_status_flag
5563 'N', -- posted_flag
5564 l_inv_self_ins(i).po_distribution_id, -- po_distribution_id
5565 NULL, -- program_application_id
5566 NULL, -- program_id
5567 NULL, -- program_update_date
5568 NULL, -- quantity_invoiced
5569 NULL, -- request_id
5570 'N', -- reversal_flag
5571 l_inv_self_ins(i).type_1099, -- type_1099
5572 NULL, -- unit_price
5573 'N', -- encumbered_flag
5574 NULL, -- stat_amount
5575 l_inv_self_ins(i).attribute1, -- attribute1
5576 l_inv_self_ins(i).attribute10, -- attribute10
5577 l_inv_self_ins(i).attribute11, -- attribute11,
5578 l_inv_self_ins(i).attribute12, -- attribute12
5579 l_inv_self_ins(i).attribute13, -- attribute13
5580 l_inv_self_ins(i).attribute14, -- attribute14
5581 l_inv_self_ins(i).attribute15, -- attribute15
5582 l_inv_self_ins(i).attribute2, -- attribute2
5583 l_inv_self_ins(i).attribute3, -- attribute3
5584 l_inv_self_ins(i).attribute4, -- attribute4
5585 l_inv_self_ins(i).attribute5, -- attribute5
5586 l_inv_self_ins(i).attribute6, -- attribute6
5587 l_inv_self_ins(i).attribute7, -- attribute7
5588 l_inv_self_ins(i).attribute8, -- attribute8
5589 l_inv_self_ins(i).attribute9, -- attribute9
5590 l_inv_self_ins(i).attribute_category, -- attribute_category
5591 l_inv_self_ins(i).expenditure_item_date,
5592 -- expenditure_item_date
5593 l_inv_self_ins(i).expenditure_organization_id,
5594 -- expenditure_organization_id
5595 l_inv_self_ins(i).expenditure_type, -- expenditure_type
5596 l_inv_self_ins(i).parent_invoice_id, -- parent_invoice_id
5597 l_inv_self_ins(i).pa_addition_flag, -- pa_addition_flag
5598 l_inv_self_ins(i).pa_quantity, -- pa_quantity
5599 NULL, -- prepay_amount_remaining
5600 -- the prepay_amount_remaining will be populated for all the
5601 -- prepayment distributions during the payment. And later will be
5602 -- updated during the prepayment applications
5603 l_inv_self_ins(i).project_accounting_context,
5604 -- project_accounting_context
5605 l_inv_self_ins(i).project_id, -- project_id
5606 l_inv_self_ins(i).task_id, -- task_id
5607 NULL, -- packet_id
5608 'N', -- awt_flag
5609 l_inv_self_ins(i).awt_group_id, -- awt_group_id
5610 NULL, -- awt_tax_rate_id
5611 NULL, -- awt_gross_amount
5612 NULL, -- awt_invoice_id
5613 NULL, -- awt_origin_group_id
5614 NULL, -- reference_1
5615 NULL, -- reference_2
5616 l_inv_self_ins(i).org_id, -- org_id --Bug7611551
5617 --P_Invoice_Header_Rec.org_id, -- org_id
5618 NULL, -- awt_invoice_payment_id
5619 l_inv_self_ins(i).global_attribute_category,
5620 -- global_attribute_category
5621 l_inv_self_ins(i).global_attribute1, -- global_attribute1
5622 l_inv_self_ins(i).global_attribute2, -- global_attribute2
5623 l_inv_self_ins(i).global_attribute3, -- global_attribute3
5624 l_inv_self_ins(i).global_attribute4, -- global_attribute4
5625 l_inv_self_ins(i).global_attribute5, -- global_attribute5
5626 l_inv_self_ins(i).global_attribute6, -- global_attribute6
5627 l_inv_self_ins(i).global_attribute7, -- global_attribute7
5628 l_inv_self_ins(i).global_attribute8, -- global_attribute8
5629 l_inv_self_ins(i).global_attribute9, -- global_attribute9
5630 l_inv_self_ins(i).global_attribute10, -- global_attribute10
5631 l_inv_self_ins(i).global_attribute11, -- global_attribute11
5632 l_inv_self_ins(i).global_attribute12, -- global_attribute12
5633 l_inv_self_ins(i).global_attribute13, -- global_attribute13
5634 l_inv_self_ins(i).global_attribute14, -- global_attribute14
5635 l_inv_self_ins(i).global_attribute15, -- global_attribute15
5636 l_inv_self_ins(i).global_attribute16, -- global_attribute16
5637 l_inv_self_ins(i).global_attribute17, -- global_attribute17
5638 l_inv_self_ins(i).global_attribute18, -- global_attribute18
5639 l_inv_self_ins(i).global_attribute19, -- global_attribute19
5640 l_inv_self_ins(i).global_attribute20, -- global_attribute20
5641 NULL, -- receipt_verified_flag
5642 NULL, -- receipt_required_flag
5643 NULL, -- receipt_missing_flag
5644 NULL, -- justification
5645 NULL, -- expense_group
5646 NULL, -- start_expense_date
5647 NULL, -- end_expense_date
5648 NULL, -- receipt_currency_code
5649 NULL, -- receipt_conversion_rate
5650 NULL, -- receipt_currency_amount
5651 NULL, -- daily_amount
5652 NULL, -- web_parameter_id
5653 NULL, -- adjustment_reason
5654 l_inv_self_ins(i).award_id, -- award_id
5655 NULL, -- credit_card_trx_id
5656 l_inv_self_ins(i).dist_match_type, -- dist_match_type
5657 l_inv_self_ins(i).rcv_transaction_id, -- rcv_transaction_id
5658 ap_invoice_distributions_s.NEXTVAL, -- invoice_distribution_id
5659 NULL, -- parent_reversal_id
5660 l_inv_self_ins(i).tax_recoverable_flag,
5661 -- tax_recoverable_flag
5662 l_inv_self_ins(i).merchant_document_number, -- merchant_document_number --Bug14658408: Start
5663 l_inv_self_ins(i).merchant_name, -- merchant_name
5664 l_inv_self_ins(i).merchant_reference, -- merchant_reference
5665 l_inv_self_ins(i).merchant_tax_reg_number, -- merchant_tax_reg_number
5666 l_inv_self_ins(i).merchant_taxpayer_id, -- merchant_taxpayer_id --Bug14658408: End
5667 NULL, -- country_of_supply
5668 NULL, -- matched_uom_lookup_code
5669 NULL, -- gms_burdenable_raw_cost
5670 NULL, -- accounting_event_id
5671 l_inv_self_ins(i).prepay_distribution_id, -- prepay_distribution_id
5672 NULL, -- upgrade_posted_amt
5673 NULL, -- upgrade_base_posted_amt
5674 'N', -- inventory_transfer_status
5675 NULL, -- company_prepaid_invoice_id
5676 NULL, -- cc_reversal_flag
5677 NULL, -- awt_withheld_amt
5678 NULL, -- pa_cmt_xface_flag
5679 l_inv_self_ins(i).cancellation_flag, -- cancellation_flag
5680 l_inv_self_ins(i).invoice_line_number,-- invoice_line_number
5681 l_inv_self_ins(i).corrected_invoice_dist_id,
5682 -- corrected_invoice_dist_id
5683 l_inv_self_ins(i).rounding_amt, -- rounding_amt
5684 l_inv_self_ins(i).charge_applicable_to_dist_id,
5685 -- charge_applicable_to_dist_id
5686 NULL, -- corrected_quantity
5687 NULL, -- related_id
5688 NULL, -- asset_book_type_code
5689 NULL, -- asset_category_id
5690 l_inv_self_ins(i).distribution_class, -- distribution_class
5691 l_inv_self_ins(i).tax_code_id, -- tax_code_id
5692 NULL, -- intended_use,
5693 l_inv_self_ins(i).detail_tax_dist_id, -- detail_tax_dist_id
5694 l_inv_self_ins(i).rec_nrec_rate, -- rec_nrec_rate
5695 l_inv_self_ins(i).recovery_rate_id, -- recovery_rate_id
5696 l_inv_self_ins(i).recovery_rate_name, -- recovery_rate_name
5697 l_inv_self_ins(i).recovery_type_code, -- recovery_type_code
5698 NULL, -- withholding_tax_code_id,
5699 l_inv_self_ins(i).taxable_amount, -- taxable_amount
5700 l_inv_self_ins(i).taxable_base_amount, -- taxable_base_amount
5701 NULL, -- tax_already_distributed_flag
5702 l_inv_self_ins(i).summary_tax_line_id, -- summary_tax_line_id
5703 l_inv_self_ins(i).extra_po_erv, -- extra_po_erv
5704 l_inv_self_ins(i).prepay_tax_diff_amount, -- prepay_tax_diff_amount
5705 l_tax_liab_ccid, -- self_assessed_tax_liab_ccid
5706 'N', -- rcv_charge_addition_flag
5707 'Y' -- self_assessed_flag
5708 );
5709
5710 EXCEPTION
5711 WHEN OTHERS THEN
5712 IF (SQLCODE <> -20001) THEN
5713 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
5714 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
5715 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
5716 FND_MESSAGE.SET_TOKEN('PARAMETERS',
5717 ' P_Invoice_Id = '||l_inv_self_ins(i).invoice_id||
5718 ' P_Error_Code = '||P_Error_Code||
5719 ' P_Calling_Sequence = '||P_Calling_Sequence);
5720 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
5721 END IF;
5722
5723 IF (G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
5724 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
5725 END IF;
5726
5727 APP_EXCEPTION.RAISE_EXCEPTION;
5728 END;
5729
5730 END LOOP;
5731 L_INV_SELF_INS.DELETE;
5732 END IF;
5733 END LOOP;
5734 CLOSE INSERT_TAX_SELF;
5735
5736 --Bug9021265
5737 --Raising error if any distribution frozen dist is missing
5738 --as discussed : Himesh,Atul,Venkat,Kiran,Ranjith,Taniya
5739
5740 BEGIN
5741 --bug10140354 starts
5742
5743 OPEN frozen_dist_del;
5744 FETCH frozen_dist_del BULK COLLECT INTO l_frozen_tax_del;
5745 CLOSE frozen_dist_del;
5746
5747 EXCEPTION
5748 WHEN NO_DATA_FOUND THEN
5749 NULL;
5750 END;
5751
5752 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5753 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Frozen Deleted Dist Count: '||sql%rowcount);
5754 END IF;
5755
5756 IF (l_frozen_tax_del.count > 0) Then --bug10140354
5757
5758 For i in l_frozen_tax_del.FIRST .. l_frozen_tax_del.LAST LOOP
5759
5760 insert into ap_errors_gt(invoice_id , reference_key2 , reference_key1 , message_text)
5761 values (
5762 l_frozen_tax_del(i).invoice_id ,
5763 l_frozen_tax_del(i).detail_tax_dist_id ,
5764 l_frozen_tax_del(i).summary_tax_line_id,
5765 'Frozen Tax Distribution Deleted by EBTax. This would cause orphan events.'
5766 );
5767
5768 END LOOP;
5769
5770
5771 /* IF l_frozen_tax_dist_id IS NOT NULL THEN
5772 -------------------------------------------------------------------
5773 l_debug_info := 'Froze Dist Deleted: ' ||l_frozen_tax_dist_id;
5774 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5775 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5776 END IF;
5777 l_debug_info := 'Summary Tax Line ID for this Dist: '||l_frozen_summary_tax_line_id;
5778 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5779 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5780 END IF; */
5781 -------------------------------------------------------------------
5782
5783 /* Bug 9777752
5784 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
5785 FND_MESSAGE.SET_TOKEN('ERROR', 'Frozen Tax Distribution Deleted by EBTax. This would cause orphan events.');
5786 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
5787 FND_MESSAGE.SET_TOKEN('PARAMETERS',
5788 ' P_Error_Code = '||P_Error_Code||
5789 ' P_Calling_Sequence = '||P_Calling_Sequence);
5790 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
5791 */
5792 FND_MESSAGE.SET_NAME( 'SQLAP', 'AP_FRZN_TAX_DIST_DEL' ); -- Bug 9777752
5793
5794 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
5795 APP_EXCEPTION.RAISE_EXCEPTION;
5796 ELSE
5797 RETURN FALSE;
5798 END IF;
5799 END IF;
5800
5801 --bug10140354 ended
5802 --Bug9021265
5803 --Raising error if any distribution frozen dist is missing
5804 --as discussed : Himesh,Atul,Venkat,Kiran,Ranjith,Taniya
5805
5806 -------------------------------------------------------------------
5807 l_debug_info := 'Delete tax distributions';
5808 -------------------------------------------------------------------
5809 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5810 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5811 END IF;
5812
5813 DELETE FROM ap_invoice_distributions_all aid
5814 WHERE aid.invoice_distribution_id IN
5815 (SELECT /*+ leading(gt) cardinality(gt,1) */
5816 dist.invoice_distribution_id
5817 FROM zx_trx_headers_gt gt,
5818 ap_invoice_distributions_all dist
5819 WHERE gt.application_id = AP_ETAX_PKG.AP_APPLICATION_ID
5820 AND gt.entity_code = AP_ETAX_PKG.AP_ENTITY_CODE
5821 AND gt.event_class_code IN (AP_ETAX_PKG.AP_INV_EVENT_CLASS_CODE,
5822 AP_ETAX_PKG.AP_PP_EVENT_CLASS_CODE,
5823 AP_ETAX_PKG.AP_ER_EVENT_CLASS_CODE)
5824 AND gt.trx_id = dist.invoice_id
5825 AND dist.line_type_lookup_code IN ('REC_TAX', 'NONREC_TAX', 'TRV', 'TIPV', 'TERV')
5826 AND NOT EXISTS
5827 (SELECT 'Tax Distributions'
5828 FROM zx_rec_nrec_dist zd
5829 WHERE zd.rec_nrec_tax_dist_id = dist.detail_tax_dist_id
5830 AND NVL(SELF_ASSESSED_FLAG, 'N') = 'N')-- bug 7422547
5831 ); --Bug7634436
5832
5833 --Bug9021265
5834 --Raising error if any distribution frozen dist is missing
5835 --as discussed : Himesh,Atul,Venkat,Kiran,Ranjith,Taniya
5836
5837 l_frozen_tax_dist_id := NULL;
5838 l_frozen_summary_tax_line_id := NULL;
5839
5840 --bug10140354 starts
5841 BEGIN
5842
5843 OPEN frozen_self_dist_del;
5844 FETCH frozen_self_dist_del BULK COLLECT INTO l_frozen_self_tax_del;
5845 CLOSE frozen_self_dist_del;
5846
5847 EXCEPTION
5848 WHEN NO_DATA_FOUND THEN
5849 NULL;
5850 END;
5851 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5852 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Frozen Deleted Self Assessed Dist Count: '||sql%rowcount);
5853 END IF;
5854
5855 IF (l_frozen_self_tax_del.count > 0) Then --bug10140354
5856
5857 For i in l_frozen_self_tax_del.FIRST .. l_frozen_self_tax_del.LAST LOOP
5858
5859 insert into ap_errors_gt(invoice_id , reference_key2 , reference_key1 , message_text)
5860 values (
5861 l_frozen_self_tax_del(i).invoice_id ,
5862 l_frozen_self_tax_del(i).detail_tax_dist_id ,
5863 l_frozen_self_tax_del(i).summary_tax_line_id,
5864 'Frozen Self Assessed Tax Distribution Deleted by EBTax. This would cause orphan events.'
5865 );
5866
5867 END LOOP;
5868
5869 /* IF l_frozen_tax_dist_id IS NOT NULL THEN
5870 -------------------------------------------------------------------
5871 l_debug_info := 'Froze Self Assessed Dist Deleted: '||l_frozen_tax_dist_id;
5872 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5873 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5874 END IF;
5875 l_debug_info := 'Summary Tax Line ID for this Dist: '||l_frozen_summary_tax_line_id;
5876 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5877 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5878 END IF; */
5879 -------------------------------------------------------------------
5880 /* Bug 9777752
5881 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
5882 FND_MESSAGE.SET_TOKEN('ERROR', 'Frozen Tax Distribution Deleted by EBTax. This would cause orphan events.');
5883 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
5884 FND_MESSAGE.SET_TOKEN('PARAMETERS',
5885 ' P_Error_Code = '||P_Error_Code||
5886 ' P_Calling_Sequence = '||P_Calling_Sequence);
5887 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
5888 */
5889 FND_MESSAGE.SET_NAME( 'SQLAP', 'AP_FRZN_TAX_DIST_DEL' ); -- Bug 9777752
5890
5891 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
5892 APP_EXCEPTION.RAISE_EXCEPTION;
5893 ELSE
5894 RETURN FALSE;
5895 END IF;
5896 END IF;
5897 --bug10140354 ends
5898 --Bug9021265
5899 --Raising error if any distribution frozen dist is missing
5900 --as discussed : Himesh,Atul,Venkat,Kiran,Ranjith,Taniya
5901 -------------------------------------------------------------------
5902 l_debug_info := 'Get self assessed distributions to delete';
5903 -------------------------------------------------------------------
5904 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5905 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5906 END IF;
5907
5908 DELETE FROM ap_self_assessed_tax_dist_all aid
5909 WHERE aid.invoice_distribution_id IN
5910 (SELECT /*+ leading(gt) cardinality(gt,1) */
5911 dist.invoice_distribution_id
5912 FROM zx_trx_headers_gt gt,
5913 ap_self_assessed_tax_dist_all dist
5914 WHERE gt.application_id = AP_ETAX_PKG.AP_APPLICATION_ID
5915 AND gt.entity_code = AP_ETAX_PKG.AP_ENTITY_CODE
5916 AND gt.event_class_code IN (AP_ETAX_PKG.AP_INV_EVENT_CLASS_CODE,
5917 AP_ETAX_PKG.AP_PP_EVENT_CLASS_CODE,
5918 AP_ETAX_PKG.AP_ER_EVENT_CLASS_CODE)
5919 AND gt.trx_id = dist.invoice_id
5920 AND dist.line_type_lookup_code IN ('REC_TAX', 'NONREC_TAX')
5921 AND NOT EXISTS
5922 (SELECT 'Tax Distributions'
5923 FROM zx_rec_nrec_dist zd
5924 WHERE zd.rec_nrec_tax_dist_id = dist.detail_tax_dist_id
5925 AND NVL(SELF_ASSESSED_FLAG, 'N') = 'Y')-- bug 7422547
5926 ); --bug7634436
5927
5928 -------------------------------------------------------------------
5929 l_debug_info := 'Synchronize line numbers for orphan distributions';
5930 -------------------------------------------------------------------
5931 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5932 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
5933 END IF;
5934
5935 BEGIN -- Bug 9777752
5936 UPDATE ap_invoice_distributions_all aid
5937 SET invoice_line_number = (SELECT line_number
5938 FROM ap_invoice_lines_all ail
5939 WHERE ail.invoice_id = aid.invoice_id
5940 AND ail.summary_tax_line_id = aid.summary_tax_line_id
5941 AND rownum = 1)
5942 WHERE aid.invoice_distribution_id IN
5943 (SELECT /*+ leading(gt) cardinality(gt,1) */
5944 dist.invoice_distribution_id
5945 FROM zx_trx_headers_gt gt,
5946 ap_invoice_distributions_all dist
5947 WHERE gt.application_id = 200
5948 AND gt.entity_code = 'AP_INVOICES'
5949 AND gt.event_class_code IN ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
5950 AND gt.trx_id = dist.invoice_id
5951 AND dist.line_type_lookup_code IN ('REC_TAX', 'NONREC_TAX', 'TRV', 'TIPV', 'TERV')
5952 AND dist.invoice_line_number NOT IN
5953 (SELECT line_number
5954 FROM ap_invoice_lines_all al
5955 WHERE al.invoice_id = dist.invoice_id)
5956 );
5957
5958 EXCEPTION
5959 WHEN DUP_VAL_ON_INDEX THEN
5960 IF INSTRB( SQLERRM, 'AP_INVOICE_DISTRIBUTION_U1' ) <> 0 THEN
5961 FND_MESSAGE.SET_NAME('SQLAP', 'AP_ERR_TAX_DIST_SYNC') ;
5962
5963 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
5964 APP_EXCEPTION.RAISE_EXCEPTION;
5965 ELSE
5966 RETURN FALSE;
5967 END IF;
5968 END IF ;
5969 END ; -- Bug 9777752
5970
5971 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5972 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Orphan Distributions updated: '||sql%rowcount);
5973 END IF;
5974
5975 RETURN TRUE;
5976
5977 EXCEPTION
5978 WHEN OTHERS THEN
5979 IF (SQLCODE <> -20001) THEN
5980 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
5981 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
5982 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
5983 FND_MESSAGE.SET_TOKEN('PARAMETERS',
5984 ' P_Invoice_Id = '||P_Invoice_Header_Rec.Invoice_Id||
5985 ' P_Error_Code = '||P_Error_Code||
5986 ' P_Calling_Sequence = '||P_Calling_Sequence);
5987 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
5988 END IF;
5989
5990 IF (insert_tax_dist%ISOPEN ) THEN
5991 CLOSE insert_tax_dist;
5992 END IF;
5993
5994 IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
5995 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
5996 END IF;
5997
5998 --bug10140354
5999 IF AP_APPROVAL_PKG.G_VALIDATION_REQUEST_ID IS NULL THEN
6000 APP_EXCEPTION.RAISE_EXCEPTION;
6001 ELSE
6002
6003 RETURN FALSE;
6004 END IF;
6005
6006 END Return_Tax_Distributions;
6007
6008 /*=============================================================================
6009 | FUNCTION - Return_Default_Import()
6010 |
6011 | DESCRIPTION
6012 | This function handles the return of default values for tax and trx lines
6013 | after running the eTax service that validates and defaults info during the
6014 | import program. This function will modify the pl/sql tables used in the
6015 | import program.
6016 |
6017 | PARAMETERS
6018 | P_Invoice_Header_Rec - Header info
6019 | P_All_Error_Messages - Should API return 1 error message or allow
6020 | calling point to get them from message stack
6021 | P_error_code - Error code to be returned
6022 | P_calling_sequence - Calling sequence
6023 | P_Invoice_Status -Status flag to check if further processing should be done.--Bug6625518
6024 |
6025 | MODIFICATION HISTORY
6026 | DATE Author Action
6027 | 20-JAN-2004 SYIDNER Created
6028 |
6029 *============================================================================*/
6030 FUNCTION Return_Default_Import(
6031 P_Invoice_Header_Rec IN OUT NOCOPY AP_IMPORT_INVOICES_PKG.r_invoice_info_rec,
6032 P_Invoice_Lines_Tab IN OUT NOCOPY AP_IMPORT_INVOICES_PKG.t_lines_table,
6033 P_All_Error_Messages IN VARCHAR2,
6034 P_Error_Code OUT NOCOPY VARCHAR2,
6035 P_Calling_Sequence IN VARCHAR2,
6036 P_Invoice_Status OUT NOCOPY VARCHAR2) --Bug6625518
6037 RETURN BOOLEAN
6038 IS
6039
6040 l_debug_info VARCHAR2(2000);
6041 l_curr_calling_sequence VARCHAR2(4000);
6042
6043 trans_lines_gt zx_transaction_lines_gt%ROWTYPE;
6044 tax_lines_gt zx_import_tax_lines_gt%ROWTYPE;
6045
6046 TYPE rej_lines_rec IS RECORD (
6047 invoice_id zx_validation_errors_gt.trx_id%TYPE,
6048 line_number zx_validation_errors_gt.trx_line_id%TYPE,
6049 rejection_code zx_validation_errors_gt.message_name%TYPE,
6050 summary_tax_line_number zx_validation_errors_gt.summary_tax_line_number%TYPE,
6051 invoice_line_id ap_invoice_lines_interface.invoice_line_id%TYPE);
6052
6053 TYPE rej_lines_tab IS TABLE OF rej_lines_rec;
6054 rej_lines rej_lines_tab;
6055
6056 CURSOR Trx_Lines_c (c_line_number IN NUMBER) IS
6057 SELECT *
6058 FROM zx_transaction_lines_gt
6059 WHERE trx_id = P_Invoice_Header_Rec.invoice_id
6060 AND trx_line_id = c_line_number;
6061
6062 CURSOR Tax_Lines_c (c_line_number IN NUMBER) IS
6063 SELECT *
6064 FROM zx_import_tax_lines_gt
6065 WHERE trx_id = P_Invoice_Header_Rec.invoice_id
6066 AND summary_tax_line_number = c_line_number;
6067
6068 CURSOR rejections_gt IS
6069 SELECT ve.trx_id invoice_id,
6070 ve.trx_line_id line_number,
6071 ve.message_name rejection_code,
6072 ve.summary_tax_line_number summary_tax_line_number,
6073 ail.invoice_line_id invoice_line_id
6074 FROM zx_validation_errors_gt ve,
6075 ap_invoice_lines_interface ail
6076 WHERE ve.application_id = 200
6077 AND ve.entity_code = 'AP_INVOICES'
6078 AND ve.event_class_code IN ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
6079 AND ve.trx_id = P_Invoice_Header_Rec.invoice_id
6080 AND ail.invoice_id = ve.trx_id;
6081 --AND ail.line_number = ve.trx_line_id; -- bug6255826
6082
6083 -- Bug 6665695
6084 l_api_name VARCHAR2(100):='AP_ETAX_SERVICES_PKG.Return_Default_Import';
6085
6086 BEGIN
6087 l_curr_calling_sequence := 'AP_ETAX_SERVICES_PKG.Return_Default_Import<-' ||
6088 P_calling_sequence;
6089 -----------------------------------------------------------------
6090 l_debug_info := 'Step 1: Get rejections from zx_trans_lines_val_errs'||
6091 ' table';
6092 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6093 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6094 END IF;
6095 -----------------------------------------------------------------
6096 BEGIN
6097 OPEN rejections_gt;
6098 FETCH rejections_gt BULK COLLECT INTO rej_lines;
6099 CLOSE rejections_gt;
6100 END;
6101
6102 IF (rej_lines.COUNT <> 0 ) THEN
6103 FOR i IN rej_lines.FIRST..rej_lines.LAST LOOP
6104 P_Invoice_Header_Rec.import_status :='N'; --bug 15862708
6105 -----------------------------------------------------------------
6106 l_debug_info := 'Step 2: Create rejections in the import rejections '||
6107 'table';
6108 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6109 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6110 END IF;
6111 -----------------------------------------------------------------
6112 IF (rej_lines(i).line_number IS NULL) THEN -- rejection is at invoice level
6113 IF (AP_IMPORT_UTILITIES_PKG.insert_rejections(
6114 p_parent_table => 'AP_INVOICES_INTERFACE',
6115 p_parent_id => rej_lines(i).invoice_id,
6116 p_reject_code => rej_lines(i).rejection_code,
6117 p_last_updated_by => l_user_id,
6118 p_last_update_login => l_login_id,
6119 p_calling_sequence => l_curr_calling_sequence) <> TRUE) THEN
6120
6121 RETURN FALSE;
6122 END IF;
6123
6124 ELSE -- rejection is at line level
6125
6126 IF (AP_IMPORT_UTILITIES_PKG.insert_rejections(
6127 p_parent_table => 'AP_INVOICE_LINES_INTERFACE',
6128 p_parent_id => rej_lines(i).invoice_line_id,
6129 p_reject_code => rej_lines(i).rejection_code,
6130 p_last_updated_by => l_user_id,
6131 p_last_update_login => l_login_id,
6132 p_calling_sequence => l_curr_calling_sequence) <> TRUE) THEN
6133 RETURN FALSE;
6134 END IF;
6135
6136 END IF;
6137
6138 END LOOP;
6139
6140 p_invoice_status := 'N';--Bug6625518 Set processing flag to 'N' if there are rejections
6141 ELSE -- there are no rejections for this invoice. Update pl/sql tables
6142 -- with defaulted info
6143
6144 -- No need to update invoice header import pl/sql record since
6145 -- eTax will not default any column.
6146
6147 -----------------------------------------------------------------
6148 l_debug_info := 'Step 3: Loop through lines import pl/sql table';
6149 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6150 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6151 END IF;
6152 -----------------------------------------------------------------
6153 IF (P_Invoice_Lines_Tab.COUNT > 0) THEN
6154 FOR i IN P_Invoice_Lines_Tab.FIRST..P_Invoice_Lines_Tab.LAST LOOP
6155 IF P_Invoice_Lines_Tab(i).invoice_id = P_Invoice_Header_Rec.invoice_id THEN
6156 -------------------------------------------------------------------
6157 l_debug_info := 'Step 4: Get trx and tax line info to update pl/sql '||
6158 'table';
6159 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6160 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6161 END IF;
6162 -------------------------------------------------------------------
6163 IF (P_Invoice_Lines_Tab(i).line_type_lookup_code <> 'TAX') THEN
6164
6165 BEGIN
6166 OPEN Trx_Lines_c (P_Invoice_Lines_Tab(i).line_number);
6167 FETCH Trx_Lines_c INTO trans_lines_gt;
6168 CLOSE Trx_Lines_c;
6169 END;
6170 -----------------------------------------------------------------
6171 l_debug_info := 'Step 5: Update non-tax lines in pl/sql table';
6172 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6173 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6174 END IF;
6175 -----------------------------------------------------------------
6176 P_Invoice_Lines_Tab(i).trx_business_category := trans_lines_gt.trx_business_category;
6177 P_Invoice_Lines_Tab(i).primary_intended_use := trans_lines_gt.line_intended_use;
6178 P_Invoice_Lines_Tab(i).product_fisc_classification := trans_lines_gt.product_fisc_classification;
6179 P_Invoice_Lines_Tab(i).product_type := trans_lines_gt.product_type;
6180 P_Invoice_Lines_Tab(i).product_category := trans_lines_gt.product_category;
6181 -----------------------------------------------------------------
6182 -- Bug 6665695 -- Added assignment for Tax Classification Code
6183 -----------------------------------------------------------------
6184 l_debug_info := 'Step 5.1 Getting INPUT_TAX_CLASSIFICATION_CODE:'
6185 ||trans_lines_gt.INPUT_TAX_CLASSIFICATION_CODE;
6186 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6187 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6188 END IF;
6189 -----------------------------------------------------------------
6190 --Bug12660669 Start: Added source, inv type and line type check
6191 IF (p_invoice_header_rec.source = 'SelfService' AND
6192 p_invoice_header_rec.invoice_type_lookup_code = 'EXPENSE REPORT' AND
6193 P_Invoice_Lines_Tab(i).line_type_lookup_code = 'MISCELLANEOUS' ) THEN
6194 P_Invoice_Lines_Tab(i).tax_classification_code := NULL;
6195 ELSE
6196 P_Invoice_Lines_Tab(i).tax_classification_code :=
6197 trans_lines_gt.INPUT_TAX_CLASSIFICATION_CODE;
6198 END IF; --Bug12660669 End - Added source, inv type and line type check
6199 ELSE -- It is a tax line
6200
6201 BEGIN
6202 OPEN Tax_Lines_c (P_Invoice_Lines_Tab(i).line_number);
6203 FETCH Tax_Lines_c INTO tax_lines_gt;
6204 CLOSE Tax_Lines_c;
6205 END;
6206
6207 -----------------------------------------------------------------
6208 l_debug_info := 'Step 6: Update tax lines in pl/sql table '||P_Invoice_Lines_Tab(i).line_number||
6209 ' Line Type'||P_Invoice_Lines_Tab(i).line_type_lookup_code;
6210 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6211 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6212 END IF;
6213 -----------------------------------------------------------------
6214 -----------------------------------------------------------------
6215 l_debug_info := 'Step 6.1: Tax attributes: tax_regime_code'||tax_lines_gt.tax_regime_code||
6216 ' tax_jurisdiction_code'||tax_lines_gt.tax_jurisdiction_code||
6217 ' tax_status_code'||tax_lines_gt.tax_status_code ||
6218 ' tax_rate_id'||tax_lines_gt.tax_rate_id||
6219 ' tax_rate_code'||tax_lines_gt.tax_rate_code||
6220 ' tax_rate'||tax_lines_gt.tax_rate;
6221 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6222 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6223 END IF;
6224 -----------------------------------------------------------------
6225 --6255826 Added Tax_regime_code and Tax assignments
6226 P_Invoice_Lines_Tab(i).tax_regime_code := tax_lines_gt.tax_regime_code;
6227 P_Invoice_Lines_Tab(i).tax := tax_lines_gt.tax;
6228 P_Invoice_Lines_Tab(i).tax_jurisdiction_code := tax_lines_gt.tax_jurisdiction_code;
6229 P_Invoice_Lines_Tab(i).tax_status_code := tax_lines_gt.tax_status_code;
6230 P_Invoice_Lines_Tab(i).tax_rate_id := tax_lines_gt.tax_rate_id;
6231 P_Invoice_Lines_Tab(i).tax_rate_code := tax_lines_gt.tax_rate_code;
6232 P_Invoice_Lines_Tab(i).tax_rate := tax_lines_gt.tax_rate;
6233
6234 IF (P_Invoice_Header_Rec.tax_only_flag = 'Y') THEN
6235 -- If the invoice is tax only, copy any defaulted values from the
6236 -- trx global temp table to the tax line
6237 BEGIN
6238 OPEN Trx_Lines_c (P_Invoice_Lines_Tab(i).line_number);
6239 FETCH Trx_Lines_c INTO trans_lines_gt;
6240 CLOSE Trx_Lines_c;
6241 END;
6242
6243 -----------------------------------------------------------------
6244 l_debug_info := 'Step 7: Update tax line if tax only invoice in pl/sql table';
6245 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6246 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6247 END IF;
6248 -----------------------------------------------------------------
6249 P_Invoice_Lines_Tab(i).trx_business_category := trans_lines_gt.trx_business_category;
6250 P_Invoice_Lines_Tab(i).primary_intended_use := trans_lines_gt.line_intended_use;
6251 P_Invoice_Lines_Tab(i).product_fisc_classification := trans_lines_gt.product_fisc_classification;
6252 P_Invoice_Lines_Tab(i).product_type := trans_lines_gt.product_type;
6253 P_Invoice_Lines_Tab(i).product_category := trans_lines_gt.product_category;
6254
6255 END IF;
6256 END IF;
6257 END IF;
6258 END LOOP;
6259 END IF; -- lines pl/sql table has records.
6260 p_invoice_status := 'Y';--Bug6625518 Set processing flag to Y if no rejections are there
6261 END IF; -- there are no rejections for this invoice
6262
6263 RETURN TRUE;
6264
6265 EXCEPTION
6266 WHEN OTHERS THEN
6267 IF (SQLCODE <> -20001) THEN
6268 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6269 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6270 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
6271 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6272 ' P_Invoice_Id = '||P_Invoice_Header_Rec.Invoice_Id||
6273 ' P_Error_Code = '||P_Error_Code||
6274 ' P_Calling_Sequence = '||P_Calling_Sequence);
6275 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
6276 END IF;
6277
6278 APP_EXCEPTION.RAISE_EXCEPTION;
6279 END Return_Default_Import;
6280 /*=============================================================================
6281 | FUNCTION - Return_Tax_Quote()
6282 |
6283 | DESCRIPTION
6284 | This function handles the return of tax lines when the calculate service is
6285 | ran for quote. This case is specific for recurring invoices and invoice
6286 | lines created through distribution sets.
6287 |
6288 | PARAMETERS
6289 | P_Invoice_Header_Rec - Header info
6290 | P_error_code - Error code to be returned
6291 | P_calling_sequence - Calling sequence
6292 |
6293 | MODIFICATION HISTORY
6294 | DATE Author Action
6295 | 03-NOV-2003 SYIDNER Created
6296 |
6297 *============================================================================*/
6298 FUNCTION Return_Tax_Quote(
6299 P_Invoice_Header_Rec IN ap_invoices_all%ROWTYPE,
6300 P_Error_Code OUT NOCOPY VARCHAR2,
6301 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
6302
6303 IS
6304
6305 l_debug_info VARCHAR2(240);
6306 l_curr_calling_sequence VARCHAR2(4000);
6307 l_api_name CONSTANT VARCHAR2(100) := 'Return_Tax_Quote';
6308
6309 BEGIN
6310
6311 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Return_Tax_Quote<-'||
6312 P_calling_sequence;
6313
6314 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6315 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
6316 END IF;
6317 -------------------------------------------------------------------
6318 l_debug_info := 'Step 1: Get data from zx_detail_tax_lines_gt and '||
6319 'update amount and base_amount for line(s)';
6320 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6321 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6322 END IF;
6323 -------------------------------------------------------------------
6324 BEGIN
6325 UPDATE ap_invoice_lines_all ail
6326 SET (ail.amount, ail.base_amount) =
6327 (SELECT NVL(ail.amount, 0) - SUM(NVL(zdl.tax_amt,0)),
6328 NVL(ail.base_amount,0) - SUM(NVL(zdl.tax_amt_funcl_curr,0))
6329 FROM zx_detail_tax_lines_gt zdl
6330 WHERE zdl.application_id = 200
6331 AND zdl.entity_code = 'AP_INVOICES'
6332 AND zdl.event_class_code IN ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
6333 AND zdl.trx_id = ail.invoice_id
6334 AND zdl.trx_line_id = ail.line_number
6335 AND NVL(zdl.self_assessed_flag, 'N') = 'N'
6336 AND NVL(zdl.tax_amt_included_flag, 'N') = 'N')
6337 WHERE ail.invoice_id = P_Invoice_Header_Rec.invoice_id
6338 AND ail.line_type_lookup_code NOT IN ('TAX', 'AWT');
6339
6340 EXCEPTION
6341 WHEN no_data_found THEN
6342 null;
6343
6344 END;
6345
6346 RETURN TRUE;
6347
6348 EXCEPTION
6349 WHEN OTHERS THEN
6350 IF (SQLCODE <> -20001) THEN
6351 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6352 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6353 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
6354 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6355 ' P_Invoice_Id = '||P_Invoice_Header_Rec.Invoice_Id||
6356 ' P_Error_Code = '||P_Error_Code||
6357 ' P_Calling_Sequence = '||P_Calling_Sequence);
6358 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
6359 END IF;
6360
6361 APP_EXCEPTION.RAISE_EXCEPTION;
6362
6363 END Return_Tax_Quote;
6364
6365 /*=============================================================================
6366 | FUNCTION - Return_Error_Messages()
6367 |
6368 | DESCRIPTION
6369 | This function will handle the return of the error messages from the
6370 | eTax services. The services can return 1 or more error messages or
6371 | warnings. The calling point will indicate the API if it wants the return of
6372 | only 1 error messages through the parameter P_All_Error_Messages = N
6373 | eventhough the service returns more than one error message.
6374 | If the calling point requires all the error messages, it will need to get them
6375 | directly from the message stack.
6376 |
6377 | PARAMETERS
6378 |
6379 | MODIFICATION HISTORY
6380 | DATE Author Action
6381 | 05-NOV-2003 SYIDNER Created
6382 |
6383 *============================================================================*/
6384 FUNCTION Return_Error_Messages(
6385 P_All_Error_Messages IN VARCHAR2,
6386 P_Msg_Count IN NUMBER,
6387 P_Msg_Data IN VARCHAR2,
6388 P_Error_Code OUT NOCOPY VARCHAR2,
6389 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
6390
6391 IS
6392
6393 l_debug_info VARCHAR2(240);
6394 l_curr_calling_sequence VARCHAR2(4000);
6395 l_api_name CONSTANT VARCHAR2(100) := 'Return_Error_Messages';
6396
6397 BEGIN
6398
6399 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Return_Error_Messages<-'||
6400 P_calling_sequence;
6401
6402 -------------------------------------------------------------------
6403 l_debug_info := 'Get error message from eTax API';
6404 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6405 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6406 END IF;
6407 -------------------------------------------------------------------
6408
6409 BEGIN
6410 SELECT message_text
6411 INTO p_error_code
6412 FROM zx_errors_gt
6413 WHERE rownum = 1;
6414 EXCEPTION
6415 WHEN OTHERS THEN
6416 -------------------------------------------------------------------
6417 l_debug_info := 'Get error message from stack';
6418 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6419 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6420 END IF;
6421 -------------------------------------------------------------------
6422 IF (NVL(P_Msg_Count, 0) <= 1) THEN
6423 P_Error_Code := P_Msg_Data;
6424
6425 ELSE
6426 IF (P_All_Error_Messages = 'N') THEN
6427 LOOP
6428 P_Error_Code := FND_MSG_PUB.Get;
6429 EXIT;
6430 END LOOP;
6431 ELSE
6432 P_Error_Code := NULL;
6433 END IF;
6434 END IF;
6435 END;
6436
6437 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6438 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,p_error_code);
6439 END IF;
6440
6441 RETURN TRUE;
6442
6443 EXCEPTION
6444 WHEN OTHERS THEN
6445 IF (SQLCODE <> -20001) THEN
6446 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6447 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6448 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
6449 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6450 ' P_Error_Code = '||P_Error_Code||
6451 ' P_Calling_Sequence = '||P_Calling_Sequence);
6452 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
6453 END IF;
6454
6455 APP_EXCEPTION.RAISE_EXCEPTION;
6456
6457 END Return_Error_Messages;
6458
6459 /*=============================================================================
6460 | FUNCTION - Is_Tax_Already_Calc_Inv()
6461 |
6462 | DESCRIPTION
6463 | This function will return TRUE if any taxable line in the invoice has the
6464 | tax_already_calculated_flag equals Y. It will return FALSE otherwise.
6465 |
6466 | PARAMETERS
6467 | P_Invoice_Id - Invoice Id
6468 | P_Calling_Sequence - calling sequence
6469 |
6470 | MODIFICATION HISTORY
6471 | DATE Author Action
6472 | 29-DEC-2003 SYIDNER Created
6473 |
6474 *============================================================================*/
6475 FUNCTION Is_Tax_Already_Calc_Inv(
6476 P_Invoice_Id IN NUMBER,
6477 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
6478 IS
6479
6480 l_debug_info VARCHAR2(240);
6481 l_curr_calling_sequence VARCHAR2(4000);
6482 l_tax_already_calculated_flag VARCHAR2(1) := 'N';
6483 l_api_name CONSTANT VARCHAR2(100) := 'Is_Tax_Already_Calc_Inv';
6484
6485 -- Modified this select to include the TAX only case
6486 CURSOR tax_already_calculated IS
6487 SELECT 'Y'
6488 --- Start for bug 6485124
6489 FROM zx_lines_det_factors
6490 WHERE trx_id = p_invoice_id
6491 AND application_id = 200
6492 AND entity_code = 'AP_INVOICES'
6493 AND event_class_code IN
6494 ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
6495 AND ROWNUM=1;
6496 --- End for bug 6485124
6497 -- commented for bug 6485124
6498 /* FROM ap_invoice_lines_all
6499 WHERE invoice_id = p_invoice_id
6500 AND line_type_lookup_code <> 'AWT'
6501 AND (tax_already_calculated_flag = 'Y'
6502 OR summary_tax_line_id IS NOT NULL)
6503 AND ROWNUM = 1; */
6504
6505 BEGIN
6506
6507 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Is_Tax_Already_Called_Inv<-'||
6508 P_calling_sequence;
6509
6510 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6511 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
6512 END IF;
6513
6514 -------------------------------------------------------------------
6515 l_debug_info := 'Step 1: Get tax_already_calculated_flag for any '||
6516 'taxable line in the invoice';
6517 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6518 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6519 END IF;
6520 -------------------------------------------------------------------
6521 OPEN tax_already_calculated;
6522 FETCH tax_already_calculated
6523 INTO l_tax_already_calculated_flag;
6524 CLOSE tax_already_calculated;
6525
6526 IF (l_tax_already_calculated_flag = 'Y') THEN
6527 -------------------------------------------------------------------
6528 l_debug_info := 'Step 1.1: Tax Already Calculated Flag: '||l_tax_already_calculated_flag;
6529 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6530 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6531 END IF;
6532 -------------------------------------------------------------------
6533 RETURN TRUE;
6534
6535 ELSE
6536 RETURN FALSE;
6537
6538 END IF;
6539
6540 EXCEPTION
6541 WHEN OTHERS THEN
6542 IF (SQLCODE <> -20001) THEN
6543 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6544 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6545 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
6546 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6547 ' P_Invoice_Id = '||P_Invoice_Id||
6548 ' P_Calling_Sequence = '||P_Calling_Sequence);
6549 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
6550 END IF;
6551
6552 IF (tax_already_calculated%ISOPEN ) THEN
6553 CLOSE tax_already_calculated;
6554 END IF;
6555
6556 APP_EXCEPTION.RAISE_EXCEPTION;
6557
6558 END Is_Tax_Already_Calc_Inv;
6559
6560
6561
6562
6563 /*=============================================================================
6564 | FUNCTION - Is_Tax_Already_Calc_Inv_char()
6565 |
6566 | DESCRIPTION
6567 | This function will return Y if any taxable line in the invoice has the
6568 | tax_already_calculated_flag equals Y. It will return N otherwise.
6569 |
6570 | This function is same of Is_Tax_Already_Calc_Inv except that
6571 | it returns VARCHAR instead of BOOLEAN.
6572 |
6573 | PARAMETERS
6574 | P_Invoice_Id - Invoice Id
6575 | P_Calling_Sequence - calling sequence
6576 |
6577 | MODIFICATION HISTORY
6578 | DATE Author Action
6579 | 29-DEC-2003 SYIDNER Created
6580 |
6581 *============================================================================*/
6582 FUNCTION Is_Tax_Already_Calc_Inv_char(
6583 P_Invoice_Id IN NUMBER,
6584 P_Calling_Sequence IN VARCHAR2) RETURN VARCHAR2
6585 IS
6586
6587 l_debug_info VARCHAR2(240);
6588 l_curr_calling_sequence VARCHAR2(4000);
6589 l_tax_already_calculated_flag VARCHAR2(1) := 'N';
6590 l_api_name CONSTANT VARCHAR2(100) := 'Is_Tax_Already_Calc_Inv_char';
6591
6592
6593 BEGIN
6594
6595 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Is_Tax_Already_Called_Inv<-'||
6596 P_calling_sequence;
6597
6598 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6599 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
6600 END IF;
6601
6602
6603 -------------------------------------------------------------------
6604 l_debug_info := 'Step 1: Get tax_already_calculated_flag for any '||
6605 'taxable line in the invoice';
6606 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6607 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6608 END IF;
6609 -------------------------------------------------------------------
6610 SELECT 'Y'
6611 INTO l_tax_already_calculated_flag
6612 FROM ap_invoice_lines_all
6613 WHERE invoice_id = p_invoice_id
6614 AND line_type_lookup_code <> 'AWT'
6615 AND (tax_already_calculated_flag = 'Y'
6616 OR summary_tax_line_id IS NOT NULL)
6617 AND ROWNUM = 1;
6618
6619 -------------------------------------------------------------------
6620 l_debug_info := 'Step 1.1: Tax_already_calculated_flag '||l_tax_already_calculated_flag;
6621 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6622 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6623 END IF;
6624 -------------------------------------------------------------------
6625
6626 RETURN(l_tax_already_calculated_flag);
6627
6628 EXCEPTION
6629 WHEN NO_DATA_FOUND THEN
6630 RETURN(l_tax_already_calculated_flag);
6631 WHEN OTHERS THEN
6632 IF (SQLCODE <> -20001) THEN
6633 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6634 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6635 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
6636 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6637 ' P_Invoice_Id = '||P_Invoice_Id||
6638 ' P_Calling_Sequence = '||P_Calling_Sequence);
6639 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
6640 END IF;
6641
6642 APP_EXCEPTION.RAISE_EXCEPTION;
6643
6644 END Is_Tax_Already_Calc_Inv_char;
6645
6646 /*=============================================================================
6647 | FUNCTION - Is_Tax_Already_Dist_Inv()
6648 |
6649 | DESCRIPTION
6650 | This function will return TRUE if any taxable dist in the invoice has the
6651 | tax_already_distributed_flag equals Y. It will return FALSE otherwise.
6652 |
6653 | PARAMETERS
6654 | P_Invoice_Id - Invoice Id
6655 | P_Calling_Sequence - calling sequence
6656 |
6657 | MODIFICATION HISTORY
6658 | DATE Author Action
6659 | 29-DEC-2003 SYIDNER Created
6660 |
6661 *============================================================================*/
6662 FUNCTION Is_Tax_Already_Dist_Inv(
6663 P_Invoice_Id IN NUMBER,
6664 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
6665 IS
6666
6667 l_debug_info VARCHAR2(240);
6668 l_curr_calling_sequence VARCHAR2(4000);
6669 l_tax_already_distributed_flag VARCHAR2(1) := 'N';
6670 l_api_name CONSTANT VARCHAR2(100) := 'Is_Tax_Already_Dist_Inv';
6671
6672
6673 -- Modified this select to include the TAX only case
6674 CURSOR etax_already_distributed IS
6675 SELECT 'Y'
6676 FROM ap_invoice_distributions_all
6677 WHERE invoice_id = p_invoice_id
6678 AND line_type_lookup_code <> 'AWT'
6679 AND (tax_already_distributed_flag = 'Y'
6680 OR detail_tax_dist_id IS NOT NULL)
6681 AND (related_id IS NULL
6682 OR related_id = invoice_distribution_id)
6683 AND ROWNUM = 1;
6684
6685 BEGIN
6686
6687 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Is_Tax_Already_Dist_Inv<-'||
6688 P_calling_sequence;
6689
6690 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6691 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
6692 END IF;
6693 -------------------------------------------------------------------
6694 l_debug_info := 'Step 1: Get tax_already_Distributed_flag for any '||
6695 'taxable line in the invoice';
6696 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6697 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6698 END IF;
6699 -------------------------------------------------------------------
6700 OPEN etax_already_distributed;
6701 FETCH etax_already_distributed INTO l_tax_already_distributed_flag;
6702 IF (etax_already_distributed%NOTFOUND) THEN
6703 CLOSE etax_already_distributed;
6704 l_tax_already_distributed_flag := 'N';
6705
6706 END IF;
6707
6708 IF (etax_already_distributed%ISOPEN ) THEN
6709 CLOSE etax_already_distributed;
6710 END IF;
6711
6712 IF (l_tax_already_distributed_flag = 'Y') THEN
6713 -------------------------------------------------------------------
6714 l_debug_info := 'Step 1.1: Tax_already_Distributed_flag '||l_tax_already_distributed_flag;
6715 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6716 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6717 END IF;
6718 -------------------------------------------------------------------
6719
6720 RETURN TRUE;
6721
6722 ELSE
6723 RETURN FALSE;
6724
6725 END IF;
6726
6727 EXCEPTION
6728 WHEN OTHERS THEN
6729 IF (SQLCODE <> -20001) THEN
6730 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6731 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6732 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
6733 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6734 ' P_Invoice_Id = '||P_Invoice_Id||
6735 ' P_Calling_Sequence = '||P_Calling_Sequence);
6736 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
6737 END IF;
6738
6739 IF (etax_already_distributed%ISOPEN ) THEN
6740 CLOSE etax_already_distributed;
6741 END IF;
6742
6743 APP_EXCEPTION.RAISE_EXCEPTION;
6744
6745 END Is_Tax_Already_Dist_Inv;
6746
6747 /*=============================================================================
6748 | FUNCTION - Get_Dist_Id_For_Tax_Dist_Id()
6749 |
6750 | DESCRIPTION
6751 | This function will return the invoice_distribution_id for an AP TAX (
6752 | recoverable, non recoverable or tax variance distribution)
6753 | based on the detail_tax_dist_id
6754 |
6755 | PARAMETERS
6756 | P_Tax_Dist_Id - Is the id for a Tax distribution in eTax
6757 |
6758 | MODIFICATION HISTORY
6759 | DATE Author Action
6760 | 02-APR-2004 SYIDNER Created
6761 |
6762 *============================================================================*/
6763 FUNCTION Get_Dist_Id_For_Tax_Dist_Id(
6764 P_Tax_Dist_Id IN NUMBER ) RETURN NUMBER
6765 IS
6766
6767 l_debug_info VARCHAR2(240);
6768 l_curr_calling_sequence VARCHAR2(4000);
6769 l_invoice_distribution_id
6770 ap_invoice_distributions_all.invoice_distribution_id%TYPE;
6771 l_api_name CONSTANT VARCHAR2(100) := 'Get_Dist_Id_For_Tax_Dist_Id';
6772
6773 CURSOR invoice_dist_id IS
6774 SELECT invoice_distribution_id
6775 FROM ap_invoice_distributions_all
6776 WHERE detail_tax_dist_id = P_Tax_Dist_Id
6777 UNION /*Bug 13102935:added self assessed tax table*/
6778 SELECT invoice_distribution_id
6779 FROM AP_SELF_ASSESSED_TAX_DIST_ALL
6780 WHERE detail_tax_dist_id = P_Tax_Dist_Id;
6781
6782 BEGIN
6783
6784 -------------------------------------------------------------------
6785 l_debug_info := 'Step 1: Get invoice_distribution_id from tax dist id';
6786 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6787 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
6788 END IF;
6789 -------------------------------------------------------------------
6790 OPEN invoice_dist_id;
6791 FETCH invoice_dist_id INTO l_invoice_distribution_id;
6792 IF (invoice_dist_id%NOTFOUND) THEN
6793 CLOSE invoice_dist_id;
6794 l_invoice_distribution_id := NULL;
6795
6796 END IF;
6797
6798 IF (invoice_dist_id%ISOPEN ) THEN
6799 CLOSE invoice_dist_id;
6800 END IF;
6801
6802 RETURN l_invoice_distribution_id;
6803
6804 EXCEPTION
6805 WHEN OTHERS THEN
6806 IF (SQLCODE <> -20001) THEN
6807 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6808 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6809 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
6810 'AP_ETAX_UTILITY_PKG.Get_Dist_Id_For_Tax_Dist_Id');
6811 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6812 ' P_Tax_Dist_Id = '||P_Tax_Dist_Id);
6813 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
6814 END IF;
6815
6816 IF (invoice_dist_id%ISOPEN ) THEN
6817 CLOSE invoice_dist_id;
6818 END IF;
6819
6820 APP_EXCEPTION.RAISE_EXCEPTION;
6821
6822 END Get_Dist_Id_For_Tax_Dist_Id;
6823
6824
6825 --ETAX: Invwkb
6826 /*=============================================================================
6827 | FUNCTION - Is_Tax_Dist_Frozen()
6828 |
6829 | DESCRIPTION
6830 | This function will return TRUE when the tax distribution is frozen
6831 | as per the following rules, else will return FALSE.
6832 |
6833 | When the function returns TRUE, then user should not modify the tax
6834 | distribution, and vice versa.
6835 |
6836 | PARAMETERS
6837 | P_Invoice_Id - Is the invoice_id of the tax distribution
6838 | P_Tax_Dist_Id - Is the id for a Tax distribution in eTax
6839 |
6840 | USAGE: This function is called from ETAX security functions in APXINWKB.fmb
6841 | from the form procedure 'IS_TAX_DIST_FROZEN'.
6842 |
6843 | MODIFICATION HISTORY
6844 | DATE Author Action
6845 | 01-JUL-2004 SMYADAM Created
6846 |
6847 *============================================================================*/
6848 FUNCTION Is_Tax_Dist_Frozen(P_Invoice_Id IN NUMBER,
6849 P_Tax_Dist_Id IN NUMBER,
6850 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN IS
6851
6852 l_posted_flag ap_invoice_distributions.posted_flag%TYPE;
6853 l_encumbered_flag ap_invoice_distributions.encumbered_flag%TYPE;
6854 l_parent_distribution_id ap_invoice_distributions.invoice_distribution_id%TYPE;
6855 l_prepay_distribution_id ap_invoice_distributions.invoice_distribution_id%TYPE;
6856 l_pa_addition_flag ap_invoice_distributions.pa_addition_flag%TYPE;
6857 l_match_status_flag ap_invoice_distributions.match_status_flag%TYPE;
6858 l_invoice_type_lookup_code ap_invoices.invoice_type_lookup_code%TYPE;
6859 l_line_type_lookup_code ap_invoice_lines.line_type_lookup_code%TYPE;
6860 l_parent_line_type_lookup_code ap_invoice_lines.line_type_lookup_code%TYPE;
6861 l_parent_line_number ap_invoice_lines.line_number%TYPE;
6862 l_discarded_flag ap_invoice_lines.discarded_flag%TYPE;
6863 l_reversal_flag ap_invoice_distributions.reversal_flag%TYPE;
6864 l_po_distribution_id po_distributions.po_distribution_id%TYPE;
6865 l_rcv_transaction_id rcv_transactions.transaction_id%TYPE;
6866 l_parent_dist_amount ap_invoice_distributions.amount%TYPE;
6867 l_prepay_amount_remaining ap_invoice_distributions.prepay_amount_remaining%TYPE;
6868 l_debug_info VARCHAR2(1000);
6869 l_tax_dist_frozen VARCHAR2(1) := 'N';
6870 l_curr_calling_sequence VARCHAR2(2000);
6871 BEGIN
6872
6873 l_curr_calling_sequence := p_calling_sequence || ' -> AP_Etax_Utility_Pkg.Is_Tax_Dist_Frozen';
6874
6875 l_debug_info := 'Select values from ap_invoice_distributions for tax distribution id';
6876
6877 SELECT aid1.invoice_distribution_id parent_distribution_id,
6878 ai.invoice_type_lookup_code ,
6879 ail.line_type_lookup_code,
6880 ail1.line_type_lookup_code parent_line_type_lookup_code,
6881 ail1.line_number parent_line_number,
6882 ail1.discarded_flag,
6883 aid.posted_flag,
6884 aid.encumbered_flag,
6885 aid.reversal_flag,
6886 aid.prepay_distribution_id,
6887 aid.pa_addition_flag,
6888 nvl(aid.match_status_flag,'N'),
6889 aid1.po_distribution_id,
6890 aid1.rcv_transaction_id,
6891 aid1.amount,
6892 aid1.prepay_amount_remaining
6893 INTO l_parent_distribution_id,
6894 l_invoice_type_lookup_code,
6895 l_line_type_lookup_code,
6896 l_parent_line_type_lookup_code,
6897 l_parent_line_number,
6898 l_discarded_flag,
6899 l_encumbered_flag,
6900 l_posted_flag,
6901 l_reversal_flag,
6902 l_prepay_distribution_id,
6903 l_pa_addition_flag,
6904 l_match_status_flag,
6905 l_po_distribution_id,
6906 l_rcv_transaction_id,
6907 l_parent_dist_amount,
6908 l_prepay_amount_remaining
6909 FROM ap_invoice_distributions aid,
6910 ap_invoice_distributions aid1,
6911 ap_invoices ai,
6912 ap_invoice_lines ail,
6913 ap_invoice_lines ail1
6914 WHERE ai.invoice_id = p_invoice_id
6915 AND ail.invoice_id = ai.invoice_id
6916 AND ail.line_number = aid.invoice_line_number
6917 AND aid.invoice_id = ai.invoice_id
6918 AND aid1.invoice_id = ai.invoice_id
6919 AND aid.invoice_distribution_id = p_tax_dist_id
6920 /* Outer join is needed since charge_applicable_to_dist_id can be NULL
6921 for Tax-Only lines */
6922 AND aid.charge_applicable_to_dist_id = aid1.invoice_distribution_id(+)
6923 AND ail1.invoice_id = p_invoice_id
6924 AND aid1.invoice_line_number = ail1.line_number(+);
6925
6926 --Rule 1: Tax distribution is frozen if the parent Tax line has been discarded
6927 l_debug_info := 'Checking if parent tax line is discarded';
6928 IF (l_line_type_lookup_code = 'TAX' ) THEN /* for exclusive case */
6929
6930 IF (l_tax_dist_frozen = 'N' and l_discarded_flag = 'Y') THEN
6931 l_tax_dist_frozen := 'Y';
6932 END IF;
6933
6934 ELSE /* for inclusive case */
6935
6936 --SMYADAM: Need to validate if this below query is right ?
6937 --Basically we need to figure out if the Tax line has been discarded in ETAX
6938 --for the inclusive case. can we use cancel_flag , since
6939 --discard_flag is not available on zx_lines?
6940
6941 /*
6942 SELECT zl.discarded_flag
6943 INTO l_discarded_flag
6944 FROM zx_lines zl,
6945 zx_rec_nrec_dist zd,
6946 ap_invoice_distributions aid
6947 WHERE zl.tax_line_id = zd.tax_line_id
6948 AND nvl(zl.reporting_only_flag, 'N') = 'N'
6949 AND zd.rec_nrec_tax_dist_id = aid.detail_tax_dist_id
6950 AND aid.invoice_distribution_id = p_tax_dist_id; */
6951
6952 IF (l_tax_dist_frozen = 'N' and l_discarded_flag = 'Y') THEN
6953 l_tax_dist_frozen := 'Y';
6954 END IF;
6955
6956 END IF;
6957
6958
6959 --Rule 2: Tax distribution is frozen if the parent item line is adjusted
6960 -- by PO Price adjustment or is itself an adjustment.
6961 l_debug_info := 'Checking if parent item line is a adjustment or referred by a adjustment';
6962
6963 IF (l_parent_line_number IS NOT NULL) THEN
6964 IF (l_tax_dist_frozen = 'N' AND
6965 (ap_invoice_lines_utility_pkg.is_line_a_adjustment(p_invoice_id,
6966 l_parent_line_number,
6967 l_curr_calling_sequence) or
6968 ap_invoice_lines_utility_pkg.line_referred_by_adjustment(
6969 p_invoice_id,
6970 l_parent_line_number,
6971 l_curr_calling_sequence))) THEN
6972
6973 l_tax_dist_frozen := 'Y';
6974 END IF;
6975 END IF;
6976
6977
6978 --Rule 3: Tax distribution is frozen if the parent item line is corrected
6979 -- or is itself a correction.
6980 l_debug_info := 'Checking if parent item line is corrected or is a correction';
6981
6982 IF (l_parent_line_number IS NOT NULL) THEN
6983 IF (l_tax_dist_frozen = 'N' AND
6984 (ap_invoice_lines_utility_pkg.is_line_a_correction(p_invoice_id,
6985 l_parent_line_number,
6986 l_curr_calling_sequence) or
6987 ap_invoice_lines_utility_pkg.line_referred_by_corr(p_invoice_id,
6988 l_parent_line_number,
6989 l_curr_calling_sequence))) THEN
6990
6991 l_tax_dist_frozen := 'Y';
6992 END IF;
6993 END IF;
6994
6995
6996 --Rule 4: Tax distribution is frozen if Parent Item line is a
6997 -- Prepayment application/unapplication
6998 l_debug_info := 'Checking if parent item line is a Prepayment
6999 application/unapplication';
7000
7001 IF (l_parent_line_number IS NOT NULL) THEN
7002 IF (l_tax_dist_frozen = 'N' AND l_parent_line_type_lookup_code = 'PREPAY') THEN
7003 l_tax_dist_frozen := 'Y';
7004 END IF;
7005 END IF;
7006
7007
7008 --Rule 5: Tax distribution is frozen if the tax distribution is
7009 -- partially or fully accounted
7010 l_debug_info := 'Checking if tax distribution is partially or fully accounted';
7011
7012 IF (l_tax_dist_frozen = 'N' AND l_posted_flag <> 'N') THEN
7013 l_tax_dist_frozen := 'Y';
7014 END IF;
7015
7016
7017 --Rule 6: Tax distribution is frozen if the tax distribution is
7018 -- encumbered.
7019 l_debug_info := 'Checking if tax distribution is encumbered';
7020
7021 IF (l_tax_dist_frozen = 'N' AND l_encumbered_flag IN ('Y','D','W','X')) THEN
7022 l_tax_dist_frozen := 'Y';
7023 END IF;
7024
7025
7026 --Rule 7: Tax distribution is frozen if the tax distribution is
7027 -- transferred to projects.
7028 l_debug_info := 'Checking if tax distribution is transferred to Projects';
7029
7030 IF (l_tax_dist_frozen = 'N' AND l_pa_addition_flag NOT IN ('N', 'E')) THEN
7031 l_tax_dist_frozen := 'Y';
7032 END IF;
7033
7034
7035 --Rule 8: Tax distribution is frozen if the tax distribution is
7036 -- part of a reversal pair.
7037 l_debug_info := 'Checking if tax distribution is part of a reversal pair';
7038
7039 IF (l_tax_dist_frozen = 'N' AND l_reversal_flag = 'Y') THEN
7040 l_tax_dist_frozen := 'Y';
7041 END IF;
7042
7043
7044 --Rule 9: Tax distribution is frozen if the tax distribution is
7045 -- validated (accounting event has been created).
7046 l_debug_info := 'Checking if tax distribution is validated';
7047
7048 IF (l_tax_dist_frozen = 'N' AND l_match_status_flag <> 'N') THEN
7049 l_tax_dist_frozen := 'Y';
7050 END IF;
7051
7052
7053 --Rule 10: Tax distribution is frozen if the parent item distribution is
7054 -- PO/RCV matched.
7055 l_debug_info := 'Checking if parent item distribution is PO/RCV matched';
7056
7057 IF (l_parent_line_number IS NOT NULL) THEN
7058 IF (l_tax_dist_frozen = 'N' AND
7059 ( l_po_distribution_id IS NOT NULL
7060 OR l_rcv_transaction_id IS NOT NULL)) THEN
7061 l_tax_dist_frozen := 'Y';
7062 END IF;
7063 END IF;
7064
7065
7066 --Rule 11: Tax distribution is frozen if the parent item distribution is
7067 -- part of Prepayment , and has been partially or fully applied.
7068 l_debug_info := 'Checking if parent item distribution is prepay dist that has been partially
7069 or fully applied';
7070
7071 IF (l_parent_line_number IS NOT NULL and l_parent_line_type_lookup_code = 'PREPAY') THEN
7072 IF (l_tax_dist_frozen = 'N' AND
7073 nvl(l_prepay_amount_remaining,l_parent_dist_amount) <> l_parent_dist_amount) THEN
7074 l_tax_dist_frozen := 'Y';
7075 END IF;
7076 END IF;
7077
7078
7079 IF (l_tax_dist_frozen = 'Y') THEN
7080 return(TRUE);
7081 ELSE
7082 return(FALSE);
7083 END IF;
7084
7085 EXCEPTION
7086 WHEN OTHERS THEN
7087 IF (SQLCODE <> -20001) THEN
7088 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
7089 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
7090 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
7091 FND_MESSAGE.SET_TOKEN('PARAMETERS',
7092 ' P_Invoice_Id = '||P_Invoice_id||
7093 ' P_Tax_Dist_Id = '||P_Tax_Dist_Id);
7094 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
7095 END IF;
7096
7097 APP_EXCEPTION.RAISE_EXCEPTION;
7098
7099 END Is_Tax_Dist_Frozen;
7100
7101
7102
7103 /*=============================================================================
7104 | FUNCTION - Is_Tax_Line_Delete_Allowed()
7105 |
7106 | DESCRIPTION
7107 | This function will return TRUE when Detail Tax line can be deleted in ETAX,
7108 | else will return FALSE.
7109 |
7110 | When the function returns TRUE, then user can delete the TAX line else
7111 | should not be allowed to delete the TAX line.
7112 |
7113 | PARAMETERS
7114 | P_Invoice_Id - Is the invoice_id of the of the Invoice which owns this
7115 | detail tax line indirectly through the summary tax line.
7116 | P_Detail_Tax_Line_Id - Is the id for a Detail Tax Line in eTax
7117 |
7118 | USAGE: This function is called from ETAX security functions in APXINWKB.fmb
7119 | from the form procedure 'IS_TAX_LINE_DELETE_ALLOWED'.
7120 |
7121 | MODIFICATION HISTORY
7122 | DATE Author Action
7123 | 04-JUL-2004 SMYADAM Created
7124 |
7125 *============================================================================*/
7126 FUNCTION IS_TAX_LINE_DELETE_ALLOWED(P_Invoice_Id IN NUMBER,
7127 P_Detail_Tax_Line_Id IN NUMBER,
7128 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN IS
7129
7130 CURSOR Tax_Distributions IS
7131 SELECT aid.invoice_distribution_id
7132 FROM ap_invoice_distributions aid,
7133 zx_rec_nrec_dist zd
7134 WHERE aid.invoice_id = p_invoice_id
7135 AND aid.detail_tax_dist_id = zd.rec_nrec_tax_dist_id
7136 AND zd.tax_line_id = p_detail_tax_line_id;
7137
7138 l_tax_invoice_distribution_id ap_invoice_distributions.invoice_distribution_id%TYPE;
7139 l_tax_line_delete_allowed varchar2(1) := 'Y';
7140 l_debug_info varchar2(1000);
7141 l_curr_calling_sequence varchar2(2000);
7142 l_api_name CONSTANT VARCHAR2(100) := 'IS_TAX_LINE_DELETE_ALLOWED';
7143
7144 BEGIN
7145
7146 l_curr_calling_sequence := p_calling_sequence ||'->AP_Etax_Utility_Pkg.Is_Tax_Line_Delete_Allowed';
7147
7148 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7149 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
7150 END IF;
7151
7152 l_debug_info := 'Open Tax_Distributions Cursor';
7153
7154 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7155 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7156 END IF;
7157
7158 OPEN tax_distributions;
7159
7160 LOOP
7161
7162 FETCH tax_distributions INTO l_tax_invoice_distribution_id;
7163
7164 EXIT WHEN tax_distributions%NOTFOUND OR l_tax_line_delete_allowed = 'N';
7165
7166 IF (ap_etax_utility_pkg.is_tax_dist_frozen(p_invoice_id => p_invoice_id,
7167 p_tax_dist_id => l_tax_invoice_distribution_id,
7168 p_calling_sequence => l_curr_calling_sequence)) THEN
7169 l_tax_line_delete_allowed := 'N';
7170 END IF;
7171
7172 END LOOP;
7173
7174 l_debug_info := 'Tax Line Delete Allowed '||l_tax_line_delete_allowed;
7175
7176 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7177 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7178 END IF;
7179
7180 IF (l_tax_line_delete_allowed = 'N') THEN
7181 RETURN(FALSE);
7182 ELSE
7183 RETURN(TRUE);
7184 END IF;
7185
7186 EXCEPTION
7187 WHEN OTHERS THEN
7188 IF (SQLCODE <> -20001) THEN
7189 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
7190 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
7191 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
7192 FND_MESSAGE.SET_TOKEN('PARAMETERS',
7193 ' P_Invoice_Id = '||P_Invoice_id||
7194 ' P_Detail_Tax_Line_Id = '||P_Detail_Tax_Line_Id);
7195 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
7196 END IF;
7197
7198 APP_EXCEPTION.RAISE_EXCEPTION;
7199
7200 END IS_TAX_LINE_DELETE_ALLOWED;
7201
7202 /*=============================================================================
7203 | PROCEDURE - set_tax_security_context()
7204 |
7205 | DESCRIPTION
7206 | This procedure will return the tax effective date. The effective date
7207 | is used in the list of values for tax drivers and tax related attributes.
7208 |
7209 | PARAMETERS
7210 | p_org_id - Operating unit identifier
7211 | p_legal_entity_id - Legal entity identifier.
7212 | p_transaction_date - Transaction Date.
7213 | P_Related_Doc_Date - Date of the related document. (Eg: Standard PO)
7214 | P_Adjusted_Doc_Date - Date of the adjusted document. (Eg: DM/CM applied to Invoice)
7215 |
7216 | MODIFICATION HISTORY
7217 | DATE Author Action
7218 | 13-AUG-2004 Sanjay Created
7219 *============================================================================*/
7220 PROCEDURE set_tax_security_context
7221 (p_org_id IN NUMBER,
7222 p_legal_entity_id IN NUMBER,
7223 p_transaction_date IN DATE,
7224 p_related_doc_date IN DATE,
7225 p_adjusted_doc_date IN DATE,
7226 p_effective_date OUT NOCOPY DATE,
7227 p_return_status OUT NOCOPY VARCHAR2,
7228 p_msg_count OUT NOCOPY NUMBER,
7229 p_msg_data OUT NOCOPY VARCHAR2) IS
7230
7231 l_debug_info VARCHAR2(240);
7232 l_api_name CONSTANT VARCHAR2(100) := 'set_tax_security_context';
7233
7234 BEGIN
7235 ---------------------------------------------------------------
7236 l_debug_info := 'Calling zx_api_pub.set_tax_security_context';
7237 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7238 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7239 END IF;
7240 ---------------------------------------------------------------
7241
7242 IF p_org_id IS NOT NULL AND
7243 p_legal_entity_id IS NOT NULL AND
7244 p_transaction_date IS NOT NULL THEN
7245
7246 zx_api_pub.set_tax_security_context
7247 (p_api_version => 1.0, -- Bug 6469397
7248 p_init_msg_list => FND_API.G_FALSE,
7249 p_commit => FND_API.G_FALSE,
7250 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
7251 x_return_status => p_return_status,
7252 x_msg_count => p_msg_count,
7253 x_msg_data => p_msg_data,
7254 p_internal_org_id => p_org_id,
7255 p_legal_entity_id => p_legal_entity_id,
7256 p_transaction_date => p_transaction_date,
7257 p_related_doc_date => p_related_doc_date,
7258 p_adjusted_doc_date => p_adjusted_doc_date,
7259 x_effective_date => p_effective_date);
7260
7261 END IF;
7262
7263 EXCEPTION
7264 WHEN OTHERS THEN
7265 IF (SQLCODE <> -20001) THEN
7266 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
7267 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
7268 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE', 'AP_ETAX_UTILITY_PKG.set_tax_security_context');
7269 FND_MESSAGE.SET_TOKEN('PARAMETERS', 'p_org_id: ' || p_org_id ||
7270 'p_legal_entity_id: ' || p_legal_entity_id ||
7271 'p_transaction_date: ' || p_transaction_date ||
7272 'p_related_doc_date: ' || p_related_doc_date);
7273 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
7274 END IF;
7275
7276 APP_EXCEPTION.RAISE_EXCEPTION;
7277
7278 END set_tax_security_context;
7279
7280
7281 /*=============================================================================
7282 | FUNCTION get_tipv()
7283 |
7284 | DESCRIPTION
7285 | This function will return the invoice price variance.
7286 |
7287 *============================================================================*/
7288 FUNCTION get_tipv ( p_rate_tax_factor IN NUMBER ,
7289 p_quantity_invoiced IN NUMBER ,
7290 p_inv_unit_price IN NUMBER ,
7291 p_ref_doc_unit_price IN NUMBER ,
7292 p_ref_per_unit_nr_amt IN NUMBER ,
7293 p_pc_price_diff IN NUMBER ,
7294 p_corrected_inv_id IN NUMBER ,
7295 p_line_type IN VARCHAR2 ,
7296 p_line_source IN VARCHAR2 ,
7297 p_inv_currency_code IN VARCHAR2 ,
7298 p_line_match_type IN VARCHAR2 ,
7299 p_trx_line_dist_id IN NUMBER ,
7300 p_ref_per_trx_cur_unit_nrec IN NUMBER ,
7301 p_rec_nrec_tax_dist_id IN NUMBER ) RETURN NUMBER IS -- Added three new parameter for the bug 10621602
7302
7303 p_tax_ipv NUMBER;
7304 l_debug_info varchar2(2000);
7305 l_api_name VARCHAR2(2000) := 'get_tipv';
7306
7307 BEGIN
7308
7309 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7310
7311 l_debug_info := 'p_rate_tax_factor '||p_rate_tax_factor||' '||'p_quantity_invoiced '||p_quantity_invoiced||' '||
7312 'p_inv_unit_price '||p_inv_unit_price||' '||'p_ref_doc_unit_price '||p_ref_doc_unit_price||' '||
7313 'p_ref_per_unit_nr_amt '||p_ref_per_unit_nr_amt||' '||'p_pc_price_diff '||p_pc_price_diff||' '||
7314 'p_corrected_inv_id '||p_corrected_inv_id||' '||'p_line_type '||p_line_type||' '||
7315 'p_line_source '||p_line_source||' '||'p_inv_currency_code '||p_inv_currency_code||' '||
7316 'p_line_match_type '||p_line_match_type || 'p_trx_line_dist_id ' || p_trx_line_dist_id ||
7317 'p_ref_per_trx_cur_unit_nrec' || p_ref_per_trx_cur_unit_nrec || ' p_rec_nrec_tax_dist_id ' || p_rec_nrec_tax_dist_id ;
7318
7319 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7320 END IF;
7321
7322 --bug 10621602 starts
7323 -- The below formula is only for the distribution related to retainage and retainge release invoice
7324
7325 IF AP_ETAX_SERVICES_PKG.ret_dists.exists(p_trx_line_dist_id) THEN
7326
7327 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7328
7329 l_debug_info := 'Invoice Distribution amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ||
7330 'Retained amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retained_amount ||
7331 'Retainage rate ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate ||
7332 'Quantity_Invoiced' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced;
7333
7334 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7335
7336 END IF;
7337
7338
7339 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RELATED_RETAINAGE_DIST_ID IS NOT NULL) THEN --- Standard invoice with retainage
7340
7341 p_tax_ipv := p_rate_tax_factor* ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount) -
7342 (p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)))* p_ref_per_trx_cur_unit_nrec;
7343
7344
7345 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7346
7347 l_debug_info := ' p_tax_ipv := p_rate_tax_factor* ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount) - ' ||
7348 '(p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)))* p_ref_per_trx_cur_unit_nrec ' ||
7349 p_rate_tax_factor || ' *(( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount || ' ) - ' ||
7350 ' ( ' || p_rate_tax_factor || ' * ' || p_ref_doc_unit_price || ' * (1 - ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' /100))) * ' || p_ref_per_trx_cur_unit_nrec ;
7351
7352 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7353
7354 END IF;
7355
7356
7357 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7358
7359 l_debug_info := 'TIPV for standard invoice having retainage' || p_tax_ipv ;
7360 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7361
7362 END IF;
7363
7364 END IF;
7365
7366 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RETAINED_INVOICE_DIST_ID IS NOT NULL) THEN --- Retainage Release invoice
7367
7368 p_tax_ipv := p_rate_tax_factor* ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount) -
7369 (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*(AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)))* p_ref_per_trx_cur_unit_nrec;
7370
7371
7372 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7373
7374 l_debug_info := ' p_tax_ipv := p_rate_tax_factor* ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount) - ' ||
7375 ' (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*(AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)))* p_ref_per_trx_cur_unit_nrec ' ||
7376 p_rate_tax_factor || ' *(( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount || ' )- ' ||
7377 ' ( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' * ( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || '/100)))* '|| p_ref_per_trx_cur_unit_nrec ;
7378
7379 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7380
7381 END IF;
7382
7383
7384
7385
7386 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7387
7388 l_debug_info := 'TIPV for retainage invoice ' || p_tax_ipv ;
7389 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7390
7391 END IF;
7392
7393
7394 END IF;
7395
7396
7397 ELSE -- Normal Flow
7398 --bug 10621602 ends
7399
7400 --Bug10416960
7401 IF (p_line_type = 'RETROITEM' AND p_line_match_type = 'PO_PRICE_ADJUSTMENT') THEN
7402
7403 -- When a PO is retro-priced, price variances are reversed on the original document
7404 -- and moved to the expense account. This is done in the open interface program and
7405 -- the tax lines will have tax_already_calculated_flag set to 'Y'. TIPV is computed
7406 -- as zero for the PPA document.
7407
7408 p_tax_ipv := 0;
7409
7410
7411 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7412
7413 l_debug_info := 'In P_LINE_TYPE = RETROITEM CHECK. TAX IPV IS 0';
7414 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7415
7416 END IF;
7417 --Bug10416960
7418 ELSIF p_corrected_inv_id IS NULL THEN
7419
7420 IF p_line_match_type IN ('ITEM_TO_SERVICE_RECEIPT', 'ITEM_TO_SERVICE_PO') THEN
7421
7422 p_tax_ipv := 0;
7423
7424 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7425
7426 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_SERVICE_RECEIPT OR ITEM_TO_SERVICE_PO. HENCE TAX IPV IS 0';
7427 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7428
7429 END IF;
7430
7431
7432
7433 ELSE
7434 -- PO/Receipt Matched Invoice
7435
7436 p_tax_ipv := p_rate_tax_factor * p_quantity_invoiced *
7437 (p_inv_unit_price - p_ref_doc_unit_price) * p_ref_per_unit_nr_amt;
7438
7439
7440 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7441
7442 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_RECEIPT OR ITEM_TO_PO. HENCE TAX IPV IS '||p_tax_ipv;
7443
7444 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7445
7446 l_debug_info := 'p_tax_ipv := p_rate_tax_factor * p_quantity_invoiced * (p_inv_unit_price - p_ref_doc_unit_price) * p_ref_per_unit_nr_amt '||
7447 p_rate_tax_factor ||' * '||p_quantity_invoiced||' * ('||p_inv_unit_price ||' - '||p_ref_doc_unit_price||') * '||
7448 p_ref_per_unit_nr_amt;
7449
7450 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7451
7452 END IF;
7453
7454 END IF;
7455
7456 ELSIF p_corrected_inv_id IS NOT NULL THEN
7457
7458 -- Price/Quantity Correction
7459
7460 p_tax_ipv := p_rate_tax_factor * p_quantity_invoiced * p_pc_price_diff * p_ref_per_unit_nr_amt;
7461
7462 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7463
7464 l_debug_info := 'CORRECTED INV ID IS NOT NULL. HENCE TAX IPV IS '||p_tax_ipv;
7465
7466 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7467
7468 l_debug_info := 'p_tax_ipv := p_rate_tax_factor * p_quantity_invoiced * p_pc_price_diff * p_ref_per_unit_nr_amt '||
7469 p_rate_tax_factor ||' * '||p_quantity_invoiced||' * '||p_pc_price_diff||' * '||
7470 p_ref_per_unit_nr_amt;
7471
7472 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7473
7474 END IF;
7475
7476
7477 END IF;
7478
7479 END IF; -- Normal Flow ends --bug10621602
7480
7481 IF p_tax_ipv IS NOT NULL THEN
7482
7483 p_tax_ipv := ap_utilities_pkg.ap_round_currency (p_tax_ipv, p_inv_currency_code);
7484
7485 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7486
7487 l_debug_info := 'TAX IPV AFTER ROUNDING IS '||p_tax_ipv;
7488
7489 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7490
7491 END IF;
7492
7493
7494 END IF;
7495
7496 RETURN NVL(p_tax_ipv,0);
7497
7498 EXCEPTION
7499
7500 WHEN NO_DATA_FOUND THEN
7501
7502 RETURN NVL(p_tax_ipv,0);
7503
7504 WHEN OTHERS THEN
7505
7506 RETURN NVL(p_tax_ipv,0);
7507
7508 END get_tipv;
7509
7510 /*=============================================================================
7511 | FUNCTION get_tipv_base()
7512 |
7513 | DESCRIPTION
7514 | This function will return the base invoice price variance.
7515 |
7516 *============================================================================*/
7517 FUNCTION get_tipv_base
7518 ( p_rate_tax_factor IN NUMBER ,
7519 p_quantity_invoiced IN NUMBER ,
7520 p_inv_unit_price IN NUMBER ,
7521 p_ref_doc_unit_price IN NUMBER ,
7522 p_ref_per_trx_nrec_amt IN NUMBER ,
7523 p_price_diff IN NUMBER ,
7524 p_inv_currency_rate IN NUMBER ,
7525 p_ref_doc_curr_rate IN NUMBER ,
7526 p_adj_doc_curr_rate IN NUMBER ,
7527 p_corrected_inv_id IN NUMBER ,
7528 p_line_type IN VARCHAR2 ,
7529 p_line_source IN VARCHAR2 ,
7530 p_inv_currency_code IN VARCHAR2 ,
7531 p_base_currency_code IN VARCHAR2 ,
7532 p_line_match_type IN VARCHAR2,
7533 p_trx_line_dist_id IN NUMBER ,
7534 p_ref_per_trx_cur_unit_nrec IN NUMBER ,
7535 p_rec_nrec_tax_dist_id IN NUMBER ) RETURN NUMBER IS -- Added three new parameter for the bug10621602
7536
7537 p_tax_ipv_base NUMBER;
7538 l_debug_info varchar2(2000);
7539 l_api_name VARCHAR2(2000) := 'get_tipv_base';
7540
7541 --bug 5528375
7542 l_tax_ipv NUMBER;
7543
7544 BEGIN
7545
7546 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7547
7548 l_debug_info := 'p_rate_tax_factor '||p_rate_tax_factor||' '||'p_quantity_invoiced '||p_quantity_invoiced||' '||
7549 'p_inv_unit_price '||p_inv_unit_price||' '||'p_ref_doc_unit_price '||p_ref_doc_unit_price||' '||
7550 'p_ref_per_trx_nrec_amt '||p_ref_per_trx_nrec_amt||' '||'p_price_diff '||p_price_diff||' '||
7551 'p_inv_currency_rate '||p_inv_currency_rate||' '||'p_ref_doc_curr_rate '||p_ref_doc_curr_rate||' '||
7552 'p_adj_doc_curr_rate '||p_adj_doc_curr_rate||' '||'p_corrected_inv_id '||p_corrected_inv_id||' '||
7553 'p_line_type '||p_line_type||' '||'p_line_source '||p_line_source||' '||
7554 'p_inv_currency_code '||p_inv_currency_code||' '||'p_base_currency_code '||p_base_currency_code||' '||
7555 'p_line_match_type '||p_line_match_type || 'p_trx_line_dist_id ' || p_trx_line_dist_id ||
7556 'p_ref_per_trx_cur_unit_nrec' || p_ref_per_trx_cur_unit_nrec || ' p_rec_nrec_tax_dist_id ' || p_rec_nrec_tax_dist_id;
7557 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7558 END IF;
7559
7560 --bug10621602 starts
7561 -- The below formula is only for the distribution related to retainage and retainge release invoice
7562
7563 IF AP_ETAX_SERVICES_PKG.ret_dists.exists(p_trx_line_dist_id) THEN
7564
7565 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7566
7567 l_debug_info := 'Invoice Distribution amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ||
7568 'Retained amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retained_amount ||
7569 'Retainage rate ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate ||
7570 'Quantity_Invoiced' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced;
7571
7572 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7573
7574 END IF;
7575
7576
7577 IF (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RELATED_RETAINAGE_DIST_ID IS NOT NULL) THEN --- Standard invoice with retainage
7578
7579 p_tax_ipv_base := p_rate_tax_factor* ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ) -
7580 (p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)))* p_ref_per_trx_cur_unit_nrec * nvl(p_inv_currency_rate , 1);
7581
7582
7583 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7584
7585 l_debug_info := ' p_tax_ipv_base := p_rate_tax_factor* ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ) - ' ||
7586 ' (p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)))* p_ref_per_trx_cur_unit_nrec * nvl(p_inv_currency_rate , 1) ' ||
7587 p_rate_tax_factor || ' * (( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount || ' ) - ' ||
7588 ' ( ' || p_quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' *(1 - ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' /100))) * ' ||
7589 p_ref_per_trx_cur_unit_nrec || ' * ' || nvl(p_inv_currency_rate , 1) ;
7590
7591 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7592
7593 END IF;
7594
7595
7596 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7597
7598 l_debug_info := 'TIPV_BASE for standard invoice having retainage' || p_tax_ipv_base ;
7599 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7600
7601 END IF;
7602
7603
7604 END IF;
7605
7606 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RETAINED_INVOICE_DIST_ID IS NOT NULL) THEN --- Retainage Release invoice
7607
7608 p_tax_ipv_base := p_rate_tax_factor* ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ) -
7609 (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*(AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)))* p_ref_per_trx_cur_unit_nrec * nvl(p_inv_currency_rate , 1);
7610
7611 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7612
7613 l_debug_info := ' p_tax_ipv_base := p_rate_tax_factor* ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ) - ' ||
7614 ' (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*(AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)))* p_ref_per_trx_cur_unit_nrec * nvl(p_inv_currency_rate , 1)'||
7615 p_rate_tax_factor || ' * (( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount || ' ) - ' ||
7616 ' ( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' *( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' /100))) * ' ||
7617 p_ref_per_trx_cur_unit_nrec || ' * ' || nvl(p_inv_currency_rate , 1) ;
7618
7619 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7620
7621 END IF;
7622
7623
7624 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7625
7626 l_debug_info := 'TIPV_BASE for retainage invoice ' || p_tax_ipv_base ;
7627 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7628
7629 END IF;
7630
7631 END IF;
7632
7633 ELSE -- Normal Flow starts
7634 --bug 10621602 ends
7635
7636 --Bug10416960
7637 IF (p_line_type = 'RETROITEM' AND p_line_match_type = 'PO_PRICE_ADJUSTMENT') THEN
7638
7639 -- PO Price Adjustment
7640
7641 p_tax_ipv_base := 0;
7642
7643 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7644
7645 l_debug_info := 'In P_LINE_TYPE = RETROITEM CHECK. TAX IPV BASE IS 0';
7646 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7647
7648 END IF;
7649
7650 --Bug10416960
7651 ELSIF p_corrected_inv_id IS NULL THEN
7652
7653 IF p_line_match_type IN ('ITEM_TO_SERVICE_RECEIPT', 'ITEM_TO_SERVICE_PO') THEN
7654
7655 p_tax_ipv_base := 0;
7656
7657
7658 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7659
7660 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_SERVICE_RECEIPT OR ITEM_TO_SERVICE_PO. HENCE TAX IPV BASE IS 0';
7661 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7662
7663 END IF;
7664
7665 ELSE
7666
7667 -- PO/Receipt Matched Invoice
7668
7669 p_tax_ipv_base := p_rate_tax_factor * p_quantity_invoiced * p_inv_currency_rate *
7670 (p_inv_unit_price - p_ref_doc_unit_price ) * p_ref_per_trx_nrec_amt;
7671
7672
7673 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7674
7675 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_RECEIPT OR ITEM_TO_PO. HENCE TAX IPV BASE IS '||p_tax_ipv_base;
7676
7677 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7678
7679 l_debug_info := 'p_tax_ipv_base := p_rate_tax_factor * p_quantity_invoiced * p_inv_currency_rate * (p_inv_unit_price - p_ref_doc_unit_price) * p_ref_per_trx_nrec_amt '||
7680 p_rate_tax_factor ||' * '||p_quantity_invoiced||' * '||p_inv_currency_rate||' * ('||p_inv_unit_price ||' - '||p_ref_doc_unit_price||') * '||
7681 p_ref_per_trx_nrec_amt;
7682
7683 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7684
7685 END IF;
7686
7687 -- Bug 5528375
7688 l_tax_ipv := p_rate_tax_factor * p_quantity_invoiced *(p_inv_unit_price - p_ref_doc_unit_price) * p_ref_per_trx_nrec_amt;
7689
7690 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7691
7692 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_RECEIPT OR ITEM_TO_PO. HENCE l_tax_ipv IS '||l_tax_ipv;
7693
7694 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7695
7696 l_debug_info := 'p_tax_ipv_base := p_rate_tax_factor * p_quantity_invoiced * (p_inv_unit_price - p_ref_doc_unit_price) * p_ref_per_trx_nrec_amt '||
7697 p_rate_tax_factor ||' * '||p_quantity_invoiced||' * ('||p_inv_unit_price ||' - '||p_ref_doc_unit_price||') * '||
7698 p_ref_per_trx_nrec_amt;
7699
7700 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7701
7702 END IF;
7703
7704
7705 END IF;
7706
7707 ELSIF p_corrected_inv_id IS NOT NULL THEN
7708
7709 -- Corrections
7710
7711 p_tax_ipv_base := p_rate_tax_factor * p_quantity_invoiced * p_adj_doc_curr_rate * p_price_diff * p_ref_per_trx_nrec_amt;
7712
7713 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7714
7715 l_debug_info := 'CORRECTED INV ID IS NOT NULL. HENCE TAX IPV BASE IS '||p_tax_ipv_base;
7716
7717 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7718
7719 l_debug_info := 'p_tax_ipv_base := p_rate_tax_factor * p_quantity_invoiced * p_adj_doc_curr_rate * p_price_diff * p_ref_per_trx_nrec_amt '||
7720 p_rate_tax_factor ||' * '||p_quantity_invoiced||' * '||p_adj_doc_curr_rate||' * '|| p_price_diff ||' * '||p_ref_per_trx_nrec_amt;
7721
7722 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7723
7724 END IF;
7725
7726
7727 -- Bug 5528375
7728 l_tax_ipv := p_rate_tax_factor * p_quantity_invoiced * p_price_diff * p_ref_per_trx_nrec_amt;
7729
7730
7731 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7732
7733 l_debug_info := 'CORRECTED INV ID IS NOT NULL. HENCE l_tax_ipv IS '||l_tax_ipv;
7734
7735 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7736
7737 l_debug_info := 'l_tax_ipv := p_rate_tax_factor * p_quantity_invoiced * p_price_diff * p_ref_per_trx_nrec_amt '||
7738 p_rate_tax_factor ||' * '||p_quantity_invoiced||' * '||p_price_diff||' * '|| p_ref_per_trx_nrec_amt;
7739
7740 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7741
7742 END IF;
7743
7744
7745
7746 END IF;
7747
7748 END IF; -- Normal flow ends bug10621602
7749
7750
7751 IF p_tax_ipv_base IS NOT NULL THEN
7752 p_tax_ipv_base := ap_utilities_pkg.ap_round_currency (p_tax_ipv_base, p_base_currency_code);
7753
7754 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7755
7756 l_debug_info := 'TAX IPV BASE AFTER ROUNDING IS '||p_tax_ipv_base;
7757
7758 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7759
7760 END IF;
7761
7762
7763 END IF;
7764
7765 -- Bug 5528375
7766 IF l_tax_ipv IS NOT NULL THEN
7767 l_tax_ipv := ap_utilities_pkg.ap_round_currency (l_tax_ipv, p_inv_currency_code);
7768
7769 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7770
7771 l_debug_info := 'l_tax_ipv AFTER ROUNDING IS '||l_tax_ipv;
7772
7773 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7774
7775 END IF;
7776
7777
7778 ELSE
7779 l_tax_ipv := 0;
7780
7781 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7782
7783 l_debug_info := 'l_tax_ipv IS 0 IN ELSE';
7784
7785 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7786
7787 END IF;
7788
7789
7790 END IF;
7791
7792 RETURN NVL(p_tax_ipv_base,l_tax_ipv);
7793
7794 EXCEPTION
7795
7796 WHEN NO_DATA_FOUND THEN
7797
7798 RETURN NVL(p_tax_ipv_base,0);
7799
7800 WHEN OTHERS THEN
7801
7802 RETURN NVL(p_tax_ipv_base,0);
7803
7804 END get_tipv_base;
7805
7806
7807 /*=============================================================================
7808 | FUNCTION get_terv()
7809 |
7810 | DESCRIPTION
7811 | This function will return the tax exchange rate variance.
7812 *============================================================================*/
7813 FUNCTION get_terv
7814 ( p_quantity_invoiced IN NUMBER ,
7815 p_inv_curr_conv_rate IN NUMBER ,
7816 p_ref_doc_curr_conv_rate IN NUMBER ,
7817 p_app_doc_curr_conv_rate IN NUMBER ,
7818 p_adj_doc_curr_conv_rate IN NUMBER ,
7819 p_per_unit_nrec_amt IN NUMBER ,
7820 p_ref_doc_per_unit_nrec_amt IN NUMBER ,
7821 p_corrected_inv_id IN NUMBER ,
7822 p_line_type IN VARCHAR2 ,
7823 p_line_source IN VARCHAR2 ,
7824 p_base_currency_code IN VARCHAR2 ,
7825 p_trx_line_dist_id IN NUMBER ,
7826 p_ref_doc_unit_price IN NUMBER ,
7827 p_ref_per_trx_cur_unit_nrec IN NUMBER,
7828 p_rec_nrec_tax_dist_id IN NUMBER,
7829 p_unit_price IN NUMBER) RETURN NUMBER IS --Added extra four parameters for the bug 10621602
7830 --Bug10416960 Added Input Parameter p_unit_price for PPA Invoices.
7831
7832 p_tax_erv NUMBER;
7833 l_debug_info varchar2(2000);
7834 l_api_name VARCHAR2(2000) := 'get_terv';
7835
7836
7837 BEGIN
7838
7839
7840 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7841
7842 l_debug_info := 'p_quantity_invoiced '||p_quantity_invoiced||' '||'p_inv_curr_conv_rate '||p_inv_curr_conv_rate||' '||
7843 'p_ref_doc_curr_conv_rate '||p_ref_doc_curr_conv_rate||' '||'p_app_doc_curr_conv_rate '||p_app_doc_curr_conv_rate||' '||
7844 'p_adj_doc_curr_conv_rate '||p_adj_doc_curr_conv_rate||' '||'p_per_unit_nrec_amt '||p_per_unit_nrec_amt||' '||
7845 'p_ref_doc_per_unit_nrec_amt '||p_ref_doc_per_unit_nrec_amt||' '||'p_corrected_inv_id '||p_corrected_inv_id||' '||
7846 'p_line_type '||p_line_type||' '||'p_line_source '||p_line_source||' '||'p_base_currency_code '||p_base_currency_code||' '||
7847 'p_trx_line_dist_id ' || p_trx_line_dist_id||' '||'p_ref_doc_unit_price'|| p_ref_doc_unit_price||' '||
7848 'p_ref_per_trx_cur_unit_nrec' || p_ref_per_trx_cur_unit_nrec||' p_rec_nrec_tax_dist_id ' || p_rec_nrec_tax_dist_id||' '||
7849 'p_unit_price '||p_unit_price; --Bug10416960
7850
7851 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7852 END IF;
7853
7854 --bug 10621602 starts
7855 -- The below formula is only for the distribution related to retainage and retainge release invoice
7856
7857 IF AP_ETAX_SERVICES_PKG.ret_dists.exists(p_trx_line_dist_id) THEN
7858
7859 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7860
7861 l_debug_info := 'Invoice Distribution amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ||
7862 'Retained amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retained_amount ||
7863 'Retainage rate ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate ||
7864 'Quantity_Invoiced' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced;
7865
7866 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7867
7868 END IF;
7869
7870
7871 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RELATED_RETAINAGE_DIST_ID IS NOT NULL) THEN --- Standard invoice with retainage
7872
7873 p_tax_erv := (p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100))* p_ref_per_trx_cur_unit_nrec * ( p_inv_curr_conv_rate - p_ref_doc_curr_conv_rate) ;
7874
7875 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7876
7877 l_debug_info := ' p_tax_erv := (p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100))* p_ref_per_trx_cur_unit_nrec * ( p_inv_curr_conv_rate - p_ref_doc_curr_conv_rate) ' ||
7878 ' ( ' || p_quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' *(1 - ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' /100))* ' || p_ref_per_trx_cur_unit_nrec || ' * ( ' || p_inv_curr_conv_rate ||
7879 ' - ' || p_ref_doc_curr_conv_rate || ' ) ' ;
7880
7881 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7882
7883 END IF;
7884
7885
7886 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7887
7888 l_debug_info := 'TERV for standard invoice having retainage' || p_tax_erv ;
7889 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7890
7891 END IF;
7892
7893 END IF;
7894
7895 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RETAINED_INVOICE_DIST_ID IS NOT NULL) THEN --- Retainage Release invoice
7896
7897 p_tax_erv := (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*(AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100))* p_ref_per_trx_cur_unit_nrec
7898 *( p_inv_curr_conv_rate - p_ref_doc_curr_conv_rate) ;
7899
7900
7901 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7902
7903 l_debug_info := ' p_tax_erv := (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*(AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100))* p_ref_per_trx_cur_unit_nrec ' ||
7904 ' * ( p_inv_curr_conv_rate - p_ref_doc_curr_conv_rate) ' ||
7905 ' ( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' * ( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' /100))* ' ||
7906 p_ref_per_trx_cur_unit_nrec || ' * ( ' || p_inv_curr_conv_rate || ' - ' || p_ref_doc_curr_conv_rate || ' ) ';
7907
7908 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7909
7910 END IF;
7911
7912
7913 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7914
7915 l_debug_info := 'TERV for retainage invoice ' || p_tax_erv ;
7916 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7917
7918 END IF;
7919
7920
7921 END IF;
7922
7923 ELSE -- Normal Flow starts
7924 --bug10621602 ends
7925 --Bug10416960
7926 IF (p_line_type = 'RETROITEM' AND p_line_source = 'PO PRICE ADJUSTMENT') THEN
7927
7928 --TERV = Qi * Ni * (Ei - Ep)
7929
7930 /*p_tax_erv := p_quantity_invoiced * p_per_unit_nrec_amt *
7931 (p_inv_curr_conv_rate - p_ref_doc_curr_conv_rate);*/
7932
7933 --TERV = Qi * Pi * Np * (Ei - Ep)
7934
7935 p_tax_erv := p_quantity_invoiced * p_unit_price * p_ref_per_trx_cur_unit_nrec *
7936 (p_inv_curr_conv_rate - p_ref_doc_curr_conv_rate);
7937
7938 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7939
7940 l_debug_info := 'In P_LINE_TYPE = RETROITEM CHECK. TAX ERV IS '||p_tax_erv;
7941 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7942
7943 l_debug_info := 'p_tax_erv := p_quantity_invoiced * p_unit_price * p_ref_per_trx_cur_unit_nrec * (p_inv_curr_conv_rate -
7944 p_ref_doc_curr_conv_rate) '||
7945 p_quantity_invoiced ||' * '||p_unit_price||' * '||p_ref_per_trx_cur_unit_nrec||' * ('||p_inv_curr_conv_rate ||' - '||p_ref_doc_curr_conv_rate||')';
7946
7947 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7948
7949 END IF;
7950 --Bug10416960
7951 ELSIF p_corrected_inv_id IS NULL THEN
7952
7953 -- TERV = Qi * Np * (Ei - Ep)
7954
7955 p_tax_erv := p_quantity_invoiced * p_ref_doc_per_unit_nrec_amt *
7956 (p_inv_curr_conv_rate - nvl(p_app_doc_curr_conv_rate,p_ref_doc_curr_conv_rate));
7957
7958
7959 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7960
7961 l_debug_info := 'CORRECTED INV ID IS NULL. HENCE TAX ERV IS '||p_tax_erv;
7962 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7963
7964 l_debug_info := 'p_tax_erv := p_quantity_invoiced * p_ref_doc_per_unit_nrec_amt * (p_inv_curr_conv_rate - nvl(p_app_doc_curr_conv_rate,p_ref_doc_curr_conv_rate)) '||
7965 p_quantity_invoiced ||' * '||p_ref_doc_per_unit_nrec_amt||' * ('||p_inv_curr_conv_rate ||' - NVL('||p_app_doc_curr_conv_rate||' , '||p_ref_doc_curr_conv_rate||')';
7966
7967 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7968
7969 END IF;
7970
7971
7972 ELSIF p_corrected_inv_id IS NOT NULL THEN
7973
7974 -- TERV = Qi * Ni * (Eij - Ei).
7975
7976 p_tax_erv := p_quantity_invoiced * p_per_unit_nrec_amt *
7977 (p_inv_curr_conv_rate - p_adj_doc_curr_conv_rate);
7978
7979
7980 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7981
7982 l_debug_info := 'CORRECTED INV ID IS NOT NULL. HENCE TAX ERV IS '||p_tax_erv;
7983 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7984
7985 l_debug_info := 'p_tax_erv := p_quantity_invoiced * p_per_unit_nrec_amt * (p_inv_curr_conv_rate - p_adj_doc_curr_conv_rate) '||
7986 p_quantity_invoiced ||' * '||p_per_unit_nrec_amt||' * ('||p_inv_curr_conv_rate ||' - '||p_adj_doc_curr_conv_rate||')';
7987
7988 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
7989
7990 END IF;
7991
7992
7993
7994 END IF;
7995
7996 END IF; -- Normal Flow ends bug 10621602
7997
7998 IF p_tax_erv IS NOT NULL THEN
7999
8000 p_tax_erv := ap_utilities_pkg.ap_round_currency (p_tax_erv, p_base_currency_code);
8001
8002 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8003
8004 l_debug_info := 'TAX ERV AFTER ROUNDING IS '||p_tax_erv;
8005
8006 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8007
8008 END IF;
8009
8010 END IF;
8011
8012 RETURN NVL(p_tax_erv, 0);
8013
8014 EXCEPTION
8015 WHEN NO_DATA_FOUND THEN
8016
8017 RETURN NVL(p_tax_erv,0);
8018
8019 WHEN OTHERS THEN
8020
8021 RETURN NVL(p_tax_erv,0);
8022
8023 END get_terv;
8024
8025 /*=============================================================================
8026 | FUNCTION get_tv()
8027 |
8028 | DESCRIPTION
8029 | This function will return the invoice price variance.
8030 |
8031 *============================================================================*/
8032 FUNCTION get_tv ( p_rate_tax_factor IN NUMBER ,
8033 p_quantity_invoiced IN NUMBER ,
8034 p_inv_per_unit_nrec IN NUMBER ,
8035 p_ref_per_unit_nrec IN NUMBER ,
8036 p_inv_per_trx_cur_unit_nrec IN NUMBER ,
8037 p_ref_per_trx_cur_unit_nrec IN NUMBER ,
8038 p_pc_price_diff IN NUMBER ,
8039 p_corrected_inv_id IN NUMBER ,
8040 p_line_type IN VARCHAR2 ,
8041 p_line_source IN VARCHAR2 ,
8042 p_inv_currency_code IN VARCHAR2 ,
8043 p_line_match_type IN VARCHAR2 ,
8044 p_unit_price IN NUMBER ,
8045 p_trx_line_dist_id IN NUMBER ,
8046 p_ref_doc_unit_price IN NUMBER ,
8047 p_rec_nrec_tax_dist_id IN NUMBER) RETURN NUMBER IS --Added three new paramter for the bug 10621602
8048
8049 p_tax_tv NUMBER;
8050 l_debug_info varchar2(2000);
8051 l_api_name VARCHAR2(2000) := 'get_tv';
8052
8053 BEGIN
8054
8055 /*
8056 ni = p_inv_per_unit_nrec
8057 np = p_ref_per_unit_nrec
8058 ti = p_inv_per_trx_cur_unit_nrec
8059 tp = p_ref_per_trx_cur_unit_nrec
8060 */
8061
8062 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8063
8064 l_debug_info := 'p_rate_tax_factor '||p_rate_tax_factor||' '||'p_quantity_invoiced '||p_quantity_invoiced||' '||
8065 'p_inv_per_unit_nrec '||p_inv_per_unit_nrec||' '||'p_ref_per_unit_nrec '||p_ref_per_unit_nrec||' '||
8066 'p_inv_per_trx_cur_unit_nrec '||p_inv_per_trx_cur_unit_nrec||' '||'p_ref_per_trx_cur_unit_nrec '||' '||p_ref_per_trx_cur_unit_nrec||' '||
8067 'p_pc_price_diff '||p_pc_price_diff||' '||'p_corrected_inv_id '||p_corrected_inv_id||' '||
8068 'p_line_type '||p_line_type||' '||'p_line_source '||p_line_source||' '||'p_inv_currency_code '||' '||p_inv_currency_code||' '||
8069 'p_line_match_type '||p_line_match_type||' '||'p_unit_price '||p_unit_price || 'p_trx_line_dist_id ' || p_trx_line_dist_id || 'p_ref_doc_unit_price ' || p_ref_doc_unit_price ||
8070 ' p_rec_nrec_tax_dist_id ' || p_rec_nrec_tax_dist_id;
8071 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8072 END IF;
8073
8074 --bug 10621602 starts
8075 -- The below formula is only for the distribution related to retainage and retainge release invoice
8076
8077 IF AP_ETAX_SERVICES_PKG.ret_dists.exists(p_trx_line_dist_id) THEN
8078
8079
8080 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8081
8082 l_debug_info := 'Invoice Distribution amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ||
8083 ' Retained amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retained_amount ||
8084 ' Retainage rate ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate ||
8085 ' Quantity_Invoiced' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced ||
8086 ' Unit_price ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).unit_price;
8087
8088 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8089
8090 END IF;
8091
8092 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RELATED_RETAINAGE_DIST_ID IS NOT NULL) THEN --- Standard invoice with retainage
8093
8094 p_tax_tv := ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount )* p_inv_per_trx_cur_unit_nrec)
8095 - ((p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100))*p_ref_per_trx_cur_unit_nrec);
8096
8097 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8098
8099 l_debug_info := 'p_tax_tv := ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount )* p_inv_per_trx_cur_unit_nrec) ' ||
8100 ' - ((p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100))*p_ref_per_trx_cur_unit_nrec) ' ||
8101 ' (( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount || ' )* ' || p_inv_per_trx_cur_unit_nrec || ' ) ' ||
8102 ' - (( ' || p_quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' *( 1- ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' /100))* ' || p_ref_per_trx_cur_unit_nrec || ' ) ' ;
8103
8104 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8105
8106 END IF;
8107
8108
8109 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8110
8111 l_debug_info := 'Total Variance for standard invoice having retainage' || p_tax_tv ;
8112 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8113
8114 END IF;
8115
8116 END IF;
8117
8118 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RETAINED_INVOICE_DIST_ID IS NOT NULL) THEN --- Retainage Release invoice
8119
8120 p_tax_tv := (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount * p_inv_per_trx_cur_unit_nrec)
8121 - ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)*p_ref_per_trx_cur_unit_nrec);
8122
8123 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8124
8125 l_debug_info := 'p_tax_tv := (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount * p_inv_per_trx_cur_unit_nrec)' ||
8126 ' - ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)* p_ref_per_trx_cur_unit_nrec) ' ||
8127 ' ( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount || ' * ' || p_inv_per_trx_cur_unit_nrec || ' ) ' ||
8128 ' - (( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' * ' ||
8129 AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' / 100)* ' || p_ref_per_trx_cur_unit_nrec ;
8130
8131 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8132
8133 END IF;
8134
8135
8136 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8137
8138 l_debug_info := 'Total Variance for retainage invoice' || p_tax_tv ;
8139 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8140
8141 END IF;
8142
8143
8144 END IF;
8145
8146 ELSE -- Normal Flow starts
8147 --bug 10621602 ends
8148
8149 --Bug10416960
8150 IF (p_line_type = 'RETROITEM' AND p_line_match_type = 'PO_PRICE_ADJUSTMENT')THEN
8151
8152 -- PPA Document. TV = Qi * Pi * (ti - tp)
8153
8154 /*p_tax_tv := p_quantity_invoiced * p_inv_per_unit_nrec *
8155 (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec); -- bug 8317515: modify*/
8156 p_tax_tv := p_quantity_invoiced * p_unit_price * (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec); -- bug 8317515: modify
8157
8158 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8159
8160 l_debug_info := 'In P_LINE_TYPE = RETROITEM AND P_LINE_MATCH_TYPE = PO PRICE ADJUSTMENT CHECK. TAX VARIANCE IS '||p_tax_tv;
8161 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8162
8163 l_debug_info := 'p_tax_tv := p_quantity_invoiced * p_unit_price * (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec) '||
8164 p_quantity_invoiced ||' * '||p_unit_price||' * ('||p_inv_per_trx_cur_unit_nrec ||' - '||p_ref_per_trx_cur_unit_nrec||')';
8165
8166 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8167
8168 END IF;
8169 --Bug10416960
8170
8171 ELSIF p_corrected_inv_id IS NULL THEN
8172
8173 IF p_line_match_type IN ('ITEM_TO_SERVICE_RECEIPT', 'ITEM_TO_SERVICE_PO') THEN
8174
8175 p_tax_tv := p_quantity_invoiced * p_unit_price *
8176 (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec); -- bug 8317515: modify
8177
8178
8179 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8180
8181 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_SERVICE_RECEIPT OR ITEM_TO_SERVICE_PO. HENCE TAX VARIANCE IS '||p_tax_tv;
8182 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8183
8184 l_debug_info := 'p_tax_tv := p_quantity_invoiced * p_unit_price * (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec) '||
8185 p_quantity_invoiced||' * '||p_unit_price||' * ('||p_inv_per_trx_cur_unit_nrec ||' - '||p_ref_per_trx_cur_unit_nrec||')';
8186
8187 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8188
8189
8190 END IF;
8191
8192 ELSE
8193 -- PO/Receipt Matched Invoice. TV = Qi * (ni - np)
8194
8195 p_tax_tv := p_quantity_invoiced * (p_inv_per_unit_nrec - p_ref_per_unit_nrec); -- bug 8317515: modify
8196
8197
8198 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8199
8200 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_RECEIPT OR ITEM_TO_PO. HENCE TAX VARIANCE IS '||p_tax_tv;
8201 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8202
8203 l_debug_info := 'p_tax_tv := p_quantity_invoiced * (p_inv_per_unit_nrec - p_ref_per_unit_nrec) '||
8204 p_quantity_invoiced||' * ('||p_inv_per_unit_nrec ||' - '||p_ref_per_unit_nrec||')';
8205
8206 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8207
8208
8209 END IF;
8210
8211
8212
8213 END IF;
8214
8215 ELSIF p_corrected_inv_id IS NOT NULL THEN
8216
8217 -- Price/Quantity Correction. TV = RTF * Qi * Price Diff * ti
8218
8219 p_tax_tv := p_rate_tax_factor * p_quantity_invoiced * p_pc_price_diff * p_inv_per_trx_cur_unit_nrec; --Bug9363214
8220
8221 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8222
8223 l_debug_info := 'CORRECTED INV ID IS NOT NULL. HENCE TAX VARIANCE IS '||p_tax_tv;
8224 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8225
8226 l_debug_info := 'p_tax_tv := p_rate_tax_factor * p_quantity_invoiced * p_pc_price_diff * p_inv_per_trx_cur_unit_nrec '||
8227 p_rate_tax_factor ||' * '||p_quantity_invoiced||' * '||p_pc_price_diff||' * '||p_inv_per_trx_cur_unit_nrec;
8228 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8229
8230
8231 END IF;
8232
8233 END IF;
8234
8235 END IF; -- Normal flow ends bug10621602
8236
8237 IF p_tax_tv IS NOT NULL THEN
8238 p_tax_tv := ap_utilities_pkg.ap_round_currency (p_tax_tv, p_inv_currency_code);
8239
8240 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8241
8242 l_debug_info := 'TAX VARIANCE AFTER ROUNDING IS '||p_tax_tv;
8243
8244 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8245
8246 END IF;
8247
8248 END IF;
8249
8250 RETURN NVL(p_tax_tv,0);
8251
8252 EXCEPTION
8253 WHEN NO_DATA_FOUND THEN
8254
8255 RETURN NVL(p_tax_tv,0);
8256
8257 WHEN OTHERS THEN
8258
8259 RETURN NVL(p_tax_tv,0);
8260
8261 END get_tv;
8262
8263 /*=============================================================================
8264 | FUNCTION get_tv_base()
8265 |
8266 | DESCRIPTION
8267 | This function will return the invoice price variance.
8268 |
8269 *============================================================================*/
8270 FUNCTION get_tv_base ( p_rate_tax_factor IN NUMBER ,
8271 p_quantity_invoiced IN NUMBER ,
8272 p_inv_per_unit_nrec IN NUMBER ,
8273 p_ref_per_unit_nrec IN NUMBER ,
8274 p_inv_per_trx_cur_unit_nrec IN NUMBER ,
8275 p_ref_per_trx_cur_unit_nrec IN NUMBER ,
8276 p_inv_curr_rate IN NUMBER ,
8277 p_ref_doc_curr_rate IN NUMBER ,
8278 p_pc_price_diff IN NUMBER ,
8279 p_corrected_inv_id IN NUMBER ,
8280 p_line_type IN VARCHAR2 ,
8281 p_line_source IN VARCHAR2 ,
8282 p_base_currency_code IN VARCHAR2 ,
8283 p_line_match_type IN VARCHAR2 ,
8284 p_unit_price IN NUMBER ,
8285 p_trx_line_dist_id IN NUMBER ,
8286 p_ref_doc_unit_price IN NUMBER ,
8287 p_rec_nrec_tax_dist_id IN NUMBER) RETURN NUMBER IS --added three new parameters for the bug 10621602
8288
8289 p_tax_tv_base NUMBER;
8290 l_debug_info varchar2(2000);
8291 l_api_name VARCHAR2(2000) := 'get_tv_base';
8292
8293
8294 BEGIN
8295 /*
8296 ni = p_inv_per_unit_nrec
8297 np = p_ref_per_unit_nrec
8298 ti = p_inv_per_trx_cur_unit_nrec
8299 tp = p_ref_per_trx_cur_unit_nrec
8300 */
8301
8302 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8303
8304 l_debug_info := 'p_rate_tax_factor '||p_rate_tax_factor||' '||'p_quantity_invoiced '||p_quantity_invoiced||' '||
8305 'p_inv_per_unit_nrec '||p_inv_per_unit_nrec||' '||'p_ref_per_unit_nrec '||p_ref_per_unit_nrec||' '||
8306 'p_inv_per_trx_cur_unit_nrec '||p_inv_per_trx_cur_unit_nrec||' '||'p_ref_per_trx_cur_unit_nrec '||' '||p_ref_per_trx_cur_unit_nrec||' '||
8307 'p_inv_curr_rate '||p_inv_curr_rate||' '||'p_ref_doc_curr_rate '||' '||p_ref_doc_curr_rate||' '||
8308 'p_pc_price_diff '||p_pc_price_diff||' '||'p_corrected_inv_id '||p_corrected_inv_id||' '||
8309 'p_line_type '||p_line_type||' '||'p_line_source '||p_line_source||' '||'p_base_currency_code '||' '||p_base_currency_code||' '||
8310 'p_line_match_type '||p_line_match_type||' '||'p_unit_price '||p_unit_price || 'p_trx_line_dist_id ' || p_trx_line_dist_id || 'p_ref_doc_unit_price ' ||
8311 p_ref_doc_unit_price || ' p_rec_nrec_tax_dist_id ' || p_rec_nrec_tax_dist_id ;
8312 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8313 END IF;
8314
8315 --bug 10621602 starts
8316 IF AP_ETAX_SERVICES_PKG.ret_dists.exists(p_trx_line_dist_id) THEN
8317
8318 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8319
8320 l_debug_info := 'Invoice Distribution amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount ||
8321 'Retained amount ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retained_amount ||
8322 'Retainage rate ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate ||
8323 'Quantity_Invoiced' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced;
8324
8325 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8326
8327 END IF;
8328
8329
8330 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RELATED_RETAINAGE_DIST_ID IS NOT NULL) THEN --- Standard invoice with retainage
8331
8332 p_tax_tv_base := ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount)* p_inv_per_trx_cur_unit_nrec * nvl(p_inv_curr_rate , 1) )
8333 - ((p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100))*p_ref_per_trx_cur_unit_nrec * nvl(p_ref_doc_curr_rate , 1));
8334
8335 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8336
8337 l_debug_info := 'p_tax_tv_base := ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount)* p_inv_per_trx_cur_unit_nrec * nvl(p_inv_curr_rate , 1) ) ' ||
8338 ' - ((p_quantity_invoiced * p_ref_doc_unit_price*(1 - AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100))*p_ref_per_trx_cur_unit_nrec * nvl(p_ref_doc_curr_rate , 1)) ' ||
8339 ' (( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount || ' )* ' || p_inv_per_trx_cur_unit_nrec || ' * ' || nvl(p_inv_curr_rate , 1) || ' ) ' ||
8340 ' - (( ' || p_quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' *(1 - ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' /100))* ' ||
8341 p_ref_per_trx_cur_unit_nrec || ' * ' || nvl(p_ref_doc_curr_rate , 1) || ' ) ' ;
8342
8343 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8344
8345 END IF;
8346
8347
8348 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8349
8350 l_debug_info := 'Total Variance Base for standard invoice having retainage' || p_tax_tv_base ;
8351 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8352
8353 END IF;
8354
8355 END IF;
8356
8357 IF ( AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).RETAINED_INVOICE_DIST_ID IS NOT NULL) THEN --- Retainage Release invoice
8358
8359 p_tax_tv_base := (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount * p_inv_per_trx_cur_unit_nrec * nvl(p_inv_curr_rate , 1))
8360 - ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)*p_ref_per_trx_cur_unit_nrec * nvl(p_ref_doc_curr_rate , 1));
8361
8362
8363 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8364
8365 l_debug_info := ' p_tax_tv_base := (AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount * p_inv_per_trx_cur_unit_nrec * nvl(p_inv_curr_rate , 1)) ' ||
8366 ' - ((AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced * p_ref_doc_unit_price*AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate/100)*p_ref_per_trx_cur_unit_nrec * nvl(p_ref_doc_curr_rate , 1)) ' ||
8367 ' ( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).amount || ' * ' || p_inv_per_trx_cur_unit_nrec || ' * ' || nvl(p_inv_curr_rate , 1) || ' ) ' ||
8368 ' -(( ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).quantity_invoiced || ' * ' || p_ref_doc_unit_price || ' * ' || AP_ETAX_SERVICES_PKG.ret_dists(p_trx_line_dist_id).retainage_rate || ' /100) * ' ||
8369 p_ref_per_trx_cur_unit_nrec || ' * ' || nvl(p_ref_doc_curr_rate , 1) || ' ) ' ;
8370
8371 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8372
8373 END IF;
8374
8375 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8376
8377 l_debug_info := 'Total Variance Base retainage invoice ' || p_tax_tv_base ;
8378 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8379
8380 END IF;
8381
8382
8383 END IF;
8384
8385 ELSE -- Normal Flow starts
8386 --bug 10621602 ends
8387 --Bug10416960
8388 IF (p_line_type = 'RETROITEM' AND p_line_match_type = 'PO_PRICE_ADJUSTMENT') THEN
8389
8390 -- PO Price Adjustment Line.
8391 -- tv_base = Qi * ni * (ti - tp) * Ep
8392
8393 /* p_tax_tv_base := p_quantity_invoiced * p_inv_per_unit_nrec * p_ref_doc_curr_rate *
8394 (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec); -- bug 8317515: modify*/
8395
8396 p_tax_tv_base := p_quantity_invoiced * p_unit_price * p_ref_doc_curr_rate *
8397 (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec);
8398
8399
8400 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8401
8402 l_debug_info := 'In P_LINE_TYPE = RETROITEM AND P_LINE_MATCH_TYPE = PO PRICE ADJUSTMENT CHECK. TAX VARIANCE BASE IS '||p_tax_tv_base;
8403 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8404
8405 l_debug_info := 'p_tax_tv_base := p_quantity_invoiced * p_unit_price * p_ref_doc_curr_rate * (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec) '||
8406 p_quantity_invoiced ||' * '||p_unit_price||' * '|| p_ref_doc_curr_rate||' * ('||p_inv_per_trx_cur_unit_nrec ||' - '||p_ref_per_trx_cur_unit_nrec||')';
8407
8408 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8409
8410 END IF;
8411 --Bug10416960
8412 ELSIF p_corrected_inv_id IS NULL THEN
8413
8414 IF p_line_match_type IN ('ITEM_TO_SERVICE_RECEIPT', 'ITEM_TO_SERVICE_PO') THEN
8415
8416 p_tax_tv_base := p_quantity_invoiced * p_unit_price * p_inv_curr_rate *
8417 (p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec); -- bug 8317515: modify
8418
8419
8420 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8421
8422 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_RECEIPT OR ITEM_TO_PO. HENCE TAX VARIANCE BASE IS '||p_tax_tv_base;
8423 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8424
8425 l_debug_info := 'p_tax_tv_base := p_quantity_invoiced *p_unit_price * p_inv_curr_rate *(p_inv_per_trx_cur_unit_nrec - p_ref_per_trx_cur_unit_nrec) '||
8426 p_quantity_invoiced||' * '||p_unit_price||' * '||p_inv_curr_rate ||' * ('||p_inv_per_trx_cur_unit_nrec ||' - '||p_ref_per_trx_cur_unit_nrec||')';
8427
8428 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8429
8430
8431 END IF;
8432
8433 ELSE
8434
8435 -- PO/Receipt Matched Invoice.
8436 -- tv_base = Qi * (ni - np) * Ei
8437
8438 p_tax_tv_base := p_quantity_invoiced * p_inv_curr_rate * (p_inv_per_unit_nrec - p_ref_per_unit_nrec); -- bug 8317515: modify
8439
8440 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8441
8442 l_debug_info := 'CORRECTED INV ID IS NULL AND MATCH TYPE IS ITEM_TO_RECEIPT OR ITEM_TO_PO. HENCE TAX VARIANCE BASE IS '||p_tax_tv_base;
8443 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8444
8445 l_debug_info := 'p_tax_tv_base := p_quantity_invoiced * p_inv_curr_rate * (p_inv_per_unit_nrec - p_ref_per_unit_nrec) '||
8446 p_quantity_invoiced||' * '||p_inv_curr_rate||' * ('||p_inv_per_unit_nrec ||' - '||p_ref_per_unit_nrec||')';
8447
8448 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8449
8450
8451 END IF;
8452
8453 END IF;
8454
8455 ELSIF p_corrected_inv_id IS NOT NULL THEN
8456
8457 -- Price/Quantity Correction.
8458 -- tv_base = RTF * Qi * Pi * ti * Ei
8459
8460 p_tax_tv_base := p_rate_tax_factor * p_quantity_invoiced * p_pc_price_diff * p_inv_curr_rate * p_inv_per_trx_cur_unit_nrec ; --Bug9363214
8461
8462 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8463
8464 l_debug_info := 'CORRECTED INV ID IS NOT NULL. HENCE TAX VARIANCE BASE IS '||p_tax_tv_base;
8465 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8466
8467 l_debug_info := 'p_tax_tv_base := p_rate_tax_factor * p_quantity_invoiced * p_pc_price_diff * p_inv_curr_rate * p_inv_per_trx_cur_unit_nrec '||
8468 p_rate_tax_factor ||' * '||p_quantity_invoiced||' * '||p_pc_price_diff||' * '||p_inv_curr_rate||' * '||
8469 p_inv_per_trx_cur_unit_nrec;
8470
8471 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8472
8473
8474 END IF;
8475
8476 END IF;
8477 END IF; --Normal Flow ends bug10621602
8478
8479 IF p_tax_tv_base IS NOT NULL THEN
8480 p_tax_tv_base := ap_utilities_pkg.ap_round_currency (p_tax_tv_base, p_base_currency_code);
8481
8482 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8483
8484 l_debug_info := 'TAX VARIANCE BASE AFTER ROUNDING IS '||p_tax_tv_base;
8485
8486 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
8487
8488 END IF;
8489
8490 END IF;
8491
8492 RETURN NVL(p_tax_tv_base,0);
8493
8494 EXCEPTION
8495
8496 WHEN NO_DATA_FOUND THEN
8497
8498 RETURN NVL(p_tax_tv_base,0);
8499
8500 WHEN OTHERS THEN
8501
8502 RETURN NVL(p_tax_tv_base,0);
8503
8504 END get_tv_base;
8505
8506 /*=============================================================================
8507 | PROCEDURE - get_header_tax_attr_desc()
8508 |
8509 | DESCRIPTION
8510 | This procedure will return the description of the following tax drivers
8511 | stored at the document header.
8512 | 1. Taxation Country
8513 | 2. Document Sub Type
8514 | 3. Related Invoice
8515 |
8516 | PARAMETERS
8517 | P_Taxation_Country - Taxation Country
8518 | P_Document_Sub_Type - Document Sub Type
8519 | P_Tax_Related_Invoice_Id - Related Invoice
8520 |
8521 | MODIFICATION HISTORY
8522 | DATE Author Action
8523 | 13-AUG-2004 Sanjay Created
8524 *============================================================================*/
8525 PROCEDURE get_header_tax_attr_desc
8526 ( p_taxation_country IN VARCHAR2,
8527 p_document_sub_type IN VARCHAR2,
8528 p_tax_related_inv_id IN NUMBER,
8529 p_taxation_country_desc OUT NOCOPY VARCHAR2,
8530 p_document_sub_type_desc OUT NOCOPY VARCHAR2,
8531 p_tax_related_inv_num OUT NOCOPY VARCHAR2,
8532 p_calling_sequence IN VARCHAR2) IS
8533
8534 CURSOR c_txn_ctry (c_ctry_code VARCHAR2) IS
8535 SELECT territory_short_name
8536 FROM fnd_territories_tl
8537 WHERE territory_code = c_ctry_code
8538 AND language = userenv ('LANG');
8539
8540 CURSOR c_tax_rel_inv_num (c_inv_id VARCHAR2) IS
8541 SELECT ai.invoice_num tax_related_invoice_num
8542 FROM ap_invoices ai
8543 WHERE ai.invoice_id = c_inv_id;
8544
8545 CURSOR c_doc_sub_type (c_class_code VARCHAR2,
8546 c_ctry_code VARCHAR2) IS
8547 SELECT classification_name
8548 FROM zx_fc_intended_use_v
8549 WHERE classification_code = c_class_code
8550 AND country_code = c_ctry_code;
8551
8552 l_debug_info VARCHAR2(240);
8553 l_curr_calling_sequence VARCHAR2(4000);
8554 l_api_name CONSTANT VARCHAR2(100) := 'get_header_tax_attr_desc';
8555
8556 BEGIN
8557 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Header_Tax_Attr_Desc<-' ||
8558 p_calling_sequence;
8559
8560 --------------------------------------------------
8561 l_debug_info := 'Step 1: Get Taxation Country';
8562 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8563 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8564 END IF;
8565 --------------------------------------------------
8566 IF p_taxation_country IS NOT NULL THEN
8567
8568 OPEN c_txn_ctry (p_taxation_country);
8569 FETCH c_txn_ctry
8570 INTO p_taxation_country_desc;
8571 CLOSE c_txn_ctry;
8572
8573 END IF;
8574
8575 --------------------------------------------------
8576 l_debug_info := 'Step 2: Get Related Inv Number';
8577 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8578 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8579 END IF;
8580 --------------------------------------------------
8581 IF p_tax_related_inv_id IS NOT NULL THEN
8582
8583 OPEN c_tax_rel_inv_num (p_tax_related_inv_id);
8584 FETCH c_tax_rel_inv_num
8585 INTO p_tax_related_inv_num;
8586 CLOSE c_tax_rel_inv_num;
8587
8588 END IF;
8589
8590 --------------------------------------------------
8591 l_debug_info := 'Step 3: Get Document Sub Type';
8592 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8593 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8594 END IF;
8595 --------------------------------------------------
8596 IF p_document_sub_type IS NOT NULL AND
8597 p_taxation_country IS NOT NULL THEN
8598
8599 OPEN c_doc_sub_type (p_document_sub_type,
8600 p_taxation_country);
8601 FETCH c_doc_sub_type
8602 INTO p_document_sub_type_desc;
8603 CLOSE c_doc_sub_type;
8604
8605 END IF;
8606
8607 EXCEPTION
8608 WHEN OTHERS THEN
8609 IF (SQLCODE <> -20001) THEN
8610 fnd_message.set_name ('SQLAP', 'AP_DEBUG');
8611 fnd_message.set_token('ERROR', SQLERRM);
8612 fnd_message.set_token('CALLING_SEQUENCE', l_curr_calling_sequence);
8613 fnd_message.set_token('PARAMETERS',
8614 ' p_taxation_country = '||p_taxation_country ||
8615 ' p_document_sub_type = '||p_document_sub_type ||
8616 ' p_tax_related_inv_id = '||p_tax_related_inv_id);
8617 fnd_message.set_token('DEBUG_INFO',l_debug_info);
8618 END IF;
8619 app_exception.raise_exception;
8620
8621
8622 END get_header_tax_attr_desc;
8623
8624
8625 /*=============================================================================
8626 | PROCEDURE - get_taxable_line_attr_desc()
8627 |
8628 | DESCRIPTION
8629 | This procedure will return the descriptions of tax drivers on the taxable
8630 | line.
8631 |
8632 | PARAMETERS
8633 | P_Taxation_Country - Taxation Country
8634 | P_Trx_Bus_Category - Transaction Business Category
8635 | P_Prd_Fisc_Class - Product Fiscal Classification
8636 | P_User_Fisc_Class - User Defined Fiscal Classification
8637 | P_Prim_Int_Use - Primary Intended Use
8638 | P_Product_Type - Product Type
8639 | P_Product_Category - Product Category
8640 | P_Inv_Item_Id - Inventory Item Identifier
8641 | P_Org_Id - Organization Identifier
8642 |
8643 | MODIFICATION HISTORY
8644 | DATE Author Action
8645 | 13-AUG-2004 Sanjay Created
8646 *============================================================================*/
8647 PROCEDURE get_taxable_line_attr_desc
8648 ( p_taxation_country IN VARCHAR2,
8649 p_trx_bus_category IN VARCHAR2,
8650 p_prd_fisc_class IN VARCHAR2,
8651 p_user_fisc_class IN VARCHAR2,
8652 p_prim_int_use IN VARCHAR2,
8653 p_product_type IN VARCHAR2,
8654 p_product_category IN VARCHAR2,
8655 p_inv_item_id IN NUMBER,
8656 p_org_id IN NUMBER,
8657 p_trx_bus_category_desc OUT NOCOPY VARCHAR2,
8658 p_prd_fisc_class_desc OUT NOCOPY VARCHAR2,
8659 p_user_fisc_class_desc OUT NOCOPY VARCHAR2,
8660 p_prim_int_use_desc OUT NOCOPY VARCHAR2,
8661 p_product_type_desc OUT NOCOPY VARCHAR2,
8662 p_product_category_desc OUT NOCOPY VARCHAR2,
8663 p_calling_sequence IN VARCHAR2) IS
8664
8665 CURSOR c_bus_cat (c_class_code VARCHAR2,
8666 c_txn_ctry VARCHAR2) IS
8667 SELECT classification_name
8668 FROM zx_fc_business_categories_v
8669 WHERE classification_code = c_class_code
8670 AND (country_code = c_txn_ctry OR
8671 country_code IS NULL);
8672
8673 CURSOR c_fisc_class (c_class_code VARCHAR2,
8674 c_txn_ctry VARCHAR2) IS
8675 SELECT classification_name
8676 FROM zx_fc_product_fiscal_v
8677 WHERE classification_code = c_class_code
8678 AND (country_code = c_txn_ctry OR
8679 country_code IS NULL);
8680
8681 CURSOR c_user_fisc_class (c_class_code VARCHAR2,
8682 c_txn_ctry VARCHAR2) IS
8683 SELECT classification_name
8684 FROM zx_fc_user_defined_v
8685 WHERE classification_code = c_class_code
8686 AND (country_code = c_txn_ctry OR
8687 country_code IS NULL);
8688
8689 CURSOR c_prim_int_use (c_class_code VARCHAR2,
8690 c_txn_ctry VARCHAR2) IS
8691 SELECT classification_name
8692 FROM zx_fc_intended_use_v
8693 WHERE classification_code = c_class_code
8694 AND (country_code = c_txn_ctry OR
8695 country_code IS NULL);
8696
8697 CURSOR c_product_type (c_class_code VARCHAR2) IS
8698 SELECT classification_name
8699 FROM zx_product_types_v
8700 WHERE classification_code = c_class_code;
8701
8702 CURSOR c_product_category (c_class_code VARCHAR2,
8703 c_txn_ctry VARCHAR2) IS
8704 SELECT classification_name
8705 FROM zx_fc_product_categories_v
8706 WHERE classification_code = c_class_code
8707 AND (country_code = c_txn_ctry OR
8708 country_code IS NULL);
8709
8710 l_debug_info VARCHAR2(240);
8711 l_curr_calling_sequence VARCHAR2(4000);
8712 l_api_name CONSTANT VARCHAR2(100) := 'get_taxable_line_attr_desc';
8713
8714 BEGIN
8715
8716 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Taxable_Line_Attr_Desc<-' ||
8717 p_calling_sequence;
8718
8719 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8720 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
8721 END IF;
8722
8723 ------------------------------------------------------------------
8724 l_debug_info := 'Step 1: Get Business Category';
8725 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8726 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8727 END IF;
8728 ------------------------------------------------------------------
8729 IF p_trx_bus_category IS NOT NULL THEN
8730
8731 OPEN c_bus_cat (p_trx_bus_category,
8732 p_taxation_country);
8733 FETCH c_bus_cat
8734 INTO p_trx_bus_category_desc;
8735 CLOSE c_bus_cat;
8736
8737 END IF;
8738
8739 ------------------------------------------------------------------
8740 l_debug_info := 'Step 2: Get Fiscal Classification';
8741 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8742 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8743 END IF;
8744 ------------------------------------------------------------------
8745 IF p_prd_fisc_class IS NOT NULL THEN
8746
8747 OPEN c_fisc_class (p_prd_fisc_class,
8748 p_taxation_country);
8749 FETCH c_fisc_class
8750 INTO p_prd_fisc_class_desc;
8751 CLOSE c_fisc_class;
8752
8753 END IF;
8754
8755 ------------------------------------------------------------------
8756 l_debug_info := 'Step 3: Get User Defined Fiscal Classification';
8757 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8758 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8759 END IF;
8760 ------------------------------------------------------------------
8761 IF p_user_fisc_class IS NOT NULL THEN
8762
8763 OPEN c_user_fisc_class (p_user_fisc_class,
8764 p_taxation_country);
8765 FETCH c_user_fisc_class
8766 INTO p_user_fisc_class_desc;
8767 CLOSE c_user_fisc_class;
8768
8769 END IF;
8770
8771 ------------------------------------------------------------------
8772 l_debug_info := 'Step 4: Get Primary Intended Use';
8773 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8774 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8775 END IF;
8776 ------------------------------------------------------------------
8777 IF p_prim_int_use IS NOT NULL THEN
8778
8779 OPEN c_prim_int_use (p_prim_int_use,
8780 p_taxation_country);
8781 FETCH c_prim_int_use
8782 INTO p_prim_int_use_desc;
8783 CLOSE c_prim_int_use;
8784
8785 END IF;
8786
8787 ------------------------------------------------------------------
8788 l_debug_info := 'Step 5: Get Product Type';
8789 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8790 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8791 END IF;
8792 ------------------------------------------------------------------
8793 IF p_product_type IS NOT NULL THEN
8794
8795 OPEN c_product_type (p_product_type);
8796 FETCH c_product_type
8797 INTO p_product_type_desc;
8798 CLOSE c_product_type;
8799
8800 END IF;
8801
8802 ------------------------------------------------------------------
8803 l_debug_info := 'Step 5: Get Product Category';
8804 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8805 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8806 END IF;
8807 ------------------------------------------------------------------
8808 IF p_product_category IS NOT NULL THEN
8809
8810 OPEN c_product_category (p_product_category,
8811 p_taxation_country);
8812 FETCH c_product_category
8813 INTO p_product_category_desc;
8814 CLOSE c_product_category;
8815
8816 END IF;
8817
8818 EXCEPTION
8819 WHEN OTHERS THEN
8820 IF (SQLCODE <> -20001) THEN
8821 fnd_message.set_name ('SQLAP', 'AP_DEBUG');
8822 fnd_message.set_token('ERROR', SQLERRM);
8823 fnd_message.set_token('CALLING_SEQUENCE', l_curr_calling_sequence);
8824 fnd_message.set_token('PARAMETERS',
8825 ' p_taxation_country = '||p_taxation_country ||
8826 ' p_trx_bus_category = '||p_trx_bus_category ||
8827 ' p_prd_fisc_class = '||p_prd_fisc_class ||
8828 ' p_user_fisc_class = '||p_user_fisc_class ||
8829 ' p_prim_int_use = '||p_prim_int_use ||
8830 ' p_product_type = '||p_product_type ||
8831 ' p_product_category = '||p_product_category ||
8832 ' p_inv_item_id = '||p_inv_item_id ||
8833 ' p_org_id = '||p_org_id );
8834
8835 fnd_message.set_token('DEBUG_INFO',l_debug_info);
8836 END IF;
8837 app_exception.raise_exception;
8838
8839 END get_taxable_line_attr_desc;
8840
8841 /*=============================================================================
8842 | PROCEDURE - get_tax_line_attr_desc()
8843 |
8844 | DESCRIPTION
8845 | This procedure will return the descriptions of tax related attributes
8846 | on the tax line.
8847 |
8848 | PARAMETERS
8849 | P_Taxation_Country - Taxation Country
8850 | P_Tax_Regime_Code - Tax Regime
8851 | P_Tax - Tax
8852 | P_Tax_Jurisdiction_Code - Tax Jurisidiction
8853 | P_Tax_Status_Code - Tax Status
8854 |
8855 | MODIFICATION HISTORY
8856 | DATE Author Action
8857 | 13-AUG-2004 Sanjay Created
8858 *============================================================================*/
8859 PROCEDURE get_tax_line_attr_desc
8860 ( p_taxation_country IN VARCHAR2,
8861 p_tax_regime_code IN VARCHAR2,
8862 p_tax IN VARCHAR2,
8863 p_tax_jurisdiction_code IN VARCHAR2,
8864 p_tax_status_code IN VARCHAR2,
8865 p_tax_regime_code_desc OUT NOCOPY VARCHAR2,
8866 p_tax_desc OUT NOCOPY VARCHAR2,
8867 p_tax_jurisdiction_desc OUT NOCOPY VARCHAR2,
8868 p_tax_status_code_desc OUT NOCOPY VARCHAR2,
8869 p_calling_sequence IN VARCHAR2) AS
8870
8871 CURSOR c_tax_regime (c_tax_regime_code VARCHAR2,
8872 c_txn_ctry VARCHAR2) IS
8873 SELECT vl.tax_regime_name
8874 FROM zx_regimes_vl vl
8875 WHERE vl.country_code = c_txn_ctry
8876 AND vl.tax_regime_code = c_tax_regime_code;
8877
8878 CURSOR c_tax (c_tax VARCHAR2,
8879 c_tax_regime VARCHAR2) IS
8880 SELECT tax_full_name
8881 FROM zx_sco_taxes
8882 WHERE tax_regime_code = c_tax_regime
8883 AND tax = c_tax;
8884
8885 CURSOR c_tax_jurisdiction (c_tax VARCHAR2,
8886 c_tax_regime VARCHAR2,
8887 c_tax_jurisdiction VARCHAR2) IS
8888 SELECT tax_jurisdiction_name
8889 FROM zx_jurisdictions_vl
8890 WHERE tax_regime_code = c_tax_regime
8891 AND tax = c_tax
8892 AND tax_jurisdiction_code = c_tax_jurisdiction;
8893
8894 CURSOR c_tax_status (c_tax VARCHAR2,
8895 c_tax_regime VARCHAR2,
8896 c_tax_status VARCHAR2) IS
8897 SELECT tax_status_name
8898 FROM zx_sco_status
8899 WHERE tax_regime_code = c_tax_regime
8900 AND tax = c_tax
8901 AND tax_status_code = c_tax_status;
8902
8903 l_debug_info VARCHAR2(240);
8904 l_curr_calling_sequence VARCHAR2(4000);
8905 l_api_name CONSTANT VARCHAR2(100) := 'get_tax_line_attr_desc';
8906
8907 BEGIN
8908 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Taxable_Line_Attr_Desc<-' ||
8909 p_calling_sequence;
8910
8911 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8912 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
8913 END IF;
8914
8915 ------------------------------------------------
8916 l_debug_info := 'Step 1: Get Tax Regime';
8917 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8918 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8919 END IF;
8920 ------------------------------------------------
8921 IF p_tax_regime_code IS NOT NULL THEN
8922
8923 OPEN c_tax_regime (p_tax_regime_code,
8924 p_taxation_country);
8925 FETCH c_tax_regime
8926 INTO p_tax_regime_code_desc;
8927 CLOSE c_tax_regime;
8928
8929 END IF;
8930
8931 ------------------------------------------------
8932 l_debug_info := 'Step 2: Get Tax';
8933 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8934 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8935 END IF;
8936 ------------------------------------------------
8937 IF p_tax IS NOT NULL THEN
8938
8939 OPEN c_tax (p_tax,
8940 p_tax_regime_code);
8941 FETCH c_tax
8942 INTO p_tax_desc;
8943 CLOSE c_tax;
8944
8945 END IF;
8946
8947 ------------------------------------------------
8948 l_debug_info := 'Step 3: Get Tax Jurisdiction';
8949 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8950 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8951 END IF;
8952 ------------------------------------------------
8953 IF p_tax_jurisdiction_code IS NOT NULL THEN
8954
8955 OPEN c_tax_jurisdiction (p_tax,
8956 p_tax_regime_code,
8957 p_tax_jurisdiction_code);
8958 FETCH c_tax_jurisdiction
8959 INTO p_tax_jurisdiction_desc;
8960 CLOSE c_tax_jurisdiction;
8961
8962 END IF;
8963
8964 ------------------------------------------------
8965 l_debug_info := 'Step 4: Get Tax Status';
8966 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8967 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
8968 END IF;
8969 ------------------------------------------------
8970 IF p_tax_status_code IS NOT NULL THEN
8971
8972 OPEN c_tax_status (p_tax,
8973 p_tax_regime_code,
8974 p_tax_status_code);
8975
8976 FETCH c_tax_status
8977 INTO p_tax_status_code_desc;
8978 CLOSE c_tax_status;
8979
8980 END IF;
8981
8982 EXCEPTION
8983 WHEN OTHERS THEN
8984 IF (SQLCODE <> -20001) THEN
8985 fnd_message.set_name ('SQLAP', 'AP_DEBUG');
8986 fnd_message.set_token('ERROR', SQLERRM);
8987 fnd_message.set_token('CALLING_SEQUENCE', l_curr_calling_sequence);
8988 fnd_message.set_token('PARAMETERS',
8989 ' p_taxation_country = '||p_taxation_country ||
8990 ' p_tax_regime_code = '||p_tax_regime_code ||
8991 ' p_tax = '||p_tax ||
8992 ' p_tax_jurisdiction_code = '||p_tax_jurisdiction_code ||
8993 ' p_tax_status_code = '||p_tax_status_code );
8994
8995 fnd_message.set_token('DEBUG_INFO',l_debug_info);
8996 END IF;
8997 app_exception.raise_exception;
8998
8999 END get_tax_line_attr_desc;
9000
9001 /*=============================================================================
9002 | PROCEDURE - get_default_tax_det_attribs()
9003 |
9004 | DESCRIPTION
9005 | This procedure will return the default tax drivers based on the
9006 | organization identifier.
9007 |
9008 | PARAMETERS
9009 | P_Org_Id - Organization Id
9010 | P_Legal_Entity_Id - Legal Entity Id
9011 | P_Item_Id - Inventory Item Id
9012 | P_Doc_Type - Document Type
9013 | P_Trx_Date - Transaction Date
9014 |
9015 | MODIFICATION HISTORY
9016 | DATE Author Action
9017 | 13-AUG-2004 Sanjay Created
9018 *============================================================================*/
9019 PROCEDURE get_default_tax_det_attribs
9020 (p_org_id IN NUMBER,
9021 p_legal_entity_id IN NUMBER,
9022 p_item_id IN NUMBER,
9023 p_doc_type IN VARCHAR2,
9024 p_trx_date IN DATE,
9025 x_return_status OUT NOCOPY VARCHAR2,
9026 x_msg_count OUT NOCOPY NUMBER,
9027 x_msg_data OUT NOCOPY VARCHAR2,
9028 p_country_code OUT NOCOPY VARCHAR2,
9029 p_trx_biz_category OUT NOCOPY VARCHAR2,
9030 p_intended_use OUT NOCOPY VARCHAR2,
9031 p_prod_category OUT NOCOPY VARCHAR2,
9032 p_prod_fisc_class_code OUT NOCOPY VARCHAR2,
9033 p_calling_sequence IN VARCHAR2) IS
9034
9035 l_tax_effective_date DATE;
9036 l_success BOOLEAN;
9037 l_error_code VARCHAR2(30);
9038 l_event_class_code VARCHAR2(100);
9039 l_product_type ap_invoice_lines_all.product_type%type;
9040
9041 l_debug_info VARCHAR2(240);
9042 l_curr_calling_sequence VARCHAR2(4000);
9043 l_api_name CONSTANT VARCHAR2(100) := 'get_default_tax_det_attribs';
9044
9045 BEGIN
9046
9047 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Default_Tax_Det_Attribs<-' ||
9048 p_calling_sequence;
9049
9050 ------------------------------------------------
9051 l_debug_info := 'Step 1: Get Taxation Country';
9052 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9053 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9054 END IF;
9055 ------------------------------------------------
9056 xle_utilities_grp.get_fp_countrycode_ou (
9057 p_api_version => 1.0,
9058 p_init_msg_list => FND_API.G_FALSE,
9059 p_commit => FND_API.G_FALSE,
9060 x_return_status => x_return_status,
9061 x_msg_count => x_msg_count,
9062 x_msg_data => x_msg_data,
9063 p_operating_unit => p_org_id,
9064 x_country_code => p_country_code);
9065
9066 IF p_country_code IS NOT NULL THEN
9067
9068 -------------------------------------------
9069 l_debug_info := 'Step 2: Get Event Class';
9070 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9071 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9072 END IF;
9073 -------------------------------------------
9074 l_success := AP_ETAX_UTILITY_PKG.Get_Event_Class_Code (
9075 p_invoice_type_lookup_code => p_doc_type,
9076 p_event_class_code => l_event_class_code,
9077 p_error_code => l_error_code,
9078 p_calling_sequence => l_curr_calling_sequence);
9079
9080 IF (l_success) THEN
9081
9082 ----------------------------------------------------
9083 l_debug_info := 'Step 3: Set Tax Security Context';
9084 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9085 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9086 END IF;
9087 ----------------------------------------------------
9088 AP_ETAX_UTILITY_PKG.set_tax_security_context (
9089 p_org_id => p_org_id,
9090 p_legal_entity_id => p_legal_entity_id,
9091 p_transaction_date => NVL(p_trx_date, sysdate),
9092 p_related_doc_date => NULL,
9093 p_adjusted_doc_date => NULL,
9094 p_effective_date => l_tax_effective_date,
9095 p_return_status => x_return_status,
9096 p_msg_count => x_msg_count,
9097 p_msg_data => x_msg_data);
9098
9099 ------------------------------------------------------------------
9100 l_debug_info := 'Step 4: Get Default Tax Determining Attributes';
9101 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9102 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9103 END IF;
9104 ------------------------------------------------------------------
9105 zx_api_pub.get_default_tax_det_attribs (
9106 p_api_version => 1.0,
9107 p_init_msg_list => FND_API.G_FALSE,
9108 p_commit => FND_API.G_FALSE,
9109 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
9110 x_return_status => x_return_status,
9111 x_msg_count => x_msg_count,
9112 x_msg_data => x_msg_data,
9113 p_application_id => 200,
9114 p_entity_code => 'AP_INVOICES',
9115 p_event_class_code => l_event_class_code,
9116 p_org_id => p_org_id,
9117 p_item_id => p_item_id,
9118 p_country_code => p_country_code,
9119 p_effective_date => l_tax_effective_date,
9120 x_trx_biz_category => p_trx_biz_category,
9121 x_intended_use => p_intended_use,
9122 x_prod_category => p_prod_category,
9123 x_prod_fisc_class_code => p_prod_fisc_class_code,
9124 x_product_type => l_product_type);
9125
9126 END IF;
9127
9128 END IF;
9129
9130 EXCEPTION
9131 WHEN OTHERS THEN
9132 IF (SQLCODE <> -20001) THEN
9133 fnd_message.set_name ('SQLAP', 'AP_DEBUG');
9134 fnd_message.set_token('ERROR', SQLERRM);
9135 fnd_message.set_token('CALLING_SEQUENCE', l_curr_calling_sequence);
9136 fnd_message.set_token('PARAMETERS',
9137 ' p_org_id = '||p_org_id ||
9138 ' p_legal_entity_id = '||p_legal_entity_id ||
9139 ' p_item_id = '||p_item_id ||
9140 ' p_doc_type = '||p_doc_type ||
9141 ' p_trx_date = '||p_trx_date );
9142
9143 fnd_message.set_token('DEBUG_INFO',l_debug_info);
9144 END IF;
9145 app_exception.raise_exception;
9146
9147 END get_default_tax_det_attribs;
9148
9149
9150 PROCEDURE insert_tax_distributions(
9151 p_invoice_header_rec IN ap_invoices_all%ROWTYPE,
9152 p_inv_dist_rec IN r_ins_tax_dist_info,
9153 p_dist_code_combination_id IN NUMBER,
9154 p_user_id IN NUMBER,
9155 p_sysdate IN DATE,
9156 p_login_id IN NUMBER,
9157 p_calling_sequence IN VARCHAR2) IS
9158
9159 l_curr_calling_sequence VARCHAR2(2000);
9160 l_debug_info VARCHAR2(2000);
9161 l_api_name VARCHAR2(80);
9162
9163 -- Bug 7126676
9164 l_awt_success Varchar2(1000);
9165 l_invoice_distribution_id ap_invoice_distributions_all.invoice_distribution_id%TYPE;
9166 l_dist_line_num NUMBER; /*bug 10282701*/
9167 BEGIN
9168
9169 l_api_name := 'Insert_Tax_Distributions';
9170
9171 l_curr_calling_sequence := 'Insert_Tax_Distributions <- '||p_calling_sequence;
9172
9173 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9174 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'AP_ETAX_UTILITY_PKG.Insert_Tax_Distributions(+)');
9175 END IF;
9176
9177 l_debug_info := 'Step 11: Insert new distributions including variances';
9178
9179 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9180 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9181 END IF;
9182
9183 -- bug 7126676
9184 select ap_invoice_distributions_s.NEXTVAL into l_invoice_distribution_id from dual;
9185
9186 l_dist_line_num := AP_INVOICE_LINES_PKG.get_max_dist_line_num(
9187 p_inv_dist_rec.invoice_id,
9188 p_inv_dist_rec.invoice_line_number)+1; /*bug 10282701*/
9189
9190 INSERT INTO ap_invoice_distributions_all (
9191 accounting_date,
9192 accrual_posted_flag,
9193 assets_addition_flag,
9194 assets_tracking_flag,
9195 cash_posted_flag,
9196 distribution_line_number,
9197 dist_code_combination_id,
9198 invoice_id,
9199 last_updated_by,
9200 last_update_date,
9201 line_type_lookup_code,
9202 period_name,
9203 set_of_books_id,
9204 amount,
9205 base_amount,
9206 batch_id,
9207 created_by,
9208 creation_date,
9209 description,
9210 final_match_flag,
9211 income_tax_region,
9212 last_update_login,
9213 match_status_flag,
9214 posted_flag,
9215 po_distribution_id,
9216 program_application_id,
9217 program_id,
9218 program_update_date,
9219 quantity_invoiced,
9220 request_id,
9221 reversal_flag,
9222 type_1099,
9223 unit_price,
9224 encumbered_flag,
9225 stat_amount,
9226 attribute1,
9227 attribute10,
9228 attribute11,
9229 attribute12,
9230 attribute13,
9231 attribute14,
9232 attribute15,
9233 attribute2,
9234 attribute3,
9235 attribute4,
9236 attribute5,
9237 attribute6,
9238 attribute7,
9239 attribute8,
9240 attribute9,
9241 attribute_category,
9242 expenditure_item_date,
9243 expenditure_organization_id,
9244 expenditure_type,
9245 parent_invoice_id,
9246 pa_addition_flag,
9247 pa_quantity,
9248 prepay_amount_remaining,
9249 project_accounting_context,
9250 project_id,
9251 task_id,
9252 packet_id,
9253 awt_flag,
9254 awt_group_id,
9255 awt_tax_rate_id,
9256 awt_gross_amount,
9257 awt_invoice_id,
9258 awt_origin_group_id,
9259 reference_1,
9260 reference_2,
9261 org_id,
9262 awt_invoice_payment_id,
9263 global_attribute_category,
9264 global_attribute1,
9265 global_attribute2,
9266 global_attribute3,
9267 global_attribute4,
9268 global_attribute5,
9269 global_attribute6,
9270 global_attribute7,
9271 global_attribute8,
9272 global_attribute9,
9273 global_attribute10,
9274 global_attribute11,
9275 global_attribute12,
9276 global_attribute13,
9277 global_attribute14,
9278 global_attribute15,
9279 global_attribute16,
9280 global_attribute17,
9281 global_attribute18,
9282 global_attribute19,
9283 global_attribute20,
9284 receipt_verified_flag,
9285 receipt_required_flag,
9286 receipt_missing_flag,
9287 justification,
9288 expense_group,
9289 start_expense_date,
9290 end_expense_date,
9291 receipt_currency_code,
9292 receipt_conversion_rate,
9293 receipt_currency_amount,
9294 daily_amount,
9295 web_parameter_id,
9296 adjustment_reason,
9297 award_id,
9298 credit_card_trx_id,
9299 dist_match_type,
9300 rcv_transaction_id,
9301 invoice_distribution_id,
9302 parent_reversal_id,
9303 tax_recoverable_flag,
9304 merchant_document_number,
9305 merchant_name,
9306 merchant_reference,
9307 merchant_tax_reg_number,
9308 merchant_taxpayer_id,
9309 country_of_supply,
9310 matched_uom_lookup_code,
9311 gms_burdenable_raw_cost,
9312 accounting_event_id,
9313 prepay_distribution_id,
9314 upgrade_posted_amt,
9315 upgrade_base_posted_amt,
9316 inventory_transfer_status,
9317 company_prepaid_invoice_id,
9318 cc_reversal_flag,
9319 awt_withheld_amt,
9320 pa_cmt_xface_flag,
9321 cancellation_flag,
9322 invoice_line_number,
9323 corrected_invoice_dist_id,
9324 rounding_amt,
9325 charge_applicable_to_dist_id,
9326 corrected_quantity,
9327 related_id,
9328 asset_book_type_code,
9329 asset_category_id,
9330 distribution_class,
9331 tax_code_id,
9332 intended_use,
9333 detail_tax_dist_id,
9334 rec_nrec_rate,
9335 recovery_rate_id,
9336 recovery_rate_name,
9337 recovery_type_code,
9338 withholding_tax_code_id,
9339 taxable_amount,
9340 taxable_base_amount,
9341 tax_already_distributed_flag,
9342 summary_tax_line_id,
9343 extra_po_erv,
9344 prepay_tax_diff_amount,
9345 --Freight and Special Charges
9346 rcv_charge_addition_flag,
9347 pay_awt_group_id) --Bug8345264
9348 VALUES (
9349 p_inv_dist_rec.accounting_date, -- accounting_date
9350 'N', -- accrual_posted_flag
9351 'U', -- assets_addition_flag
9352 p_inv_dist_rec.par_dist_assets_tracking_flag, -- assets_tracking_flag -- Bug 13821160
9353 'N', -- cash_posted_flag
9354 l_dist_line_num, -- distribution_line_number /*bug 10282701*/
9355 P_dist_code_combination_id, -- dist_code_combination_id
9356 p_inv_dist_rec.invoice_id, -- invoice_id
9357 P_user_id, -- last_updated_by
9358 P_sysdate, -- last_update_date
9359 p_inv_dist_rec.line_type_lookup_code,
9360 -- line_type_lookup_code
9361 p_inv_dist_rec.period_name, -- period_name
9362 p_inv_dist_rec.set_of_books_id, -- set_of_books_id
9363 p_inv_dist_rec.amount, -- amount
9364 p_inv_dist_rec.base_amount, -- base_amount -- bug 10350068
9365 p_inv_dist_rec.batch_id, -- batch_id
9366 P_user_id, -- created_by
9367 P_sysdate, -- creation_date
9368 p_inv_dist_rec.description, -- description
9369 NULL, -- final_match_flag
9370 p_inv_dist_rec.income_tax_region, -- income_tax_region
9371 P_login_id, -- last_update_login
9372 NULL, -- match_status_flag
9373 'N', -- posted_flag
9374 p_inv_dist_rec.po_distribution_id, -- po_distribution_id
9375 NULL, -- program_application_id
9376 NULL, -- program_id
9377 NULL, -- program_update_date
9378 NULL, -- quantity_invoiced
9379 NULL, -- request_id
9380 'N', -- reversal_flag
9381 p_inv_dist_rec.type_1099, -- type_1099
9382 NULL, -- unit_price
9383 'N', -- encumbered_flag
9384 NULL, -- stat_amount
9385 p_inv_dist_rec.attribute1, -- attribute1
9386 p_inv_dist_rec.attribute10, -- attribute10
9387 p_inv_dist_rec.attribute11, -- attribute11,
9388 p_inv_dist_rec.attribute12, -- attribute12
9389 p_inv_dist_rec.attribute13, -- attribute13
9390 p_inv_dist_rec.attribute14, -- attribute14
9391 p_inv_dist_rec.attribute15, -- attribute15
9392 p_inv_dist_rec.attribute2, -- attribute2
9393 p_inv_dist_rec.attribute3, -- attribute3
9394 p_inv_dist_rec.attribute4, -- attribute4
9395 p_inv_dist_rec.attribute5, -- attribute5
9396 p_inv_dist_rec.attribute6, -- attribute6
9397 p_inv_dist_rec.attribute7, -- attribute7
9398 p_inv_dist_rec.attribute8, -- attribute8
9399 p_inv_dist_rec.attribute9, -- attribute9
9400 p_inv_dist_rec.attribute_category, -- attribute_category
9401 p_inv_dist_rec.expenditure_item_date,
9402 -- expenditure_item_date
9403 p_inv_dist_rec.expenditure_organization_id,
9404 -- expenditure_organization_id
9405 p_inv_dist_rec.expenditure_type, -- expenditure_type
9406 p_inv_dist_rec.parent_invoice_id, -- parent_invoice_id
9407 p_inv_dist_rec.pa_addition_flag, -- pa_addition_flag
9408 p_inv_dist_rec.pa_quantity, -- pa_quantity
9409 NULL, -- prepay_amount_remaining
9410 -- the prepay_amount_remaining will be populated for all the
9411 -- prepayment distributions during the payment. And later will be
9412 -- updated during the prepayment applications
9413 p_inv_dist_rec.project_accounting_context,
9414 -- project_accounting_context
9415 p_inv_dist_rec.project_id, -- project_id
9416 p_inv_dist_rec.task_id, -- task_id
9417 NULL, -- packet_id
9418 'N', -- awt_flag
9419 p_inv_dist_rec.awt_group_id, -- awt_group_id
9420 NULL, -- awt_tax_rate_id
9421 NULL, -- awt_gross_amount
9422 NULL, -- awt_invoice_id
9423 NULL, -- awt_origin_group_id
9424 NULL, -- reference_1
9425 NULL, -- reference_2
9426 p_inv_dist_rec.org_id, -- org_id
9427 NULL, -- awt_invoice_payment_id
9428 p_inv_dist_rec.global_attribute_category,
9429 -- global_attribute_category
9430 p_inv_dist_rec.global_attribute1, -- global_attribute1
9431 p_inv_dist_rec.global_attribute2, -- global_attribute2
9432 p_inv_dist_rec.global_attribute3, -- global_attribute3
9433 p_inv_dist_rec.global_attribute4, -- global_attribute4
9434 p_inv_dist_rec.global_attribute5, -- global_attribute5
9435 p_inv_dist_rec.global_attribute6, -- global_attribute6
9436 p_inv_dist_rec.global_attribute7, -- global_attribute7
9437 p_inv_dist_rec.global_attribute8, -- global_attribute8
9438 p_inv_dist_rec.global_attribute9, -- global_attribute9
9439 p_inv_dist_rec.global_attribute10, -- global_attribute10
9440 p_inv_dist_rec.global_attribute11, -- global_attribute11
9441 p_inv_dist_rec.global_attribute12, -- global_attribute12
9442 p_inv_dist_rec.global_attribute13, -- global_attribute13
9443 p_inv_dist_rec.global_attribute14, -- global_attribute14
9444 p_inv_dist_rec.global_attribute15, -- global_attribute15
9445 p_inv_dist_rec.global_attribute16, -- global_attribute16
9446 p_inv_dist_rec.global_attribute17, -- global_attribute17
9447 p_inv_dist_rec.global_attribute18, -- global_attribute18
9448 p_inv_dist_rec.global_attribute19, -- global_attribute19
9449 p_inv_dist_rec.global_attribute20, -- global_attribute20
9450 NULL, -- receipt_verified_flag
9451 NULL, -- receipt_required_flag
9452 NULL, -- receipt_missing_flag
9453 NULL, -- justification
9454 NULL, -- expense_group
9455 NULL, -- start_expense_date
9456 NULL, -- end_expense_date
9457 NULL, -- receipt_currency_code
9458 NULL, -- receipt_conversion_rate
9459 NULL, -- receipt_currency_amount
9460 NULL, -- daily_amount
9461 NULL, -- web_parameter_id
9462 NULL, -- adjustment_reason
9463 p_inv_dist_rec.award_id, -- award_id
9464 NULL, -- credit_card_trx_id
9465 p_inv_dist_rec.dist_match_type, -- dist_match_type
9466 p_inv_dist_rec.rcv_transaction_id, -- rcv_transaction_id
9467 l_invoice_distribution_id, -- invoice_distribution_id
9468 NULL, -- parent_reversal_id
9469 p_inv_dist_rec.tax_recoverable_flag,
9470 -- tax_recoverable_flag
9471 p_inv_dist_rec.merchant_document_number, -- merchant_document_number --Bug14658408: Start
9472 p_inv_dist_rec.merchant_name, -- merchant_name
9473 p_inv_dist_rec.merchant_reference, -- merchant_reference
9474 p_inv_dist_rec.merchant_tax_reg_number, -- merchant_tax_reg_number
9475 p_inv_dist_rec.merchant_taxpayer_id, -- merchant_taxpayer_id --Bug14658408: End
9476 NULL, -- country_of_supply
9477 NULL, -- matched_uom_lookup_code
9478 NULL, -- gms_burdenable_raw_cost
9479 NULL, -- accounting_event_id
9480 p_inv_dist_rec.prepay_distribution_id, -- prepay_distribution_id
9481 NULL, -- upgrade_posted_amt
9482 NULL, -- upgrade_base_posted_amt
9483 'N', -- inventory_transfer_status
9484 NULL, -- company_prepaid_invoice_id
9485 NULL, -- cc_reversal_flag
9486 NULL, -- awt_withheld_amt
9487 NULL, -- pa_cmt_xface_flag
9488 p_inv_dist_rec.cancellation_flag, -- cancellation_flag
9489 p_inv_dist_rec.invoice_line_number,-- invoice_line_number
9490 p_inv_dist_rec.corrected_invoice_dist_id,
9491 -- corrected_invoice_dist_id
9492 p_inv_dist_rec.rounding_amt, -- rounding_amt
9493 p_inv_dist_rec.charge_applicable_to_dist_id,
9494 -- charge_applicable_to_dist_id
9495 NULL, -- corrected_quantity
9496 NULL, -- related_id
9497 NULL, -- asset_book_type_code
9498 NULL, -- asset_category_id
9499 p_inv_dist_rec.distribution_class, -- distribution_class
9500 p_inv_dist_rec.tax_code_id, -- tax_code_id
9501 NULL, -- intended_use,
9502 p_inv_dist_rec.detail_tax_dist_id, -- detail_tax_dist_id
9503 p_inv_dist_rec.rec_nrec_rate, -- rec_nrec_rate
9504 p_inv_dist_rec.recovery_rate_id, -- recovery_rate_id
9505 p_inv_dist_rec.recovery_rate_name, -- recovery_rate_name
9506 p_inv_dist_rec.recovery_type_code, -- recovery_type_code
9507 NULL, -- withholding_tax_code_id,
9508 p_inv_dist_rec.taxable_amount, -- taxable_amount
9509 p_inv_dist_rec.taxable_base_amount, -- taxable_base_amount
9510 NULL, -- tax_already_distributed_flag
9511 p_inv_dist_rec.summary_tax_line_id, -- summary_tax_line_id
9512 p_inv_dist_rec.extra_po_erv, -- extra_po_erv
9513 p_inv_dist_rec.prepay_tax_diff_amount, -- prepay_tax_diff_amount
9514 'N', -- rcv_charge_addition_flag
9515 p_inv_dist_rec.pay_awt_group_id --pay_awt_group_id Bug8345264
9516 );
9517
9518 /* bug 10282701 Begins*/
9519
9520 IF (TAX_ONLY_LINE_EXIST(p_inv_dist_rec.invoice_id) and
9521 p_inv_dist_rec.award_id is not NULL) THEN
9522
9523 l_debug_info := 'Call the gms_ap_api.CREATE_AWARD_DISTRIBUTIONS from insert_tax_distributions';
9524 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9525 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9526 END IF;
9527
9528 gms_ap_api.CREATE_AWARD_DISTRIBUTIONS(p_inv_dist_rec.invoice_id,
9529 l_dist_line_num,
9530 l_invoice_distribution_id,
9531 p_inv_dist_rec.award_id,
9532 'AP',
9533 NULL,
9534 NULL);
9535
9536 l_debug_info := 'Return from gms_ap_api.CREATE_AWARD_DISTRIBUTIONS to insert_tax_distributions';
9537 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9538 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9539 END IF;
9540
9541 END IF;
9542 /* bug 10282701 Ends*/
9543
9544 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9545 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'AP_ETAX_UTILITY_PKG.Insert_Tax_Distributions(-)');
9546 END IF;
9547
9548 -- Following code was introduce because of bug 7126676
9549 -- This code will generate withholding applicability for
9550 -- tax lines for JL Exteneded withholdings
9551 IF (AP_EXTENDED_WITHHOLDING_PKG.AP_EXTENDED_WITHHOLDING_ACTIVE) THEN
9552
9553 l_debug_info := 'Call the Ap_Ext_Withholding_Default from match';
9554 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9555 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9556 END IF;
9557
9558 Ap_Extended_Withholding_Pkg.Ap_Ext_Withholding_Default
9559 (p_invoice_id => p_inv_dist_rec.invoice_id,
9560 p_inv_line_num => p_inv_dist_rec.invoice_line_number,
9561 p_inv_dist_id => l_invoice_distribution_id,
9562 p_calling_module => l_curr_calling_sequence,
9563 p_parent_dist_id => NULL,
9564 p_awt_success => l_awt_success);
9565
9566 IF (l_awt_success <> 'SUCCESS') THEN
9567 RAISE Global_Exception;
9568 END IF;
9569
9570 END IF;
9571
9572 EXCEPTION
9573 WHEN OTHERS THEN
9574 IF (SQLCODE <> -20001) THEN
9575 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
9576 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
9577 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
9578 FND_MESSAGE.SET_TOKEN('PARAMETERS',
9579 ' P_Invoice_Id = '||P_Invoice_Header_Rec.invoice_id||
9580 ' P_Calling_Sequence = '||P_Calling_Sequence);
9581 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
9582 END IF;
9583
9584 IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
9585 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
9586 END IF;
9587
9588 APP_EXCEPTION.RAISE_EXCEPTION;
9589 END;
9590
9591
9592 -- Bug 4887847: Added function Get_Line_Class to populate a new attribute that
9593 -- is required for tax calculation and reporting purposes.
9594
9595 /*=============================================================================
9596 | FUNCTION - Get_Line_Class()
9597 |
9598 | DESCRIPTION
9599 | This function will return the line class based on the invoice document type
9600 | invoice line type and matching information.
9601 |
9602 *============================================================================*/
9603
9604 FUNCTION Get_Line_Class(
9605 P_Invoice_Type_Lookup_Code IN VARCHAR2,
9606 P_Inv_Line_Type IN VARCHAR2,
9607 P_Line_Location_Id IN NUMBER,
9608 P_Line_Class OUT NOCOPY VARCHAR2,
9609 P_Error_Code OUT NOCOPY VARCHAR2,
9610 P_Calling_Sequence IN VARCHAR2) RETURN BOOLEAN
9611 IS
9612 l_matching_basis po_line_locations_ap_v.matching_basis%type;
9613 l_payment_type po_line_locations_ap_v.payment_type%type;
9614 l_shipment_type po_line_locations_ap_v.shipment_type%type;
9615
9616 l_debug_info VARCHAR2(240);
9617 l_curr_calling_sequence VARCHAR2(4000);
9618 l_api_name CONSTANT VARCHAR2(100) := 'Get_Line_Class';
9619
9620 BEGIN
9621
9622 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Line_Class_Code<-' ||
9623 P_calling_sequence;
9624
9625 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9626 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
9627 END IF;
9628
9629 IF (P_Invoice_Type_Lookup_Code IN ('STANDARD','MIXED','ADJUSTMENT',
9630 'PO PRICE ADJUST','INVOICE REQUEST')) THEN
9631
9632 P_Line_Class := 'STANDARD INVOICES';
9633
9634 ELSIF (P_Invoice_Type_Lookup_Code IN ('CREDIT', 'CREDIT MEMO REQUEST')) THEN
9635
9636 P_Line_Class := 'AP_CREDIT_MEMO';
9637
9638 ELSIF (P_Invoice_Type_Lookup_Code = 'DEBIT') THEN
9639
9640 P_Line_Class := 'AP_DEBIT_MEMO';
9641
9642 ELSIF (P_Invoice_Type_Lookup_Code IN ('PREPAYMENT')) THEN
9643
9644 P_Line_Class := 'PREPAYMENT INVOICES';
9645
9646 ELSIF (P_Invoice_Type_Lookup_Code IN ('EXPENSE REPORT')) THEN
9647
9648 P_Line_Class := 'EXPENSE REPORTS';
9649
9650 END IF;
9651
9652 IF P_Inv_Line_Type = 'PREPAY' THEN
9653
9654 P_Line_Class := 'PREPAY_APPLICATION';
9655
9656 END IF;
9657
9658 IF (P_Line_Location_Id IS NOT NULL AND
9659 P_Inv_Line_Type NOT IN ('MISCELLANEOUS','FREIGHT') ) THEN --Bug14039130
9660
9661 SELECT matching_basis, payment_type, shipment_type
9662 INTO l_matching_basis, l_payment_type, l_shipment_type
9663 FROM po_line_locations_all
9664 WHERE line_location_id = P_Line_Location_Id;
9665
9666 IF l_matching_basis = 'AMOUNT' THEN
9667
9668 P_Line_Class := 'AMOUNT_MATCHED';
9669
9670 END IF;
9671
9672 IF l_shipment_type = 'PREPAYMENT' THEN
9673
9674 IF l_payment_type = 'ADVANCE' THEN
9675
9676 P_Line_Class := 'ADVANCE';
9677
9678 ELSIF l_payment_type IN ('MILESTONE', 'RATE', 'LUMPSUM') THEN
9679
9680 P_Line_Class := 'FINANCING';
9681
9682 END IF;
9683 END IF;
9684
9685 END IF;
9686
9687 l_debug_info := 'Line Class '||P_Line_Class;
9688
9689 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9690 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9691 END IF;
9692
9693 RETURN (TRUE);
9694
9695 EXCEPTION
9696 WHEN OTHERS THEN
9697 IF (SQLCODE <> -20001) THEN
9698 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
9699 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
9700 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
9701 FND_MESSAGE.SET_TOKEN('PARAMETERS',
9702 ' P_Invoice_Type_Lookup_Code = '||P_Invoice_Type_Lookup_Code||
9703 ' P_Error_Code = '||P_Error_Code||
9704 ' P_Calling_Sequence = '||P_Calling_Sequence);
9705 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
9706 END IF;
9707
9708 APP_EXCEPTION.RAISE_EXCEPTION;
9709
9710 END Get_Line_Class;
9711
9712 FUNCTION Is_Tax_Already_Dist_Inv_Char(
9713 P_Invoice_Id IN NUMBER,
9714 P_Calling_Sequence IN VARCHAR2) RETURN VARCHAR2
9715 IS
9716
9717 l_debug_info VARCHAR2(240);
9718 l_curr_calling_sequence VARCHAR2(4000);
9719 l_tax_already_distributed_flag VARCHAR2(1) := 'N';
9720 l_api_name CONSTANT VARCHAR2(100) := 'Is_Tax_Already_Dist_Inv_Char';
9721
9722 -- Modified this select to include the TAX only case
9723 CURSOR etax_already_distributed IS
9724 SELECT 'Y'
9725 FROM ap_invoice_distributions_all
9726 WHERE invoice_id = p_invoice_id
9727 AND line_type_lookup_code <> 'AWT'
9728 AND (tax_already_distributed_flag = 'Y'
9729 OR detail_tax_dist_id IS NOT NULL)
9730 AND (related_id IS NULL
9731 OR related_id = invoice_distribution_id)
9732 AND ROWNUM = 1;
9733
9734 BEGIN
9735
9736 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Is_Tax_Already_Dist_Inv<-'||
9737 P_calling_sequence;
9738
9739 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9740 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
9741 END IF;
9742
9743 -------------------------------------------------------------------
9744 l_debug_info := 'Step 1: Get tax_already_Distributed_flag for any '||
9745 'taxable line in the invoice';
9746 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9747 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9748 END IF;
9749 -------------------------------------------------------------------
9750 OPEN etax_already_distributed;
9751 FETCH etax_already_distributed INTO l_tax_already_distributed_flag;
9752 IF (etax_already_distributed%NOTFOUND) THEN
9753 CLOSE etax_already_distributed;
9754 l_tax_already_distributed_flag := 'N';
9755
9756 END IF;
9757
9758 IF (etax_already_distributed%ISOPEN ) THEN
9759 CLOSE etax_already_distributed;
9760 END IF;
9761
9762 -------------------------------------------------------------------
9763 l_debug_info := 'Step 1.1: Tax_already_Distributed_flag '||l_tax_already_distributed_flag;
9764 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9765 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9766 END IF;
9767 -------------------------------------------------------------------
9768
9769 RETURN l_tax_already_distributed_flag;
9770
9771 EXCEPTION
9772 WHEN OTHERS THEN
9773 IF (SQLCODE <> -20001) THEN
9774 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
9775 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
9776 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
9777 FND_MESSAGE.SET_TOKEN('PARAMETERS',
9778 ' P_Invoice_Id = '||P_Invoice_Id||
9779 ' P_Calling_Sequence = '||P_Calling_Sequence);
9780 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
9781 END IF;
9782
9783 IF (etax_already_distributed%ISOPEN ) THEN
9784 CLOSE etax_already_distributed;
9785 END IF;
9786
9787 APP_EXCEPTION.RAISE_EXCEPTION;
9788
9789 END Is_Tax_Already_Dist_Inv_Char;
9790
9791 FUNCTION Get_Converted_Price (x_invoice_distribution_id IN NUMBER)
9792 RETURN NUMBER
9793 IS
9794 CURSOR c_rct_info (c_inv_dist_id NUMBER) IS
9795 SELECT D.unit_price unit_price,
9796 pll.matching_basis match_basis,
9797 pll.match_option match_option,
9798 pl.unit_meas_lookup_code po_uom,
9799 D.matched_uom_lookup_code rcv_uom,
9800 rsl.item_id rcv_item_id
9801 FROM ap_invoice_distributions_all D,
9802 po_distributions_all PD,
9803 po_lines_all PL,
9804 po_line_locations_all PLL,
9805 rcv_transactions RTXN,
9806 rcv_shipment_lines RSL
9807 WHERE D.invoice_distribution_id = c_inv_dist_id
9808 AND D.po_distribution_id = PD.po_distribution_id
9809 AND PL.po_header_id = PD.po_header_id
9810 AND PL.po_line_id = PD.po_line_id
9811 AND PD.line_location_id = PLL.line_location_id
9812 AND D.rcv_transaction_id = RTXN.transaction_id
9813 AND RTXN.shipment_line_id = RSL.shipment_line_id;
9814
9815 l_match_basis po_line_types.matching_basis%TYPE;
9816 l_match_option po_line_locations.match_option%TYPE;
9817 l_po_uom po_line_locations.unit_meas_lookup_code%TYPE;
9818 l_rct_uom po_line_locations.unit_meas_lookup_code%TYPE;
9819 l_rct_item_id rcv_shipment_lines.item_id%TYPE;
9820 l_api_name CONSTANT VARCHAR2(100) := 'Get_Converted_Price';
9821 l_debug_info VARCHAR2(240);
9822
9823 l_uom_conv_rate NUMBER;
9824 l_inv_price NUMBER;
9825 Begin
9826
9827 OPEN c_rct_info (x_invoice_distribution_id);
9828 FETCH c_rct_info
9829 INTO l_inv_price, l_match_basis, l_match_option, l_po_uom, l_rct_uom, l_rct_item_id;
9830 CLOSE c_rct_info;
9831
9832 IF l_match_basis = 'QUANTITY' and
9833 l_match_option = 'R' and
9834 l_po_uom <> l_rct_uom THEN
9835
9836 l_uom_conv_rate := po_uom_s.po_uom_convert (
9837 l_rct_uom,
9838 l_po_uom,
9839 l_rct_item_id);
9840
9841
9842 l_debug_info := 'Step 1 : Get Coverted Price '||
9843 ' l_uom_conv_rate '||l_uom_conv_rate||
9844 ' l_inv_price '||l_inv_price;
9845
9846 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9847 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9848 END IF;
9849
9850 l_inv_price := l_inv_price / l_uom_conv_rate;
9851
9852 l_debug_info := 'Step 1.1 : Coverted Price '||
9853 ' l_inv_price '||l_inv_price;
9854
9855 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9856 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9857 END IF;
9858
9859
9860 END IF;
9861
9862 RETURN l_inv_price;
9863
9864 EXCEPTION
9865 WHEN OTHERS THEN
9866 NULL;
9867 END Get_Converted_Price;
9868
9869 FUNCTION Get_Max_Dist_Num_Self(
9870 X_invoice_id IN NUMBER,
9871 X_line_number IN NUMBER) RETURN NUMBER
9872 IS
9873 l_max_dist_line_num NUMBER := 0;
9874 BEGIN
9875
9876 SELECT nvl(max(distribution_line_number),0)
9877 INTO l_max_dist_line_num
9878 FROM ap_self_assessed_tax_dist_all
9879 WHERE invoice_id = X_invoice_id
9880 AND invoice_line_number = X_line_number;
9881
9882 RETURN(l_max_dist_line_num);
9883
9884 END Get_Max_Dist_Num_Self;
9885
9886 /*=============================================================================
9887 | FUNCTION - Get_Prepay_Pay_Awt_Group_Id()
9888 |
9889 | DESCRIPTION
9890 | This function return the pay_awt_group_id for a parent prepay item line
9891 | based on the prepayment distribution id.
9892 | Added for bug8345264
9893 |
9894 | PARAMETERS
9895 | P_Prepay_Distribution_id - Distribution Id of the prepayment
9896 |
9897 | MODIFICATION HISTORY
9898 | DATE Author Action
9899 | 30-MAR-2009 ASANSARI Created
9900 |
9901 *============================================================================*/
9902 FUNCTION Get_Prepay_Pay_Awt_Group_Id(
9903 P_Prepay_Distribution_id IN NUMBER,
9904 P_Calling_Sequence IN VARCHAR2) RETURN NUMBER
9905 IS
9906
9907 l_debug_info VARCHAR2(240);
9908 l_curr_calling_sequence VARCHAR2(4000);
9909 l_api_name CONSTANT VARCHAR2(100) := 'Get_Prepay_Pay_Awt_Group_Id';
9910
9911 CURSOR prepay_pay_awt_group_id (c_prepay_dist_id IN NUMBER) IS
9912 SELECT aid.pay_awt_group_id
9913 FROM ap_invoice_distributions_all aid
9914 WHERE aid.invoice_distribution_id = c_prepay_dist_id;
9915
9916 l_pay_awt_group_id ap_invoice_distributions_all.pay_awt_group_id%TYPE;
9917
9918 BEGIN
9919
9920 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Prepay_Pay_Awt_Group_Id<-'||
9921 P_calling_sequence;
9922
9923 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9924 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
9925 END IF;
9926
9927 -------------------------------------------------------------------
9928 l_debug_info := 'Step 1: Get awt_group_id from prepay item line';
9929
9930 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9931 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9932 END IF;
9933 -------------------------------------------------------------------
9934 OPEN prepay_pay_awt_group_id( P_Prepay_Distribution_id);
9935 FETCH prepay_pay_awt_group_id
9936 INTO l_pay_awt_group_id;
9937 CLOSE prepay_pay_awt_group_id;
9938
9939 -------------------------------------------------------------------
9940 l_debug_info := 'Awt_group_id from prepay item line '||l_pay_awt_group_id;
9941
9942 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9943 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
9944 END IF;
9945 -------------------------------------------------------------------
9946
9947 RETURN l_pay_awt_group_id;
9948
9949 EXCEPTION
9950 WHEN OTHERS THEN
9951 IF (SQLCODE <> -20001) THEN
9952 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
9953 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
9954 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
9955 FND_MESSAGE.SET_TOKEN('PARAMETERS',
9956 ' P_Prepay_Distribution_id = '||P_Prepay_Distribution_id||
9957 ' P_Calling_Sequence = '||P_Calling_Sequence);
9958 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
9959 END IF;
9960
9961 IF ( prepay_pay_awt_group_id%ISOPEN ) THEN
9962 CLOSE prepay_pay_awt_group_id;
9963 END IF;
9964
9965 APP_EXCEPTION.RAISE_EXCEPTION;
9966 END Get_Prepay_Pay_Awt_Group_Id;
9967
9968 /*=============================================================================
9969 | FUNCTION - Is_Inclusive_Flag_Updatable()
9970 |
9971 | DESCRIPTION
9972 | This function is called by Ebtax to make the Inclusive Check Box
9973 | on Detail Tax Window editable based on return status by this
9974 | function.Added for ER 6772098
9975 | RETURN TRUE : Allow To Override Inclusive Checkbox
9976 | RETURN FALUSE : Don't Allow To Override Inclusive Checkbox
9977 |
9978 |
9979 | PARAMETERS
9980 | p_invoice_id - Invoice Id of the Invoice open on workbench
9981 | p_line_number - Invoice Line Number of Non Tax Line for which
9982 | Detail Tax line is being overriden
9983 | (Inclusive Check Box)
9984 |
9985 | MODIFICATION HISTORY
9986 | DATE Author Action
9987 | 31-JUL-2009 hchaudha Created
9988 |
9989 *============================================================================*/
9990
9991 FUNCTION Is_Inclusive_Flag_Updatable(
9992 p_invoice_id IN NUMBER,
9993 p_line_number IN NUMBER,
9994 p_error_code IN OUT NOCOPY VARCHAR2,
9995 p_calling_sequence IN VARCHAR2)
9996 RETURN BOOLEAN IS
9997 l_Posted_count NUMBER :=0;
9998 l_Encumbered_count NUMBER :=0;
9999 l_Prepay_line_count NUMBER :=0;
10000 l_Prepay_dist_count NUMBER :=0;
10001 l_Payment_Stat_Flag NUMBER :=0;
10002 l_Hist_Flag VARCHAR2(1);
10003 l_Awt_Computed VARCHAR2(1);
10004 l_quick_credit VARCHAR2(1);
10005 l_Awt_line_count NUMBER :=0;
10006 l_manual_Awt_line NUMBER :=0; --Bug8920386
10007 l_Invoice_Type VARCHAR2(20);
10008 l_Po_Dist_id_count NUMBER :=0;
10009 l_Po_line_num_count NUMBER :=0;
10010 l_corr_inv_count NUMBER :=0;
10011 l_curr_calling_sequence VARCHAR2(4000);
10012 l_debug_info VARCHAR2(4000);
10013 l_api_name CONSTANT VARCHAR2(100):='IS_INCLUSIVE_FLAG_UPDATABLE';
10014 BEGIN
10015
10016 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Is_Inclusive_Flag_Updatable<-'||
10017 P_calling_sequence;
10018
10019
10020 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10021 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
10022 END IF;
10023 -------------------------------------------------------------------
10024 l_debug_info := 'Step 0: Invoice Id and Invoice Line Number '||p_invoice_id||' '||p_line_number;
10025 -------------------------------------------------------------------
10026 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10027 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
10028 END IF;
10029
10030 --1 Posted Dist
10031 -------------------------------------------------------------------
10032 l_debug_info := 'Step 1: Check Posted Distributions Count ';
10033 -------------------------------------------------------------------
10034 SELECT COUNT(posted_flag)
10035 INTO l_Posted_count
10036 FROM ap_invoice_distributions_all
10037 WHERE invoice_id = p_invoice_id
10038 AND invoice_line_number = p_line_number
10039 AND NVL(posted_flag,'N') = 'Y';
10040
10041 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10042 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Posted_count);
10043 END IF;
10044
10045 IF l_Posted_count > 0 THEN
10046 RETURN FALSE;
10047 END IF;
10048
10049 --2 Prepayment Applied
10050 -------------------------------------------------------------------
10051 l_debug_info := 'Step 2: Check Prepayment Applied ';
10052 -------------------------------------------------------------------
10053 SELECT count(line_number)
10054 INTO l_Prepay_line_count
10055 FROM ap_invoice_lines_all
10056 WHERE invoice_id = p_invoice_id
10057 AND line_type_lookup_code ='PREPAY'
10058 AND (NVL(discarded_flag,'N') <> 'Y');
10059
10060 IF l_Prepay_line_count = 0 THEN
10061 SELECT count(prepay_distribution_id)
10062 INTO l_Prepay_dist_count
10063 FROM ap_invoice_distributions_all
10064 WHERE invoice_id = p_invoice_id
10065 AND prepay_distribution_id IS NOT NULL
10066 AND (NVL(reversal_flag,'N') <> 'Y');
10067 END IF;
10068
10069 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10070 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Prepay_line_count||' '||l_Prepay_dist_count);
10071 END IF;
10072
10073 IF l_Prepay_line_count > 0 OR l_Prepay_dist_count > 0 THEN
10074 RETURN FALSE;
10075 END IF;
10076
10077
10078
10079 --3,4,5,6,7 Paid/Upgraded/AWT Calculated/Quick Credit/Expense Report/
10080 --Applied Credit and Debit Memo
10081 ----------------------------------------------------------------------------
10082 l_debug_info := 'Step 3-7: Check Paid/Upgraded/AWT Calculated/Quick Credit/';
10083 l_debug_info := l_debug_info||' Expense Report/ Applied Credit and';
10084 l_debug_info := l_debug_info||' Debit Memo';
10085 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10086 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
10087 END IF;
10088 ----------------------------------------------------------------------------
10089 SELECT Historical_flag,
10090 Awt_Flag,
10091 quick_credit,
10092 Invoice_type_lookup_code
10093 INTO l_Hist_Flag,
10094 l_Awt_Computed,
10095 l_quick_credit,
10096 l_Invoice_Type
10097 FROM ap_invoices_all
10098 WHERE invoice_id = p_invoice_id;
10099
10100 SELECT count(invoice_id)
10101 INTO l_Payment_Stat_Flag
10102 FROM ap_invoice_payments_all
10103 WHERE invoice_id = p_invoice_id
10104 AND NVL(reversal_flag,'N') <> 'Y';
10105
10106 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10107 l_debug_info :='Step 3 : Check Payment Status ';
10108 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Payment_Stat_Flag);
10109 l_debug_info :='Step 4 : Check Upgraded Status ';
10110 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Hist_Flag);
10111 l_debug_info :='Step 5 : Check AWT Computed ';
10112 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Awt_Computed);
10113 l_debug_info :='Step 6 : Check Quick Credit Invoice ';
10114 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_quick_credit);
10115 l_debug_info :='Step 7 : Check Invoice Type ';
10116 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Invoice_Type);
10117 END IF;
10118
10119 IF l_Payment_Stat_Flag > 0 OR
10120 NVL(l_Hist_Flag,'N') = 'Y' OR
10121 --NVL(l_Awt_Computed,'N') = 'Y' OR
10122 NVL(l_quick_credit,'N') ='Y' OR
10123 NVL(l_Invoice_Type,'A') = 'EXPENSE REPORT' THEN
10124 RETURN FALSE;
10125 END IF;
10126
10127 IF NVL(l_Invoice_Type,'A') IN ('DEBIT','CREDIT') THEN
10128 SELECT COUNT(CORRECTED_INV_ID)
10129 INTO l_corr_inv_count
10130 FROM ap_invoice_lines_all
10131 WHERE invoice_id = p_invoice_id
10132 AND CORRECTED_INV_ID IS NOT NULL
10133 AND (NVL(discarded_flag,'N') <> 'Y');
10134
10135 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10136 l_debug_info :='Step 6.1 : Check Applied Debit/Credit Memo Count ';
10137 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_corr_inv_count);
10138 END IF;
10139
10140 IF l_corr_inv_count > 0 THEN
10141 RETURN FALSE;
10142 END IF;
10143
10144 END IF;
10145
10146 --Step 5.1 : Better Way To Check AWT Computation
10147 --Bug8920386
10148
10149 SELECT count(line_number)
10150 INTO l_manual_Awt_line
10151 FROM ap_invoice_lines_all ail
10152 WHERE invoice_id = p_invoice_id
10153 AND line_type_lookup_code ='AWT'
10154 AND (NVL(discarded_flag,'N') <> 'Y')
10155 AND line_source = 'MANUAL LINE ENTRY'
10156 AND NOT EXISTS (SELECT 1
10157 FROM ap_invoice_distributions_all aid
10158 WHERE ail.invoice_id = aid.invoice_id
10159 AND ail.line_number = aid.invoice_line_number);
10160 SELECT COUNT(1)
10161 INTO l_Awt_line_count
10162 FROM ap_invoice_distributions_all aid
10163 WHERE aid.invoice_id = p_invoice_id
10164 AND NVL(aid.reversal_flag,'N') <> 'Y'
10165 AND aid.line_type_lookup_code = 'AWT'
10166 AND aid.awt_related_id IN
10167 (SELECT aid1.invoice_distribution_id
10168 FROM ap_invoice_distributions_all aid1
10169 WHERE aid1.invoice_id = aid.invoice_id
10170 AND aid1.invoice_line_number = p_line_number
10171 AND aid1.line_type_lookup_code <> 'AWT');
10172
10173
10174 l_debug_info :='Step 5.1 : Check Non Discarded AWT lines, Non Prorated Manual AWT Lines ';
10175 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10176 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Awt_line_count ||' '||l_manual_Awt_line );
10177 END IF;
10178
10179 IF l_Awt_line_count > 0 OR l_manual_Awt_line > 0 THEN
10180 RETURN FALSE;
10181 END IF;
10182
10183 --Bug8920386
10184
10185
10186 --8 Encumbered Dist
10187 -------------------------------------------------------------------
10188 l_debug_info := 'Step 7: Check Encumbered Distributions Count ';
10189 -------------------------------------------------------------------
10190 SELECT COUNT(1)
10191 INTO l_Encumbered_count
10192 FROM ap_invoice_distributions_all
10193 WHERE invoice_id = p_invoice_id
10194 AND invoice_line_number = p_line_number
10195 AND NVL(encumbered_flag,'N') = 'Y';
10196
10197 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10198 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Encumbered_count);
10199 END IF;
10200
10201 IF l_Encumbered_count > 0 THEN
10202 RETURN FALSE;
10203 END IF;
10204
10205 --9 PO Matched Dist
10206 -------------------------------------------------------------------
10207 l_debug_info := 'Step 8: Check PO Matched Distributions Count ';
10208 -------------------------------------------------------------------
10209 SELECT COUNT(po_distribution_id)
10210 INTO l_Po_Dist_id_count
10211 FROM ap_invoice_distributions_all
10212 WHERE invoice_id = p_invoice_id
10213 AND invoice_line_number = p_line_number
10214 AND po_distribution_id IS NOT NULL;
10215
10216 IF l_Po_Dist_id_count = 0 THEN
10217 SELECT COUNT(po_header_id)
10218 INTO l_Po_line_num_count
10219 FROM ap_invoice_lines_all
10220 WHERE invoice_id = p_invoice_id
10221 AND line_number = p_line_number
10222 AND po_header_id IS NOT NULL;
10223 END IF;
10224
10225
10226 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10227 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_Po_Dist_id_count);
10228 END IF;
10229
10230 IF l_Po_Dist_id_count > 0 OR l_Po_line_num_count > 0 THEN
10231 RETURN FALSE;
10232 END IF;
10233
10234 RETURN TRUE;
10235 EXCEPTION
10236 WHEN OTHERS THEN
10237 IF (SQLCODE <> -20001) THEN
10238 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
10239 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
10240 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
10241 FND_MESSAGE.SET_TOKEN('PARAMETERS',
10242 ' p_invoice_id = '||p_invoice_id||
10243 ' p_line_number = '||p_line_number);
10244 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
10245 p_error_code:=SQLCODE;
10246 RETURN FALSE;
10247 END IF;
10248 END;
10249
10250 /*=============================================================================
10251 | FUNCTION - Is_Incl_Tax_Driver_Updatable()
10252 |
10253 | DESCRIPTION
10254 | Called from : AP_ETAX_SERVICES_PKG.Populate_Lines_GT()
10255 | APINLIN.pld
10256 | APXINWKB.fmb
10257 | RETURN TRUE : Allow To Override Tax drivers
10258 | RETURN FALUSE : Don't Allow To Override Tax drivers
10259 |
10260 |
10261 | PARAMETERS
10262 | p_invoice_id - Invoice Id of the Invoice
10263 | p_line_number - Invoice Line Number
10264 |
10265 | MODIFICATION HISTORY
10266 | DATE Author Bug Action
10267 | 02-Feb-2010 ANARUN 9068689 Created
10268 |
10269 ============================================================================*/
10270
10271 FUNCTION Is_Incl_Tax_Driver_Updatable(
10272 p_invoice_id IN NUMBER,
10273 p_line_number IN NUMBER,
10274 p_calling_sequence IN VARCHAR2 )
10275 RETURN BOOLEAN IS
10276 l_allow_update NUMBER ;
10277 l_curr_calling_sequence VARCHAR2(4000);
10278 l_debug_info VARCHAR2(4000);
10279 l_api_name CONSTANT VARCHAR2(100):='Is_Inclusive_Tax_Driver_Updatable';
10280 BEGIN
10281
10282 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Is_Incl_Tax_Driver_Updatable<-'||
10283 P_calling_sequence;
10284
10285
10286 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10287 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
10288 END IF;
10289 -------------------------------------------------------------------
10290 l_debug_info := 'Step 0: Invoice Id and Invoice Line Number '||p_invoice_id||' '||p_line_number;
10291 -------------------------------------------------------------------
10292 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10293 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
10294 END IF;
10295
10296 -------------------------------------------------------------------------------
10297 l_debug_info := 'Step 1: Check if Posted or Encumbered Distributions exist : ';
10298 -------------------------------------------------------------------------------
10299 -- Bug 9499176 : Replaced 1 SQL having NVL with 2 SQLs and added extra conditions
10300 IF p_line_number is NOT NULL THEN
10301 SELECT COUNT('INCLUSIVE TAX CALC ON POSTED DISTS')
10302 INTO l_allow_update
10303 FROM zx_rec_nrec_dist ZD
10304 WHERE ZD.application_id = 200
10305 AND ZD.entity_code = 'AP_INVOICES'
10306 AND ZD.event_class_code IN ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
10307 AND ZD.trx_id = p_invoice_id
10308 AND ZD.inclusive_flag = 'Y'
10309 AND ZD.rec_nrec_tax_dist_id IN
10310 ( SELECT AID.detail_tax_dist_id
10311 FROM ap_invoice_distributions AID
10312 WHERE AID.invoice_id = p_invoice_id
10313 AND AID.invoice_line_number = p_line_number
10314 AND AID.line_type_lookup_code IN ('REC_TAX','NONREC_TAX','TRV','TERV','TIPV')
10315 AND AID.detail_tax_dist_id IS NOT NULL
10316 AND EXISTS ( SELECT 'LINE HAS ANY POSTED DIST'
10317 FROM ap_invoice_distributions AID1
10318 WHERE AID1.invoice_id = AID.invoice_id
10319 AND AID1.invoice_line_number = AID.invoice_line_number
10320 AND AID1.line_type_lookup_code <> AID.line_type_lookup_code
10321 AND AID1.invoice_distribution_id = AID.charge_applicable_to_dist_id
10322 AND ( AID1.posted_flag = 'Y' OR
10323 NVL( AID1.encumbered_flag, 'N' ) IN ('Y', 'D', 'W', 'X')
10324 )
10325 )
10326 )
10327 AND ROWNUM = 1 ;
10328 ELSE
10329 SELECT COUNT('INCLUSIVE TAX CALC ON POSTED DISTS')
10330 INTO l_allow_update
10331 FROM zx_rec_nrec_dist ZD
10332 WHERE ZD.application_id = 200
10333 AND ZD.entity_code = 'AP_INVOICES'
10334 AND ZD.event_class_code IN ('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
10335 AND ZD.trx_id = p_invoice_id
10336 AND ZD.inclusive_flag = 'Y'
10337 AND ZD.rec_nrec_tax_dist_id IN
10338 ( SELECT AID.detail_tax_dist_id
10339 FROM ap_invoice_distributions AID
10340 WHERE AID.invoice_id = p_invoice_id
10341 AND AID.line_type_lookup_code IN ('REC_TAX','NONREC_TAX','TRV','TERV','TIPV')
10342 AND AID.detail_tax_dist_id IS NOT NULL
10343 AND EXISTS ( SELECT 'LINE HAS ANY POSTED DIST'
10344 FROM ap_invoice_distributions AID1
10345 WHERE AID1.invoice_id = AID.invoice_id
10346 AND AID1.invoice_line_number = AID.invoice_line_number
10347 AND AID1.line_type_lookup_code <> AID.line_type_lookup_code
10348 AND AID1.invoice_distribution_id = AID.charge_applicable_to_dist_id
10349 AND ( AID1.posted_flag = 'Y' OR
10350 NVL( AID1.encumbered_flag, 'N' ) IN ('Y', 'D', 'W', 'X')
10351 )
10352 )
10353 )
10354 AND ROWNUM = 1 ;
10355 END IF;
10356
10357 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10358 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_allow_update);
10359 END IF;
10360
10361 IF l_allow_update > 0 THEN
10362 RETURN FALSE ;
10363 END IF ;
10364
10365 RETURN TRUE ;
10366
10367 EXCEPTION
10368 WHEN OTHERS THEN
10369 IF (SQLCODE <> -20001) THEN
10370 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
10371 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
10372 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
10373 FND_MESSAGE.SET_TOKEN('PARAMETERS',
10374 ' p_invoice_id = '||p_invoice_id||
10375 ' p_line_number = '||p_line_number);
10376 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
10377 RETURN FALSE;
10378 END IF;
10379 END Is_Incl_Tax_Driver_Updatable ;
10380
10381 /*bug 10282701 Added the following function */
10382 FUNCTION TAX_ONLY_LINE_EXIST
10383 (p_invoice_id IN NUMBER) RETURN BOOLEAN IS
10384
10385 l_dummy VARCHAR2(40);
10386
10387 BEGIN
10388 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10389 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'TAX_ONLY_LINE_EXIST','Checking if there is tax only line exists');
10390 END IF;
10391
10392 /* SELECT 'Tax Only Line Exist'
10393 INTO l_dummy
10394 FROM ap_invoice_distributions_all
10395 WHERE invoice_id = p_invoice_id
10396 AND line_type_lookup_code IN ('REC_TAX', 'NONREC_TAX', 'TIPV', 'TRV', 'TERV')
10397 AND charge_applicable_to_dist_id IS NULL
10398 AND rownum = 1; */
10399
10400 SELECT 'Tax Only Line Exist'
10401 INTO l_dummy
10402 FROM zx_lines_summary zls
10403 WHERE application_id = AP_ETAX_PKG.AP_APPLICATION_ID
10404 AND entity_code = AP_ETAX_PKG.AP_ENTITY_CODE
10405 AND event_class_code IN (AP_ETAX_PKG.AP_INV_EVENT_CLASS_CODE,
10406 AP_ETAX_PKG.AP_PP_EVENT_CLASS_CODE,
10407 AP_ETAX_PKG.AP_ER_EVENT_CLASS_CODE)
10408 AND zls.trx_id = p_invoice_id
10409 AND NVL(zls.reporting_only_flag, 'N') = 'N'
10410 AND NVL(zls.tax_only_line_flag, 'N') = 'Y'
10411 AND rownum = 1;
10412
10413 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10414 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'TAX_ONLY_LINE_EXIST','l_dummy: '|| NVL(l_dummy, 'No Tax Only Line'));
10415 END IF;
10416
10417 RETURN (l_dummy IS NOT NULL);
10418
10419 EXCEPTION
10420 WHEN OTHERS THEN
10421 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10422 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'TAX_ONLY_LINE_EXIST', 'in others: '|| NVL(l_dummy, 'No Tax Only Line'));
10423 END IF;
10424 RETURN FALSE;
10425 END TAX_ONLY_LINE_EXIST;
10426
10427 /*=============================================================================
10428 | PROCEDURE - Get_Default_CCID()
10429 |
10430 | DESCRIPTION
10431 | Called from : APXIISIM.fmb
10432 | APXRICAD.fmb
10433 | APXINLIN.pld
10434 | apamtpob.pls
10435 | apamtrcb.pls
10436 | apiimvtb.pls
10437 | apmatchb.pls
10438 | apothmtb.pls
10439 | aprcvmtb.pls
10440 |
10441 | This procedure should be called from all code flows which make a call
10442 | to ZX_AP_TAX_CLASSIFICATN_DEF_PKG.get_default_tax_classification() and
10443 | the return value ( x_derived_ccid ) should be passed as the input
10444 | parameter p_code_combination_id to the ZX API. The logic in the
10445 | procedure is based on the code changes done by Bugs 6908977, 7350421
10446 | and 8230574.
10447 |
10448 | MODIFICATION HISTORY
10449 | DATE Author Bug Action
10450 | 23-Feb-2011 ANARUN 10050094 Created
10451 |
10452 ============================================================================*/
10453 PROCEDURE Get_Default_CCID ( p_invoice_id IN NUMBER DEFAULT NULL,
10454 p_default_dist_ccid IN NUMBER DEFAULT NULL,
10455 p_match_type IN VARCHAR2 DEFAULT NULL,
10456 p_po_line_location_id IN NUMBER DEFAULT NULL,
10457 p_po_distribution_id IN NUMBER DEFAULT NULL,
10458 p_rcv_shipment_line_id IN NUMBER DEFAULT NULL,
10459 p_rcv_transaction_id IN NUMBER DEFAULT NULL,
10460 p_line_type_lookup_code IN VARCHAR2 DEFAULT NULL,
10461 p_reference_key1 IN VARCHAR2 DEFAULT NULL,
10462 p_reference_key2 IN VARCHAR2 DEFAULT NULL,
10463 p_invoice_line_number IN NUMBER DEFAULT NULL,
10464 p_distribution_set_id IN NUMBER DEFAULT NULL,
10465 p_calling_sequence IN VARCHAR2 ,
10466 x_derived_ccid OUT NOCOPY NUMBER
10467 )
10468 IS
10469 l_default_ccid NUMBER ;
10470 l_api_name CONSTANT VARCHAR2(100) := 'Get_Default_CCID';
10471 l_curr_calling_sequence VARCHAR2(4000);
10472 l_debug_info VARCHAR2(2000);
10473 l_distribution_set_id NUMBER ;
10474 BEGIN
10475
10476 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.Get_Default_CCID<-'||
10477 P_calling_sequence;
10478
10479 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10480 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
10481 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Called with parameters : ' ||
10482 'p_invoice_id = ' || p_invoice_id ||
10483 ', p_default_dist_ccid = ' || p_default_dist_ccid ||
10484 ', p_match_type = ' || p_match_type ||
10485 ', p_po_line_location_id = ' || p_po_line_location_id ||
10486 ', p_po_distribution_id = ' || p_po_distribution_id ||
10487 ', p_rcv_shipment_line_id = ' || p_rcv_shipment_line_id ||
10488 ', p_rcv_transaction_id = ' || p_rcv_transaction_id ||
10489 ', p_line_type_lookup_code = ' || p_line_type_lookup_code ||
10490 ', p_reference_key1 = ' || p_reference_key1 ||
10491 ', p_reference_key2 = ' || p_reference_key2 ||
10492 ', p_invoice_line_number = ' || p_invoice_line_number ||
10493 ', p_distribution_set_id = ' || p_distribution_set_id );
10494 END IF;
10495
10496 IF p_default_dist_ccid IS NULL THEN
10497 IF NVL( p_match_type, 'NULL' ) IN
10498 ('ITEM_TO_PO','ITEM_TO_RECEIPT','ITEM_TO_SERVICE_PO',
10499 'ITEM_TO_SERVICE_RECEIPT','PRICE_CORRECTION','QTY_CORRECTION',
10500 'AMOUNT_CORRECTION', 'NULL' ) THEN
10501
10502 IF p_po_line_location_id IS NOT NULL THEN
10503
10504 l_debug_info := 'Querying on the basis of p_po_line_location_id' ;
10505 SELECT pd.code_combination_id
10506 INTO l_default_ccid
10507 FROM po_distributions_all pd
10508 WHERE pd.line_location_id = p_po_line_location_id
10509 AND rownum = 1;
10510
10511 ELSIF p_po_distribution_id IS NOT NULL THEN
10512
10513 l_debug_info := 'Querying on the basis of p_po_distribution_id' ;
10514 SELECT pd.code_combination_id
10515 INTO l_default_ccid
10516 FROM po_distributions_all pd
10517 WHERE pd.line_location_id =
10518 (SELECT pod.line_location_id
10519 FROM po_distributions_all pod
10520 WHERE po_distribution_id = p_po_distribution_id )
10521 AND rownum = 1;
10522
10523 ELSIF p_rcv_shipment_line_id IS NOT NULL THEN
10524
10525 l_debug_info := 'Querying on the basis of p_rcv_shipment_line_id' ;
10526 SELECT pd.code_combination_id
10527 INTO l_default_ccid
10528 FROM po_distributions_all pd
10529 WHERE pd.line_location_id =
10530 (SELECT rcv.po_line_location_id
10531 FROM rcv_shipment_lines rcv
10532 WHERE rcv.shipment_line_id = p_rcv_shipment_line_id )
10533 AND rownum = 1;
10534
10535 ELSIF p_rcv_transaction_id IS NOT NULL THEN
10536
10537 l_debug_info := 'Querying on the basis of p_rcv_transaction_id' ;
10538 SELECT pd.code_combination_id
10539 INTO l_default_ccid
10540 FROM po_distributions_all pd
10541 WHERE pd.line_location_id =
10542 (SELECT rcv.po_line_location_id
10543 FROM rcv_transactions rcv
10544 WHERE rcv.transaction_id = p_rcv_transaction_id )
10545 AND rownum = 1;
10546
10547 ELSE
10548 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10549 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
10550 'Default CCID passed from line rather than of PO Distribution');
10551 END IF;
10552 END IF;
10553 END IF;
10554 ELSE
10555 l_default_ccid := p_default_dist_ccid ;
10556 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10557 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
10558 'Using the value passed to the API');
10559 END IF;
10560 END IF ;
10561
10562 IF ( l_default_ccid IS NULL AND
10563 p_line_type_lookup_code <> 'PREPAY' AND
10564 p_invoice_id IS NOT NULL ) THEN
10565
10566 BEGIN
10567 l_debug_info := 'Querying for Expense Report' ;
10568 SELECT aerd.code_combination_id
10569 INTO l_default_ccid
10570 FROM ap_exp_report_dists_all aerd,
10571 ap_expense_report_lines_all aerl,
10572 ap_invoices_all ai
10573 WHERE aerd.report_header_id = p_reference_key1
10574 AND aerd.report_line_id = p_reference_key2
10575 AND aerd.report_line_id = aerl.report_line_id
10576 AND aerd.report_header_id = aerl.report_header_id
10577 AND ai.invoice_id = p_invoice_id
10578 AND ai.invoice_type_lookup_code = 'EXPENSE REPORT'
10579 AND rownum = 1;
10580
10581 EXCEPTION
10582 WHEN OTHERS THEN
10583 NULL;
10584 END;
10585
10586 END IF;
10587
10588 IF ( l_default_ccid IS NULL )
10589 THEN
10590 IF p_distribution_set_id IS NULL AND
10591 p_invoice_id IS NOT NULL AND
10592 p_invoice_line_number IS NOT NULL
10593 THEN
10594 l_debug_info := 'Querying for distribution_set_id from ap_invoice_lines' ;
10595 /* Bug 12874059 begins */
10596 BEGIN
10597 SELECT distribution_set_id
10598 INTO l_distribution_set_id
10599 FROM ap_invoice_lines AIL
10600 WHERE AIL.invoice_id = p_invoice_id
10601 AND AIL.line_number = p_invoice_line_number ;
10602 EXCEPTION --Bug 12874059 begin
10603 WHEN NO_DATA_FOUND THEN
10604 NULL;
10605 END;
10606 /* Bug 12874059 end */
10607 ELSE
10608 l_distribution_set_id := p_distribution_set_id ;
10609 END IF ;
10610
10611 IF l_distribution_set_id IS NOT NULL
10612 THEN
10613 BEGIN
10614 l_debug_info := 'Querying for ccid from ap_distribution_set_lines' ;
10615 SELECT dist_code_combination_id
10616 INTO l_default_ccid
10617 FROM ap_distribution_set_lines ADSL
10618 WHERE ADSL.distribution_set_id = l_distribution_set_id
10619 AND rownum = 1 ;
10620 EXCEPTION
10621 WHEN NO_DATA_FOUND THEN
10622 NULL ;
10623 END ;
10624 END IF ;
10625 END IF ;
10626
10627 x_derived_ccid := l_default_ccid ;
10628
10629 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10630 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name, 'x_derived_ccid = ' || l_default_ccid );
10631 END IF ;
10632 EXCEPTION
10633 WHEN OTHERS THEN
10634 IF (SQLCODE <> -20001) THEN
10635 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
10636 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
10637 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
10638 FND_MESSAGE.SET_TOKEN('PARAMETERS',
10639 'p_invoice_id = ' || p_invoice_id ||
10640 ', p_default_dist_ccid = ' || p_default_dist_ccid ||
10641 ', p_match_type = ' || p_match_type ||
10642 ', p_po_line_location_id = ' || p_po_line_location_id ||
10643 ', p_po_distribution_id = ' || p_po_distribution_id ||
10644 ', p_rcv_shipment_line_id = ' || p_rcv_shipment_line_id ||
10645 ', p_rcv_transaction_id = ' || p_rcv_transaction_id ||
10646 ', p_line_type_lookup_code = ' || p_line_type_lookup_code ||
10647 ', p_reference_key1 = ' || p_reference_key1 ||
10648 ', p_reference_key2 = ' || p_reference_key2 ||
10649 ', p_invoice_line_number = ' || p_invoice_line_number ||
10650 ', p_distribution_set_id = ' || p_distribution_set_id );
10651 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
10652 END IF;
10653
10654 END Get_Default_CCID ;
10655
10656 /*=============================================================================
10657 | FUNCTION - GET_CCID_FROM_PROJECTS()
10658 |
10659 | DESCRIPTION
10660 | This function derives defact CCID based on project information
10661 | and is called from Return_Tax_Distributions.
10662 |
10663 | MODIFICATION HISTORY
10664 | DATE Author Bug Action
10665 | 21-OCT-2011 ANUBAGAR 12728634 Created
10666 |
10667 ============================================================================*/
10668 --bug 12728634 Added new function
10669
10670 FUNCTION GET_CCID_FROM_PROJECTS( p_invoice_id IN ap_invoice_distributions_all.invoice_id%TYPE,
10671 p_line_number IN ap_invoice_distributions_all.invoice_line_number%TYPE,
10672 p_ccid OUT NOCOPY AP_INVOICE_DISTRIBUTIONS_ALL.DIST_CODE_COMBINATION_ID%TYPE) RETURN BOOLEAN
10673 IS
10674
10675 CURSOR line_rec IS
10676 SELECT INVOICE_ID,
10677 LINE_NUMBER,
10678 LINE_TYPE_LOOKUP_CODE,
10679 REQUESTER_ID,
10680 DESCRIPTION,
10681 LINE_SOURCE,
10682 ORG_ID,
10683 LINE_GROUP_NUMBER,
10684 INVENTORY_ITEM_ID,
10685 ITEM_DESCRIPTION,
10686 SERIAL_NUMBER,
10687 MANUFACTURER,
10688 MODEL_NUMBER,
10689 WARRANTY_NUMBER,
10690 GENERATE_DISTS,
10691 MATCH_TYPE,
10692 DISTRIBUTION_SET_ID,
10693 ACCOUNT_SEGMENT,
10694 BALANCING_SEGMENT,
10695 COST_CENTER_SEGMENT,
10696 OVERLAY_DIST_CODE_CONCAT,
10697 DEFAULT_DIST_CCID,
10698 PRORATE_ACROSS_ALL_ITEMS,
10699 ACCOUNTING_DATE,
10700 PERIOD_NAME,
10701 DEFERRED_ACCTG_FLAG,
10702 DEF_ACCTG_START_DATE,
10703 DEF_ACCTG_END_DATE,
10704 DEF_ACCTG_NUMBER_OF_PERIODS,
10705 DEF_ACCTG_PERIOD_TYPE,
10706 SET_OF_BOOKS_ID,
10707 AMOUNT,
10708 BASE_AMOUNT,
10709 ROUNDING_AMT,
10710 QUANTITY_INVOICED,
10711 UNIT_MEAS_LOOKUP_CODE,
10712 UNIT_PRICE,
10713 WFAPPROVAL_STATUS,
10714 DISCARDED_FLAG,
10715 ORIGINAL_AMOUNT,
10716 ORIGINAL_BASE_AMOUNT,
10717 ORIGINAL_ROUNDING_AMT,
10718 CANCELLED_FLAG,
10719 INCOME_TAX_REGION,
10720 TYPE_1099,
10721 STAT_AMOUNT,
10722 PREPAY_INVOICE_ID,
10723 PREPAY_LINE_NUMBER,
10724 INVOICE_INCLUDES_PREPAY_FLAG,
10725 CORRECTED_INV_ID,
10726 CORRECTED_LINE_NUMBER,
10727 PO_HEADER_ID,
10728 PO_LINE_ID,
10729 PO_RELEASE_ID,
10730 PO_LINE_LOCATION_ID,
10731 PO_DISTRIBUTION_ID,
10732 RCV_TRANSACTION_ID,
10733 FINAL_MATCH_FLAG,
10734 ASSETS_TRACKING_FLAG,
10735 ASSET_BOOK_TYPE_CODE,
10736 ASSET_CATEGORY_ID,
10737 PROJECT_ID,
10738 TASK_ID,
10739 EXPENDITURE_TYPE,
10740 EXPENDITURE_ITEM_DATE,
10741 EXPENDITURE_ORGANIZATION_ID,
10742 PA_QUANTITY,
10743 PA_CC_AR_INVOICE_ID,
10744 PA_CC_AR_INVOICE_LINE_NUM ,
10745 PA_CC_PROCESSED_CODE,
10746 AWARD_ID,
10747 AWT_GROUP_ID,
10748 REFERENCE_1,
10749 REFERENCE_2,
10750 RECEIPT_VERIFIED_FLAG,
10751 RECEIPT_REQUIRED_FLAG,
10752 RECEIPT_MISSING_FLAG,
10753 JUSTIFICATION,
10754 EXPENSE_GROUP,
10755 START_EXPENSE_DATE,
10756 END_EXPENSE_DATE,
10757 RECEIPT_CURRENCY_CODE,
10758 RECEIPT_CONVERSION_RATE,
10759 RECEIPT_CURRENCY_AMOUNT,
10760 DAILY_AMOUNT,
10761 WEB_PARAMETER_ID,
10762 ADJUSTMENT_REASON,
10763 MERCHANT_DOCUMENT_NUMBER,
10764 MERCHANT_NAME,
10765 MERCHANT_REFERENCE,
10766 MERCHANT_TAX_REG_NUMBER,
10767 MERCHANT_TAXPAYER_ID,
10768 COUNTRY_OF_SUPPLY,
10769 CREDIT_CARD_TRX_ID,
10770 COMPANY_PREPAID_INVOICE_ID,
10771 CC_REVERSAL_FLAG,
10772 CREATION_DATE,
10773 CREATED_BY,
10774 LAST_UPDATED_BY,
10775 LAST_UPDATE_DATE,
10776 LAST_UPDATE_LOGIN,
10777 PROGRAM_APPLICATION_ID,
10778 PROGRAM_ID,
10779 PROGRAM_UPDATE_DATE,
10780 REQUEST_ID,
10781 ATTRIBUTE_CATEGORY,
10782 ATTRIBUTE1,
10783 ATTRIBUTE2,
10784 ATTRIBUTE3,
10785 ATTRIBUTE4,
10786 ATTRIBUTE5,
10787 ATTRIBUTE6,
10788 ATTRIBUTE7,
10789 ATTRIBUTE8,
10790 ATTRIBUTE9,
10791 ATTRIBUTE10,
10792 ATTRIBUTE11,
10793 ATTRIBUTE12,
10794 ATTRIBUTE13,
10795 ATTRIBUTE14,
10796 ATTRIBUTE15,
10797 GLOBAL_ATTRIBUTE_CATEGORY,
10798 GLOBAL_ATTRIBUTE1,
10799 GLOBAL_ATTRIBUTE2,
10800 GLOBAL_ATTRIBUTE3,
10801 GLOBAL_ATTRIBUTE4,
10802 GLOBAL_ATTRIBUTE5,
10803 GLOBAL_ATTRIBUTE6,
10804 GLOBAL_ATTRIBUTE7,
10805 GLOBAL_ATTRIBUTE8,
10806 GLOBAL_ATTRIBUTE9,
10807 GLOBAL_ATTRIBUTE10,
10808 GLOBAL_ATTRIBUTE11,
10809 GLOBAL_ATTRIBUTE12,
10810 GLOBAL_ATTRIBUTE13,
10811 GLOBAL_ATTRIBUTE14,
10812 GLOBAL_ATTRIBUTE15,
10813 GLOBAL_ATTRIBUTE16,
10814 GLOBAL_ATTRIBUTE17,
10815 GLOBAL_ATTRIBUTE18,
10816 GLOBAL_ATTRIBUTE19,
10817 GLOBAL_ATTRIBUTE20,
10818 --ETAX: Invwkb, added included_tax_amount as modified the def
10819 --of ap_invoices_pkg.r_invoice_line_rec
10820 INCLUDED_TAX_AMOUNT,
10821 PRIMARY_INTENDED_USE,
10822 APPLICATION_ID,
10823 PRODUCT_TABLE,
10824 REFERENCE_KEY1,
10825 REFERENCE_KEY2,
10826 REFERENCE_KEY3,
10827 REFERENCE_KEY4,
10828 REFERENCE_KEY5,
10829 --bugfix:4674194
10830 SHIP_TO_LOCATION_ID,
10831 --bug7022001
10832 PAY_AWT_GROUP_ID
10833 FROM ap_invoice_lines_all
10834 WHERE invoice_id = p_invoice_id
10835 AND line_number = p_line_number;
10836
10837 l_invoice_line_rec AP_INVOICES_PKG.r_invoice_line_rec;
10838 l_dist_ccid AP_INVOICE_DISTRIBUTIONS.DIST_CODE_COMBINATION_ID%TYPE;
10839 debug_info VARCHAR2(2000);
10840 debug_context VARCHAR2(2000);
10841 l_dist_code_concat VARCHAR2(2000);
10842 l_invoice_attribute_rec AP_UTILITIES_PKG.r_invoice_attribute_rec;
10843 l_invoice_type_lookup_code ap_invoices_all.invoice_type_lookup_code%TYPE;
10844 l_invoice_currency ap_invoices_all.invoice_currency_code%TYPE;
10845 l_base_currency_code AP_SYSTEM_PARAMETERS.BASE_CURRENCY_CODE%TYPE;
10846 l_chart_of_accounts_id GL_SETS_OF_BOOKS.CHART_OF_ACCOUNTS_ID%TYPE;
10847 l_error_found VARCHAR2(1) := 'N';
10848 l_pa_allows_overrides VARCHAR2(1) := 'N';
10849 l_employee_id NUMBER;
10850 l_invoice_date AP_INVOICES_ALL.INVOICE_DATE%TYPE;
10851 l_vendor_id NUMBER;
10852 l_employee_ccid NUMBER;
10853 l_web_parameter_id NUMBER;
10854 l_exchange_rate_type ap_invoices_all.exchange_rate_type%TYPE;
10855 l_exchange_date ap_invoices_all.exchange_date%TYPE;
10856 l_exchange_rate ap_invoices_all.exchange_rate%TYPE;
10857 l_sys_link_function VARCHAR2(2);
10858 l_msg_application VARCHAR2(25);
10859 l_msg_type VARCHAR2(25);
10860 l_msg_token1 VARCHAR2(30);
10861 l_msg_token2 VARCHAR2(30);
10862 l_msg_token3 VARCHAR2(30);
10863 l_msg_count NUMBER;
10864 l_msg_data VARCHAR2(30);
10865 l_billable_flag VARCHAR2(25);
10866 l_unbuilt_flex VARCHAR2(240):='';
10867 l_reason_unbuilt_flex VARCHAR2(2000):='';
10868
10869 user_id NUMBER;
10870 current_calling_sequence VARCHAR2(2000) := 'AP_ETAX_SERVICES_PKG.GET_CCID_FROM_PROJECTS';
10871
10872
10873 BEGIN
10874
10875 OPEN line_rec;
10876 FETCH line_rec INTO l_invoice_line_rec;
10877 IF (line_rec%NOTFOUND) THEN
10878
10879 debug_info := 'No Lines Record Fetched For Projects';
10880 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10881 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
10882 END IF;
10883
10884 CLOSE line_rec;
10885 RAISE NO_DATA_FOUND;
10886 END IF;
10887 CLOSE line_Rec;
10888
10889 debug_info := 'Step 3 b - Get the Invoice and Line DFF Info';
10890 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10891 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
10892 END IF;
10893
10894 BEGIN
10895 SELECT attribute_category,
10896 attribute1,
10897 attribute2,
10898 attribute3,
10899 attribute4,
10900 attribute5,
10901 attribute6,
10902 attribute7,
10903 attribute8,
10904 attribute9,
10905 attribute10,
10906 attribute11,
10907 attribute12,
10908 attribute13,
10909 attribute14,
10910 attribute15
10911 INTO l_invoice_attribute_rec.attribute_category,
10912 l_invoice_attribute_rec.attribute1,
10913 l_invoice_attribute_rec.attribute2,
10914 l_invoice_attribute_rec.attribute3,
10915 l_invoice_attribute_rec.attribute4,
10916 l_invoice_attribute_rec.attribute5,
10917 l_invoice_attribute_rec.attribute6,
10918 l_invoice_attribute_rec.attribute7,
10919 l_invoice_attribute_rec.attribute8,
10920 l_invoice_attribute_rec.attribute9,
10921 l_invoice_attribute_rec.attribute10,
10922 l_invoice_attribute_rec.attribute11,
10923 l_invoice_attribute_rec.attribute12,
10924 l_invoice_attribute_rec.attribute13,
10925 l_invoice_attribute_rec.attribute14,
10926 l_invoice_attribute_rec.attribute15
10927 FROM ap_invoices_all
10928 WHERE invoice_id = l_invoice_line_rec.invoice_id;
10929 EXCEPTION
10930 WHEN NO_DATA_FOUND THEN
10931 debug_info := 'Step 3 b - Get the Invoice and Line DFF Info: Failed to fetch Invoice header DFF info.';
10932 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10933 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
10934 END IF;
10935 RETURN(FALSE);
10936 END;
10937 -- need to copy the line attributes to pass to PA APIs irrespective of
10938 -- whether these are copied to distribution or not.
10939
10940 l_invoice_attribute_rec.line_attribute_category := l_invoice_line_rec.ATTRIBUTE_CATEGORY;
10941 l_invoice_attribute_rec.line_attribute1 := l_invoice_line_rec.ATTRIBUTE1 ;
10942 l_invoice_attribute_rec.line_attribute2 := l_invoice_line_rec.ATTRIBUTE2 ;
10943 l_invoice_attribute_rec.line_attribute3 := l_invoice_line_rec.ATTRIBUTE3 ;
10944 l_invoice_attribute_rec.line_attribute4 := l_invoice_line_rec.ATTRIBUTE4 ;
10945 l_invoice_attribute_rec.line_attribute5 := l_invoice_line_rec.ATTRIBUTE5 ;
10946 l_invoice_attribute_rec.line_attribute6 := l_invoice_line_rec.ATTRIBUTE6 ;
10947 l_invoice_attribute_rec.line_attribute7 := l_invoice_line_rec.ATTRIBUTE7 ;
10948 l_invoice_attribute_rec.line_attribute8 := l_invoice_line_rec.ATTRIBUTE8 ;
10949 l_invoice_attribute_rec.line_attribute9 := l_invoice_line_rec.ATTRIBUTE9 ;
10950 l_invoice_attribute_rec.line_attribute10 := l_invoice_line_rec.ATTRIBUTE10;
10951 l_invoice_attribute_rec.line_attribute11 := l_invoice_line_rec.ATTRIBUTE11;
10952 l_invoice_attribute_rec.line_attribute12 := l_invoice_line_rec.ATTRIBUTE12;
10953 l_invoice_attribute_rec.line_attribute13 := l_invoice_line_rec.ATTRIBUTE13;
10954 l_invoice_attribute_rec.line_attribute14 := l_invoice_line_rec.ATTRIBUTE14;
10955 l_invoice_attribute_rec.line_attribute15 := l_invoice_line_rec.ATTRIBUTE15;
10956
10957
10958 --------------------------------------------------------------
10959 -- Step 5 - Get system level information necessary for
10960 -- validation and generation of distributions
10961 --------------------------------------------------------------
10962 debug_info := 'Get system information';
10963 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10964 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
10965 END IF;
10966
10967 BEGIN
10968 SELECT gsob.chart_of_accounts_id, ap.base_currency_code
10969 INTO l_chart_of_accounts_id, l_base_currency_code
10970 FROM ap_system_parameters ap, gl_sets_of_books gsob
10971 WHERE ap.set_of_books_id = gsob.set_of_books_id
10972 AND ap.set_of_books_id = l_invoice_line_rec.set_of_books_id
10973 AND ap.org_id = l_invoice_line_rec.org_id; -- Bug 13858818;
10974
10975 EXCEPTION
10976 WHEN NO_DATA_FOUND THEN
10977 Debug_info := 'Get system information: No GL information was found';
10978 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10979 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
10980 END IF;
10981
10982 RETURN(FALSE);
10983 END;
10984
10985 --------------------------------------------------------------
10986 -- Step 6 - Get invoice level info
10987
10988 --------------------------------------------------------------
10989 debug_info := 'Get invoice level info';
10990 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10991 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
10992 END IF;
10993
10994 BEGIN
10995 SELECT invoice_date, vendor_id , invoice_type_lookup_code , invoice_currency_code ,
10996 exchange_rate_type , exchange_date , exchange_rate
10997 INTO l_invoice_date , l_vendor_id , l_invoice_type_lookup_code , l_invoice_currency ,
10998 l_exchange_rate_type , l_exchange_date , l_exchange_rate
10999 FROM ap_invoices_all
11000 WHERE invoice_id = p_invoice_id;
11001
11002 EXCEPTION
11003 WHEN NO_DATA_FOUND THEN
11004 debug_info := 'Get invoice level info: No invoice info ';
11005 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11006 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11007 END IF;
11008
11009 RETURN(FALSE);
11010 END;
11011
11012 ----------------------------------------------------------------------------
11013 -- Step 6 - Get Expenditure Item Date if PA related and if validation
11014 -- requested validate PA information. Note that expenditure item date may
11015 -- already be populated when the process is called from the Interface Import
11016 -- in which case we bypass getting the expenditure item date.
11017
11018 ----------------------------------------------------------------------------
11019 debug_info := 'Get expenditure item date and validate if PA related';
11020 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11021 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11022 END IF;
11023 IF (l_invoice_line_rec.project_id is not null) THEN
11024 IF (l_invoice_line_rec.expenditure_item_date is null) THEN
11025 l_invoice_line_rec.expenditure_item_date :=
11026 AP_INVOICES_PKG.get_expenditure_item_date(
11027 l_invoice_line_rec.invoice_id,
11028 l_invoice_date,
11029 l_invoice_line_rec.accounting_date,
11030 NULL,
11031 NULL,
11032 l_error_found);
11033 IF (l_error_found = 'Y') THEN
11034 debug_info := 'Get expenditure item date and validate if PA related: cannot read expenditure item date information';
11035 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11036 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11037 END IF;
11038
11039 RETURN(FALSE);
11040 END IF;
11041 END IF; -- Expenditure item date is null
11042
11043 l_pa_allows_overrides := FND_PROFILE.VALUE('PA_ALLOW_FLEXBUILDER_OVERRIDES');
11044
11045 debug_info := 'PA Override Flag: '||l_pa_allows_overrides;
11046 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11047 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS', debug_info);
11048 END IF;
11049
11050 -- The Import process should make the call with X_Validate_Info FALSE
11051 -- since The same validation should have been done in the Import Validation
11052
11053
11054 user_id := to_number(FND_PROFILE.VALUE('USER_ID'));
11055
11056 debug_info := 'User Id is: '||user_id;
11057 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11058 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS', debug_info);
11059 END IF;
11060
11061 BEGIN
11062 SELECT employee_id
11063 INTO l_employee_id
11064 FROM ap_suppliers /* bUg 4718054 */
11065 WHERE DECODE(SIGN(TO_DATE(TO_CHAR(START_DATE_ACTIVE,'DD-MM-YYYY'),
11066 'DD-MM-YYYY') - TO_DATE(TO_CHAR(SYSDATE,'DD-MM-YYYY'),'DD-MM-YYYY')),
11067 1, 'N', DECODE(SIGN(TO_DATE(TO_CHAR(END_DATE_ACTIVE ,'DD-MM-YYYY'),
11068 'DD-MM-YYYY') - TO_DATE(TO_CHAR(SYSDATE,'DD-MM-YYYY'),'DD-MM-YYYY')),
11069 -1, 'N', 0, 'N', 'Y')) = 'Y'
11070 AND enabled_flag = 'Y'
11071 AND vendor_id = l_vendor_id ;
11072 EXCEPTION
11073 WHEN no_data_found then
11074 l_employee_id := NULL;
11075 WHEN OTHERS then
11076 l_employee_id := NULL;
11077 END;
11078
11079 --bug5003249
11080 BEGIN
11081 SELECT default_code_comb_id
11082 INTO l_employee_ccid
11083 FROM PER_ASSIGNMENTS_F
11084 WHERE person_id = l_employee_id
11085 AND set_of_books_id = l_invoice_line_rec.set_of_books_id
11086 AND trunc(sysdate) BETWEEN trunc(effective_start_date)
11087 AND nvl(trunc(effective_end_date), trunc(sysdate));
11088 EXCEPTION
11089 WHEN OTHERS then
11090 l_employee_ccid := NULL;
11091 END;
11092
11093 SELECT WEB_PARAMETER_ID
11094 INTO l_web_parameter_id
11095 FROM ap_invoice_lines
11096 WHERE invoice_id = p_invoice_id
11097 AND line_number = p_line_number;
11098
11099 debug_info := 'Emp Id is: '||l_employee_id ||
11100 ' Emp CCID: '||l_employee_ccid||
11101 ' Web Parameter Id: '||l_web_parameter_id;
11102 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11103 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS', debug_info);
11104 END IF;
11105 /* Bug 5102724 */
11106
11107
11108 IF (l_invoice_type_lookup_code ='EXPENSE REPORT') Then
11109 l_sys_link_function :='ER' ;
11110 ELSE
11111 l_sys_link_function :='VI' ;
11112 END IF;
11113
11114 debug_info := 'Sys Link Fn: '||l_sys_link_function;
11115 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11116 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS', debug_info);
11117 END IF;
11118
11119 debug_info := 'Validate PA related information';
11120 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11121 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11122 END IF;
11123
11124 --Bug15914464: Start
11125 pa_acc_gen_wf_pkg.g_invoice_id := p_invoice_id;
11126
11127 debug_info := 'Global Invoice id set for projects API :'||pa_acc_gen_wf_pkg.g_invoice_id;
11128 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11129 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11130 END IF;
11131 --Bug15914464: End
11132
11133 PA_TRANSACTIONS_PUB.VALIDATE_TRANSACTION(
11134 X_PROJECT_ID => l_invoice_line_rec.project_id,
11135 X_TASK_ID => l_invoice_line_rec.task_id,
11136 X_EI_DATE => l_invoice_line_rec.expenditure_item_date,
11137 X_EXPENDITURE_TYPE => l_invoice_line_rec.expenditure_type,
11138 X_NON_LABOR_RESOURCE => null,
11139 X_PERSON_ID => l_employee_id,
11140 X_QUANTITY => nvl(l_invoice_line_rec.pa_quantity, '1'),
11141 X_denom_currency_code => l_invoice_currency,
11142 X_acct_currency_code => l_base_currency_code,
11143 X_denom_raw_cost => l_invoice_line_rec.amount,
11144 X_acct_raw_cost => l_invoice_line_rec.base_amount,
11145 X_acct_rate_type => l_exchange_rate_type,
11146 X_acct_rate_date => l_exchange_date,
11147 X_acct_exchange_rate => l_exchange_rate,
11148 X_TRANSFER_EI => null,
11149 X_INCURRED_BY_ORG_ID => l_invoice_line_rec.expenditure_organization_id,
11150 X_NL_RESOURCE_ORG_ID => null,
11151 X_TRANSACTION_SOURCE => l_sys_link_function, /*bug 5102724 */
11152 X_CALLING_MODULE => 'apetxsrb.pls',
11153 X_VENDOR_ID => l_vendor_id,
11154 X_ENTERED_BY_USER_ID => user_id,
11155 -- Bug 6837035 Start
11156 X_ATTRIBUTE_CATEGORY => l_invoice_line_rec.ATTRIBUTE_CATEGORY,
11157 X_ATTRIBUTE1 => l_invoice_line_rec.ATTRIBUTE1,
11158 X_ATTRIBUTE2 => l_invoice_line_rec.ATTRIBUTE2,
11159 X_ATTRIBUTE3 => l_invoice_line_rec.ATTRIBUTE3,
11160 X_ATTRIBUTE4 => l_invoice_line_rec.ATTRIBUTE4,
11161 X_ATTRIBUTE5 => l_invoice_line_rec.ATTRIBUTE5,
11162 X_ATTRIBUTE6 => l_invoice_line_rec.ATTRIBUTE6,
11163 X_ATTRIBUTE7 => l_invoice_line_rec.ATTRIBUTE7,
11164 X_ATTRIBUTE8 => l_invoice_line_rec.ATTRIBUTE8,
11165 X_ATTRIBUTE9 => l_invoice_line_rec.ATTRIBUTE9,
11166 X_ATTRIBUTE10 => l_invoice_line_rec.ATTRIBUTE10,
11167 X_ATTRIBUTE11 => l_invoice_line_rec.ATTRIBUTE11,
11168 X_ATTRIBUTE12 => l_invoice_line_rec.ATTRIBUTE12,
11169 X_ATTRIBUTE13 => l_invoice_line_rec.ATTRIBUTE13,
11170 X_ATTRIBUTE14 => l_invoice_line_rec.ATTRIBUTE14,
11171 X_ATTRIBUTE15 => l_invoice_line_rec.ATTRIBUTE15,
11172 -- Bug 6837035 End
11173 X_msg_application => l_msg_application,
11174 X_msg_type => l_msg_type,
11175 X_msg_token1 => l_msg_token1,
11176 X_msg_token2 => l_msg_token2,
11177 X_msg_token3 => l_msg_token3,
11178 X_msg_count => l_msg_count,
11179 X_msg_data => l_msg_data,
11180 X_BILLABLE_FLAG => l_billable_flag);
11181
11182 --Bug15914464: Start
11183 pa_acc_gen_wf_pkg.g_invoice_id := NULL;
11184
11185 debug_info := 'Global Invoice id nulled out after projects API :'||pa_acc_gen_wf_pkg.g_invoice_id;
11186 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11187 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11188 END IF;
11189
11190 --Bug15914464: End
11191
11192 IF (l_msg_data is not null) THEN
11193 Fnd_Message.Set_Name(l_msg_application, l_msg_data);
11194
11195 IF (l_msg_token1 IS NOT NULL) THEN
11196 fnd_message.set_token('PATC_MSG_TOKEN1',l_msg_token1);
11197 ELSE
11198 fnd_message.set_token('PATC_MSG_TOKEN1',FND_API.G_MISS_CHAR);
11199 END IF;
11200
11201 IF (l_msg_token2 IS NOT NULL) THEN
11202 fnd_message.set_token('PATC_MSG_TOKEN2',l_msg_token2);
11203 ELSE
11204 fnd_message.set_token('PATC_MSG_TOKEN2',FND_API.G_MISS_CHAR);
11205 END IF;
11206
11207 IF (l_msg_token3 IS NOT NULL) THEN
11208 fnd_message.set_token('PATC_MSG_TOKEN3',l_msg_token3);
11209 ELSE
11210 fnd_message.set_token('PATC_MSG_TOKEN3',FND_API.G_MISS_CHAR);
11211 END IF;
11212 --l_message_text := Fnd_Message.get;
11213
11214 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11215 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,'Error in PA VALIDATE TRANSACTION');
11216 END IF;
11217
11218 RETURN FALSE;
11219
11220
11221 END IF;
11222
11223 END IF; --l_project_id is not null
11224
11225 ----------------------------------------------------------------------------
11226 -- Step 7 - Obtain final account and account related information.
11227 -- But only if calling module is not the Import since through the import
11228 -- The account should already be built.
11229 ----------------------------------------------------------------------------
11230 debug_info := 'Obtain account to be used in distribution';
11231 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11232 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11233 END IF;
11234
11235 IF (nvl(l_invoice_line_rec.line_source, 'OTHERS') <> 'IMPORT') then
11236 --Bug5003249 added condition on invoice type lookup code
11237
11238 IF (l_invoice_line_rec.project_id is not null
11239 and l_invoice_type_lookup_code<>'PREPAYMENT') then
11240 -- Need to create a utility to flexbuild. Look at import code. Utility
11241 -- there is PA_FLEXBUILD
11242
11243 debug_info := 'Billable Flag To PA FlexBuild '||l_billable_flag; --Bug6523162
11244 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11245 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11246 END IF;
11247
11248 /*Bug13858818 begin*/
11249 pa_acc_gen_wf_pkg.g_invoice_id := p_invoice_id;
11250
11251 debug_info := 'Global Invoice id set for projects API :'||pa_acc_gen_wf_pkg.g_invoice_id;
11252 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11253 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11254 END IF;
11255 /*Bug13858818 end*/
11256
11257 IF ( NOT (AP_UTILITIES_PKG.pa_flexbuild(
11258 p_vendor_id => l_vendor_id, --IN
11259 p_employee_id => l_employee_id, --IN
11260 p_set_of_books_id => l_invoice_line_rec.set_of_books_id, --IN
11261 p_chart_of_accounts_id => l_chart_of_accounts_id, --IN
11262 p_base_currency_code => l_base_currency_code, --IN
11263 p_accounting_date => l_invoice_line_rec.accounting_date, --IN
11264 p_award_id => l_invoice_line_rec.award_id, --IN
11265 P_project_id => l_invoice_line_rec.project_id, --IN
11266 p_task_id => l_invoice_line_rec.task_id, --IN
11267 p_expenditure_type => l_invoice_line_rec.expenditure_type,
11268 p_expenditure_org_id => l_invoice_line_rec.expenditure_organization_id,
11269 p_expenditure_item_date => l_invoice_line_rec.expenditure_item_date,
11270 p_invoice_attribute_rec => l_invoice_attribute_rec, --bug 8713737
11271 p_billable_flag => l_billable_flag, --Bug6523162
11272 p_employee_ccid => l_employee_ccid, --Bug5003249
11273 p_web_parameter_id => l_web_parameter_id, --Bug5003249
11274 p_invoice_type_lookup_code => l_invoice_type_lookup_code, --Bug5003249
11275 p_default_last_updated_by => FND_GLOBAL.user_id,
11276 p_default_last_update_login => FND_GLOBAL.login_id,
11277 p_pa_default_dist_ccid => l_dist_ccid,
11278 p_pa_concatenated_segments => l_dist_code_concat, --OUT NOCOPY
11279 p_debug_Info => debug_Info, --OUT NOCOPY
11280 p_debug_Context => debug_Context, --OUT NOCOPY
11281 p_calling_sequence => 'Get_Proj_And_Acc_For_Chrg_Dist' ,
11282 p_default_dist_ccid => l_invoice_line_rec.default_dist_ccid --IN bug 5386396
11283 ))) THEN
11284
11285 debug_info := debug_info || ': Error encountered in pa_flexbuild';
11286 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11287 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11288 END IF;
11289
11290 debug_context := current_calling_sequence;
11291 RETURN(FALSE);
11292 END IF;
11293
11294 /*Bug13858818 begin*/
11295 pa_acc_gen_wf_pkg.g_invoice_id := NULL;
11296
11297 debug_info := 'Global Invoice id nulled out after projects API :'||pa_acc_gen_wf_pkg.g_invoice_id;
11298 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11299 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,debug_info);
11300 END IF;
11301 /*Bug13858818 end*/
11302
11303 IF (l_pa_allows_overrides = 'N') then
11304 IF ( NOT (AP_UTILITIES_PKG.IS_CCID_VALID(
11305 l_dist_ccid,
11306 l_chart_of_accounts_id,
11307 l_invoice_line_rec.accounting_date,
11308 current_calling_sequence))) then
11309 --X_error_code := 'AP_INVALID_ACCOUNT';
11310 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11311 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,'AP_INVALID_ACCOUNT for PA OVERRIDE FLAG: N');
11312 END IF;
11313
11314 RETURN(FALSE);
11315
11316 END IF;
11317
11318 ELSE -- pa allows overrides is Y
11319 -- If the user provided an account at the line level,
11320 -- use it instead of the Account produced by PA
11321 IF (l_invoice_line_rec.default_dist_ccid is not null) then
11322 l_dist_ccid := l_invoice_line_rec.default_dist_ccid;
11323 END IF;
11324
11325 IF (l_invoice_line_rec.overlay_dist_code_concat is NULL AND
11326 l_invoice_line_rec.balancing_segment is NULL AND
11327 l_invoice_line_rec.account_segment is NULL AND
11328 l_invoice_line_rec.cost_center_segment is NULL) then
11329
11330 IF ( NOT (AP_UTILITIES_PKG.IS_CCID_VALID(
11331 l_dist_ccid,
11332 l_chart_of_accounts_id,
11333 l_invoice_line_rec.accounting_date,
11334 current_calling_sequence))) then
11335
11336 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11337 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,'AP_INVALID_ACCOUNT for PA OVERRIDE FLAG: Y');
11338 END IF;
11339
11340 RETURN(FALSE);
11341 END IF;
11342 ELSE
11343 IF ( NOT (AP_UTILITIES_PKG.OVERLAY_SEGMENTS (
11344 l_invoice_line_rec.balancing_segment,
11345 l_invoice_line_rec.cost_center_segment,
11346 l_invoice_line_rec.account_segment,
11347 l_invoice_line_rec.overlay_dist_code_concat,
11348 l_dist_ccid,
11349 l_invoice_line_rec.set_of_books_id,
11350 'CREATE_COMB_NO_AT',
11351 l_unbuilt_flex,
11352 l_reason_unbuilt_flex,
11353 FND_GLOBAL.RESP_APPL_ID,
11354 FND_GLOBAL.RESP_ID,
11355 FND_GLOBAL.USER_ID,
11356 current_calling_sequence,
11357 NULL,
11358 l_invoice_line_rec.accounting_date))) THEN -- 7531219
11359 -- X_error_code := 'AP_CANNOT_OVERLAY';
11360 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11361 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS' ,'AP_CANNOT_OVERLAY');
11362 END IF;
11363
11364 RETURN(FALSE);
11365 END IF;
11366 END IF; -- overlay information is null
11367 END IF; -- pa allows overrides
11368
11369 END IF; -- project id is null
11370 END IF;
11371
11372 debug_info := 'CCID Return by Projects is ' || l_dist_ccid;
11373 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11374 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'GET_CCID_FROM_PROJECTS', debug_info);
11375 END IF;
11376
11377 p_ccid := l_dist_ccid;
11378 RETURN(TRUE);
11379
11380 END GET_CCID_FROM_PROJECTS ;
11381
11382 --bug 12728634 Added new function ends
11383
11384 --bug11768207, added function IS_LINE_POSTED_ENCUMBERED
11385 /*=============================================================================
11386 | FUNCTION - IS_LINE_POSTED_ENCUMBERED()
11387 |
11388 | DESCRIPTION
11389 | Called from : APXINWKB.fmb
11390 | RETURN TRUE : INCLUSIVE TAX LINE NOT ALLOWED
11391 | RETURN FALUSE : INCLUSIVE TAX LINE ALLOWED
11392 |
11393 |
11394 | PARAMETERS
11395 | p_invoice_id - Invoice Id of the Invoice
11396 | p_line_number - Invoice Line Number
11397 |
11398 | MODIFICATION HISTORY
11399 | DATE Author Bug Action
11400 | 15-Nov-2011 HCHAUDHA 11768207 Created
11401 |
11402 ============================================================================*/
11403
11404 FUNCTION IS_LINE_POSTED_ENCUMBERED(
11405 p_invoice_id IN NUMBER,
11406 p_line_number IN NUMBER,
11407 p_calling_sequence IN VARCHAR2)
11408 RETURN BOOLEAN IS
11409 l_dont_allow_update NUMBER ;
11410 l_curr_calling_sequence VARCHAR2(4000);
11411 l_debug_info VARCHAR2(4000);
11412 l_api_name CONSTANT VARCHAR2(100):='IS_LINE_POSTED_ENCUMBERED';
11413 BEGIN
11414
11415 l_curr_calling_sequence := 'AP_ETAX_UTILITY_PKG.IS_LINE_POSTED_ENCUMBERED<-'||
11416 P_calling_sequence;
11417
11418
11419 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11420 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_curr_calling_sequence);
11421 END IF;
11422 -------------------------------------------------------------------
11423 l_debug_info := 'Step 0: Invoice Id and Invoice Line Number '||p_invoice_id||' '||p_line_number;
11424 -------------------------------------------------------------------
11425 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11426 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
11427 END IF;
11428
11429 -------------------------------------------------------------------------------
11430 l_debug_info := 'Step 1: Check if Posted or Encumbered Distributions exist : ';
11431 -------------------------------------------------------------------------------
11432
11433 SELECT COUNT('DISTS POSTED OR ENCUMBERED')
11434 INTO l_dont_allow_update
11435 FROM ap_invoice_distributions_all AId
11436 WHERE AID.invoice_id = p_invoice_id
11437 AND AID.invoice_line_number = p_line_number
11438 AND (AID.posted_flag = 'Y' OR
11439 NVL(AID.encumbered_flag, 'N' ) IN ('Y', 'D', 'W', 'X'))
11440 AND ROWNUM = 1 ;
11441
11442 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11443 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info||l_dont_allow_update);
11444 END IF;
11445
11446 IF l_dont_allow_update > 0 THEN
11447 RETURN TRUE ;
11448 END IF ;
11449
11450 RETURN FALSE ;
11451
11452 EXCEPTION
11453 WHEN OTHERS THEN
11454 IF (SQLCODE <> -20001) THEN
11455 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
11456 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
11457 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
11458 FND_MESSAGE.SET_TOKEN('PARAMETERS',
11459 ' p_invoice_id = '||p_invoice_id||
11460 ' p_line_number = '||p_line_number);
11461 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
11462 RETURN FALSE;
11463 END IF;
11464 END IS_LINE_POSTED_ENCUMBERED;
11465
11466
11467 END AP_ETAX_UTILITY_PKG;