1 PACKAGE PA_FP_MULTI_CURRENCY_PKG AUTHID CURRENT_USER AS
2 --$Header: PAFPMCPS.pls 120.2 2006/07/26 10:22:43 prachand noship $
3
4
5 -- Package Variables.
6
7 g_project_id pa_projects_all.project_id%TYPE;
8 g_project_number pa_projects_all.segment1%TYPE;
9 g_fin_plan_type_id pa_proj_fp_options.fin_plan_type_id%TYPE;
10
11 g_projfunc_currency_code varchar2(30);
12 g_projfunc_cost_rate_type varchar2(30);
13 g_projfunc_cost_exchange_rate number;
14 g_projfunc_cost_rate_date_type varchar2(30);
15 g_projfunc_cost_rate_date date;
16 g_projfunc_rev_rate_type varchar2(30);
17 g_projfunc_rev_exchange_rate number;
18 g_projfunc_rev_rate_date_type varchar2(30);
19 g_projfunc_rev_rate_date date;
20
21 g_proj_currency_code varchar2(30);
22 g_proj_cost_rate_type varchar2(30);
23 g_proj_cost_exchange_rate number;
24 g_proj_cost_rate_date_type varchar2(30);
25 g_proj_cost_rate_date date;
26 g_proj_rev_rate_type varchar2(30);
27 g_proj_rev_exchange_rate number;
28 g_proj_rev_rate_date_type varchar2(30);
29 g_proj_rev_rate_date date;
30
31 TYPE cached_row IS RECORD (
32 from_currency VARCHAR2(30),
33 to_currency VARCHAR2(30),
34 numerator NUMBER,
35 denominator NUMBER,
36 rate NUMBER,
37 rate_date DATE,
38 rate_type VARCHAR2(30),
39 line_type VARCHAR2(30)); -- will store Cost/Revenue
40
41 TYPE cached_row_tab is TABLE of cached_row INDEX BY BINARY_INTEGER;
42
43 TYPE number_type_tab IS TABLE OF NUMBER
44 INDEX BY BINARY_INTEGER;
45
46 TYPE date_type_tab IS TABLE OF DATE
47 INDEX BY BINARY_INTEGER;
48
49 TYPE char30_type_tab IS TABLE OF VARCHAR2(30)
50 INDEX BY BINARY_INTEGER;
51
52 TYPE char240_type_tab IS TABLE OF VARCHAR2(240)
53 INDEX BY BINARY_INTEGER;
54
55 TYPE rowid_type_tab IS TABLE OF ROWID
56 INDEX BY BINARY_INTEGER;
57
58 PROCEDURE conv_mc_bulk ( p_resource_assignment_id_tab IN pa_fp_multi_currency_pkg.number_type_tab
59 ,p_start_date_tab IN pa_fp_multi_currency_pkg.date_type_tab
60 ,p_end_date_tab IN pa_fp_multi_currency_pkg.date_type_tab
61 ,p_txn_currency_code_tab IN pa_fp_multi_currency_pkg.char240_type_tab
62 ,p_txn_raw_cost_tab IN pa_fp_multi_currency_pkg.number_type_tab
63 ,p_txn_burdened_cost_tab IN pa_fp_multi_currency_pkg.number_type_tab
64 ,p_txn_revenue_tab IN pa_fp_multi_currency_pkg.number_type_tab
65 ,p_projfunc_currency_code_tab IN pa_fp_multi_currency_pkg.char240_type_tab
66 ,p_projfunc_cost_rate_type_tab IN pa_fp_multi_currency_pkg.char240_type_tab
67 ,p_projfunc_cost_rate_tab IN OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
68 ,p_projfunc_cost_rate_date_tab IN pa_fp_multi_currency_pkg.date_type_tab
69 ,p_projfunc_rev_rate_type_tab IN pa_fp_multi_currency_pkg.char240_type_tab
70 ,p_projfunc_rev_rate_tab IN OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
71 ,p_projfunc_rev_rate_date_tab IN pa_fp_multi_currency_pkg.date_type_tab
72 ,x_projfunc_raw_cost_tab OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
73 ,x_projfunc_burdened_cost_tab OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
74 ,x_projfunc_revenue_tab OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
75 ,x_projfunc_rejection_tab OUT NOCOPY pa_fp_multi_currency_pkg.char30_type_tab
76 ,p_proj_currency_code_tab IN pa_fp_multi_currency_pkg.char240_type_tab
77 ,p_proj_cost_rate_type_tab IN pa_fp_multi_currency_pkg.char240_type_tab
78 ,p_proj_cost_rate_tab IN OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
79 ,p_proj_cost_rate_date_tab IN pa_fp_multi_currency_pkg.date_type_tab
80 ,p_proj_rev_rate_type_tab IN pa_fp_multi_currency_pkg.char240_type_tab
81 ,p_proj_rev_rate_tab IN OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
82 ,p_proj_rev_rate_date_tab IN pa_fp_multi_currency_pkg.date_type_tab
83 ,x_proj_raw_cost_tab OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
84 ,x_proj_burdened_cost_tab OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
85 ,x_proj_revenue_tab OUT NOCOPY pa_fp_multi_currency_pkg.number_type_tab
86 ,x_proj_rejection_tab OUT NOCOPY pa_fp_multi_currency_pkg.char30_type_tab
87 ,p_user_validate_flag_tab IN pa_fp_multi_currency_pkg.char240_type_tab
88 ,p_calling_module IN VARCHAR2 DEFAULT 'UPDATE_PLAN_TRANSACTION' -- Added for bug#5395732
89 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
93 /* added two new params source context and budget line id
90 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
91 ,x_msg_data OUT NOCOPY VARCHAR2); --File.Sql.39 bug 4440895
92
94 * so that this api can be called from calculate for each budget line
95 * while updating the budget lines to derive pc and pfc attribs
96 */
97 PROCEDURE convert_txn_currency
98 ( p_budget_version_id IN pa_budget_versions.budget_version_id%TYPE
99 ,p_entire_version IN VARCHAR2 DEFAULT 'N'
100 ,p_budget_line_id IN NUMBER DEFAULT NULL
101 ,p_source_context IN VARCHAR2 DEFAULT 'BUDGET_VERSION'
102 ,p_calling_module IN VARCHAR2 DEFAULT 'UPDATE_PLAN_TRANSACTION'-- Added for Bug#5395732
103 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
104 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
105 ,x_msg_data OUT NOCOPY VARCHAR2); --File.Sql.39 bug 4440895
106
107 /*=============================================================================
108 This api is used to Round budget line amounts as per the currency precision/
109 MAU (Minimum Accountable Unit). Quantity would be rounded to 5 decimal points.
110 The api would be called from Copy Version Amounts flow with non-zero adj %
111 The api is also called Change Order Revenue amount partial implementation.
112
113 p_calling_context -> COPY_VERSION, CHANGE_ORDER_MERGE
114 The parameters p_bls_inserted_after_id will be used only
115 when p_calling_context is CHANGE_ORDER_MERGE
116 p_bls_inserted_after_id : This value will be used to find out the budget lines that
117 got inserted in this flow. All the budget lines with
118 1. budget line id > p_bls_inserted_after_id AND
119 2. budget_Version_id = p_budget_version_id
120 will be considered as inserted in this flow.
121
122 Tracking bug No: 4035856 Rravipat Initial creation
123 ==============================================================================*/
124
125 PROCEDURE Round_Budget_Line_Amounts(
126 p_budget_version_id IN pa_budget_versions.budget_version_id%TYPE
127 ,p_bls_inserted_after_id IN pa_budget_lines.budget_line_id%TYPE DEFAULT NULL
128 ,p_calling_context IN VARCHAR2
129 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
130 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
131 ,x_msg_data OUT NOCOPY VARCHAR2); --File.Sql.39 bug 4440895
132
133 /* Perf Bug :3683132 The outer join with pa_fp_currencies causing FTS exceeds 10
134 * in order to avoid this, a function created to cache the values
135 * and remove the outer joins from the where clause
136 * After this change the explain plan is
137 * Shared memory(M) = 62831, Parse Time(S) = 0 , Total Cost = 51, Nof. FTS = 0
138 1:SELECT STATEMENT :(cost=51,rows=1)
139 2:SORT ORDER BY :(cost=51,rows=1)
140 3:FILTER :(cost=,rows=)
141 4:TABLE ACCESS BY INDEX ROWID PA_BUDGET_LINES :(cost=49,rows=1)
142 5:INDEX RANGE SCAN PA_BUDGET_LINES_N3 :(cost=2,rows=1)
143 4:TABLE ACCESS BY INDEX ROWID PA_RESOURCE_ASSIGNMENTS :(cost=2,rows=1)
144 5:INDEX UNIQUE SCAN PA_RESOURCE_ASSIGNMENTS_U1 :(cost=1,rows=1)
145 * Refer to bug for more details
146 */
147 FUNCTION get_fp_cur_details( p_budget_version_id Number
148 ,p_txn_currency_code Varchar2
149 ,p_context Varchar2 default 'COST'
150 ,p_mode Varchar2 default 'PROJECT' ) RETURN NUMBER ;
151
152 -->This API is written as part of rounding changes. This API will be called from PAFPCIMB.implement_ci_into_single_ver
153 -->API when partial implementation happens.
154 ---->p_agr_currency_code,p_project_currency_code and p_projfunc_currency_code should be valid and not null
155 ---->All the p_...tbl input parameters should have same no. of elemeents
156 ---->p_txn...tbls will be rounded based on p_agr_currency_code, p_project_...tbls will be rounded based on
157 --p_project_currency_code and p_projfunc_...tbls will be rounded based on p_projfunc_currency_code
158 ---->px_quantity_tbl will be rounded to have max 5 digits after decimal point
159 PROCEDURE round_amounts
160 ( px_quantity_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
161 ,p_agr_currency_code IN OUT NOCOPY pa_budget_lines.txn_currency_code%TYPE --File.Sql.39 bug 4440895
162 ,px_txn_raw_cost_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
163 ,px_txn_burdened_cost_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
164 ,px_txn_revenue_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
165 ,p_project_currency_code IN OUT NOCOPY pa_budget_lines.project_currency_code%TYPE --File.Sql.39 bug 4440895
166 ,px_project_raw_cost_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
167 ,px_project_burdened_cost_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
168 ,px_project_revenue_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
169 ,p_projfunc_currency_code IN OUT NOCOPY pa_budget_lines.projfunc_currency_code%TYPE --File.Sql.39 bug 4440895
170 ,px_projfunc_raw_cost_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
171 ,px_projfunc_burdened_cost_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
172 ,px_projfunc_revenue_tbl IN OUT NOCOPY SYSTEM.pa_num_tbl_type
173 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
174 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
175 ,x_msg_data OUT NOCOPY VARCHAR2); --File.Sql.39 bug 4440895
176 END PA_FP_MULTI_CURRENCY_PKG;