591: IS
592: BEGIN
593: pa_cc_utils.set_curr_function('GetImpCurrInfo');
594: IF PG_DEBUG = 'Y' THEN
595: pa_debug.G_err_Stage := 'call to pa_multi_currency.init';
596: log_message('log_message: ' || pa_debug.G_err_Stage);
597: END IF;
598:
599: pa_multi_currency.init;
595: pa_debug.G_err_Stage := 'call to pa_multi_currency.init';
596: log_message('log_message: ' || pa_debug.G_err_Stage);
597: END IF;
598:
599: pa_multi_currency.init;
600:
601: IF PG_DEBUG = 'Y' THEN
602: pa_debug.G_err_stage := 'Assigning currency code and rate type to local variables';
603: log_message('log_message: ' || pa_debug.G_err_Stage);
601: IF PG_DEBUG = 'Y' THEN
602: pa_debug.G_err_stage := 'Assigning currency code and rate type to local variables';
603: log_message('log_message: ' || pa_debug.G_err_Stage);
604: END IF;
605: G_accounting_currency_code := pa_multi_currency.G_accounting_currency_code;
606: G_default_rate_type := pa_multi_currency.G_rate_type;
607:
608: pa_cc_utils.reset_curr_function;
609: EXCEPTION
602: pa_debug.G_err_stage := 'Assigning currency code and rate type to local variables';
603: log_message('log_message: ' || pa_debug.G_err_Stage);
604: END IF;
605: G_accounting_currency_code := pa_multi_currency.G_accounting_currency_code;
606: G_default_rate_type := pa_multi_currency.G_rate_type;
607:
608: pa_cc_utils.reset_curr_function;
609: EXCEPTION
610: WHEN NO_DATA_FOUND THEN
652: log_message('log_message: ' || pa_debug.G_err_Stage);
653: END IF;
654:
655: -- PA-I Changes : The API get_project_rate_type has been renamed to get_proj_rate_type
656: pa_multi_currency_txn.get_proj_rate_type(P_task_id => X_task_id,
657: P_project_currency_code => X_project_currency_code,
658: P_project_rate_type => X_project_rate_type);
659:
660: IF PG_DEBUG = 'Y' THEN
662: log_message('log_message: ' || pa_debug.G_err_Stage);
663: END IF;
664:
665: -- PA-I Changes : Calling API to get Proj Functional Currency Code only
666: pa_multi_currency_txn.get_projfunc_cost_rate_type(P_task_id => X_task_id,
667: P_projfunc_currency_code => X_projfunc_currency_code,
668: P_projfunc_cost_rate_type => X_projfunc_cost_rate_type);
669:
670: G_CurrInfoPrjCurrCode := X_project_currency_code;
716:
717: /* PA-I Changes
718: For un-accounted transactions we need not call DefaultCurrAttributes.
719: This is because the checks that are being performed here will be anyway
720: performed during costing in pa_multi_currency_txn. To avoid redundant code
721: we are not performing these checks in PA_TRX_IMPORT.
722: Please see prior versions for the changed DefaultCurrAttributes if needed.
723: */
724:
2766:
2767: ELSE -- X_denom_currency_code IS NOT NULL
2768:
2769: IF PG_DEBUG = 'Y' THEN
2770: pa_debug.G_err_stage := 'Calling pa_multi_currency.validate_currency_code';
2771: log_message('log_message: ' || pa_debug.G_err_Stage);
2772: END IF;
2773: IF (pa_multi_currency.validate_currency_code(
2774: P_currency_code =>X_denom_currency_code,
2769: IF PG_DEBUG = 'Y' THEN
2770: pa_debug.G_err_stage := 'Calling pa_multi_currency.validate_currency_code';
2771: log_message('log_message: ' || pa_debug.G_err_Stage);
2772: END IF;
2773: IF (pa_multi_currency.validate_currency_code(
2774: P_currency_code =>X_denom_currency_code,
2775: P_ei_date =>X_ei_date)= 'N')
2776: THEN
2777:
2841:
2842: Else
2843:
2844: IF PG_DEBUG = 'Y' THEN
2845: pa_debug.G_err_stage := 'Calling pa_multi_currency.get_conversion_type';
2846: log_message('log_message: ' || pa_debug.G_err_Stage);
2847: END IF;
2848: G_acct_rate_type := pa_multi_currency.get_conversion_type(
2849: P_user_rate_type => X_acct_rate_type);
2844: IF PG_DEBUG = 'Y' THEN
2845: pa_debug.G_err_stage := 'Calling pa_multi_currency.get_conversion_type';
2846: log_message('log_message: ' || pa_debug.G_err_Stage);
2847: END IF;
2848: G_acct_rate_type := pa_multi_currency.get_conversion_type(
2849: P_user_rate_type => X_acct_rate_type);
2850:
2851: End If;
2852:
2872:
2873: --Corrected Fix for Bug 2489534
2874: If (nvl(X_module, 'EXTERNAL') <> 'PAAPIMP') Then
2875: IF PG_DEBUG = 'Y' THEN
2876: pa_debug.G_err_stage := 'Calling pa_multi_currency.get_conversion_type';
2877: log_message('log_message: ' || pa_debug.G_err_Stage);
2878: END IF;
2879: G_project_rate_type := pa_multi_currency.get_conversion_type(
2880: P_user_rate_type => X_project_rate_type);
2875: IF PG_DEBUG = 'Y' THEN
2876: pa_debug.G_err_stage := 'Calling pa_multi_currency.get_conversion_type';
2877: log_message('log_message: ' || pa_debug.G_err_Stage);
2878: END IF;
2879: G_project_rate_type := pa_multi_currency.get_conversion_type(
2880: P_user_rate_type => X_project_rate_type);
2881: Else
2882: G_project_rate_type := X_project_rate_type;
2883: End If;
2904:
2905: --Corrected Fix for Bug 2489534
2906: If (nvl(X_module, 'EXTERNAL') <> 'PAAPIMP') Then
2907: IF PG_DEBUG = 'Y' THEN
2908: pa_debug.G_err_stage := 'Calling pa_multi_currency.get_conversion_type';
2909: log_message('log_message: ' || pa_debug.G_err_Stage);
2910: END IF;
2911: G_projfunc_cost_rate_type := pa_multi_currency.get_conversion_type(
2912: P_user_rate_type => X_projfunc_cost_rate_type);
2907: IF PG_DEBUG = 'Y' THEN
2908: pa_debug.G_err_stage := 'Calling pa_multi_currency.get_conversion_type';
2909: log_message('log_message: ' || pa_debug.G_err_Stage);
2910: END IF;
2911: G_projfunc_cost_rate_type := pa_multi_currency.get_conversion_type(
2912: P_user_rate_type => X_projfunc_cost_rate_type);
2913: Else
2914: G_projfunc_cost_rate_type := X_projfunc_cost_rate_type;
2915: End If;
2933: IF ( G_acct_rate_type = 'User' ) THEN
2934:
2935: -- check if rate type 'User' is allowed
2936: IF PG_DEBUG = 'Y' THEN
2937: pa_debug.G_err_stage := 'Calling pa_multi_currency.is_user_rate_type_allowed';
2938: log_message('log_message: ' || pa_debug.G_err_Stage);
2939: END IF;
2940: IF ( pa_multi_currency.is_user_rate_type_allowed(
2941: P_from_currency => X_denom_currency_code,
2936: IF PG_DEBUG = 'Y' THEN
2937: pa_debug.G_err_stage := 'Calling pa_multi_currency.is_user_rate_type_allowed';
2938: log_message('log_message: ' || pa_debug.G_err_Stage);
2939: END IF;
2940: IF ( pa_multi_currency.is_user_rate_type_allowed(
2941: P_from_currency => X_denom_currency_code,
2942: P_to_currency => G_accounting_currency_code,
2943: P_conversion_date => nvl(X_acct_rate_date,sysdate))='N')
2944: THEN
2967:
2968: IF ( G_project_rate_type = 'User' ) THEN
2969:
2970: IF PG_DEBUG = 'Y' THEN
2971: pa_debug.G_err_stage := 'Calling pa_multi_currency.is_user_rate_type_allowed';
2972: log_message('log_message: ' || pa_debug.G_err_Stage);
2973: END IF;
2974: IF ( pa_multi_currency.is_user_rate_type_allowed(
2975: P_from_currency => X_denom_currency_code,
2970: IF PG_DEBUG = 'Y' THEN
2971: pa_debug.G_err_stage := 'Calling pa_multi_currency.is_user_rate_type_allowed';
2972: log_message('log_message: ' || pa_debug.G_err_Stage);
2973: END IF;
2974: IF ( pa_multi_currency.is_user_rate_type_allowed(
2975: P_from_currency => X_denom_currency_code,
2976: P_to_currency => X_project_currency_code,
2977: P_conversion_date => nvl(X_project_rate_date,sysdate))='N')
2978: THEN
2997:
2998: IF ( G_projfunc_cost_rate_type = 'User' ) THEN
2999:
3000: IF PG_DEBUG = 'Y' THEN
3001: pa_debug.G_err_stage := 'Calling pa_multi_currency.is_user_rate_type_allowed';
3002: log_message('log_message: ' || pa_debug.G_err_Stage);
3003: END IF;
3004: IF ( pa_multi_currency.is_user_rate_type_allowed(
3005: P_from_currency => X_denom_currency_code,
3000: IF PG_DEBUG = 'Y' THEN
3001: pa_debug.G_err_stage := 'Calling pa_multi_currency.is_user_rate_type_allowed';
3002: log_message('log_message: ' || pa_debug.G_err_Stage);
3003: END IF;
3004: IF ( pa_multi_currency.is_user_rate_type_allowed(
3005: P_from_currency => X_denom_currency_code,
3006: P_to_currency => X_projfunc_currency_code,
3007: P_conversion_date => nvl(X_projfunc_cost_rate_date,sysdate))='N')
3008: THEN
3075:
3076: IF ( X_receipt_currency_code IS NOT NULL ) THEN
3077:
3078: IF PG_DEBUG = 'Y' THEN
3079: pa_debug.G_err_stage := 'Calling pa_multi_currency.validate_currency_code';
3080: log_message('log_message: ' || pa_debug.G_err_Stage);
3081: END IF;
3082: IF (pa_multi_currency.validate_currency_code(
3083: P_currency_code =>X_receipt_currency_code,
3078: IF PG_DEBUG = 'Y' THEN
3079: pa_debug.G_err_stage := 'Calling pa_multi_currency.validate_currency_code';
3080: log_message('log_message: ' || pa_debug.G_err_Stage);
3081: END IF;
3082: IF (pa_multi_currency.validate_currency_code(
3083: P_currency_code =>X_receipt_currency_code,
3084: P_ei_date => X_ei_date)= 'N')
3085: THEN
3086:
3139: -----------------------------------------------------------------------------*/
3140: /* PA-I Changes
3141: For un-accounted transactions we need not call DefaultCurrAttributes.
3142: This is because the checks that are being performed here will be anyway
3143: performed during costing in pa_multi_currency_txn. To avoid redundant code
3144: we are not performing these checks in PA_TRX_IMPORT.
3145: */
3146:
3147: /*-----------------------------------------------------------------------------
3224: l_acct_exchange_rate := X_acct_exchange_rate;
3225: l_acct_raw_cost := X_acct_raw_cost;
3226:
3227: IF PG_DEBUG = 'Y' THEN
3228: pa_debug.G_err_stage := 'Calling pa_multi_currency.convert_amount';
3229: log_message('log_message: ' || pa_debug.G_err_Stage);
3230: END IF;
3231:
3232: pa_multi_currency.convert_amount(
3228: pa_debug.G_err_stage := 'Calling pa_multi_currency.convert_amount';
3229: log_message('log_message: ' || pa_debug.G_err_Stage);
3230: END IF;
3231:
3232: pa_multi_currency.convert_amount(
3233: P_from_currency => X_denom_currency_code,
3234: P_to_currency => G_accounting_currency_code,
3235: P_conversion_date => l_acct_rate_date,
3236: P_conversion_type => l_acct_rate_type,
3293: -- If functional and transaction currencies are same the the
3294: -- corresponding amounts should also be equal
3295: --
3296: IF PG_DEBUG = 'Y' THEN
3297: pa_debug.G_err_stage := 'Calling pa_multi_currency.round_trans_currency_amt';
3298: log_message('log_message: ' || pa_debug.G_err_Stage);
3299: END IF;
3300:
3301: /* Added the call to round off X_acct_raw_cost for bug 2871273 */
3316: -- for accounted transactions. For accounted transactions
3317: -- the EI's are created with cost_distributed_flag='Y', so
3318: -- the the costing program cannot pick up these records
3319: -- to calculate the project currency costs. Here we are passing
3320: -- the G_gl_accted_flag to pa_multi_currency_txn package, the
3321: -- package will calculate the project cost if the gl_accted_flag
3322: -- is 'Y'.
3323: --
3324: -- initilize the local variables before passing them to
3331:
3332: BEGIN
3333:
3334: IF PG_DEBUG = 'Y' THEN
3335: pa_debug.G_err_stage := 'Calling pa_multi_currency_txn.get_currency_amounts';
3336: log_message('log_message: ' || pa_debug.G_err_Stage);
3337: END IF;
3338: pa_multi_currency_txn.get_currency_amounts(
3339: P_task_id => G_task_id,
3334: IF PG_DEBUG = 'Y' THEN
3335: pa_debug.G_err_stage := 'Calling pa_multi_currency_txn.get_currency_amounts';
3336: log_message('log_message: ' || pa_debug.G_err_Stage);
3337: END IF;
3338: pa_multi_currency_txn.get_currency_amounts(
3339: P_task_id => G_task_id,
3340: P_ei_date => X_ei_date,
3341: P_denom_raw_cost => X_denom_raw_cost,
3342: P_denom_curr_code => X_denom_currency_code,
3364: P_project_raw_cost => X_actual_project_raw_cost);
3365:
3366: /***************PA-I changes************************
3367: Commenting the exception section as the exceptions are already handled in
3368: the pa_multi_currency_txn pkg.
3369: ****************************************************/
3370:
3371: END; -- end calculate project raw cost
3372:
3852: -- initilize l_status
3853: l_status := NULL;
3854:
3855: IF PG_DEBUG = 'Y' THEN
3856: pa_debug.G_err_stage := 'Calling pa_multi_currency.convert_amount for functional currency';
3857: log_message('log_message: ' || pa_debug.G_err_Stage);
3858: END IF;
3859: pa_multi_currency.convert_amount(
3860: P_from_currency => X_denom_currency_code,
3855: IF PG_DEBUG = 'Y' THEN
3856: pa_debug.G_err_stage := 'Calling pa_multi_currency.convert_amount for functional currency';
3857: log_message('log_message: ' || pa_debug.G_err_Stage);
3858: END IF;
3859: pa_multi_currency.convert_amount(
3860: P_from_currency => X_denom_currency_code,
3861: P_to_currency => G_accounting_currency_code,
3862: P_conversion_date => X_acct_rate_date,
3863: P_conversion_type => G_acct_rate_type,
3883:
3884: l_status := NULL;
3885:
3886: IF PG_DEBUG = 'Y' THEN
3887: pa_debug.G_err_stage := 'Calling pa_multi_currency.convert_amount for project currency';
3888: log_message('log_message: ' || pa_debug.G_err_Stage);
3889: END IF;
3890: pa_multi_currency.convert_amount(
3891: P_from_currency => X_denom_currency_code,
3886: IF PG_DEBUG = 'Y' THEN
3887: pa_debug.G_err_stage := 'Calling pa_multi_currency.convert_amount for project currency';
3888: log_message('log_message: ' || pa_debug.G_err_Stage);
3889: END IF;
3890: pa_multi_currency.convert_amount(
3891: P_from_currency => X_denom_currency_code,
3892: P_to_currency => X_project_currency_code,
3893: P_conversion_date => X_project_rate_date,
3894: P_conversion_type => G_project_rate_type,
3915:
3916: l_status := NULL;
3917:
3918: IF PG_DEBUG = 'Y' THEN
3919: pa_debug.G_err_stage := 'Calling pa_multi_currency.convert_amount for project functional currency';
3920: log_message('log_message: ' || pa_debug.G_err_Stage);
3921: END IF;
3922: pa_multi_currency.convert_amount(
3923: P_from_currency => X_denom_currency_code,
3918: IF PG_DEBUG = 'Y' THEN
3919: pa_debug.G_err_stage := 'Calling pa_multi_currency.convert_amount for project functional currency';
3920: log_message('log_message: ' || pa_debug.G_err_Stage);
3921: END IF;
3922: pa_multi_currency.convert_amount(
3923: P_from_currency => X_denom_currency_code,
3924: P_to_currency => X_projfunc_currency_code,
3925: P_conversion_date => X_projfunc_cost_rate_date,
3926: P_conversion_type => G_projfunc_cost_rate_type,
6566: IF ( (current_system_linkage = 'ER') and
6567: (p_denom_currency_code <> p_acct_currency_code) ) THEN
6568:
6569: if (p_acct_rate_type is null) then
6570: l_acct_rate_type := pa_multi_currency.get_rate_type;
6571: else
6572: l_acct_rate_type := p_acct_rate_type;
6573: end if;
6574:
6572: l_acct_rate_type := p_acct_rate_type;
6573: end if;
6574:
6575: if (p_acct_rate_date is null) then
6576: pa_multi_currency_txn.get_acct_rate_date(
6577: P_EI_date => ending_date,
6578: P_acct_rate_date => l_acct_rate_date);
6579: else
6580: l_acct_rate_date := p_acct_rate_date;