1 PACKAGE body PA_FP_FCST_GEN_CLIENT_EXT as
2 /* $Header: PAFPFGCB.pls 120.2 2007/02/06 09:52:44 dthakker ship $ */
3 P_PA_DEBUG_MODE varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
4
5 PROCEDURE FCST_GEN_CLIENT_EXTN
6 (P_PROJECT_ID IN NUMBER
7 ,P_BUDGET_VERSION_ID IN NUMBER
8 ,P_RESOURCE_ASSIGNMENT_ID IN NUMBER
9 ,P_TASK_ID IN NUMBER
10 ,P_TASK_PERCENT_COMPLETE IN NUMBER
11 ,P_PROJECT_PERCENT_COMPLETE IN NUMBER
12 ,P_RESOURCE_LIST_MEMBER_ID IN NUMBER
13 ,P_UNIT_OF_MEASURE IN PA_RESOURCE_ASSIGNMENTS.UNIT_OF_MEASURE%TYPE
14 ,P_TXN_CURRENCY_CODE IN VARCHAR2
15 ,P_ETC_QTY IN NUMBER
16 ,P_ETC_RAW_COST IN NUMBER
17 ,P_ETC_BURDENED_COST IN NUMBER
18 ,P_ETC_REVENUE IN NUMBER
19 ,P_ETC_SOURCE IN VARCHAR2
20 ,P_ETC_GEN_METHOD IN VARCHAR2
21 ,P_ACTUAL_THRU_DATE IN DATE
22 ,P_ETC_START_DATE IN DATE
23 ,P_ETC_END_DATE IN DATE
24 ,P_PLANNED_WORK_QTY IN NUMBER
25 ,P_ACTUAL_WORK_QTY IN NUMBER
26 ,P_ACTUAL_QTY IN NUMBER
27 ,P_ACTUAL_RAW_COST IN NUMBER
28 ,P_ACTUAL_BURDENED_COST IN NUMBER
29 ,P_ACTUAL_REVENUE IN NUMBER
30 ,P_PERIOD_RATES_TBL IN l_pds_rate_dtls_tab
31 -- Start Bug 5726785
32 ,p_override_raw_cost_rate IN pa_resource_asgn_curr.txn_raw_cost_rate_override%TYPE
33 ,p_override_burd_cost_rate IN pa_resource_asgn_curr.txn_burden_cost_rate_override%TYPE
34 ,p_override_bill_rate IN pa_resource_asgn_curr.txn_bill_rate_override%TYPE
35 ,p_avg_raw_cost_rate IN pa_resource_asgn_curr.txn_average_raw_cost_rate%TYPE
36 ,p_avg_burd_cost_rate IN pa_resource_asgn_curr.txn_average_burden_cost_rate%TYPE
37 ,p_avg_bill_rate IN pa_resource_asgn_curr.txn_average_bill_rate%TYPE
38 ,px_period_amts_tbl IN OUT NOCOPY l_plan_txn_prd_amt_tbl
39 ,px_period_data_modified IN OUT NOCOPY VARCHAR2
40 -- End Bug 5726785
41 ,X_ETC_QTY OUT NOCOPY NUMBER
42 ,X_ETC_RAW_COST OUT NOCOPY NUMBER
43 ,X_ETC_BURDENED_COST OUT NOCOPY NUMBER
44 ,X_ETC_REVENUE OUT NOCOPY NUMBER
45 ,X_PERIOD_RATES_TBL OUT NOCOPY l_pds_rate_dtls_tab
46 ,X_RETURN_STATUS OUT NOCOPY VARCHAR2
47 ,X_MSG_DATA OUT NOCOPY VARCHAR2
48 ,X_MSG_COUNT OUT NOCOPY NUMBER) IS
49
50 l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_fcst_gen_client_ext.fcst_gen_client_extn';
51
52 l_ret_status VARCHAR2(100);
53 l_msg_count NUMBER;
54 l_msg_data VARCHAR2(2000);
55 l_data VARCHAR2(2000);
56 l_msg_index_out NUMBER:=0;
57
58 BEGIN
59 --Setting initial values
60 X_MSG_COUNT := 0;
61 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
62
63 IF p_pa_debug_mode = 'Y' THEN
64 pa_debug.set_curr_function( p_function => 'FCST_GEN_CLIENT_EXTN'
65 ,p_debug_mode => p_pa_debug_mode);
66 END IF;
67
68 -- This would the default value for px_period_data modified.
69 px_period_data_modified := 'N';
70
71 X_ETC_QTY := P_ETC_QTY;
72 X_ETC_RAW_COST := P_ETC_RAW_COST;
73 X_ETC_BURDENED_COST := P_ETC_BURDENED_COST;
74 X_ETC_REVENUE := P_ETC_REVENUE;
75
76 IF p_period_rates_tbl.count > 0 and
77 x_period_rates_tbl.count = 0 THEN
78 FOR j IN 1..p_period_rates_tbl.count LOOP
79 x_period_rates_tbl(j).period_name := p_period_rates_tbl(j).period_name;
80 x_period_rates_tbl(j).raw_cost_rate := p_period_rates_tbl(j).raw_cost_rate;
81 x_period_rates_tbl(j).burdened_cost_rate := p_period_rates_tbl(j).burdened_cost_rate;
82 x_period_rates_tbl(j).revenue_bill_rate := p_period_rates_tbl(j).revenue_bill_rate;
83 END LOOP;
84 END IF;
85
86 --If the periodic data has to be modified px_period_data has to be set to 'Y'
87 --and the value can be modified inside the loop
88
89 FOR j IN 1..px_period_amts_tbl.count LOOP
90 px_period_amts_tbl(j).period_name := px_period_amts_tbl(j).period_name;
91 px_period_amts_tbl(j).etc_quantity := px_period_amts_tbl(j).etc_quantity ;
92 px_period_amts_tbl(j).txn_raw_cost := px_period_amts_tbl(j).txn_raw_cost;
93 px_period_amts_tbl(j).txn_burdened_cost := px_period_amts_tbl(j).txn_burdened_cost;
94 px_period_amts_tbl(j).txn_revenue := px_period_amts_tbl(j).txn_revenue;
95 px_period_amts_tbl(j).init_quantity := px_period_amts_tbl(j).init_quantity;
96 px_period_amts_tbl(j).init_raw_cost := px_period_amts_tbl(j).init_raw_cost;
97 px_period_amts_tbl(j).init_revenue := px_period_amts_tbl(j).init_revenue;
98 px_period_amts_tbl(j).init_revenue := px_period_amts_tbl(j).init_revenue;
99 END LOOP;
100
101 IF p_pa_debug_mode = 'Y' THEN
102 pa_debug.Reset_Curr_Function;
103 END IF;
104
105 EXCEPTION
106 WHEN PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc THEN
107 -- Bug Fix: 4569365. Removed MRC code.
108 -- PA_MRC_FINPLAN.G_CALLING_MODULE := Null;
109 l_msg_count := FND_MSG_PUB.count_msg;
110 IF x_msg_count = 1 THEN
111 PA_INTERFACE_UTILS_PUB.get_messages
112 (p_encoded => FND_API.G_TRUE
113 ,p_msg_index => 1
114 ,p_msg_count => l_msg_count
115 ,p_msg_data => l_msg_data
116 ,p_data => l_data
117 ,p_msg_index_out => l_msg_index_out);
118 x_msg_data := l_data;
119 x_msg_count := l_msg_count;
120 ELSE
121 x_msg_count := l_msg_count;
122 END IF;
123 ROLLBACK;
124 x_return_status := FND_API.G_RET_STS_ERROR;
125
126 IF p_pa_debug_mode = 'Y' THEN
127 pa_debug.Reset_Curr_Function;
128 END IF;
129
130 WHEN OTHERS THEN
131 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
132 x_msg_data := SUBSTR(SQLERRM,1,240);
133 -- dbms_output.put_line('inside excep create res asg');
134 -- dbms_output.put_line(SUBSTR(SQLERRM,1,240));
135 FND_MSG_PUB.add_exc_msg
136 ( p_pkg_name => 'PA_FP_FCST_GEN_CLIENT_EXT'
137 ,p_procedure_name => 'FCST_GEN_CLIENT_EXTN');
138 IF p_pa_debug_mode = 'Y' THEN
139 pa_debug.Reset_Curr_Function;
140 END IF;
141 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
142
143 END FCST_GEN_CLIENT_EXTN;
144
145 END PA_FP_FCST_GEN_CLIENT_EXT;