209:
210: /* Fetch the project currency from the project table */
211:
212: IF g1_debug_mode = 'Y' THEN
213: PA_MCB_INVOICE_PKG.log_message(' Inside Recalculate');
214: END IF;
215:
216: l_invoice_date := pa_billing.GetInvoiceDate;
217:
236: from pa_projects_all
237: where project_id = P_Project_Id;
238:
239: IF g1_debug_mode = 'Y' THEN
240: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Currency Code ' || l_project_currency_code);
241: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Functional ' || l_func_curr);
242: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' IPC type ' || l_invproc_currency_type);
243: END IF;
244:
237: where project_id = P_Project_Id;
238:
239: IF g1_debug_mode = 'Y' THEN
240: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Currency Code ' || l_project_currency_code);
241: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Functional ' || l_func_curr);
242: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' IPC type ' || l_invproc_currency_type);
243: END IF;
244:
245: IF l_invproc_currency_type ='PROJECT_CURRENCY' THEN
238:
239: IF g1_debug_mode = 'Y' THEN
240: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Currency Code ' || l_project_currency_code);
241: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Functional ' || l_func_curr);
242: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' IPC type ' || l_invproc_currency_type);
243: END IF;
244:
245: IF l_invproc_currency_type ='PROJECT_CURRENCY' THEN
246:
275:
276: if P_Calling_Module = 'PAIGEN' then
277:
278: IF g1_debug_mode = 'Y' THEN
279: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Selecting Inv Trans Currency COde');
280: END IF;
281:
282: /* for Invoice generation, select currency code and conversion attribute from pa_project_customers. */
283:
294: where project_id = P_Project_Id
295: and customer_id = P_Customer_id ;
296:
297: IF g1_debug_mode = 'Y' THEN
298: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice Currency Code ' || l_inv_currency_code);
299: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice rate date ' || l_inv_rate_date);
300: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice rate type ' || l_inv_rate_type);
301: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice exch rate ' || l_inv_exchange_rate);
302: END IF;
295: and customer_id = P_Customer_id ;
296:
297: IF g1_debug_mode = 'Y' THEN
298: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice Currency Code ' || l_inv_currency_code);
299: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice rate date ' || l_inv_rate_date);
300: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice rate type ' || l_inv_rate_type);
301: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice exch rate ' || l_inv_exchange_rate);
302: END IF;
303:
296:
297: IF g1_debug_mode = 'Y' THEN
298: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice Currency Code ' || l_inv_currency_code);
299: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice rate date ' || l_inv_rate_date);
300: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice rate type ' || l_inv_rate_type);
301: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice exch rate ' || l_inv_exchange_rate);
302: END IF;
303:
304:
297: IF g1_debug_mode = 'Y' THEN
298: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice Currency Code ' || l_inv_currency_code);
299: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice rate date ' || l_inv_rate_date);
300: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice rate type ' || l_inv_rate_type);
301: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Invoice exch rate ' || l_inv_exchange_rate);
302: END IF;
303:
304:
305: else
304:
305: else
306:
307: IF g1_debug_mode = 'Y' THEN
308: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Assign Inv Trans Currency COde');
309: END IF;
310:
311: /* for all other cases , copy the input parameter into local placeholder */
312:
323: and invoice currency is same as project functional currency */
324: then
325:
326: IF g1_debug_mode = 'Y' THEN
327: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' If (l_invproc_currency_code = l_inv_currency_code) AND (l_inv_currency_code = l_func_curr)' );
328: END IF;
329: X_Status := NULL;
330:
331: Update pa_draft_invoices_all
350:
351: IF (l_invproc_currency_code = l_inv_currency_code) THEN
352: X_Status := NULL;
353: IF g1_debug_mode = 'Y' THEN
354: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' If (l_invproc_currency_code = l_inv_currency_code) ');
355: END IF;
356:
357: Update pa_draft_invoices_all
358: set inv_currency_code = l_invproc_currency_code
374: IF (l_inv_currency_code = l_func_curr) THEN
375:
376: X_Status := NULL;
377: IF g1_debug_mode = 'Y' THEN
378: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' If (l_inv_currency_code = l_func_curr) ');
379: END IF;
380:
381: /* The following commented and rewritten for bug#2355135
382: invoice currency = projfunc currency <> invproc currency
413: */
414: IF (l_invproc_currency_code <> l_inv_currency_code) AND (l_inv_currency_code <> l_func_curr) THEN
415:
416: IF g1_debug_mode = 'Y' THEN
417: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' If (l_invproc_currency_code <> l_inv_currency_code) ');
418: END IF;
419:
420: for cur_get_std_lines in get_std_lines
421: loop
419:
420: for cur_get_std_lines in get_std_lines
421: loop
422: IF g1_debug_mode = 'Y' THEN
423: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Standard INV LINES Loop');
424: END IF;
425: if cur_get_std_lines.line_num = 1
426: then
427:
441: P_rate => l_rate,
442: X_status => l_status );
443:
444: IF g1_debug_mode = 'Y' THEN
445: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' After Convert Call status :' || l_status);
446: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_denominator : ' || l_denominator);
447: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_numerator : ' || l_numerator);
448: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_rate : ' || l_rate);
449: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_inv_currency_code : ' || l_inv_currency_code);
442: X_status => l_status );
443:
444: IF g1_debug_mode = 'Y' THEN
445: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' After Convert Call status :' || l_status);
446: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_denominator : ' || l_denominator);
447: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_numerator : ' || l_numerator);
448: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_rate : ' || l_rate);
449: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_inv_currency_code : ' || l_inv_currency_code);
450: END IF;
443:
444: IF g1_debug_mode = 'Y' THEN
445: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' After Convert Call status :' || l_status);
446: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_denominator : ' || l_denominator);
447: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_numerator : ' || l_numerator);
448: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_rate : ' || l_rate);
449: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_inv_currency_code : ' || l_inv_currency_code);
450: END IF;
451: if l_status is not null
444: IF g1_debug_mode = 'Y' THEN
445: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' After Convert Call status :' || l_status);
446: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_denominator : ' || l_denominator);
447: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_numerator : ' || l_numerator);
448: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_rate : ' || l_rate);
449: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_inv_currency_code : ' || l_inv_currency_code);
450: END IF;
451: if l_status is not null
452: then
445: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' After Convert Call status :' || l_status);
446: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_denominator : ' || l_denominator);
447: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_numerator : ' || l_numerator);
448: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' P_rate : ' || l_rate);
449: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_inv_currency_code : ' || l_inv_currency_code);
450: END IF;
451: if l_status is not null
452: then
453: X_Status := l_status;
458:
459: /* Update the invoice header 's invoice currency code and
460: conversion attribute */
461: IF g1_debug_mode = 'Y' THEN
462: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DI ');
463: END IF;
464: Update pa_draft_invoices_all
465: set inv_currency_code = l_inv_currency_code
466: ,inv_rate_type = l_inv_rate_type
478:
479: end if;
480:
481: IF g1_debug_mode = 'Y' THEN
482: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Invoice Number :' || p_draft_inv_num);
483: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Line Number :' || cur_get_std_lines.line_num);
484: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Invoice Amount :' || l_inv_amt);
485: END IF;
486:
479: end if;
480:
481: IF g1_debug_mode = 'Y' THEN
482: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Invoice Number :' || p_draft_inv_num);
483: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Line Number :' || cur_get_std_lines.line_num);
484: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Invoice Amount :' || l_inv_amt);
485: END IF;
486:
487: l_max_line_num := cur_get_std_lines.line_num;
480:
481: IF g1_debug_mode = 'Y' THEN
482: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Invoice Number :' || p_draft_inv_num);
483: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Line Number :' || cur_get_std_lines.line_num);
484: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Invoice Amount :' || l_inv_amt);
485: END IF;
486:
487: l_max_line_num := cur_get_std_lines.line_num;
488:
490: l_tot_proj_amt := l_tot_proj_amt + cur_get_std_lines.amount;
491:
492: /* Update the line 's invoice currency amount*/
493: IF g1_debug_mode = 'Y' THEN
494: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII ');
495: END IF;
496:
497: update pa_draft_invoice_items
498: set inv_amount = l_inv_amt
523: ((cur_get_ret_lines.retention/100)*
524: l_total_inv_amount),l_inv_currency_code); */
525:
526: IF g1_debug_mode = 'Y' THEN
527: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for Retention ');
528: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Retention Amount in IPC : ' || cur_get_ret_lines.amt);
529: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Retention Amount in ITC : ' || l_inv_ret_amt);
530: END IF;
531:
524: l_total_inv_amount),l_inv_currency_code); */
525:
526: IF g1_debug_mode = 'Y' THEN
527: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for Retention ');
528: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Retention Amount in IPC : ' || cur_get_ret_lines.amt);
529: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Retention Amount in ITC : ' || l_inv_ret_amt);
530: END IF;
531:
532: update pa_draft_invoice_items
525:
526: IF g1_debug_mode = 'Y' THEN
527: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for Retention ');
528: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Retention Amount in IPC : ' || cur_get_ret_lines.amt);
529: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Retention Amount in ITC : ' || l_inv_ret_amt);
530: END IF;
531:
532: update pa_draft_invoice_items
533: set inv_amount = l_inv_ret_amt
547: l_round_off_amt := l_total_inv_amount - l_con_amt;
548:
549:
550: IF g1_debug_mode = 'Y' THEN
551: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for Adjustment ');
552: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Invoice Amount : ' || l_total_inv_amount);
553: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Retentn Amount : ' || l_total_retn_amount);
554: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Calcul Amount : ' || l_con_amt);
555: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Round Off Amt : ' || l_round_off_amt);
548:
549:
550: IF g1_debug_mode = 'Y' THEN
551: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for Adjustment ');
552: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Invoice Amount : ' || l_total_inv_amount);
553: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Retentn Amount : ' || l_total_retn_amount);
554: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Calcul Amount : ' || l_con_amt);
555: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Round Off Amt : ' || l_round_off_amt);
556: END IF;
549:
550: IF g1_debug_mode = 'Y' THEN
551: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for Adjustment ');
552: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Invoice Amount : ' || l_total_inv_amount);
553: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Retentn Amount : ' || l_total_retn_amount);
554: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Calcul Amount : ' || l_con_amt);
555: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Round Off Amt : ' || l_round_off_amt);
556: END IF;
557:
550: IF g1_debug_mode = 'Y' THEN
551: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for Adjustment ');
552: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Invoice Amount : ' || l_total_inv_amount);
553: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Retentn Amount : ' || l_total_retn_amount);
554: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Calcul Amount : ' || l_con_amt);
555: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Round Off Amt : ' || l_round_off_amt);
556: END IF;
557:
558: Update PA_DRAFT_INVOICE_ITEMS dii
551: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for Adjustment ');
552: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Invoice Amount : ' || l_total_inv_amount);
553: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Retentn Amount : ' || l_total_retn_amount);
554: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Calcul Amount : ' || l_con_amt);
555: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Total Round Off Amt : ' || l_round_off_amt);
556: END IF;
557:
558: Update PA_DRAFT_INVOICE_ITEMS dii
559: SET dii.Inv_amount = pa_currency.round_trans_currency_amt(
564:
565:
566: /* Set invoice currency amount for net zero line to zero */
567: IF g1_debug_mode = 'Y' THEN
568: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Update DII for net zero ');
569: END IF;
570: update pa_draft_invoice_items
571: set inv_amount = 0
572: where project_id = P_Project_Id
577:
578: end if;/* end if for l_inv_currency_code <> l_invproc_currency_code */
579:
580: IF g1_debug_mode = 'Y' THEN
581: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' PFC : ' || l_func_curr);
582: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Inv Trans : ' || l_inv_currency_code);
583: END IF;
584:
585: -- FP_M Changes #1
578: end if;/* end if for l_inv_currency_code <> l_invproc_currency_code */
579:
580: IF g1_debug_mode = 'Y' THEN
581: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' PFC : ' || l_func_curr);
582: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Inv Trans : ' || l_inv_currency_code);
583: END IF;
584:
585: -- FP_M Changes #1
586: IF (l_func_curr <> l_inv_currency_code) and (l_invproc_currency_code <> l_func_curr) THEN
585: -- FP_M Changes #1
586: IF (l_func_curr <> l_inv_currency_code) and (l_invproc_currency_code <> l_func_curr) THEN
587:
588: IF g1_debug_mode = 'Y' THEN
589: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' If (l_func_curr <> l_inv_currency_code) ');
590: END IF;
591:
592: IF l_ProjFunc_Attr_For_AR_Flag <> 'Y' then
593: -- This if condition is added from FP_M changes bug 3693879
682: );
683:
684: --================================
685:
686: PA_MCB_INVOICE_PKG.log_message('recalculATE: If l_ProjFunc_Attr_For_AR_Flag = Y');
687: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_invoice_date ' || l_invoice_date);
688: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_PFC_Exchg_Rate_Date_Code ' || l_PFC_Exchg_Rate_Date_Code);
689: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_Date ' || l_projfunc_Exchg_Rate_Date);
690: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_type ' || l_projfunc_Exchg_Rate_type);
683:
684: --================================
685:
686: PA_MCB_INVOICE_PKG.log_message('recalculATE: If l_ProjFunc_Attr_For_AR_Flag = Y');
687: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_invoice_date ' || l_invoice_date);
688: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_PFC_Exchg_Rate_Date_Code ' || l_PFC_Exchg_Rate_Date_Code);
689: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_Date ' || l_projfunc_Exchg_Rate_Date);
690: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_type ' || l_projfunc_Exchg_Rate_type);
691: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Rate ' || l_Rate);
684: --================================
685:
686: PA_MCB_INVOICE_PKG.log_message('recalculATE: If l_ProjFunc_Attr_For_AR_Flag = Y');
687: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_invoice_date ' || l_invoice_date);
688: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_PFC_Exchg_Rate_Date_Code ' || l_PFC_Exchg_Rate_Date_Code);
689: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_Date ' || l_projfunc_Exchg_Rate_Date);
690: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_type ' || l_projfunc_Exchg_Rate_type);
691: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Rate ' || l_Rate);
692: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Projfunc_Exchange_Rate ' || l_Projfunc_Exchange_Rate);
685:
686: PA_MCB_INVOICE_PKG.log_message('recalculATE: If l_ProjFunc_Attr_For_AR_Flag = Y');
687: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_invoice_date ' || l_invoice_date);
688: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_PFC_Exchg_Rate_Date_Code ' || l_PFC_Exchg_Rate_Date_Code);
689: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_Date ' || l_projfunc_Exchg_Rate_Date);
690: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_type ' || l_projfunc_Exchg_Rate_type);
691: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Rate ' || l_Rate);
692: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Projfunc_Exchange_Rate ' || l_Projfunc_Exchange_Rate);
693:
686: PA_MCB_INVOICE_PKG.log_message('recalculATE: If l_ProjFunc_Attr_For_AR_Flag = Y');
687: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_invoice_date ' || l_invoice_date);
688: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_PFC_Exchg_Rate_Date_Code ' || l_PFC_Exchg_Rate_Date_Code);
689: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_Date ' || l_projfunc_Exchg_Rate_Date);
690: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_type ' || l_projfunc_Exchg_Rate_type);
691: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Rate ' || l_Rate);
692: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Projfunc_Exchange_Rate ' || l_Projfunc_Exchange_Rate);
693:
694: Update pa_draft_invoices_all
687: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_invoice_date ' || l_invoice_date);
688: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_PFC_Exchg_Rate_Date_Code ' || l_PFC_Exchg_Rate_Date_Code);
689: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_Date ' || l_projfunc_Exchg_Rate_Date);
690: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_type ' || l_projfunc_Exchg_Rate_type);
691: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Rate ' || l_Rate);
692: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Projfunc_Exchange_Rate ' || l_Projfunc_Exchange_Rate);
693:
694: Update pa_draft_invoices_all
695: set projfunc_invtrans_rate_type = l_projfunc_Exchg_Rate_type
688: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_PFC_Exchg_Rate_Date_Code ' || l_PFC_Exchg_Rate_Date_Code);
689: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_Date ' || l_projfunc_Exchg_Rate_Date);
690: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_projfunc_Exchg_Rate_type ' || l_projfunc_Exchg_Rate_type);
691: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Rate ' || l_Rate);
692: PA_MCB_INVOICE_PKG.log_message('recalculATE: l_Projfunc_Exchange_Rate ' || l_Projfunc_Exchange_Rate);
693:
694: Update pa_draft_invoices_all
695: set projfunc_invtrans_rate_type = l_projfunc_Exchg_Rate_type
696: ,projfunc_invtrans_rate_date = DECODE(l_PFC_Exchg_Rate_Date_Code,
705: End If; -- of l_ProjFunc_Attr_For_AR_Flag value condition
706: ELSIF (l_func_curr <> l_inv_currency_code) and (l_invproc_currency_code = l_func_curr) THEN
707:
708: IF g1_debug_mode = 'Y' THEN
709: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' If (l_func_curr <> l_inv_currency_code) and (l_invproc_currency_code = l_func_curr) ');
710: END IF;
711:
712: IF (l_invtras_rate_flag) THEN
713:
711:
712: IF (l_invtras_rate_flag) THEN
713:
714: IF g1_debug_mode = 'Y' THEN
715: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || 'Invoice Transaction Rate is available ');
716: END IF;
717:
718: -- FP_M changes
719: -- If the Project is implemented with Project Function Attributes for AR flag is
771: exception
772: when OTHERS
773: then
774: IF g1_debug_mode = 'Y' THEN
775: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Sql Error : ' || sqlerrm);
776: END IF;
777: RAISE;
778: end RECALCULATE;
779:
1031:
1032: /* Added to fix bug 2165379 */
1033:
1034: IF g1_debug_mode = 'Y' THEN
1035: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Inside Update cr memo');
1036: END IF;
1037:
1038: select PROJFUNC_CURRENCY_CODE,
1039: PROJECT_CURRENCY_CODE,
1044: from pa_projects_all
1045: where project_id = P_Project_Id;
1046:
1047: IF g1_debug_mode = 'Y' THEN
1048: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Currency Code ' || l_project_currency_code);
1049: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Functional ' || l_func_curr);
1050: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' IPC type ' || l_invproc_currency_type);
1051: END IF;
1052:
1045: where project_id = P_Project_Id;
1046:
1047: IF g1_debug_mode = 'Y' THEN
1048: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Currency Code ' || l_project_currency_code);
1049: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Functional ' || l_func_curr);
1050: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' IPC type ' || l_invproc_currency_type);
1051: END IF;
1052:
1053: IF l_invproc_currency_type ='PROJECT_CURRENCY' THEN
1046:
1047: IF g1_debug_mode = 'Y' THEN
1048: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Currency Code ' || l_project_currency_code);
1049: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Project Functional ' || l_func_curr);
1050: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' IPC type ' || l_invproc_currency_type);
1051: END IF;
1052:
1053: IF l_invproc_currency_type ='PROJECT_CURRENCY' THEN
1054:
1104: and invoice currency is same as project functional currency */
1105: then
1106:
1107: IF g1_debug_mode = 'Y' THEN
1108: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_invproc_currency_code = l_inv_currency_code = l_func_curr)' );
1109: END IF;
1110:
1111: -- X_Status := NULL;
1112:
1133: /* If invoice currency is same as invoice processing currency */
1134:
1135: -- X_Status := NULL;
1136: IF g1_debug_mode = 'Y' THEN
1137: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' If (l_invproc_currency_code = l_inv_currency_code) ');
1138: END IF;
1139:
1140: Update pa_draft_invoices_all
1141: set inv_currency_code = l_invproc_currency_code
1155: IF (l_inv_currency_code = l_func_curr) THEN
1156: -- If invoice currency is same as project functional currency
1157: -- X_Status := NULL;
1158: IF g1_debug_mode = 'Y' THEN
1159: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' If (l_inv_currency_code = l_func_curr) ');
1160: END IF;
1161:
1162: Update pa_draft_invoices_all
1163: set projfunc_invtrans_rate_type = NULL
1179:
1180: IF (l_invproc_currency_code <> l_inv_currency_code) AND (l_inv_currency_code <> l_func_curr) THEN
1181:
1182: IF g1_debug_mode = 'Y' THEN
1183: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_invproc_currency_code <> l_inv_currency_code ');
1184: END IF;
1185:
1186: open get_orig_amt;
1187:
1368: END IF;
1369: END IF;
1370:
1371: IF g1_debug_mode = 'Y' THEN
1372: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' PFC : ' || l_func_curr);
1373: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Inv Trans : ' || l_inv_currency_code);
1374: END IF;
1375:
1376: IF (l_func_curr <> l_inv_currency_code) and (l_invproc_currency_code <> l_func_curr) THEN
1369: END IF;
1370:
1371: IF g1_debug_mode = 'Y' THEN
1372: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' PFC : ' || l_func_curr);
1373: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' Inv Trans : ' || l_inv_currency_code);
1374: END IF;
1375:
1376: IF (l_func_curr <> l_inv_currency_code) and (l_invproc_currency_code <> l_func_curr) THEN
1377:
1375:
1376: IF (l_func_curr <> l_inv_currency_code) and (l_invproc_currency_code <> l_func_curr) THEN
1377:
1378: IF g1_debug_mode = 'Y' THEN
1379: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_func_curr <> l_inv_currency_code and l_invproc_currency_code <> l_func_curr ');
1380: END IF;
1381: /* Start of comment for bug 2544659 : To avoid divide by 0 on 0$ invoices
1382: SELECT NVL(sum(dii.inv_amount),0)/NVL(sum(dii.projfunc_bill_amount),0)
1383: INTO l_projfunc_invtrans_rate
1443:
1444: ELSIF (l_func_curr <> l_inv_currency_code) and (l_invproc_currency_code = l_func_curr) THEN
1445:
1446: IF g1_debug_mode = 'Y' THEN
1447: PA_MCB_INVOICE_PKG.log_message('recalculATE: ' || ' l_func_curr <> l_inv_currency_code and l_invproc_currency_code = l_func_curr ');
1448: END IF;
1449:
1450: Update pa_draft_invoices_all
1451: set projfunc_invtrans_rate_type = inv_rate_type
1538:
1539: BEGIN
1540:
1541: IF g1_debug_mode = 'Y' THEN
1542: PA_MCB_INVOICE_PKG.log_message ('Inside recalculate driver');
1543: END IF;
1544:
1545: OPEN UNAPP_INV_CUR;
1546:
1554:
1555: IF l_invoice_class = 'INVOICE'
1556: THEN
1557: IF g1_debug_mode = 'Y' THEN
1558: PA_MCB_INVOICE_PKG.log_message ('Calling Recalculate');
1559: END IF;
1560: PA_INVOICE_CURRENCY.RECALCULATE ( P_Project_Id =>l_project_id,
1561: P_Draft_Inv_Num =>l_draft_invoice_num,
1562: P_Calling_Module =>'PAIGEN',
1570: X_Status =>l_out_status);
1571: IF l_out_status IS NOT NULL
1572: THEN
1573: IF g1_debug_mode = 'Y' THEN
1574: PA_MCB_INVOICE_PKG.log_message ('recalculATE: ' || 'Insert distribution warning ');
1575: END IF;
1576: Insert_Distrbution_Warning ( P_Project_ID =>l_Project_ID,
1577: P_Draft_Invoice_Num =>l_draft_invoice_num,
1578: P_User_ID =>P_User_ID,
1585: IF l_out_status = 'PA_NO_EXCH_RATE_EXISTS' OR l_out_status ='PA_CURR_NOT_VALID'
1586: OR l_out_status = 'PA_USR_RATE_NOT_ALLOWED'
1587: THEN
1588: IF g1_debug_mode = 'Y' THEN
1589: PA_MCB_INVOICE_PKG.log_message ('recalculATE: ' || 'Invoice Generation Error is set....'||l_out_status);
1590: END IF;
1591: UPDATE pa_draft_invoices_all
1592: SET generation_error_flag='Y',
1593: transfer_rejection_reason= (SELECT meaning FROM pa_lookups
1601: END IF;
1602: ELSIF l_invoice_class = 'CREDIT_MEMO'
1603: THEN
1604: IF g1_debug_mode = 'Y' THEN
1605: PA_MCB_INVOICE_PKG.log_message ('recalculATE: ' || 'Calling Upddate_crmemo_invamt ');
1606: END IF;
1607: PA_INVOICE_CURRENCY.Update_CRMemo_Invamt
1608: (P_Project_Id =>l_Project_ID,
1609: P_Draft_Inv_Num =>l_draft_invoice_num,