[Home] [Help]
PACKAGE BODY: APPS.PA_TASKS_MAINT_PUB
Source
1 package body PA_TASKS_MAINT_PUB as
2 /*$Header: PATSKSPB.pls 120.5.12010000.2 2008/09/17 16:08:47 bifernan ship $*/
3
4 g_pkg_name CONSTANT VARCHAR2(30):= 'PA_TASKS_MAINT_PUB';
5 --begin add by rtarwat for FP.M developement
6 Invalid_Arg_Exc_WP Exception;
7 --begin add by rtarwat for FP.M developement
8 -- API Name: CREATE_TASK
9 -- Type: PUBLIC
10 -- Parameters:
11
12 -- API name : CREATE_TASK
13 -- Type : Public Procedure
14 -- Pre-reqs : None
15 -- Return Value : N/A
16 -- Parameters
17 -- p_api_version IN NUMBER := 1.0
18 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
19 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
20 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
21 -- p_validation_level IN VARCHAR2 := 100
22 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
23 -- p_debug_mode IN VARCHAR2 := 'N'
24 -- p_project_id IN NUMBER
25 -- p_reference_task_id IN NUMBER
26 -- p_reference_task_name IN VARCHAR2
27 -- p_peer_or_sub IN VARCHAR2
28 -- p_task_number IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
29 -- p_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
30 -- p_long_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
31 -- p_task_description IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
32 -- p_task_manager_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
33 -- p_task_manager_person_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
34 -- p_carrying_out_org_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
35 -- p_carrying_out_organization_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
36 -- p_task_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
37 -- p_priority_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
38 -- p_work_type_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
39 -- p_service_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
40 -- p_milestone_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
41 -- p_critical_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
42 -- p_chargeable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
43 -- p_billable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
44 -- p_receive_project_invoice_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
45 -- p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
46 -- p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
47 -- p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
48 -- p_estimated_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
49 -- p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
50 -- p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
51 -- p_task_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
52 -- p_task_completion_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
53 -- p_baseline_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
54 -- p_baseline_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
55 -- p_obligation_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
56 -- p_obligation_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
57 -- p_estimate_to_complete_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
58 -- p_baseline_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
59 -- p_scheduled_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
60 -- p_actual_work_to_date IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
61 -- p_work_unit IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
62 -- p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
63 -- p_job_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
64 -- p_emp_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
65 -- p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
66 -- p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
67 -- p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
68 -- p_pm_parent_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
69 -- p_pa_parent_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
70 -- p_address_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
71 -- p_ready_to_bill_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
72 -- p_ready_to_distribute_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
73 -- p_limit_to_txn_controls_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
74 -- p_labor_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
75 -- p_labor_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
76 -- p_labor_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
77 -- p_labor_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
78 -- p_nl_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
79 -- p_nl_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
80 -- p_nl_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
81 -- p_nl_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
82 -- p_labor_cost_multiplier_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
83 -- p_cost_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
84 -- p_rev_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
85 -- p_inv_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
86 -- p_cost_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
87 -- p_rev_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
88 -- p_inv_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
89 -- p_labor_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
90 -- p_nl_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
91 -- p_early_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
92 -- p_early_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
93 -- p_late_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
94 -- p_late_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
95 -- p_attribute_category IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
96 -- p_attribute1 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
97 -- p_attribute2 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
98 -- p_attribute3 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
99 -- p_attribute4 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
100 -- p_attribute5 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
101 -- p_attribute6 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
102 -- p_attribute7 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
103 -- p_attribute8 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
104 -- p_attribute9 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
105 -- p_attribute10 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
106 -- p_allow_cross_charge_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
107 -- p_project_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
108 -- p_project_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
109 -- p_cc_process_labor_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
110 -- p_labor_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
111 -- p_labor_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
112 -- p_cc_process_nl_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
113 -- p_nl_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
114 -- p_nl_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
115 -- p_inc_proj_progress_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
116 -- p_wbs_record_version_number IN NUMBER
117 -- p_task_id OUT NUMBER
118 -- x_return_status OUT VARCHAR2
119 -- x_msg_count OUT NUMBER
120 -- x_msg_data OUT VARCHAR2
121 --
122 -- History
123 --
124 -- 25-JUN-01 HSIU -Created
125 --
126 --
127 procedure CREATE_TASK
128 (
129 p_api_version IN NUMBER := 1.0
130 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
131 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
132 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
133 ,p_validation_level IN VARCHAR2 := 100
134 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
135 ,p_debug_mode IN VARCHAR2 := 'N'
136
137 ,p_project_id IN NUMBER
138 ,p_reference_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
139 ,p_reference_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
140 ,p_peer_or_sub IN VARCHAR2
141 ,p_task_number IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
142 ,p_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
143 ,p_long_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
144 ,p_task_description IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
145 ,p_task_manager_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
146 ,p_task_manager_person_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
147 ,p_carrying_out_org_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
148 ,p_carrying_out_organization_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
149 ,p_task_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
150 ,p_priority_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
151 ,p_work_type_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
152 ,p_service_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
153 ,p_milestone_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
154 ,p_critical_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
155 ,p_chargeable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
156 ,p_billable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
157 ,p_receive_project_invoice_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
158 ,p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
159 ,p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
160 ,p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
161 ,p_estimated_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
162 ,p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
163 ,p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
164 ,p_task_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
165 ,p_task_completion_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
166 ,p_baseline_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
167 ,p_baseline_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
168
169 ,p_obligation_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
170 ,p_obligation_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
171 ,p_estimate_to_complete_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
172 ,p_baseline_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
173 ,p_scheduled_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
174 ,p_actual_work_to_date IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
175 ,p_work_unit IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
176 ,p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
177
178 ,p_job_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
179 ,p_emp_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
180 ,p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
181 ,p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
182 ,p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
183 ,p_pm_parent_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
184 ,p_pa_parent_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
185 ,p_address_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
186 ,p_ready_to_bill_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
187 ,p_ready_to_distribute_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
188 ,p_limit_to_txn_controls_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
189 ,p_labor_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
190 ,p_labor_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
191 ,p_labor_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
192 ,p_labor_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
193 ,p_nl_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
194 ,p_nl_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
195 ,p_nl_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
196 ,p_nl_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
197 ,p_labor_cost_multiplier_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
198 ,p_cost_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
199 ,p_rev_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
200 ,p_inv_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
201 ,p_cost_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
202 ,p_rev_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
203 ,p_inv_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
204 ,p_labor_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
205 ,p_nl_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
206 ,p_early_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
207 ,p_early_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
208 ,p_late_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
209 ,p_late_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
210 ,p_attribute_category IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
211 ,p_attribute1 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
212 ,p_attribute2 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
213 ,p_attribute3 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
214 ,p_attribute4 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
215 ,p_attribute5 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
216 ,p_attribute6 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
217 ,p_attribute7 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
218 ,p_attribute8 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
219 ,p_attribute9 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
220 ,p_attribute10 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
221 ,p_allow_cross_charge_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
222 ,p_project_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
223 ,p_project_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
224 ,p_cc_process_labor_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
225 ,p_labor_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
226 ,p_labor_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
227 ,p_cc_process_nl_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
228 ,p_nl_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
229 ,p_nl_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
230 ,p_inc_proj_progress_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
231 ,p_taskfunc_cost_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
232 ,p_taskfunc_cost_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
233 ,p_non_lab_std_bill_rt_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
234 ,p_wbs_record_version_number IN NUMBER
235 ,p_labor_disc_reason_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
236 ,p_non_labor_disc_reason_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
237 --PA L Capital Project Changes 2872708
238 ,p_retirement_cost_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
239 ,p_cint_eligible_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
240 ,p_cint_stop_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
241 --End PA L Capital Project Changes 2872708
242
243 ,p_task_id IN OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
244
245 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
246 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
247 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
248 )
249 IS
250 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TASK';
251 l_api_version CONSTANT NUMBER := 1.0;
252 l_msg_count NUMBER;
253 l_msg_data VARCHAR2(250);
254 l_data VARCHAR2(250);
255 l_msg_index_out NUMBER;
256
257 l_ref_task_id NUMBER;
258 l_carrying_out_org_id NUMBER;
259 l_task_manager_id NUMBER;
260
261 l_return_status VARCHAR2(1);
262 l_error_msg_code VARCHAR2(250);
263 l_display_seq NUMBER;
264
265 l_dummy VARCHAR2(1);
266 l_max_seq NUMBER;
267 l_carrying_out_org_name VARCHAR2(250);
268
269 BEGIN
270
271 pa_tasks_maint_utils.set_org_id(p_project_id);
272
273 pa_debug.init_err_stack('PA_TASKS_MAINT_PUB.CREATE_TASK');
274
275 IF (p_debug_mode = 'Y') THEN
276 pa_debug.debug('PA_TASKS_MAINT_PUB.CREATE_TASK begin');
277 END IF;
278
279 IF p_commit = FND_API.G_TRUE THEN
280 savepoint CREATE_TASK;
281 END IF;
282
283 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
284 raise FND_API.G_EXC_UNEXPECTED_ERROR;
285 END IF;
286
287 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list, FND_API.G_FALSE)) THEN
288 pa_debug.debug('Performing ID validations and conversions');
289 FND_MSG_PUB.initialize;
290 END IF;
291
292 --BEGIN VALIDATIONS
293
294 IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
295 --Check Reference Task Name and Id
296
297 IF ((p_reference_task_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
298 (p_reference_task_name IS NOT NULL)) OR
299 ((p_reference_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
300 (p_reference_task_id IS NOT NULL)) THEN
301
302 --Call Check API.
303 /* pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
304 p_project_id => p_project_id,
305 p_task_name => p_reference_task_name,
306 p_task_id => p_reference_task_id,
307 p_check_id_flag => PA_STARTUP.G_Check_ID_Flag,
308 x_task_id => l_ref_task_id,
309 x_return_status => l_return_status,
310 x_error_msg_code => l_error_msg_code);*/
311
312 l_ref_task_id := p_reference_task_id;
313 l_return_status := FND_API.G_RET_STS_SUCCESS;
314
315 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
316 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
317 p_msg_name => l_error_msg_code);
318 END IF;
319 END IF; --End Name-Id Conversion
320
321 --Check Task Manager and Task Manager Id
322 IF ((p_task_manager_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
323 (p_task_manager_name IS NOT NULL)) OR
324 ((p_task_manager_person_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
325 (p_task_manager_person_id IS NOT NULL)) THEN
326 --Call Check API.
327
328 /* pa_tasks_maint_utils.check_task_mgr_name_or_id(
329 p_task_mgr_name => p_task_manager_name,
330 p_task_mgr_id => p_task_manager_person_id,
331 p_check_id_flag => PA_STARTUP.G_Check_ID_Flag,
332 x_task_mgr_id => l_task_manager_id,
333 x_return_status => l_return_status,
334 x_error_msg_code => l_error_msg_code);*/
335
336 l_task_manager_id := p_task_manager_person_id;
337 l_return_status := FND_API.G_RET_STS_SUCCESS;
338
339 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
340 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
341 p_msg_name => l_error_msg_code);
342 -- dbms_output.put_line( 'Error occured in task manager name to id conv. ' );
343 END IF;
344
345 END IF; --End Name-Id Conversion
346
347 --dbms_output.put_line( 'Check Carrying out organization name and Carrying out organization Id ' || p_carrying_out_organization_id);
348
349 --Check Carrying out organization name and Carrying out organization Id
350 IF p_carrying_out_org_name = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
351 THEN
352 l_carrying_out_org_name := FND_API.G_MISS_CHAR;
353 ELSE
354 l_carrying_out_org_name := p_carrying_out_org_name;
355 END IF;
356
357 IF p_carrying_out_organization_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
358 THEN
359 l_carrying_out_org_id := FND_API.G_MISS_NUM;
360 ELSE
361 l_carrying_out_org_id := p_carrying_out_organization_id;
362 END IF;
363
364 IF ((l_carrying_out_org_name <> FND_API.G_MISS_CHAR) AND
365 (l_carrying_out_org_name IS NOT NULL)) OR
366 ((l_carrying_out_org_id <> FND_API.G_MISS_NUM) AND
367 (l_carrying_out_org_id IS NOT NULL)) THEN
368
369 /* pa_hr_org_utils.Check_OrgName_Or_Id
370 (p_organization_id => l_carrying_out_org_id
371 ,p_organization_name => l_carrying_out_org_name
372 ,p_check_id_flag => 'Y'
373 ,x_organization_id => l_carrying_out_org_id
374 ,x_return_status => l_return_status
375 ,x_error_msg_code => l_error_msg_code);*/
376
377 l_return_status := FND_API.G_RET_STS_SUCCESS;
378
379 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
380 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
381 p_msg_name => l_error_msg_code);
382 --dbms_output.put_line( 'Error occured in org name to id conv. ' );
383
384 END IF;
385 END IF; --End Name-Id Conversion
386 ELSE
387 l_ref_task_id := p_reference_task_id;
388 l_carrying_out_org_id := p_carrying_out_organization_id;
389 l_task_manager_id := p_task_manager_person_id;
390 END IF;
391
392 --Check if there is any error
393 l_msg_count := FND_MSG_PUB.count_msg;
394 if l_msg_count > 0 then
395 x_msg_count := l_msg_count;
396 if x_msg_count = 1 then
397 pa_interface_utils_pub.get_messages
398 (p_encoded => FND_API.G_TRUE,
399 p_msg_index => 1,
400 p_data => l_data,
401 p_msg_index_out => l_msg_index_out);
402 x_msg_data := l_data;
403 end if;
404 raise FND_API.G_EXC_ERROR;
405 end if;
406
407 --dbms_output.put_line( 'Call Lock project ' );
408
409 --Call Lock project
410 /* PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
411 p_validate_only => p_validate_only,
412 p_calling_module => p_calling_module,
413 p_project_id => p_project_id,
414 p_wbs_record_version_number => p_wbs_record_version_number,
415 x_return_status => x_return_status,
416 x_msg_data => x_msg_data ); */
417
418 --dbms_output.put_line( 'Call Private API ' );
419
420
421 --Call Private API
422 PA_TASKS_MAINT_PVT.CREATE_TASK
423 (
424 p_commit => p_commit
425 ,p_calling_module => p_calling_module
426 ,p_validate_only => p_validate_only
427 ,p_debug_mode => p_debug_mode
428
429 ,p_project_id => p_project_id
430 ,p_reference_task_id => l_ref_task_id
431 ,p_peer_or_sub => p_peer_or_sub
432 ,p_task_number => p_task_number
433 ,p_task_name => p_task_name
434 ,p_long_task_name => p_long_task_name
435 ,p_task_description => p_task_description
436 ,p_task_manager_person_id => l_task_manager_id
437 ,p_carrying_out_organization_id => l_carrying_out_org_id
438 ,p_task_type_code => p_task_type_code
439 ,p_priority_code => p_priority_code
440 ,p_work_type_id => p_work_type_id
441 ,p_service_type_code => p_service_type_code
442 ,p_milestone_flag => p_milestone_flag
443 ,p_critical_flag => p_critical_flag
444 ,p_chargeable_flag => p_chargeable_flag
445 ,p_billable_flag => p_billable_flag
446 ,p_receive_project_invoice_flag => p_receive_project_invoice_flag
447 ,p_inc_proj_progress_flag => p_inc_proj_progress_flag
448 ,p_scheduled_start_date => p_scheduled_start_date
449 ,p_scheduled_finish_date => p_scheduled_finish_date
450 ,p_estimated_start_date => p_estimated_start_date
451 ,p_estimated_end_date => p_estimated_end_date
452 ,p_actual_start_date => p_actual_start_date
453 ,p_actual_finish_date => p_actual_finish_date
454 ,p_task_start_date => p_task_start_date
455 ,p_task_completion_date => p_task_completion_date
456 ,p_baseline_start_date => p_baseline_start_date
457 ,p_baseline_end_date => p_baseline_end_date
458
459 ,p_obligation_start_date => p_obligation_start_date
460 ,p_obligation_end_date => p_obligation_end_date
461 ,p_estimate_to_complete_work => p_estimate_to_complete_work
462 ,p_baseline_work => p_baseline_work
463 ,p_scheduled_work => p_scheduled_work
464 ,p_actual_work_to_date => p_actual_work_to_date
465 ,p_work_unit => p_work_unit
466 ,p_progress_status_code => p_progress_status_code
467
468 ,p_job_bill_rate_schedule_id =>p_job_bill_rate_schedule_id
469 ,p_emp_bill_rate_schedule_id =>p_emp_bill_rate_schedule_id
470 ,p_pm_product_code =>p_pm_product_code
471 ,p_pm_project_reference =>p_pm_project_reference
472 ,p_pm_task_reference =>p_pm_task_reference
473 ,p_pm_parent_task_reference =>p_pm_parent_task_reference
474 ,p_pa_parent_task_id =>p_pa_parent_task_id
475 ,p_address_id =>p_address_id
476 ,p_ready_to_bill_flag =>p_ready_to_bill_flag
477 ,p_ready_to_distribute_flag =>p_ready_to_distribute_flag
478 ,p_limit_to_txn_controls_flag =>p_limit_to_txn_controls_flag
479 ,p_labor_bill_rate_org_id =>p_labor_bill_rate_org_id
480 ,p_labor_std_bill_rate_schdl =>p_labor_std_bill_rate_schdl
481 ,p_labor_schedule_fixed_date =>p_labor_schedule_fixed_date
482 ,p_labor_schedule_discount =>p_labor_schedule_discount
483 ,p_nl_bill_rate_org_id =>p_nl_bill_rate_org_id
484 ,p_nl_std_bill_rate_schdl =>p_nl_std_bill_rate_schdl
485 ,p_nl_schedule_fixed_date =>p_nl_schedule_fixed_date
486 ,p_nl_schedule_discount =>p_nl_schedule_discount
487 ,p_labor_cost_multiplier_name =>p_labor_cost_multiplier_name
488 ,p_cost_ind_rate_sch_id =>p_cost_ind_rate_sch_id
489 ,p_rev_ind_rate_sch_id =>p_rev_ind_rate_sch_id
490 ,p_inv_ind_rate_sch_id =>p_inv_ind_rate_sch_id
491 ,p_cost_ind_sch_fixed_date =>p_cost_ind_sch_fixed_date
492 ,p_rev_ind_sch_fixed_date =>p_rev_ind_sch_fixed_date
493 ,p_inv_ind_sch_fixed_date =>p_inv_ind_sch_fixed_date
494 ,p_labor_sch_type =>p_labor_sch_type
495 ,p_nl_sch_type =>p_nl_sch_type
496 ,p_early_start_date =>p_early_start_date
497 ,p_early_finish_date =>p_early_finish_date
498 ,p_late_start_date =>p_late_start_date
499 ,p_late_finish_date =>p_late_finish_date
500 ,p_attribute_category =>p_attribute_category
501 ,p_attribute1 =>p_attribute1
502 ,p_attribute2 =>p_attribute2
503 ,p_attribute3 =>p_attribute3
504 ,p_attribute4 =>p_attribute4
505 ,p_attribute5 =>p_attribute5
506 ,p_attribute6 =>p_attribute6
507 ,p_attribute7 =>p_attribute7
508 ,p_attribute8 =>p_attribute8
509 ,p_attribute9 =>p_attribute9
510 ,p_attribute10 =>p_attribute10
511 ,p_allow_cross_charge_flag =>p_allow_cross_charge_flag
512 ,p_project_rate_date =>p_project_rate_date
513 ,p_project_rate_type =>p_project_rate_type
514 ,p_cc_process_labor_flag =>p_cc_process_labor_flag
515 ,p_labor_tp_schedule_id =>p_labor_tp_schedule_id
516 ,p_labor_tp_fixed_date =>p_labor_tp_fixed_date
517 ,p_cc_process_nl_flag =>p_cc_process_nl_flag
518 ,p_nl_tp_schedule_id =>p_nl_tp_schedule_id
519 ,p_nl_tp_fixed_date =>p_nl_tp_fixed_date
520
521 ,p_taskfunc_cost_rate_type => p_taskfunc_cost_rate_type
522 ,p_taskfunc_cost_rate_date => p_taskfunc_cost_rate_date
523 ,p_non_lab_std_bill_rt_sch_id => p_non_lab_std_bill_rt_sch_id
524 -- FP.K changes msundare
525 ,p_labor_disc_reason_code => p_labor_disc_reason_code
526 ,p_non_labor_disc_reason_code => p_non_labor_disc_reason_code
527 --PA L Capital Project Changes 2872708
528 ,p_retirement_cost_flag => p_retirement_cost_flag
529 ,p_cint_eligible_flag => p_cint_eligible_flag
530 ,p_cint_stop_date => p_cint_stop_date
531 --End PA L Capital Project Changes 2872708
532
533 ,p_task_id =>p_task_id
534 ,x_display_seq => l_display_seq
535 ,x_return_status =>l_return_status
536 ,x_msg_count =>x_msg_count
537 ,x_msg_data =>x_msg_data
538 );
539
540 --dbms_output.put_line( 'After exis creat task pvt api call in pub api' );
541
542 --Check return status
543 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
544 x_msg_count := FND_MSG_PUB.count_msg;
545 if x_msg_count = 1 then
546 pa_interface_utils_pub.get_messages
547 (p_encoded => FND_API.G_TRUE,
548 p_msg_index => 1,
549 p_data => l_data,
550 p_msg_index_out => l_msg_index_out);
551 x_msg_data := l_data;
552 end if;
553 raise FND_API.G_EXC_ERROR;
554 end if;
555
556 --Call Update statement to update display order
557 BEGIN
558 --dbms_output.put_line( 'before select max( seq no' );
559 /* HY
560 -- Need to get max number
561 select max(display_sequence)
562 into l_max_seq
563 from PA_TASKS
564 where project_id = p_project_id;
565
566 --dbms_output.put_line( 'After select max( seq no' );
567
568
569 update PA_TASKS
570 set
571 display_sequence =
572 PA_TASKS_MAINT_UTILS.REARRANGE_DISPLAY_SEQ(display_sequence, l_max_seq, 1, 'INSERT', 'DOWN'),
573 record_version_number = record_version_number + 1
574 where project_id = p_project_id
575 and (display_sequence > -(l_display_seq+1) or display_sequence < 0);
576 HY */ NULL;
577 EXCEPTION
578 WHEN OTHERS THEN
579 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_SEQ_NUM_ERR');
580 raise FND_API.G_EXC_ERROR;
581 END;
582
583 --dbms_output.put_line( 'Before INCREMENT_WBS_REC_VER_NUM' );
584
585 /* PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
586 p_project_id => p_project_id,
587 p_wbs_record_version_number => p_wbs_record_version_number,
588 x_return_status => x_return_status );*/
589
590 -- p_task_id := l_ref_task_id;
591 x_return_status := FND_API.G_RET_STS_SUCCESS;
592
593 --dbms_output.put_line( 'After INCREMENT_WBS_REC_VER_NUM' );
594
595 --commit
596 IF (p_commit = FND_API.G_TRUE) THEN
597 commit;
598 END IF;
599
600 IF (p_debug_mode = 'Y') THEN
601 pa_debug.debug('PA_TASKS_MAINT_PUB.CREATE_TASK END');
602 END IF;
603
604 EXCEPTION
605 WHEN FND_API.G_EXC_ERROR THEN
606 IF (p_commit = FND_API.G_TRUE) THEN
607 ROLLBACK to CREATE_TASK;
608 END IF;
609 x_msg_count := FND_MSG_PUB.count_msg;
610 x_return_status := FND_API.G_RET_STS_ERROR;
611 WHEN OTHERS THEN
612 IF (p_commit = FND_API.G_TRUE) THEN
613 ROLLBACK to CREATE_TASK;
614 END IF;
615 x_msg_count := FND_MSG_PUB.count_msg;
616 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
617 FND_MSG_PUB.ADD_EXC_MSG(p_pkg_name => 'PA_TASKS_MAINT_PUB',
618 p_procedure_name => 'CREATE_TASK',
619 p_error_text => substrb(SQLERRM,1,240));
620 RAISE;
621 END CREATE_TASK;
622
623
624 -- API name : UPDATE_TASK
625 -- Type : Public Procedure
626 -- Pre-reqs : None
627 -- Return Value : N/A
628 -- Parameters
629 -- p_api_version IN NUMBER := 1.0
630 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
631 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
632 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
633 -- p_validation_level IN VARCHAR2 := 100
634 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
635 -- p_debug_mode IN VARCHAR2 := 'N'
636 -- p_project_id IN NUMBER
637 -- p_task_id IN NUMBER
638 -- p_task_number IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
639 -- p_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
640 -- p_long_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
641 -- p_task_description IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
642 -- p_task_manager_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
643 -- p_task_manager_person_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
644 -- p_carrying_out_org_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
645 -- p_carrying_out_organization_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
646 -- p_task_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
647 -- p_priority_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
648 -- p_work_type_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
649 -- p_service_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
650 -- p_milestone_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
651 -- p_critical_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
652 -- p_chargeable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
653 -- p_billable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
654 -- p_receive_project_invoice_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
655 -- p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
656 -- p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
657 -- p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
658 -- p_estimated_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
659 -- p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
660 -- p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
661 -- p_task_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
662 -- p_task_completion_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
663 -- p_baseline_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
664 -- p_baseline_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
665 -- p_obligation_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
666 -- p_obligation_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
667 -- p_estimate_to_complete_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
668 -- p_baseline_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
669 -- p_scheduled_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
670 -- p_actual_work_to_date IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
671 -- p_work_unit IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
672 -- p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
673 -- p_job_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
674 -- p_emp_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
675 -- p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
676 -- p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
677 -- p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
678 -- p_pm_parent_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
679 -- p_top_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
680 -- p_wbs_level IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
681 -- p_parent_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
682 -- p_address_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
683 -- p_ready_to_bill_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
684 -- p_ready_to_distribute_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
685 -- p_limit_to_txn_controls_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
686 -- p_labor_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
687 -- p_labor_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
688 -- p_labor_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
689 -- p_labor_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
690 -- p_nl_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
691 -- p_nl_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
692 -- p_nl_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
693 -- p_nl_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
694 -- p_labor_cost_multiplier_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
695 -- p_cost_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
696 -- p_rev_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
697 -- p_inv_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
698 -- p_cost_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
699 -- p_rev_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
700 -- p_inv_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
701 -- p_labor_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
702 -- p_nl_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
703 -- p_early_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
704 -- p_early_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
705 -- p_late_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
706 -- p_late_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
707 -- p_attribute_category IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
708 -- p_attribute1 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
709 -- p_attribute2 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
710 -- p_attribute3 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
711 -- p_attribute4 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
712 -- p_attribute5 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
713 -- p_attribute6 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
714 -- p_attribute7 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
715 -- p_attribute8 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
716 -- p_attribute9 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
717 -- p_attribute10 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
718 -- p_allow_cross_charge_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
719 -- p_project_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
720 -- p_project_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
721 -- p_cc_process_labor_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
722 -- p_labor_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
723 -- p_labor_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
724 -- p_cc_process_nl_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
725 -- p_nl_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
726 -- p_nl_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
727 -- p_inc_proj_progress_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
728 -- p_record_version_number IN NUMBER
729 -- p_wbs_record_version_number IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
730 -- p_comments IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
731 -- x_return_status OUT VARCHAR2
732 -- x_msg_count OUT NUMBER
733 -- x_msg_data OUT VARCHAR2
734 --
735 -- History
736 --
737 -- 25-JUN-01 HSIU -Created
738 --
739 --
740 procedure UPDATE_TASK
741 (
742 p_api_version IN NUMBER := 1.0
743 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
744 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
745 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
746 ,p_validation_level IN VARCHAR2 := 100
747 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
748 ,p_debug_mode IN VARCHAR2 := 'N'
749
750 ,p_project_id IN NUMBER
751 ,p_task_id IN NUMBER
752 ,p_task_number IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
753 ,p_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
754 ,p_long_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
755 ,p_task_description IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
756 ,p_task_manager_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
757 ,p_task_manager_person_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
758 ,p_carrying_out_org_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
759 ,p_carrying_out_organization_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
760 ,p_task_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
761 ,p_priority_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
762 ,p_work_type_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
763 ,p_service_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
764 ,p_milestone_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
765 ,p_critical_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
766 ,p_chargeable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
767 ,p_billable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
768 ,p_receive_project_invoice_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
769 ,p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
770 ,p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
771 ,p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
772 ,p_estimated_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
773 ,p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
774 ,p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
775 ,p_task_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
776 ,p_task_completion_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
777 ,p_baseline_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
778 ,p_baseline_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
779
780 ,p_obligation_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
781 ,p_obligation_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
782 ,p_estimate_to_complete_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
783 ,p_baseline_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
784 ,p_scheduled_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
785 ,p_actual_work_to_date IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
786 ,p_work_unit IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
787 ,p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
788
789 ,p_job_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
790 ,p_emp_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
791 ,p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
792 ,p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
793 ,p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
794 ,p_pm_parent_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
795 ,p_top_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
796 ,p_wbs_level IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
797 ,p_parent_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
798 ,p_address_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
799 ,p_ready_to_bill_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
800 ,p_ready_to_distribute_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
801 ,p_limit_to_txn_controls_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
802 ,p_labor_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
803 ,p_labor_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
804 ,p_labor_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
805 ,p_labor_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
806 ,p_nl_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
807 ,p_nl_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
808 ,p_nl_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
809 ,p_nl_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
810 ,p_labor_cost_multiplier_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
811 ,p_cost_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
812 ,p_rev_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
813 ,p_inv_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
814 ,p_cost_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
815 ,p_rev_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
816 ,p_inv_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
817 ,p_labor_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
818 ,p_nl_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
819 ,p_early_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
820 ,p_early_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
821 ,p_late_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
822 ,p_late_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
823 ,p_attribute_category IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
824 ,p_attribute1 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
825 ,p_attribute2 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
826 ,p_attribute3 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
827 ,p_attribute4 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
828 ,p_attribute5 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
829 ,p_attribute6 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
830 ,p_attribute7 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
831 ,p_attribute8 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
832 ,p_attribute9 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
833 ,p_attribute10 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
834 ,p_allow_cross_charge_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
835 ,p_project_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
836 ,p_project_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
837 ,p_cc_process_labor_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
838 ,p_labor_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
839 ,p_labor_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
840 ,p_cc_process_nl_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
841 ,p_nl_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
842 ,p_nl_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
843 ,p_inc_proj_progress_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
844 ,p_taskfunc_cost_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
845 ,p_taskfunc_cost_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
846 ,p_non_lab_std_bill_rt_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
847
848 ,p_record_version_number IN NUMBER
849 ,p_wbs_record_version_number IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
850 ,p_comments IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
851 -- FP.K changes msundare
852 ,p_labor_disc_reason_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
853 ,p_non_labor_disc_reason_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
854 --PA L Capital Project Changes 2872708
855 ,p_retirement_cost_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
856 ,p_cint_eligible_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
857 ,p_cint_stop_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
858 --End PA L Capital Project Changes 2872708
859 ,p_gen_etc_src_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
860 ,p_update_subtasks_end_dt IN VARCHAR2 := 'Y' --bug 4241863
861 ,p_dates_check IN VARCHAR2 := 'Y' --bug 5665772
862 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
863 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
864 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
865 )
866 IS
867 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TASK';
868 l_api_version CONSTANT NUMBER := 1.0;
869 l_msg_count NUMBER;
870 l_msg_data VARCHAR2(250);
871 l_data VARCHAR2(250);
872 l_msg_index_out NUMBER;
873
874 l_carrying_out_org_id NUMBER;
875 l_task_manager_id NUMBER;
876
877 l_return_status VARCHAR2(1);
878 l_error_msg_code VARCHAR2(250);
879 l_dummy VARCHAR2(1);
880
881 CURSOR c1 IS
882 select 'x'
883 from PA_TASKS
884 where project_id = p_project_id
885 for update of record_version_number NOWAIT;
886
887 CURSOR c2 IS
888 select 'x'
889 from PA_TASKS
890 where project_id = p_project_id;
891 -- Bug 7386335
892 --BUG 4081329, rtarway
893 cursor cur_get_child_task_dates (l_project_id NUMBER, l_task_id NUMBER)
894 IS select task_id, start_date, completion_date, parent_task_id from pa_tasks
895 where project_id = l_project_id
896 and completion_date is null
897 start with parent_task_id = l_task_id
898 connect by parent_task_id = prior task_id
899 and project_id = l_project_id;
900
901 -- Bug 7386335
902 CURSOR cur_get_parent_tasks (l_project_id NUMBER, l_task_id NUMBER)
903 IS
904 SELECT task_id
905 FROM pa_tasks
906 WHERE project_id = l_project_id
907 START WITH task_id = l_task_id
908 CONNECT BY PRIOR parent_task_id = task_id
909 AND project_id = l_project_id;
910
911 type l_task_id_tbl_type is table of pa_tasks.task_id%type index by binary_integer;
912 type l_start_date_tbl_type is table of pa_tasks.start_date%type index by binary_integer;
913 type l_completion_date_tbl_type is table of pa_tasks.completion_date%type index by binary_integer;
914
915 l_task_id_tbl l_task_id_tbl_type;
916 l_start_date_tbl l_start_date_tbl_type;
917 l_completion_date_tbl l_completion_date_tbl_type;
918
919 --BUG 4081329, rtarway
920
921 -- Bug 7386335
922 type l_parent_task_id_tbl_type is table of pa_tasks.parent_task_id%type index by binary_integer;
923 l_parent_task_id_tbl l_parent_task_id_tbl_type;
924 l_parent_task_date DATE;
925
926 BEGIN
927 pa_tasks_maint_utils.set_org_id(p_project_id);
928
929 pa_debug.init_err_stack('PA_TASKS_MAINT_PUB.UPDATE_TASK');
930
931 IF (p_debug_mode = 'Y') THEN
932 pa_debug.debug('PA_TASKS_MAINT_PUB.UPDATE_TASK begin');
933 END IF;
934
935 IF p_commit = FND_API.G_TRUE THEN
936 savepoint UPDATE_TASK;
937 END IF;
938
939 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
940 raise FND_API.G_EXC_UNEXPECTED_ERROR;
941 END IF;
942
943 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list, FND_API.G_FALSE)) THEN
944 pa_debug.debug('Performing ID validations and conversions');
945 FND_MSG_PUB.initialize;
946 END IF;
947
948 --BEGIN VALIDATIONS
949 IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
950 --Check Task Manager and Task Manager Id
951 IF ((p_task_manager_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
952 (p_task_manager_name IS NOT NULL)) OR
953 ((p_task_manager_person_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
954 (p_task_manager_person_id IS NOT NULL)) THEN
955 --Call Check API.
956
957 /* pa_tasks_maint_utils.check_task_mgr_name_or_id(
958 p_task_mgr_name => p_task_manager_name,
959 p_task_mgr_id => p_task_manager_person_id,
960 x_task_mgr_id => l_task_manager_id,
961 x_return_status => l_return_status,
962 x_error_msg_code => l_error_msg_code);*/
963
964 l_task_manager_id := p_task_manager_person_id;
965 l_return_status := FND_API.G_RET_STS_SUCCESS;
966
967 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
968 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
969 p_msg_name => l_error_msg_code);
970 END IF;
971
972 END IF; --End Name-Id Conversion
973 -- END IF;
974
975 -- IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
976 --Check Carrying out organization name and Carrying out organization Id
977 IF ((p_carrying_out_org_name <> FND_API.G_MISS_CHAR) AND
978 (p_carrying_out_org_name IS NOT NULL)) OR
979 ((p_carrying_out_organization_id <> FND_API.G_MISS_NUM) AND
980 (p_carrying_out_organization_id IS NOT NULL)) THEN
981
982 /* pa_hr_org_utils.Check_OrgName_Or_Id
983 (p_organization_id => p_carrying_out_organization_id
984 ,p_organization_name => p_carrying_out_org_name
985 ,p_check_id_flag => 'A'
986 ,x_organization_id => l_carrying_out_org_id
987 ,x_return_status => l_return_status
988 ,x_error_msg_code => l_error_msg_code);*/
989
990 l_carrying_out_org_id := p_carrying_out_organization_id;
991 l_return_status := FND_API.G_RET_STS_SUCCESS;
992
993 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
994 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
995 p_msg_name => l_error_msg_code);
996 END IF;
997 END IF; --End Name-Id Conversion
998 ELSE
999 l_carrying_out_org_id := p_carrying_out_organization_id;
1000 l_task_manager_id := p_task_manager_person_id;
1001 END IF;
1002
1003 --Check if there is any error
1004 l_msg_count := FND_MSG_PUB.count_msg;
1005 if l_msg_count > 0 then
1006 x_msg_count := l_msg_count;
1007 if x_msg_count = 1 then
1008 pa_interface_utils_pub.get_messages
1009 (p_encoded => FND_API.G_TRUE,
1010 p_msg_index => 1,
1011 p_data => l_data,
1012 p_msg_index_out => l_msg_index_out);
1013 x_msg_data := l_data;
1014 end if;
1015 raise FND_API.G_EXC_ERROR;
1016 end if;
1017
1018 /* temporarily commenting for project structures
1019 --Call Lock project
1020 IF p_wbs_record_version_number <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
1021 p_wbs_record_version_number IS NOT NULL
1022 THEN
1023 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
1024 p_validate_only => p_validate_only,
1025 p_calling_module => p_calling_module,
1026 p_project_id => p_project_id,
1027 p_wbs_record_version_number => p_wbs_record_version_number,
1028 x_return_status => x_return_status,
1029 x_msg_data => x_msg_data );
1030 END IF;*/
1031
1032
1033 --Call Private API
1034 PA_TASKS_MAINT_PVT.UPDATE_TASK
1035 (
1036 p_commit => p_commit
1037 ,p_calling_module => p_calling_module
1038 ,p_validate_only => p_validate_only
1039 ,p_debug_mode => p_debug_mode
1040
1041 ,p_project_id => p_project_id
1042 ,p_task_id => p_task_id
1043 ,p_task_number => p_task_number
1044 ,p_task_name => p_task_name
1045 ,p_long_task_name => p_long_task_name
1046 ,p_task_description => p_task_description
1047 ,p_task_manager_person_id => l_task_manager_id
1048 ,p_carrying_out_organization_id => l_carrying_out_org_id
1049 ,p_task_type_code => p_task_type_code
1050 ,p_priority_code => p_priority_code
1051 ,p_work_type_id => p_work_type_id
1052 ,p_service_type_code => p_service_type_code
1053 ,p_milestone_flag => p_milestone_flag
1054 ,p_critical_flag => p_critical_flag
1055 ,p_chargeable_flag => p_chargeable_flag
1056 ,p_billable_flag => p_billable_flag
1057 ,p_receive_project_invoice_flag => p_receive_project_invoice_flag
1058 ,p_scheduled_start_date => p_scheduled_start_date
1059 ,p_scheduled_finish_date => p_scheduled_finish_date
1060 ,p_estimated_start_date => p_estimated_start_date
1061 ,p_estimated_end_date => p_estimated_end_date
1062 ,p_actual_start_date => p_actual_start_date
1063 ,p_actual_finish_date => p_actual_finish_date
1064 ,p_task_start_date => p_task_start_date
1065 ,p_task_completion_date => p_task_completion_date
1066 ,p_baseline_start_date => p_baseline_start_date
1067 ,p_baseline_end_date => p_baseline_end_date
1068
1069 ,p_obligation_start_date => p_obligation_start_date
1070 ,p_obligation_end_date => p_obligation_end_date
1071 ,p_estimate_to_complete_work => p_estimate_to_complete_work
1072 ,p_baseline_work => p_baseline_work
1073 ,p_scheduled_work => p_scheduled_work
1074 ,p_actual_work_to_date => p_actual_work_to_date
1075 ,p_work_unit => p_work_unit
1076 ,p_progress_status_code => p_progress_status_code
1077
1078 ,p_job_bill_rate_schedule_id =>p_job_bill_rate_schedule_id
1079 ,p_emp_bill_rate_schedule_id =>p_emp_bill_rate_schedule_id
1080 ,p_pm_product_code =>p_pm_product_code
1081 ,p_pm_project_reference =>p_pm_project_reference
1082 ,p_pm_task_reference =>p_pm_task_reference
1083 ,p_pm_parent_task_reference =>p_pm_parent_task_reference
1084 ,p_parent_task_id =>p_parent_task_id
1085 ,p_address_id =>p_address_id
1086 ,p_ready_to_bill_flag =>p_ready_to_bill_flag
1087 ,p_ready_to_distribute_flag =>p_ready_to_distribute_flag
1088 ,p_limit_to_txn_controls_flag =>p_limit_to_txn_controls_flag
1089 ,p_labor_bill_rate_org_id =>p_labor_bill_rate_org_id
1090 ,p_labor_std_bill_rate_schdl =>p_labor_std_bill_rate_schdl
1091 ,p_labor_schedule_fixed_date =>p_labor_schedule_fixed_date
1092 ,p_labor_schedule_discount =>p_labor_schedule_discount
1093 ,p_nl_bill_rate_org_id =>p_nl_bill_rate_org_id
1094 ,p_nl_std_bill_rate_schdl =>p_nl_std_bill_rate_schdl
1095 ,p_nl_schedule_fixed_date =>p_nl_schedule_fixed_date
1096 ,p_nl_schedule_discount =>p_nl_schedule_discount
1097 ,p_labor_cost_multiplier_name =>p_labor_cost_multiplier_name
1098 ,p_cost_ind_rate_sch_id =>p_cost_ind_rate_sch_id
1099 ,p_rev_ind_rate_sch_id =>p_rev_ind_rate_sch_id
1100 ,p_inv_ind_rate_sch_id =>p_inv_ind_rate_sch_id
1101 ,p_cost_ind_sch_fixed_date =>p_cost_ind_sch_fixed_date
1102 ,p_rev_ind_sch_fixed_date =>p_rev_ind_sch_fixed_date
1103 ,p_inv_ind_sch_fixed_date =>p_inv_ind_sch_fixed_date
1104 ,p_labor_sch_type =>p_labor_sch_type
1105 ,p_nl_sch_type =>p_nl_sch_type
1106 ,p_early_start_date =>p_early_start_date
1107 ,p_early_finish_date =>p_early_finish_date
1108 ,p_late_start_date =>p_late_start_date
1109 ,p_late_finish_date =>p_late_finish_date
1110 ,p_attribute_category =>p_attribute_category
1111 ,p_attribute1 =>p_attribute1
1112 ,p_attribute2 =>p_attribute2
1113 ,p_attribute3 =>p_attribute3
1114 ,p_attribute4 =>p_attribute4
1115 ,p_attribute5 =>p_attribute5
1116 ,p_attribute6 =>p_attribute6
1117 ,p_attribute7 =>p_attribute7
1118 ,p_attribute8 =>p_attribute8
1119 ,p_attribute9 =>p_attribute9
1120 ,p_attribute10 =>p_attribute10
1121 ,p_allow_cross_charge_flag =>p_allow_cross_charge_flag
1122 ,p_project_rate_date =>p_project_rate_date
1123 ,p_project_rate_type =>p_project_rate_type
1124 ,p_cc_process_labor_flag =>p_cc_process_labor_flag
1125 ,p_labor_tp_schedule_id =>p_labor_tp_schedule_id
1126 ,p_labor_tp_fixed_date =>p_labor_tp_fixed_date
1127 ,p_cc_process_nl_flag =>p_cc_process_nl_flag
1128 ,p_nl_tp_schedule_id =>p_nl_tp_schedule_id
1129 ,p_nl_tp_fixed_date =>p_nl_tp_fixed_date
1130 ,p_inc_proj_progress_flag => p_inc_proj_progress_flag
1131 ,p_taskfunc_cost_rate_type => p_taskfunc_cost_rate_type
1132 ,p_taskfunc_cost_rate_date => p_taskfunc_cost_rate_date
1133 ,p_non_lab_std_bill_rt_sch_id => p_non_lab_std_bill_rt_sch_id
1134
1135 ,p_record_version_number => p_record_version_number
1136 ,p_comments => p_comments
1137 ,p_labor_disc_reason_code => p_labor_disc_reason_code
1138 ,p_non_labor_disc_reason_code => p_non_labor_disc_reason_code
1139 --PA L Capital Project Changes 2872708
1140 ,p_retirement_cost_flag => p_retirement_cost_flag
1141 ,p_cint_eligible_flag => p_cint_eligible_flag
1142 ,p_cint_stop_date => p_cint_stop_date
1143 --End PA L Capital Project Changes 2872708
1144 ,p_gen_etc_src_code => p_gen_etc_src_code
1145 ,p_dates_check => p_dates_check --bug 5665772
1146 ,x_return_status =>l_return_status
1147 ,x_msg_count =>x_msg_count
1148 ,x_msg_data =>x_msg_data
1149 );
1150
1151 --Check return status
1152 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1153 x_msg_count := FND_MSG_PUB.count_msg;
1154 if x_msg_count = 1 then
1155 pa_interface_utils_pub.get_messages
1156 (p_encoded => FND_API.G_TRUE,
1157 p_msg_index => 1,
1158 p_data => l_data,
1159 p_msg_index_out => l_msg_index_out);
1160 x_msg_data := l_data;
1161 end if;
1162 raise FND_API.G_EXC_ERROR;
1163 end if;
1164
1165 IF p_wbs_record_version_number <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
1166 p_wbs_record_version_number IS NOT NULL
1167 THEN
1168 PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
1169 p_project_id => p_project_id,
1170 p_wbs_record_version_number => p_wbs_record_version_number,
1171 x_return_status => x_return_status );
1172 END IF;
1173
1174 IF p_update_subtasks_end_dt = 'Y' --bug 4241863
1175 THEN
1176 --BUG 4081329, rtarway
1177 --Update Child tasks with the end date passed
1178 if ( p_task_completion_date is not null and p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) then
1179 open cur_get_child_task_dates (p_project_id,p_task_id);
1180 fetch cur_get_child_task_dates bulk collect into l_task_id_tbl,
1181 l_start_date_tbl,
1182 l_completion_date_tbl,
1183 l_parent_task_id_tbl; -- Bug 7386335
1184 close cur_get_child_task_dates;
1185 if l_task_id_tbl is not null and l_task_id_tbl.count > 0 then
1186 -- Bug 7386335
1187 FOR i in l_task_id_tbl.first..l_task_id_tbl.last LOOP
1188 IF l_parent_task_id_tbl(i) IS NOT NULL AND l_start_date_tbl(i) is NULL THEN
1189 SELECT start_date
1190 INTO l_parent_task_date
1191 FROM pa_tasks
1192 WHERE task_id = l_parent_task_id_tbl(i);
1193
1194 UPDATE pa_tasks
1195 SET completion_date = p_task_completion_date,
1196 start_date = l_parent_task_date
1197 WHERE task_id = l_task_id_tbl(i);
1198
1199 ELSE
1200 UPDATE pa_tasks
1201 SET completion_date = p_task_completion_date
1202 WHERE task_id = l_task_id_tbl(i);
1203 END IF;
1204 END LOOP;
1205 --FORALL i in l_task_id_tbl.first..l_task_id_tbl.last
1206 --update pa_tasks set completion_date = p_task_completion_date where task_id = l_task_id_tbl(i)
1207 --and project_id = p_project_id;
1208 end if;
1209 -- Bug 7386335
1210 ELSIF p_task_completion_date is NULL THEN
1211 OPEN cur_get_parent_tasks (p_project_id, p_task_id);
1212 FETCH cur_get_parent_tasks BULK COLLECT INTO l_task_id_tbl;
1213 CLOSE cur_get_parent_tasks;
1214
1215 FORALL i in l_task_id_tbl.first..l_task_id_tbl.last
1216 UPDATE pa_tasks
1217 SET completion_date = p_task_completion_date
1218 WHERE task_id = l_task_id_tbl(i) and project_id = p_project_id;
1219 end if;
1220 --End Add by rtarway for bug 4081329
1221 END IF;
1222 x_return_status := FND_API.G_RET_STS_SUCCESS;
1223
1224 --commit
1225 IF (p_commit = FND_API.G_TRUE) THEN
1226 commit;
1227 END IF;
1228
1229 IF (p_debug_mode = 'Y') THEN
1230 pa_debug.debug('PA_TASKS_MAINT_PUB.UPDATE_TASK END');
1231 END IF;
1232
1233 EXCEPTION
1234 WHEN FND_API.G_EXC_ERROR THEN
1235 IF (p_commit = FND_API.G_TRUE) THEN
1236 ROLLBACK to UPDATE_TASK;
1237 END IF;
1238 x_msg_count := FND_MSG_PUB.count_msg;
1239 x_return_status := FND_API.G_RET_STS_ERROR;
1240 WHEN OTHERS THEN
1241 IF (p_commit = FND_API.G_TRUE) THEN
1242 ROLLBACK to UPDATE_TASK;
1243 END IF;
1244 x_msg_count := FND_MSG_PUB.count_msg;
1245 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1246 --put message
1247 FND_MSG_PUB.ADD_EXC_MSG(p_pkg_name => 'PA_TASKS_MAINT_PUB',
1248 p_procedure_name => 'UPDATE_TASK',
1249 p_error_text => substrb(SQLERRM,1,240));
1250 -- RAISE;
1251 END UPDATE_TASK;
1252
1253
1254 -- API name : DELETE_TASK
1255 -- Type : Public Procedure
1256 -- Pre-reqs : None
1257 -- Return Value : N/A
1258 -- Parameters
1259 -- p_api_version IN NUMBER := 1.0
1260 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1261 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
1262 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1263 -- p_validation_level IN VARCHAR2 := 100
1264 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1265 -- p_debug_mode IN VARCHAR2 := 'N'
1266 -- p_project_id IN NUMBER
1267 -- p_task_id IN NUMBER
1268 -- p_record_version_number IN NUMBER
1269 -- x_return_status OUT VARCHAR2
1270 -- x_msg_count OUT NUMBER
1271 -- x_msg_data OUT VARCHAR2
1272 --
1273 -- History
1274 --
1275 -- 25-JUN-01 HSIU -Created
1276 --
1277 --
1278 procedure DELETE_TASK
1279 (
1280 p_api_version IN NUMBER := 1.0
1281 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1282 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
1283 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1284 ,p_validation_level IN VARCHAR2 := 100
1285 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1286 ,p_debug_mode IN VARCHAR2 := 'N'
1287 ,p_project_id IN NUMBER
1288 ,p_task_id IN NUMBER
1289 ,p_record_version_number IN NUMBER
1290 ,p_wbs_record_version_number IN NUMBER
1291 ,p_called_from_api IN VARCHAR2 := 'ABCD'
1292 ,p_bulk_flag IN VARCHAR2 := 'N' -- 4201927
1293 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1294 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1295 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1296 )
1297 IS
1298 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_TASK';
1299 l_api_version CONSTANT NUMBER := 1.0;
1300
1301 l_dummy VARCHAR2(1);
1302 l_return_status VARCHAR2(1);
1303
1304 l_msg_count NUMBER;
1305 l_msg_data VARCHAR2(250);
1306 l_data VARCHAR2(250);
1307 l_msg_index_out NUMBER;
1308
1309 l_task_cnt NUMBER;
1310 l_max_seq NUMBER;
1311
1312 --selected_seq_num PA_TASKS.DISPLAY_SEQUENCE%TYPE;
1313
1314 CURSOR c1 IS
1315 select 'x'
1316 from PA_TASKS
1317 where project_id = p_project_id
1318 for update of record_version_number NOWAIT;
1319
1320 CURSOR c2 IS
1321 select 'x'
1322 from PA_TASKS
1323 where project_id = p_project_id;
1324
1325 /* CURSOR cur_selected_task
1326 IS
1327 SELECT display_sequence
1328 FROM pa_tasks
1329 WHERE project_id = p_project_id
1330 AND task_id = p_task_id;*/
1331
1332 BEGIN
1333 pa_tasks_maint_utils.set_org_id(p_project_id);
1334
1335
1336 pa_debug.init_err_stack('PA_TASKS_MAINT_PUB.DELETE_TASK');
1337
1338 IF (p_debug_mode = 'Y') THEN
1339 pa_debug.debug('PA_TASKS_MAINT_PUB.DELETE_TASK begin');
1340 END IF;
1341
1342 IF (p_commit = FND_API.G_TRUE) THEN
1343 savepoint DELETE_TASK;
1344 END IF;
1345
1346
1347 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
1348 raise FND_API.G_EXC_UNEXPECTED_ERROR;
1349 END IF;
1350
1351 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list, FND_API.G_FALSE)) THEN
1352 pa_debug.debug('Performing ID validations and conversions');
1353 FND_MSG_PUB.initialize;
1354 END IF;
1355
1356 --Check if there is any error
1357 l_msg_count := FND_MSG_PUB.count_msg;
1358 if l_msg_count > 0 then
1359 x_msg_count := l_msg_count;
1360 if x_msg_count = 1 then
1361 pa_interface_utils_pub.get_messages
1362 (p_encoded => FND_API.G_TRUE,
1363 p_msg_index => 1,
1364 p_data => l_data,
1365 p_msg_index_out => l_msg_index_out);
1366 x_msg_data := l_data;
1367 end if;
1368 raise FND_API.G_EXC_ERROR;
1369 end if;
1370
1371 /*--Call Lock project
1372
1373 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
1374 p_validate_only => p_validate_only,
1375 p_calling_module => p_calling_module,
1376 p_project_id => p_project_id,
1377 p_wbs_record_version_number => p_wbs_record_version_number,
1378 x_return_status => x_return_status,
1379 x_msg_data => x_msg_data ); */
1380
1381 --Call Private API
1382 --count tasks to be deleted
1383
1384 select count('x')
1385 INTO l_task_cnt
1386 FROM PA_TASKS
1387 WHERE project_id = p_project_id
1388 START WITH task_id = p_task_id
1389 CONNECT BY parent_task_id = prior task_id;
1390
1391
1392 /* --Get the sequence number of the selected task;
1393 OPEN cur_selected_task;
1394 FETCH cur_selected_task INTO selected_seq_num;
1395 CLOSE cur_selected_task;*/
1396
1397
1398 PA_TASKS_MAINT_PVT.DELETE_TASK
1399 (
1400 p_commit => p_commit
1401 ,p_calling_module => p_calling_module
1402 ,p_validate_only => p_validate_only
1403 ,p_debug_mode => p_debug_mode
1404 ,p_task_id => p_task_id
1405 ,p_record_version_number => p_record_version_number
1406 ,p_called_from_api => p_called_from_api
1407 ,p_bulk_flag => p_bulk_flag -- 4201927 Passing the value to pvt api
1408 ,x_return_status => l_return_status
1409 ,x_msg_count => x_msg_count
1410 ,x_msg_data => x_msg_data
1411 );
1412
1413 --Check return status
1414 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1415 x_msg_count := FND_MSG_PUB.count_msg;
1416 if x_msg_count = 1 then
1417 pa_interface_utils_pub.get_messages
1418 (p_encoded => FND_API.G_TRUE,
1419 p_msg_index => 1,
1420 p_data => l_data,
1421 p_msg_index_out => l_msg_index_out);
1422 x_msg_data := l_data;
1423 end if;
1424 raise FND_API.G_EXC_ERROR;
1425 end if;
1426
1427 /* --This fcuntion is moved in PA_TASK_PVT1.DELETE_TASK_VERSION api.
1428 BEGIN
1429 select max(display_sequence)
1430 into l_max_seq
1431 from PA_TASKS
1432 where project_id = p_project_id;
1433
1434 update PA_TASKS
1435 set
1436 display_sequence =
1437 PA_TASKS_MAINT_UTILS.REARRANGE_DISPLAY_SEQ(display_sequence, l_max_seq, l_task_cnt, 'DELETE', 'DOWN'),
1438 record_version_number = record_version_number + 1
1439 where project_id = p_project_id
1440 and (display_sequence > selected_seq_num);
1441 EXCEPTION
1442 WHEN OTHERS THEN
1443 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_SEQ_NUM_ERR');
1444 raise FND_API.G_EXC_ERROR;
1445 END;*/
1446
1447
1448 /*PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
1449 p_project_id => p_project_id,
1450 p_wbs_record_version_number => p_wbs_record_version_number,
1451 x_return_status => x_return_status );*/
1452
1453 x_return_status := FND_API.G_RET_STS_SUCCESS;
1454
1455 --commit
1456 IF (p_commit = FND_API.G_TRUE) THEN
1457 commit;
1458 END IF;
1459
1460 IF (p_debug_mode = 'Y') THEN
1461 pa_debug.debug('PA_TASKS_MAINT_PUB.DELETE_TASK END');
1462 END IF;
1463
1464 EXCEPTION
1465 WHEN FND_API.G_EXC_ERROR THEN
1466 IF (p_commit = FND_API.G_TRUE) THEN
1467 ROLLBACK to DELETE_TASK;
1468 END IF;
1469 x_msg_count := FND_MSG_PUB.count_msg;
1470 x_return_status := FND_API.G_RET_STS_ERROR;
1471 WHEN OTHERS THEN
1472 IF (p_commit = FND_API.G_TRUE) THEN
1473 ROLLBACK to DELETE_TASK;
1474 END IF;
1475 x_msg_count := FND_MSG_PUB.count_msg;
1476 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1477 FND_MSG_PUB.ADD_EXC_MSG(p_pkg_name => 'PA_TASKS_MAINT_PUB',
1478 p_procedure_name => 'DELETE_TASK',
1479 p_error_text => substrb(SQLERRM,1,240));
1480 END DELETE_TASK;
1481
1482
1483 -- API name : Edit_Task_Structure
1484 -- Type : Utility Procedure
1485 -- Pre-reqs : None
1486 -- Return Value : N/A
1487 -- Prameters
1488 -- p_api_version IN NUMBER := 1.0
1489 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1490 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
1491 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1492 -- p_validation_level IN VARCHAR2 := 100
1493 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1494 -- p_debug_mode IN VARCHAR2 := 'N'
1495 -- p_project_id IN NUMBER := FND_API.G_MISS_NUM
1496 -- p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1497 -- p_task_id IN NUMBER := FND_API.G_MISS_NUM
1498 -- p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1499 -- p_edit_mode IN VARCHAR2 REQUIRED
1500 -- p_record_version_number IN NUMBER
1501 -- p_wbs_record_version_number IN NUMBER
1502 -- x_return_status OUT VARCHAR2
1503 -- x_msg_count OUT NUMBER
1504 -- x_msg_data OUT VARCHAR2
1505 --
1506 -- History
1507 --
1508 -- 25-JUN-01 Majid Ansari -Created
1509 --
1510 --
1511
1512 PROCEDURE Edit_Task_Structure(
1513 p_api_version IN NUMBER := 1.0
1514 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1515 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
1516 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1517 ,p_validation_level IN VARCHAR2 := 100
1518 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1519 ,p_debug_mode IN VARCHAR2 := 'N'
1520 ,p_project_id IN NUMBER := FND_API.G_MISS_NUM
1521 ,p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1522 ,p_task_id IN NUMBER := FND_API.G_MISS_NUM
1523 ,p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1524 ,p_edit_mode IN VARCHAR2
1525 ,p_record_version_number IN NUMBER
1526 ,p_wbs_record_version_number IN NUMBER
1527 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1528 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1529 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
1530
1531
1532 l_api_name CONSTANT VARCHAR(30) := 'Edit_Task_Structure';
1533 l_api_version CONSTANT NUMBER := 1.0;
1534
1535 l_return_status VARCHAR2(1);
1536 l_msg_data VARCHAR2(250);
1537 l_msg_count NUMBER;
1538
1539 l_dummy_char VARCHAR2(1);
1540 l_error_msg_code VARCHAR2(250);
1541 l_data VARCHAR2(250);
1542 l_msg_index_out NUMBER;
1543 l_task_id NUMBER;
1544 l_project_id NUMBER;
1545 BEGIN
1546
1547 pa_tasks_maint_utils.set_org_id(p_project_id);
1548
1549 -- Standard call to check for call compatibility
1550 IF (p_debug_mode = 'Y')
1551 THEN
1552 pa_debug.debug('Edit Task Structure PUB : Checking the api version number.');
1553 END IF;
1554
1555 IF p_commit = FND_API.G_TRUE
1556 THEN
1557 SAVEPOINT Edit_Structure;
1558 END IF;
1559
1560 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
1561 p_api_version,
1562 l_api_name,
1563 g_pkg_name)
1564 THEN
1565
1566 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1567 END IF;
1568
1569 if (p_debug_mode = 'Y') then
1570 pa_debug.debug('Edit Task Structure PUB : Initializing message stack.');
1571 end if;
1572
1573 pa_debug.init_err_stack('PA_TASK_MAINT_PUB.Edit_Task_Structure');
1574
1575 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
1576 fnd_msg_pub.initialize;
1577 end if;
1578
1579 /*IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
1580
1581 --Check Project Name and Id
1582 IF ((p_project_name <> FND_API.G_MISS_CHAR) AND
1583 (p_project_name IS NOT NULL)) OR
1584 ((p_project_id <> FND_API.G_MISS_NUM) AND
1585 (p_project_id IS NOT NULL)) THEN
1586 --Call Check API.
1587 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
1588 p_project_id => p_project_id,
1589 p_project_name => p_project_name,
1590 x_project_id => l_project_id,
1591 x_return_status => l_return_status,
1592 x_error_msg_code => l_error_msg_code);
1593 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1594 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1595 p_msg_name => l_error_msg_code);
1596 END IF;
1597 END IF; --End Project Name-Id Conversion
1598
1599 --Check Task Name and Id
1600 IF ((p_task_name <> FND_API.G_MISS_CHAR) AND
1601 (p_task_name IS NOT NULL)) OR
1602 ((p_task_id <> FND_API.G_MISS_NUM) AND
1603 (p_task_id IS NOT NULL)) THEN
1604 --Call Check API.
1605 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
1606 p_project_id => l_project_id,
1607 p_task_id => p_task_id,
1608 p_task_name => p_task_name,
1609 x_task_id => l_task_id,
1610 x_return_status => l_return_status,
1611 x_error_msg_code => l_error_msg_code);
1612 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1613 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1614 p_msg_name => l_error_msg_code);
1615 END IF;
1616 END IF; --End Task Name-Id Conversion
1617 ELSE*/
1618 l_project_id := p_project_id;
1619 l_task_id := p_task_id;
1620 --END IF;
1621
1622 --project and task id Required check.
1623 PA_TASKS_MAINT_UTILS.SRC_PRJ_TASK_ID_REQ_CHECK(
1624 p_project_id => l_project_id,
1625 p_task_id => l_task_id,
1626 x_return_status => l_return_status,
1627 x_error_msg_code => l_error_msg_code );
1628
1629 IF l_return_status = FND_API.G_RET_STS_ERROR
1630 THEN
1631 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1632 p_msg_name => l_error_msg_code);
1633 x_msg_data := l_error_msg_code;
1634 x_return_status := 'E';
1635 RAISE FND_API.G_EXC_ERROR;
1636 END IF;
1637
1638 x_return_status := 'S';
1639
1640 --Call Lock project
1641 /* temporarily commenting for project structures
1642
1643 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
1644 p_validate_only => p_validate_only,
1645 p_calling_module => p_calling_module,
1646 p_project_id => l_project_id,
1647 p_wbs_record_version_number => p_wbs_record_version_number,
1648 x_return_status => x_return_status,
1649 x_msg_data => x_msg_data ); */
1650
1651 l_msg_count := FND_MSG_PUB.count_msg;
1652
1653 If l_msg_count > 0 THEN
1654 x_msg_count := l_msg_count;
1655 If l_msg_count = 1 THEN
1656 pa_interface_utils_pub.get_messages
1657 (p_encoded => FND_API.G_TRUE ,
1658 p_msg_index => 1,
1659 p_msg_count => l_msg_count ,
1660 p_msg_data => l_msg_data,
1661 p_data => l_data,
1662 p_msg_index_out => l_msg_index_out );
1663
1664 x_msg_data := l_data;
1665 End if;
1666 RAISE FND_API.G_EXC_ERROR;
1667 End if;
1668
1669 IF p_edit_mode = 'INDENT'
1670 THEN
1671
1672 -- dbms_output.put_line( 'Edit Task structure. '||'Before Indent Task' );
1673
1674 PA_TASKS_MAINT_PVT.Indent_Task(
1675 p_commit => p_commit
1676 ,p_validate_only => p_validate_only
1677 ,p_validation_level => p_validation_level
1678 ,p_calling_module => p_calling_module
1679 ,p_debug_mode => p_debug_mode
1680 ,p_project_id => l_project_id
1681 ,p_task_id => l_task_id
1682 ,p_record_version_number => p_record_version_number
1683 ,x_return_status => x_return_status
1684 ,x_msg_count => x_msg_count
1685 ,x_msg_data => x_msg_data );
1686
1687 l_msg_count := FND_MSG_PUB.count_msg;
1688
1689 --dbms_output.put_line( 'Edit Task structure. '||'After Indent Task '||'Count '|| l_msg_count );
1690
1691 ELSIF p_edit_mode = 'OUTDENT'
1692 THEN
1693
1694 --dbms_output.put_line( 'Edit Task structure. '||'Before Outdent Task' );
1695
1696 PA_TASKS_MAINT_PVT.Outdent_Task(
1697 p_commit => p_commit
1698 ,p_validate_only => p_validate_only
1699 ,p_validation_level => p_validation_level
1700 ,p_calling_module => p_calling_module
1701 ,p_debug_mode => p_debug_mode
1702 ,p_project_id => l_project_id
1703 ,p_task_id => l_task_id
1704 ,p_record_version_number => p_record_version_number
1705 ,x_return_status => x_return_status
1706 ,x_msg_count => x_msg_count
1707 ,x_msg_data => x_msg_data );
1708
1709 END IF;
1710
1711 --dbms_output.put_line( 'After Edit Task structure. ' );
1712
1713
1714 if (p_debug_mode = 'Y') then
1715 pa_debug.debug('Edit Task Structure PUB : checking message count');
1716 end if;
1717 l_msg_count := FND_MSG_PUB.count_msg;
1718
1719 If l_msg_count > 0 THEN
1720 x_msg_count := l_msg_count;
1721 If l_msg_count = 1 THEN
1722 pa_interface_utils_pub.get_messages
1723 (p_encoded => FND_API.G_TRUE ,
1724 p_msg_index => 1,
1725 p_msg_count => l_msg_count ,
1726 p_msg_data => l_msg_data,
1727 p_data => l_data,
1728 p_msg_index_out => l_msg_index_out );
1729
1730 x_msg_data := l_data;
1731 End if;
1732 RAISE FND_API.G_EXC_ERROR;
1733 End if;
1734
1735 PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
1736 p_project_id => p_project_id,
1737 p_wbs_record_version_number => p_wbs_record_version_number,
1738 x_return_status => x_return_status );
1739
1740
1741 IF FND_API.TO_BOOLEAN(P_COMMIT)
1742 THEN
1743 COMMIT WORK;
1744 END IF;
1745 EXCEPTION
1746 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1747 IF p_commit = FND_API.G_TRUE
1748 THEN
1749 ROLLBACK TO Edit_Structure;
1750 END IF;
1751 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1752 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
1753 p_procedure_name => 'Edit_Task_Structure',
1754 p_error_text => SUBSTRB(SQLERRM,1,240));
1755 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1756
1757 WHEN FND_API.G_EXC_ERROR THEN
1758 IF p_commit = FND_API.G_TRUE
1759 THEN
1760 ROLLBACK TO Edit_Structure;
1761 END IF;
1762 x_return_status := 'E';
1763
1764 WHEN OTHERS THEN
1765 IF p_commit = FND_API.G_TRUE
1766 THEN
1767 ROLLBACK TO Edit_Structure;
1768 END IF;
1769 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1770 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
1771 p_procedure_name => 'Edit_Task_Structure',
1772 p_error_text => SUBSTRB(SQLERRM,1,240));
1773 RAISE;
1774
1775 END Edit_Task_Structure;
1776
1777 -- API name : Move_Task
1778 -- Type : Utility Procedure
1779 -- Pre-reqs : None
1780 -- Return Value : N/A
1781 -- Prameters
1782 -- p_api_version IN NUMBER := 1.0
1783 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1784 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
1785 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1786 -- p_validation_level IN VARCHAR2 := 100
1787 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1788 -- p_debug_mode IN VARCHAR2 := 'N'
1789 -- p_reference_project_id IN NUMBER := FND_API.G_MISS_NUM
1790 -- p_reference_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1791 -- p_reference_task_id IN NUMBER := FND_API.G_MISS_NUM
1792 -- p_reference_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1793 -- p_project_id IN NUMBER := FND_API.G_MISS_NUM
1794 -- p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1795 -- p_task_id IN NUMBER := FND_API.G_MISS_NUM
1796 -- p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1797 -- p_peer_or_sub IN VARCHAR2
1798 -- p_record_version_number IN NUMBER
1799 -- p_wbs_record_version_number IN NUMBER
1800 -- x_return_status OUT VARCHAR2
1801 -- x_msg_count OUT NUMBER
1802 -- x_msg_data OUT VARCHAR2
1803 --
1804 -- History
1805 --
1806 -- 25-JUN-01 Majid Ansari -Created
1807 --
1808 --
1809
1810 PROCEDURE Move_Task(
1811 p_api_version IN NUMBER := 1.0
1812 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1813 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
1814 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1815 ,p_validation_level IN VARCHAR2 := 100
1816 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1817 ,p_debug_mode IN VARCHAR2 := 'N'
1818 ,p_reference_project_id IN NUMBER := FND_API.G_MISS_NUM
1819 ,p_reference_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1820 ,p_reference_task_id IN NUMBER := FND_API.G_MISS_NUM
1821 ,p_reference_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1822 ,p_project_id IN NUMBER := FND_API.G_MISS_NUM
1823 ,p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1824 ,p_task_id IN NUMBER := FND_API.G_MISS_NUM
1825 ,p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1826 ,p_peer_or_sub IN VARCHAR2
1827 ,p_record_version_number IN NUMBER
1828 ,p_wbs_record_version_number IN NUMBER
1829 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1830 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1831 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
1832
1833 l_api_name CONSTANT VARCHAR(30) := 'Move_Task';
1834 l_api_version CONSTANT NUMBER := 1.0;
1835
1836 l_return_status VARCHAR2(1);
1837 l_msg_data VARCHAR2(250);
1838 l_msg_count NUMBER;
1839
1840 l_dummy VARCHAR2(1);
1841 l_error_msg_code VARCHAR2(250);
1842 l_data VARCHAR2(250);
1843 l_msg_index_out NUMBER;
1844 l_project_id NUMBER;
1845 l_ref_project_id NUMBER;
1846 l_task_id NUMBER;
1847 l_ref_task_id NUMBER;
1848
1849 BEGIN
1850
1851 pa_tasks_maint_utils.set_org_id(p_project_id);
1852
1853 -- Standard call to check for call compatibility
1854 IF (p_debug_mode = 'Y')
1855 THEN
1856 pa_debug.debug('Move Task PUB : Checking the api version number.');
1857 END IF;
1858 IF p_commit = FND_API.G_TRUE
1859 THEN
1860 SAVEPOINT Move;
1861 END IF;
1862 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
1863 p_api_version,
1864 l_api_name,
1865 g_pkg_name)
1866 THEN
1867 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1868 END IF;
1869 if (p_debug_mode = 'Y') then
1870 pa_debug.debug('Move Task PUB : Initializing message stack.');
1871 end if;
1872 pa_debug.init_err_stack('PA_TASK_MAINT_PUB.MOVE_TASK');
1873 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
1874 fnd_msg_pub.initialize;
1875 end if;
1876
1877 --dbms_output.put_line( 'Before name to id conv. ' );
1878 --commenting after discussing with Hubert and Sakthi.
1879 /*IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
1880
1881 --Check Project Name and Id
1882 IF ((p_project_name <> FND_API.G_MISS_CHAR) AND
1883 (p_project_name IS NOT NULL)) OR
1884 ((p_project_id <> FND_API.G_MISS_NUM) AND
1885 (p_project_id IS NOT NULL)) THEN
1886 --Call Check API.
1887 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
1888 p_project_id => p_project_id,
1889 p_project_name => p_project_name,
1890 x_project_id => l_project_id,
1891 x_return_status => l_return_status,
1892 x_error_msg_code => l_error_msg_code);
1893 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1894 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1895 p_msg_name => l_error_msg_code);
1896 END IF;
1897 END IF; --End Project Name-Id Conversion
1898
1899 --dbms_output.put_line( 'Before name to id conv. 2' );
1900
1901 --Check Task Name and Id
1902 IF ((p_task_name <> FND_API.G_MISS_CHAR) AND
1903 (p_task_name IS NOT NULL)) OR
1904 ((p_task_id <> FND_API.G_MISS_NUM) AND
1905 (p_task_id IS NOT NULL)) THEN
1906 --Call Check API.
1907 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
1908 p_project_id => l_project_id,
1909 p_task_id => p_task_id,
1910 p_task_name => p_task_name,
1911 x_task_id => l_task_id,
1912 x_return_status => l_return_status,
1913 x_error_msg_code => l_error_msg_code);
1914 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1915 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1916 p_msg_name => l_error_msg_code);
1917 END IF;
1918 END IF; --End Task Name-Id Conversion
1919
1920 --dbms_output.put_line( 'Before name to id conv. 3' );
1921
1922 --Check reference Project Name and Id
1923 IF ((p_reference_project_name <> FND_API.G_MISS_CHAR) AND
1924 (p_reference_project_name IS NOT NULL)) OR
1925 ((p_reference_project_id <> FND_API.G_MISS_NUM) AND
1926 (p_reference_project_id IS NOT NULL)) THEN
1927 --Call Check API.
1928 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
1929 p_project_id => p_reference_project_id,
1930 p_project_name => p_reference_project_name,
1931 x_project_id => l_ref_project_id,
1932 x_return_status => l_return_status,
1933 x_error_msg_code => l_error_msg_code);
1934 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1935 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1936 p_msg_name => l_error_msg_code);
1937 END IF;
1938 END IF; --End Ref Project Name-Id Conversion
1939
1940 --dbms_output.put_line( 'Before name to id conv. 4' );
1941
1942 --Check reference Task Name and Id
1943 IF ((p_reference_task_name <> FND_API.G_MISS_CHAR) AND
1944 (p_reference_task_name IS NOT NULL)) OR
1945 ((p_reference_task_id <> FND_API.G_MISS_NUM) AND
1946 (p_reference_task_id IS NOT NULL)) THEN
1947 --Call Check API.
1948 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
1949 p_project_id => l_ref_project_id,
1950 p_task_id => p_reference_task_id,
1951 p_task_name => p_reference_task_name,
1952 x_task_id => l_ref_task_id,
1953 x_return_status => l_return_status,
1954 x_error_msg_code => l_error_msg_code);
1955 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1956 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1957 p_msg_name => l_error_msg_code);
1958 END IF;
1959 END IF; --End Ref Task Name-Id Conversion
1960
1961
1962 ELSE*/
1963 l_project_id := p_project_id;
1964 l_task_id := p_task_id;
1965 l_ref_project_id := p_reference_project_id;
1966 l_ref_task_id := p_reference_task_id;
1967 --END IF;
1968
1969 x_return_status := 'S';
1970
1971 --dbms_output.put_line( 'Before locking ' );
1972
1973 /* temporarily commenting for project structures
1974
1975 --Call Lock project
1976 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
1977 p_validate_only => p_validate_only,
1978 p_calling_module => p_calling_module,
1979 p_project_id => l_ref_project_id,
1980 p_wbs_record_version_number => p_wbs_record_version_number,
1981 x_return_status => x_return_status,
1982 x_msg_data => x_msg_data ); */
1983
1984 --dbms_output.put_line( 'After locking 1 ' );
1985
1986 l_msg_count := FND_MSG_PUB.count_msg;
1987 IF l_msg_count > 0 THEN
1988 x_msg_count := l_msg_count;
1989 x_msg_data := x_msg_data;
1990 --dbms_output.put_line( 'x_msg_data '||x_msg_data );
1991 x_return_status := 'E';
1992 RAISE FND_API.G_EXC_ERROR;
1993 END IF;
1994
1995 --dbms_output.put_line( 'After locking 2 ' );
1996
1997 if (p_debug_mode = 'Y') then
1998 pa_debug.debug('Move Task PUB : checking message count');
1999 end if;
2000
2001 l_msg_count := FND_MSG_PUB.count_msg;
2002
2003 --dbms_output.put_line( 'After locking 3 ' );
2004
2005 If l_msg_count > 0 THEN
2006 x_msg_count := l_msg_count;
2007 If l_msg_count = 1 THEN
2008 pa_interface_utils_pub.get_messages
2009 (p_encoded => FND_API.G_TRUE ,
2010 p_msg_index => 1,
2011 p_msg_count => l_msg_count ,
2012 p_msg_data => l_error_msg_code,
2013 p_data => l_data,
2014 p_msg_index_out => l_msg_index_out );
2015
2016 x_msg_data := l_data;
2017
2018 End if;
2019 RAISE FND_API.G_EXC_ERROR;
2020 End if;
2021
2022
2023 PA_TASKS_MAINT_PVT.Move_Task(
2024 p_commit => p_commit
2025 ,p_validate_only => p_validate_only
2026 ,p_validation_level => p_validation_level
2027 ,p_calling_module => p_calling_module
2028 ,p_debug_mode => p_debug_mode
2029 ,p_reference_project_id => l_ref_project_id
2030 ,p_reference_task_id => l_ref_task_id
2031 ,p_project_id => l_project_id
2032 ,p_task_id => l_task_id
2033 ,p_peer_or_sub => p_peer_or_sub
2034 ,p_record_version_number => p_record_version_number
2035 ,x_return_status => l_return_status
2036 ,x_msg_count => l_msg_count
2037 ,x_msg_data => l_msg_data );
2038
2039 if (p_debug_mode = 'Y') then
2040 pa_debug.debug('Move Task PUB : checking message count');
2041 end if;
2042 l_msg_count := FND_MSG_PUB.count_msg;
2043
2044
2045 If l_msg_count > 0 THEN
2046 x_msg_count := l_msg_count;
2047 If l_msg_count = 1 THEN
2048 pa_interface_utils_pub.get_messages
2049 (p_encoded => FND_API.G_TRUE ,
2050 p_msg_index => 1,
2051 p_msg_count => l_msg_count,
2052 p_msg_data => l_msg_data,
2053 p_data => l_data,
2054 p_msg_index_out => l_msg_index_out );
2055
2056 x_msg_data := l_data;
2057
2058
2059 End if;
2060 RAISE FND_API.G_EXC_ERROR;
2061 End if;
2062
2063 PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
2064 p_project_id => l_ref_project_id,
2065 p_wbs_record_version_number => p_wbs_record_version_number,
2066 x_return_status => x_return_status );
2067
2068
2069 IF FND_API.TO_BOOLEAN(P_COMMIT)
2070 THEN
2071 COMMIT WORK;
2072 END IF;
2073
2074 EXCEPTION
2075 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2076 IF p_commit = FND_API.G_TRUE
2077 THEN
2078 ROLLBACK TO Move;
2079 END IF;
2080 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2081 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
2082 p_procedure_name => 'Move_Task',
2083 p_error_text => SUBSTRB(SQLERRM,1,240));
2084 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2085
2086 WHEN FND_API.G_EXC_ERROR THEN
2087 IF p_commit = FND_API.G_TRUE
2088 THEN
2089 ROLLBACK TO Move;
2090 END IF;
2091 x_return_status := 'E';
2092
2093 WHEN OTHERS THEN
2094 IF p_commit = FND_API.G_TRUE
2095 THEN
2096 ROLLBACK TO Move;
2097 END IF;
2098 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2099 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
2100 p_procedure_name => 'Move_Task',
2101 p_error_text => SUBSTRB(SQLERRM,1,240));
2102 RAISE;
2103
2104 END Move_Task;
2105
2106
2107 -- API name : Copy_Task
2108 -- Type : Utility Procedure
2109 -- Pre-reqs : None
2110 -- Return Value : N/A
2111 -- Prameters
2112 -- p_api_version IN NUMBER := 1.0
2113 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
2114 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
2115 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
2116 -- p_validation_level IN VARCHAR2 := 100
2117 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
2118 -- p_debug_mode IN VARCHAR2 := 'N'
2119 -- p_reference_project_id IN NUMBER := FND_API.G_MISS_NUM
2120 -- p_reference_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2121 -- p_reference_task_id IN NUMBER := FND_API.G_MISS_NUM
2122 -- p_reference_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2123 -- p_project_id IN NUMBER := FND_API.G_MISS_NUM
2124 -- p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2125 -- p_task_id IN NUMBER := FND_API.G_MISS_NUM
2126 -- p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2127 -- p_peer_or_sub IN VARCHAR2 REQUIRED
2128 -- p_copy_node_flag IN VARCHAR2 REQUIRED
2129 -- p_task_prefix IN VARCHAR2 REQUIRED
2130 -- p_wbs_record_version_number IN NUMBER
2131 -- x_return_status OUT VARCHAR2
2132 -- x_msg_count OUT NUMBER
2133 -- x_msg_data OUT VARCHAR2
2134 --
2135 -- History
2136 --
2137 -- 25-JUN-01 Majid Ansari -Created
2138 --
2139 --
2140
2141 PROCEDURE Copy_Task(
2142 p_api_version IN NUMBER := 1.0
2143 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
2144 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
2145 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
2146 ,p_validation_level IN VARCHAR2 := 100
2147 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
2148 ,p_debug_mode IN VARCHAR2 := 'N'
2149 ,p_reference_project_id IN NUMBER := FND_API.G_MISS_NUM
2150 ,p_reference_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2151 ,p_reference_task_id IN NUMBER := FND_API.G_MISS_NUM
2152 ,p_reference_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2153 ,p_project_id IN NUMBER := FND_API.G_MISS_NUM
2154 ,p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2155 ,p_task_id IN NUMBER := FND_API.G_MISS_NUM
2156 ,p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2157 ,p_peer_or_sub IN VARCHAR2
2158 ,p_copy_node_flag IN VARCHAR2
2159 ,p_task_prefix IN VARCHAR2
2160 ,p_wbs_record_version_number IN NUMBER
2161 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2162 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
2163 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
2164
2165 l_api_name CONSTANT VARCHAR(30) := 'Copy_Task';
2166 l_api_version CONSTANT NUMBER := 1.0;
2167
2168 l_return_status VARCHAR2(1);
2169 l_msg_data VARCHAR2(250);
2170 l_msg_count NUMBER;
2171
2172 l_dummy_char VARCHAR2(1);
2173 l_error_msg_code VARCHAR2(250);
2174 l_data VARCHAR2(250);
2175 l_msg_index_out NUMBER;
2176 l_dummy VARCHAR2(1);
2177
2178 l_project_id NUMBER;
2179 l_ref_project_id NUMBER;
2180 l_task_id NUMBER;
2181 l_ref_task_id NUMBER;
2182
2183 BEGIN
2184
2185 pa_tasks_maint_utils.set_org_id(p_project_id);
2186 -- Standard call to check for call compatibility
2187 IF (p_debug_mode = 'Y')
2188 THEN
2189 pa_debug.debug('Copy Task PUB : Checking the api version number.');
2190 END IF;
2191 IF p_commit = FND_API.G_TRUE
2192 THEN
2193 SAVEPOINT Copy;
2194 END IF;
2195 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
2196 p_api_version,
2197 l_api_name,
2198 g_pkg_name)
2199 THEN
2200 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2201 END IF;
2202 if (p_debug_mode = 'Y') then
2203 pa_debug.debug('Copy Task PUB : Initializing message stack.');
2204 end if;
2205 pa_debug.init_err_stack('PA_TASK_MAINT_PUB.COPY_TASK');
2206 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
2207 fnd_msg_pub.initialize;
2208 end if;
2209
2210 IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
2211
2212 --Check Project Name and Id
2213 IF ((p_project_name <> FND_API.G_MISS_CHAR) AND
2214 (p_project_name IS NOT NULL)) OR
2215 ((p_project_id <> FND_API.G_MISS_NUM) AND
2216 (p_project_id IS NOT NULL)) THEN
2217 --Call Check API.
2218 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
2219 p_project_id => p_project_id,
2220 p_project_name => p_project_name,
2221 p_check_id_flag => 'Y', -- Bug 2623999
2222 x_project_id => l_project_id,
2223 x_return_status => l_return_status,
2224 x_error_msg_code => l_error_msg_code);
2225 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2226 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2227 p_msg_name => l_error_msg_code);
2228 END IF;
2229 END IF; --End Project Name-Id Conversion
2230
2231 --Check Task Name and Id
2232 IF ((p_task_name <> FND_API.G_MISS_CHAR) AND
2233 (p_task_name IS NOT NULL)) OR
2234 ((p_task_id <> FND_API.G_MISS_NUM) AND
2235 (p_task_id IS NOT NULL)) THEN
2236 --Call Check API.
2237 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
2238 p_project_id => l_project_id,
2239 p_task_id => p_task_id,
2240 p_check_id_flag => 'Y', -- Bug 2623999
2241 p_task_name => p_task_name,
2242 x_task_id => l_task_id,
2243 x_return_status => l_return_status,
2244 x_error_msg_code => l_error_msg_code);
2245 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2246 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2247 p_msg_name => l_error_msg_code);
2248 END IF;
2249 END IF; --End Task Name-Id Conversion
2250
2251 /*--Do not validate reference parameters - as per discussion with Sakthi and Zahid
2252 --Check reference Project Name and Id
2253 IF ((p_reference_project_name <> FND_API.G_MISS_CHAR) AND
2254 (p_reference_project_name IS NOT NULL)) OR
2255 ((p_reference_project_id <> FND_API.G_MISS_NUM) AND
2256 (p_reference_project_id IS NOT NULL)) THEN
2257 --Call Check API.
2258 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
2259 p_project_id => p_reference_project_id,
2260 p_project_name => p_reference_project_name,
2261 x_project_id => l_ref_project_id,
2262 x_return_status => l_return_status,
2263 x_error_msg_code => l_error_msg_code);
2264 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2265 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2266 p_msg_name => l_error_msg_code);
2267 END IF;
2268 END IF; --End Ref Project Name-Id Conversion
2269
2270 --Check reference Task Name and Id
2271 IF ((p_reference_task_name <> FND_API.G_MISS_CHAR) AND
2272 (p_reference_task_name IS NOT NULL)) OR
2273 ((p_reference_task_id <> FND_API.G_MISS_NUM) AND
2274 (p_reference_task_id IS NOT NULL)) THEN
2275 --Call Check API.
2276 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
2277 p_project_id => l_ref_project_id,
2278 p_task_id => p_reference_task_id,
2279 p_task_name => p_reference_task_name,
2280 x_task_id => l_ref_task_id,
2281 x_return_status => l_return_status,
2282 x_error_msg_code => l_error_msg_code);
2283 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2284 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2285 p_msg_name => l_error_msg_code);
2286 END IF;
2287 END IF; --End Ref Task Name-Id Conversion*/
2288 ELSE
2289 l_project_id := p_project_id;
2290 l_task_id := p_task_id;
2291 END IF;
2292
2293 l_ref_project_id := p_reference_project_id;
2294 l_ref_task_id := p_reference_task_id;
2295
2296 --Ref project and task id Required check.
2297 PA_TASKS_MAINT_UTILS.REF_PRJ_TASK_ID_REQ_CHECK(
2298 p_reference_project_id => l_ref_project_id,
2299 p_reference_task_id => l_ref_task_id,
2300 x_return_status => l_return_status,
2301 x_error_msg_code => l_error_msg_code );
2302
2303 IF l_return_status = FND_API.G_RET_STS_ERROR
2304 THEN
2305 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2306 p_msg_name => l_error_msg_code);
2307 x_msg_data := l_error_msg_code;
2308 x_return_status := 'E';
2309 END IF;
2310
2311 x_return_status := 'S';
2312
2313 /* temporarily commenting for project structures
2314
2315 --Call Lock project
2316 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
2317 p_validate_only => p_validate_only,
2318 p_calling_module => p_calling_module,
2319 p_project_id => l_ref_project_id,
2320 p_wbs_record_version_number => p_wbs_record_version_number,
2321 x_return_status => x_return_status,
2322 x_msg_data => x_msg_data ); */
2323
2324
2325 l_msg_count := FND_MSG_PUB.count_msg;
2326 IF l_msg_count > 0 THEN
2327 x_msg_count := l_msg_count;
2328 x_return_status := 'E';
2329 RAISE FND_API.G_EXC_ERROR;
2330 END IF;
2331
2332 IF p_copy_node_flag = 'P' ----copy entire project
2333 THEN
2334 PA_TASKS_MAINT_PVT.Copy_Entire_Project(
2335 p_commit => p_commit
2336 ,p_validate_only => p_validate_only
2337 ,p_validation_level => p_validation_level
2338 ,p_calling_module => p_calling_module
2339 ,p_debug_mode => p_debug_mode
2340 ,p_reference_project_id => l_ref_project_id
2341 ,p_reference_task_id => l_ref_task_id
2342 ,p_project_id => l_project_id
2343 ,p_peer_or_sub => p_peer_or_sub
2344 ,p_task_prefix => p_task_prefix
2345 ,x_return_status => l_return_status
2346 ,x_msg_count => l_msg_count
2347 ,x_msg_data => l_msg_data );
2348
2349 ELSIF p_copy_node_flag = 'T' ----copy selected task and its sub tasks
2350 THEN
2351 PA_TASKS_MAINT_PVT.Copy_Entire_Task(
2352 p_commit => p_commit
2353 ,p_validate_only => p_validate_only
2354 ,p_validation_level => p_validation_level
2355 ,p_calling_module => p_calling_module
2356 ,p_debug_mode => p_debug_mode
2357 ,p_reference_project_id => l_ref_project_id
2358 ,p_reference_task_id => l_ref_task_id
2359 ,p_project_id => l_project_id
2360 ,p_task_id => l_task_id
2361 ,p_peer_or_sub => p_peer_or_sub
2362 ,p_task_prefix => p_task_prefix
2363 ,x_return_status => l_return_status
2364 ,x_msg_count => l_msg_count
2365 ,x_msg_data => l_msg_data );
2366 ELSIF p_copy_node_flag = 'S' ----copy selected node
2367 THEN
2368 PA_TASKS_MAINT_PVT.Copy_Selected_Task(
2369 p_commit => p_commit
2370 ,p_validate_only => p_validate_only
2371 ,p_validation_level => p_validation_level
2372 ,p_calling_module => p_calling_module
2373 ,p_debug_mode => p_debug_mode
2374 ,p_reference_project_id => l_ref_project_id
2375 ,p_reference_task_id => l_ref_task_id
2376 ,p_task_id => l_task_id
2377 ,p_peer_or_sub => p_peer_or_sub
2378 ,p_task_prefix => p_task_prefix
2379 ,x_return_status => l_return_status
2380 ,x_msg_count => l_msg_count
2381 ,x_msg_data => l_msg_data );
2382
2383 END IF;
2384
2385 if (p_debug_mode = 'Y') then
2386 pa_debug.debug('Edit Task Structure PUB : checking message count');
2387 end if;
2388 l_msg_count := FND_MSG_PUB.count_msg;
2389
2390
2391 If l_msg_count > 0 THEN
2392 x_msg_count := l_msg_count;
2393 If l_msg_count = 1 THEN
2394 pa_interface_utils_pub.get_messages
2395 (p_encoded => FND_API.G_TRUE ,
2396 p_msg_index => 1,
2397 p_msg_count => l_msg_count ,
2398 p_msg_data => l_msg_data,
2399 p_data => l_data,
2400 p_msg_index_out => l_msg_index_out );
2401
2402 x_msg_data := l_data;
2403
2404 End if;
2405 RAISE FND_API.G_EXC_ERROR;
2406 End if;
2407
2408 PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
2409 p_project_id => l_ref_project_id,
2410 p_wbs_record_version_number => p_wbs_record_version_number,
2411 x_return_status => x_return_status );
2412
2413 IF FND_API.TO_BOOLEAN(P_COMMIT)
2414 THEN
2415 COMMIT WORK;
2416 END IF;
2417
2418 EXCEPTION
2419 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2420 IF p_commit = FND_API.G_TRUE
2421 THEN
2422 ROLLBACK TO Copy;
2423 END IF;
2424 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2425 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
2426 p_procedure_name => 'Copy_Task',
2427 p_error_text => SUBSTRB(SQLERRM,1,240));
2428 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2429
2430 WHEN FND_API.G_EXC_ERROR THEN
2431 IF p_commit = FND_API.G_TRUE
2432 THEN
2433 ROLLBACK TO Copy;
2434 END IF;
2435 x_return_status := 'E';
2436
2437 WHEN OTHERS THEN
2438 IF p_commit = FND_API.G_TRUE
2439 THEN
2440 ROLLBACK TO Copy;
2441 END IF;
2442 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2443 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
2444 p_procedure_name => 'Copy_Task',
2445 p_error_text => SUBSTRB(SQLERRM,1,240));
2446 RAISE;
2447
2448 END Copy_Task;
2449
2450 --3279982 Begin Add by rtarway for FP.M development
2451
2452 -- Procedure : set_financial_flag_wrapper
2453 -- Type : Public Procedure
2454 -- Purpose : This API will be called from set financial tasks page only in financial tab
2455 -- : Wrapper API to call set_unset_financial_task and sync_up_wp_tasks_with_fin.
2456 -- Note : If a task is selected to be set as financial task, its all parents should be selected
2457 -- : to be set as financial task implicitly.
2458 -- : Similarly, if a task is unselected to be financial task, all child tasks should be unset.
2459 -- : However, set on lowest task has higher precedence than unset on higher level task.
2460 -- :
2461 -- Assumptions : This API assumes that it will be called in display sequence order of tasks.
2462 -- : So that lowest task action (checked/unchecked) precedes its parents.
2463 -- : We assume that OA will call VO row Impl's update row in the same order as it is shown in Hgrid.
2464
2465 -- Parameters Type Required Description and Purpose
2466 -- --------------------------- ------ -------- --------------------------------------------------------
2467 -- p_task_version_id IN Yes Element Version Id of the modified task.
2468 -- p_checked_flag IN Yes This is Y/N depending on the checkbox is checked in the page.
2469 -- p_record_version_number IN Yes Record version number from pa_proj_element_versions table
2470 -- p_project_id IN Yes Project_id of the project being updated.
2471 -- p_published_version_exists IN Yes Flag(Y/N) to indicate that whether published version exists for the project or not.
2472
2473 PROCEDURE SET_FINANCIAL_FLAG_WRAPPER
2474 (
2475 p_api_version IN NUMBER := 1.0
2476 , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
2477 , p_commit IN VARCHAR2 := FND_API.G_FALSE
2478 , p_validate_only IN VARCHAR2 := FND_API.G_FALSE
2479 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
2480 , p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
2481 , p_debug_mode IN VARCHAR2 := 'N'
2482 , p_task_version_id IN NUMBER
2483 , p_checked_flag IN VARCHAR2
2484 , p_record_version_number IN NUMBER
2485 , p_project_id IN NUMBER
2486 , p_published_version_exists IN VARCHAR2
2487 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2488 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
2489 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2490 )
2491 IS
2492 l_msg_count NUMBER := 0;
2493 l_data VARCHAR2(2000);
2494 l_msg_data VARCHAR2(2000);
2495 l_msg_index_out NUMBER;
2496 l_debug_mode VARCHAR2(1);
2497 l_task_version_id_tbl task_version_id_table_type;
2498 lCounterTable NUMBER := 0;
2499 l_patask_record_version_number NUMBER;
2500 l_db_financial_flag VARCHAR2(1);
2501 l_cur_task_version_id NUMBER;
2502 l_last_task_parent_id NUMBER;
2503
2504 l_debug_level2 CONSTANT NUMBER := 2;
2505 l_debug_level3 CONSTANT NUMBER := 3;
2506 l_debug_level4 CONSTANT NUMBER := 4;
2507 l_debug_level5 CONSTANT NUMBER := 5;
2508
2509 --This cursor gets all the parents of the current task
2510 --Commented by rtarway during performance BUG fix : 3693360
2511 /*CURSOR c_get_parents( l_project_id NUMBER, l_task_version_id NUMBER )
2512 IS
2513 SELECT
2514 element_version_id
2515 , financial_task_flag
2516 FROM
2517 pa_proj_element_versions
2518 WHERE
2519 project_id = l_project_id
2520 AND
2521 element_version_id
2522 IN
2523 (--Get the Parents of the passed task
2524 SELECT
2525 object_id_from1 object_id
2526 FROM
2527 pa_object_relationships
2528 WHERE
2529 relationship_type = 'S'
2530 AND
2531 relationship_subtype = 'TASK_TO_TASK'
2532 START WITH object_id_to1 = l_task_version_id
2533 CONNECT BY Object_id_to1 = PRIOR object_id_from1
2534 )
2535 order by display_sequence desc -- Bug 3735089
2536 ;*/
2537 --Commented by rtarway during performance BUG fix : 3693360
2538 CURSOR c_get_parents( l_project_id NUMBER, l_task_version_id NUMBER )
2539 IS
2540 SELECT
2541 element_version_id
2542 , financial_task_flag
2543 FROM
2544 pa_proj_element_versions elem,
2545 (--Get the Parents of the passed task
2546 SELECT
2547 object_id_from1 object_id
2548 FROM
2549 pa_object_relationships
2550 WHERE
2551 relationship_type = 'S'
2552 AND
2553 relationship_subtype = 'TASK_TO_TASK'
2554 START WITH object_id_to1 = l_task_version_id
2555 CONNECT BY Object_id_to1 = PRIOR object_id_from1
2556 AND RELATIONSHIP_TYPE = 'S'
2557 ) parents
2558
2559 WHERE
2560 elem.project_id = l_project_id
2561 AND elem.object_type = 'PA_TASKS'
2562 AND elem.element_version_id = parents.object_id
2563 order by elem.display_sequence desc;
2564
2565 --Commented by rtarway for Perf FIX : BUG 3693360
2566 /*
2567 --This cursor gets all the children of the current task
2568 CURSOR c_get_childs( l_project_id NUMBER, l_task_version_id NUMBER )
2569 IS
2570 SELECT
2571 element_version_id
2572 , financial_task_flag
2573 FROM
2574 pa_proj_element_versions
2575 WHERE
2576 project_id = l_project_id
2577 AND
2578 element_version_id
2579 IN
2580 (-- Get the Childs of the mapped task
2581 SELECT
2582 object_id_to1 object_id
2583 FROM
2584 pa_object_relationships
2585 WHERE
2586 relationship_type ='S'
2587 AND
2588 relationship_subtype ='TASK_TO_TASK'
2589 START WITH object_id_from1 = l_task_version_id
2590 CONNECT BY object_id_from1 = PRIOR object_id_to1
2591 )
2592 order by display_sequence -- Bug 3735089
2593 ;*/
2594
2595 --Added by rtarway, modified Query for improving perf, BUG 3693360
2596 CURSOR c_get_childs( l_project_id NUMBER, l_task_version_id NUMBER )
2597 IS
2598 SELECT
2599 element_version_id
2600 , financial_task_flag
2601 FROM
2602 pa_proj_element_versions elem,
2603 (
2604 SELECT
2605 object_id_to1 object_id
2606 FROM
2607 pa_object_relationships
2608 WHERE
2609 relationship_type ='S'
2610 AND relationship_subtype ='TASK_TO_TASK'
2611 START WITH object_id_from1 = l_task_version_id
2612 CONNECT BY object_id_from1 = PRIOR object_id_to1
2613 AND relationship_type ='S'
2614 ) childs
2615 WHERE
2616 elem.project_id = l_project_id
2617 and elem.object_type = 'PA_TASKS'
2618 and elem.element_version_id = childs.object_id
2619 order by elem.display_sequence;
2620
2621 --End Changes by rtarway for BUG 3693360
2622
2623
2624 --This cursor gets the immediate parent of the passed task version id from the pa_object_relationships
2625 CURSOR c_get_immediate_parent (l_object_id_to1 NUMBER)
2626 IS
2627 SELECT
2628 OBJECT_ID_FROM1
2629 FROM
2630 pa_object_relationships
2631 WHERE
2632 relationship_type ='S'
2633 AND
2634 relationship_subtype ='TASK_TO_TASK'
2635 AND
2636 OBJECT_ID_TO1 = l_object_id_to1;
2637
2638 --This cursor gets the record version number from pa_tasks for the passed task version id
2639 CURSOR c_get_pa_record_version_number (l_task_version_id NUMBER , l_project_id NUMBER)
2640 IS
2641 SELECT
2642 allTasks.record_version_number
2643
2644 FROM
2645 PA_TASKS allTasks,
2646 pa_proj_element_versions elever
2647 WHERE
2648 elever.element_version_id = l_task_version_id
2649 AND
2650 elever.project_id = l_project_id
2651 AND elever.proj_element_id = allTasks.task_id
2652 AND allTasks.project_id = elever.project_id;
2653
2654 --Bug 3735089
2655 l_syncup_task_version_id NUMBER;
2656 l_user_id NUMBER;
2657 l_login_id NUMBER;
2658 l_wp_version_enabled VARCHAR2(1);--Bug 4482903
2659 BEGIN
2660 x_msg_count := 0;
2661 x_return_status := FND_API.G_RET_STS_SUCCESS;
2662 --Delete the elements from the table, if any
2663 l_task_version_id_tbl.DELETE;
2664
2665 --Bug 3735089 - instead of fnd_profile.value use fnd_profile.value_specific
2666 --l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
2667 l_user_id := fnd_global.user_id;
2668 l_login_id := fnd_global.login_id;
2669 l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id, l_login_id,275,null,null),'N');
2670
2671 --l_debug_mode := NVL(p_debug_mode,'N');
2672 IF l_debug_mode = 'Y' THEN
2673 PA_DEBUG.set_curr_function( p_function => 'SET_FINANCIAL_FLAG_WRAPPER',
2674 p_debug_mode => l_debug_mode );
2675 END IF;
2676
2677 IF l_debug_mode = 'Y' THEN
2678
2679 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : Printing Input parameters';
2680
2681 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
2682 l_debug_level3);
2683 Pa_Debug.WRITE(g_pkg_name,'p_task_version_id'||':'||p_task_version_id,
2684 l_debug_level3);
2685 Pa_Debug.WRITE(g_pkg_name,'p_checked_flag'||':'||p_checked_flag,
2686 l_debug_level3);
2687 Pa_Debug.WRITE(g_pkg_name,'p_record_version_number'||':'||p_record_version_number,
2688 l_debug_level3);
2689 Pa_Debug.WRITE(g_pkg_name,'p_project_id'||':'||p_project_id,
2690 l_debug_level3);
2691 Pa_Debug.WRITE(g_pkg_name,'p_published_version_exists'||':'||p_published_version_exists,
2692 l_debug_level3);
2693 END IF;
2694
2695 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
2696 FND_MSG_PUB.initialize;
2697 END IF;
2698
2699 IF (p_commit = FND_API.G_TRUE) THEN
2700 savepoint SET_FIN_FLAG_WRAPPER_PUBLIC;
2701 END IF;
2702
2703 IF l_debug_mode = 'Y' THEN
2704 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : Validating Input parameters';
2705 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
2706 l_debug_level3);
2707 END IF;
2708
2709 IF (
2710 p_task_version_id IS NULL OR
2711 p_checked_flag IS NULL OR
2712 -- p_record_version_number IS NULL OR -- Bug # 4611527.
2713 p_project_id IS NULL OR
2714 p_published_version_exists IS NULL
2715 )
2716 THEN
2717 IF l_debug_mode = 'Y' THEN
2718 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : At least one of the mandatory IN parameters are passed as NULL';
2719 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
2720 l_debug_level3);
2721 END IF;
2722 RAISE Invalid_Arg_Exc_WP;
2723 END IF;
2724
2725 IF l_debug_mode = 'Y' THEN
2726 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : Calling set_unset_financial_task';
2727 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
2728 l_debug_level3);
2729 END IF;
2730 --This part of code is common whether p_checked_flag is 'Y' or 'N'
2731 --Call API to set/unset financial_flag for p_task_version_id depending on p_checked_flag.
2732
2733 PA_TASKS_MAINT_PVT.SET_UNSET_FINANCIAL_TASK
2734 (
2735 p_init_msg_list => FND_API.G_FALSE
2736 , p_commit => p_commit
2737 , p_debug_mode => l_debug_mode
2738 , p_task_version_id => p_task_version_id
2739 , p_project_id => p_project_id
2740 , p_checked_flag => p_checked_flag
2741 , x_return_status => x_return_status
2742 , x_msg_count => x_msg_count
2743 , x_msg_data => x_msg_data
2744 );
2745
2746 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2747 THEN
2748 RAISE FND_API.G_EXC_ERROR;
2749 END IF;
2750 l_wp_version_enabled := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(p_project_id); --Bug 4482903
2751 --If p_published_version_exists ='N'
2752 -- IF ( p_published_version_exists = 'N') --Bug 4482903
2753 -- Added an additional condition for handling the Version Disabled Case
2754 IF (p_published_version_exists ='N' OR l_wp_version_enabled= 'N') --Bug 4482903
2755 THEN
2756 --put the current task version id as the first element in table
2757 l_task_version_id_tbl(lCounterTable) := p_task_version_id;
2758 lCounterTable := lCounterTable + 1;
2759 END IF;
2760 --Intialize the counter with current count of the table
2761 --lCounterTable := l_task_version_id_tbl.COUNT;
2762 --if p_checked_flag is Y
2763 IF (p_checked_flag = 'Y')
2764 THEN
2765 -- LOOP thru cursor c_get_parents(p_project_id, p_task_version_id)
2766 -- This loop will set the financial task flag
2767 -- for all the parent tasks of the current task
2768
2769 FOR c_get_parents_rec IN c_get_parents(p_project_id, p_task_version_id) LOOP
2770 --FETCH c_get_parents INTO l_cur_task_version_id , l_db_financial_flag;
2771 l_cur_task_version_id := c_get_parents_rec.element_version_id;
2772 l_db_financial_flag := c_get_parents_rec.financial_task_flag;
2773
2774
2775 IF (l_db_financial_flag = 'Y')
2776 THEN
2777 --Exit from the loop as this condition implies that all the parent ladder tasks
2778 --are already set as financial task
2779 EXIT;
2780 ELSE
2781
2782 --Set the financial task flag
2783 PA_TASKS_MAINT_PVT.SET_UNSET_FINANCIAL_TASK
2784 (
2785 p_init_msg_list => p_init_msg_list
2786 , p_commit => p_commit
2787 , p_debug_mode => l_debug_mode
2788 , p_project_id => p_project_id
2789 , p_task_version_id => l_cur_task_version_id
2790 , p_checked_flag => p_checked_flag
2791 , x_return_status => x_return_status
2792 , x_msg_count => x_msg_count
2793 , x_msg_data => x_msg_data
2794 );
2795
2796 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2797 THEN
2798 RAISE FND_API.G_EXC_ERROR;
2799 END IF;
2800
2801 IF ( p_published_version_exists = 'N')
2802 THEN
2803 -- This will put all the task version id of the parent ladder
2804 l_task_version_id_tbl(lCounterTable) := l_cur_task_version_id;
2805 lCounterTable := lCounterTable + 1;
2806 END IF;
2807 END IF;--End if for l_db_financial task
2808 END LOOP;--End Loop for parent tasks of the current task
2809 ELSIF (p_checked_flag = 'N')
2810 THEN
2811 -- LOOP thru cursor c_get_childs(p_project_id, p_task_version_id)
2812 -- This loop will unset the financial task flag
2813 -- for all the child tasks of the current task
2814
2815 FOR c_get_childs_rec IN c_get_childs(p_project_id, p_task_version_id) LOOP
2816 --FETCH c_get_childs INTO l_cur_task_version_id , l_db_financial_flag;
2817 l_cur_task_version_id := c_get_childs_rec.element_version_id;
2818 l_db_financial_flag := c_get_childs_rec.financial_task_flag;
2819
2820
2821 IF (l_db_financial_flag = 'N')
2822 THEN
2823 --Exit from the loop as this condition implies that all the child ladder tasks
2824 --are already unset as financial task
2825 --EXIT;
2826 --As the above assumption is wrong if there are peer tasks at a level which are not set as financial task
2827 NULL;
2828 ELSE
2829
2830 --Unset the financial task flag
2831 PA_TASKS_MAINT_PVT.SET_UNSET_FINANCIAL_TASK
2832 (
2833 p_init_msg_list => p_init_msg_list
2834 , p_commit => p_commit
2835 , p_debug_mode => l_debug_mode
2836 , p_project_id => p_project_id
2837 , p_task_version_id => l_cur_task_version_id
2838 , p_checked_flag => p_checked_flag
2839 , x_return_status => x_return_status
2840 , x_msg_count => x_msg_count
2841 , x_msg_data => x_msg_data
2842 );
2843
2844 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2845 THEN
2846 RAISE FND_API.G_EXC_ERROR;
2847 END IF;
2848
2849 IF ( p_published_version_exists = 'N')
2850 THEN
2851 l_task_version_id_tbl(lCounterTable) := l_cur_task_version_id;
2852 lCounterTable := lCounterTable + 1;
2853 END IF;
2854 END IF;--End if for l_db_financial task
2855 END LOOP;--End Loop for child tasks of the current task
2856 END IF;--End if for the p_checked_flag='Y'
2857 --IF ( p_published_version_exists = 'N') --Bug 4482903
2858 -- Added an additional condition for handling the Version Disabled Case
2859 IF (p_published_version_exists ='N' OR l_wp_version_enabled= 'N') --Bug 4482903
2860 THEN
2861
2862
2863 -- Bug 3735089 Added below IF condition
2864 -- It is sufficient to delete top task in case checked flag as N
2865 -- no need to loop and delete all child tasks
2866 IF p_checked_flag = 'N' THEN
2867 l_syncup_task_version_id := p_task_version_id;
2868 ELSE
2869 l_syncup_task_version_id := l_task_version_id_tbl(l_task_version_id_tbl.LAST);
2870 END IF;
2871
2872 --Get record version number from pa_tasks table
2873 -- OPEN c_get_pa_record_version_number (l_task_version_id_tbl(l_task_version_id_tbl.LAST) , p_project_id); --Bug 3735089
2874 OPEN c_get_pa_record_version_number (l_syncup_task_version_id , p_project_id);
2875 FETCH c_get_pa_record_version_number INTO l_patask_record_version_number;
2876 CLOSE c_get_pa_record_version_number;
2877
2878 --get the parent of the last task.
2879 --OPEN c_get_immediate_parent (l_task_version_id_tbl(l_task_version_id_tbl.LAST)); --Bug 3735089
2880 OPEN c_get_immediate_parent (l_syncup_task_version_id);
2881 FETCH c_get_immediate_parent INTO l_last_task_parent_id;
2882 IF (c_get_immediate_parent%NOTFOUND)
2883 THEN
2884 --if the parent is structure then then pass p_parent_task_version_id as null
2885 PA_TASKS_MAINT_PUB.SYNC_UP_WP_TASKS_WITH_FIN
2886 (
2887 p_api_version => 1.0
2888 , p_init_msg_list => FND_API.G_FALSE
2889 , p_commit => p_commit
2890 , p_validate_only => FND_API.G_FALSE
2891 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
2892 , p_calling_module => 'SELF_SERVICE'
2893 , p_debug_mode => l_debug_mode
2894 , p_patask_record_version_number => l_patask_record_version_number
2895 , p_parent_task_version_id => FND_API.G_MISS_NUM
2896 , p_project_id => p_project_id
2897 , p_syncup_all_tasks => 'N'
2898 -- , p_task_version_id => l_task_version_id_tbl(l_task_version_id_tbl.LAST)--Bug 3735089
2899 , p_task_version_id => l_syncup_task_version_id
2900 , p_structure_version_id => FND_API.G_MISS_NUM
2901 , p_check_for_transactions => 'N'
2902 , p_checked_flag => p_checked_flag
2903 , p_mode => 'SINGLE'
2904 , x_return_status => x_return_status
2905 , x_msg_count => x_msg_count
2906 , x_msg_data => x_msg_data
2907 );
2908 -- Bug 3735089 : Added error handling code
2909 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2910 THEN
2911 RAISE FND_API.G_EXC_ERROR;
2912 END IF;
2913
2914 ELSE
2915
2916 --else pass the derived parent task version id
2917 PA_TASKS_MAINT_PUB.SYNC_UP_WP_TASKS_WITH_FIN
2918 (
2919 p_debug_mode => l_debug_mode
2920 , p_commit => p_commit
2921 , p_init_msg_list => FND_API.G_FALSE
2922 , p_patask_record_version_number => l_patask_record_version_number
2923 , p_parent_task_version_id => l_last_task_parent_id
2924 , p_project_id => p_project_id
2925 , p_syncup_all_tasks =>'N'
2926 --, p_task_version_id => l_task_version_id_tbl(l_task_version_id_tbl.LAST)-- Bug 3735089
2927 , p_task_version_id => l_syncup_task_version_id
2928 , p_checked_flag => p_checked_flag
2929 , p_mode => 'SINGLE'
2930 , p_check_for_transactions =>'N'
2931 , x_return_status => x_return_status
2932 , x_msg_count => x_msg_count
2933 , x_msg_data => x_msg_data
2934 );
2935 -- Bug 3735089 : Added error handling code
2936 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2937 THEN
2938 RAISE FND_API.G_EXC_ERROR;
2939 END IF;
2940
2941 END IF;
2942 CLOSE c_get_immediate_parent;
2943
2944 --For All other tasks in the l_task_version_id_tbl, loop in reverse order and call sync-up API
2945 -- Pass the 1 up task version id in table as the parent
2946 IF (l_task_version_id_tbl.COUNT > 1 AND p_checked_flag = 'Y') -- Bug 3735089 : Added p_checked_flag = 'Y'
2947 THEN
2948
2949 FOR iCounter IN REVERSE l_task_version_id_tbl.FIRST..l_task_version_id_tbl.LAST-1 LOOP
2950
2951 PA_TASKS_MAINT_PUB.SYNC_UP_WP_TASKS_WITH_FIN
2952 (
2953 p_debug_mode => l_debug_mode
2954 , p_commit => p_commit
2955 , p_init_msg_list => FND_API.G_FALSE
2956 , p_patask_record_version_number => l_patask_record_version_number
2957 , p_parent_task_version_id => l_task_version_id_tbl( iCounter + 1 )
2958 , p_project_id => p_project_id
2959 , p_syncup_all_tasks =>'N'
2960 , p_task_version_id => l_task_version_id_tbl( iCounter )
2961 , p_checked_flag => p_checked_flag
2962 , p_mode => 'SINGLE'
2963 , p_check_for_transactions =>'N'
2964 , x_return_status => x_return_status
2965 , x_msg_count => x_msg_count
2966 , x_msg_data => x_msg_data
2967 );
2968 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2969 THEN
2970 RAISE FND_API.G_EXC_ERROR;
2971 END IF;
2972 END LOOP;
2973 END IF;
2974 END IF;
2975
2976 IF (p_commit = FND_API.G_TRUE) THEN
2977 COMMIT;
2978 END IF;
2979 -- Bug 3735089 : using reset_curr_function too, just using set_curr_function may overflow it after several recursive calls
2980 -- and it gives ORA 06512 numeric or value error
2981 IF l_debug_mode = 'Y' THEN
2982 Pa_Debug.reset_curr_function;
2983 END IF;
2984
2985 EXCEPTION
2986
2987 WHEN FND_API.G_EXC_ERROR THEN
2988
2989 x_return_status := Fnd_Api.G_RET_STS_ERROR;
2990 l_msg_count := Fnd_Msg_Pub.count_msg;
2991
2992 IF p_commit = FND_API.G_TRUE THEN
2993 ROLLBACK TO SET_FIN_FLAG_WRAPPER_PUBLIC;
2994 END IF;
2995
2996 IF c_get_parents%ISOPEN THEN
2997 CLOSE c_get_parents;
2998 END IF;
2999
3000 IF c_get_childs%ISOPEN THEN
3001 CLOSE c_get_childs;
3002 END IF;
3003 IF c_get_immediate_parent%ISOPEN THEN
3004 CLOSE c_get_immediate_parent;
3005 END IF;
3006 IF c_get_pa_record_version_number%ISOPEN THEN
3007 CLOSE c_get_pa_record_version_number;
3008 END IF;
3009
3010
3011 IF l_msg_count = 1 AND x_msg_data IS NULL
3012 THEN
3013 Pa_Interface_Utils_Pub.get_messages
3014 ( p_encoded => Fnd_Api.G_TRUE
3015 , p_msg_index => 1
3016 , p_msg_count => l_msg_count
3017 , p_msg_data => l_msg_data
3018 , p_data => l_data
3019 , p_msg_index_out => l_msg_index_out);
3020 x_msg_data := l_data;
3021 x_msg_count := l_msg_count;
3022 ELSE
3023 x_msg_count := l_msg_count;
3024 END IF;
3025
3026 IF l_debug_mode = 'Y' THEN
3027 Pa_Debug.reset_curr_function;
3028 END IF;
3029
3030 WHEN Invalid_Arg_Exc_WP THEN
3031
3032 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3033 x_msg_count := 1;
3034 x_msg_data := 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : NULL PARAMETERS ARE PASSED OR CURSOR DIDNT RETURN ANY ROWS';
3035
3036 IF p_commit = FND_API.G_TRUE THEN
3037 ROLLBACK TO SET_FIN_FLAG_WRAPPER_PUBLIC;
3038 END IF;
3039 IF c_get_parents%ISOPEN THEN
3040 CLOSE c_get_parents;
3041 END IF;
3042
3043 IF c_get_childs%ISOPEN THEN
3044 CLOSE c_get_childs;
3045 END IF;
3046 IF c_get_immediate_parent%ISOPEN THEN
3047 CLOSE c_get_immediate_parent;
3048 END IF;
3049 IF c_get_pa_record_version_number%ISOPEN THEN
3050 CLOSE c_get_pa_record_version_number;
3051 END IF;
3052 Fnd_Msg_Pub.add_exc_msg
3053 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3054 , p_procedure_name => 'SET_FINANCIAL_FLAG_WRAPPER'
3055 , p_error_text => x_msg_data);
3056
3057 IF l_debug_mode = 'Y' THEN
3058 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3059 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3060 l_debug_level5);
3061 Pa_Debug.reset_curr_function;
3062 END IF;
3063 RAISE;
3064
3065 WHEN OTHERS THEN
3066
3067 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3068 x_msg_count := 1;
3069 x_msg_data := substr(SQLERRM,1,120);-- Bug 3735089 Added substr
3070
3071 IF p_commit = FND_API.G_TRUE THEN
3072 ROLLBACK TO SET_FIN_FLAG_WRAPPER_PUBLIC;
3073 END IF;
3074
3075 IF c_get_parents%ISOPEN THEN
3076 CLOSE c_get_parents;
3077 END IF;
3078
3079 IF c_get_childs%ISOPEN THEN
3080 CLOSE c_get_childs;
3081 END IF;
3082 IF c_get_immediate_parent%ISOPEN THEN
3083 CLOSE c_get_immediate_parent;
3084 END IF;
3085 IF c_get_pa_record_version_number%ISOPEN THEN
3086 CLOSE c_get_pa_record_version_number;
3087 END IF;
3088
3089 Fnd_Msg_Pub.add_exc_msg
3090 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3091 , p_procedure_name => 'SET_FINANCIAL_FLAG_WRAPPER'
3092 , p_error_text => x_msg_data);
3093
3094 IF l_debug_mode = 'Y' THEN
3095 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3096 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3097 l_debug_level5);
3098
3099 Pa_Debug.reset_curr_function;
3100
3101 END IF;
3102 RAISE;
3103 END SET_FINANCIAL_FLAG_WRAPPER ;
3104
3105 -- Procedure : POPULATE_TEMP_TABLE
3106 -- Type : Public Procedure
3107 -- Purpose : This API will be called from set financial tasks page in financial tab
3108 -- : This Api is to populate the global temp
3109 -- : table PA_PREVIEW_FIN_TASKS_TEMP for Preview Financial tasks page.
3110 -- : The VO of Preview page is based on this temp table
3111 -- :
3112 -- Note : This API first populates the temp table with structure information and then it selects all the parent
3113 -- : tasks for the passed task id and popultes the temp table with parent tasks information
3114 -- :
3115 -- Assumptions :
3116
3117 -- Parameters Type Required Description and Purpose
3118 -- --------------------------- ------ -------- --------------------------------------------------------
3119 -- p_task_version_id_array SYSTEM.PA_NUM_TBL_TYPE Yes Array of checked Element Version Id from the Set Financial Tasks page.
3120 -- p_structure_version_id NUMBER Yes Structure Version Id of the structure being previewed.
3121 -- p_project_id NUMBER Yes Project_id of the project being used.
3122
3123 PROCEDURE POPULATE_TEMP_TABLE
3124 (
3125 p_api_version IN NUMBER := 1.0
3126 , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
3127 , p_commit IN VARCHAR2 := FND_API.G_FALSE
3128 , p_validate_only IN VARCHAR2 := FND_API.G_FALSE
3129 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
3130 , p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
3131 , p_debug_mode IN VARCHAR2 := 'N'
3132 , p_task_version_id_array IN SYSTEM.PA_NUM_TBL_TYPE := NULL
3133 , p_structure_version_id IN NUMBER
3134 , p_project_id IN NUMBER
3135 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3136 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
3137 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3138 )
3139 IS
3140
3141 l_msg_count NUMBER := 0;
3142 l_data VARCHAR2(2000);
3143 l_msg_data VARCHAR2(2000);
3144 l_msg_index_out NUMBER;
3145 l_debug_mode VARCHAR2(1);
3146 l_rec_fin_tasks_temp fin_tasks_temp_record_type;
3147 --l_rec_fin_tasks_temp_tbl fin_tasks_temp_table_type;
3148
3149
3150 l_project_id_tbl project_id_table_type ;
3151 l_element_version_id_tbl ELEMENT_VERSION_ID_table_type;
3152 l_prnt_struct_ver_id_tbl PRNT_STRUCT_VER_ID_table_type;
3153 l_prnt_elem_ver_id_tbl PRNT_ELEM_VER_ID_table_type;
3154 l_child_element_flag_tbl CHILD_ELEMENT_FLAG_table_type ;
3155 l_task_name_tbl TASK_NAME_table_type ;
3156 l_task_number_tbl TASK_NUMBER_table_type;
3157 l_object_type_tbl OBJECT_TYPE_table_type ;
3158 l_display_sequence_tbl DISPLAY_SEQUENCE_table_type;
3159 l_wbs_number_tbl WBS_NUMBER_table_type ;
3160 l_proj_element_id_tbl PROJ_ELEMENT_ID_table_type;
3161 l_fin_task_flag_tbl FINANCIAL_TASK_FLAG_table_type;
3162
3163 l_debug_level2 CONSTANT NUMBER := 2;
3164 l_debug_level3 CONSTANT NUMBER := 3;
3165 l_debug_level4 CONSTANT NUMBER := 4;
3166 l_debug_level5 CONSTANT NUMBER := 5;
3167
3168 --This cursor will get all the structure Information for the passed project id and structure id
3169 CURSOR c_get_structure_info(l_project_id NUMBER, l_element_version_id NUMBER)
3170 IS
3171 SELECT
3172 elemver.project_id AS PROJECT_ID
3173 , elemver.element_version_id AS ELEMENT_VERSION_ID
3174 , elemver.parent_structure_version_id AS PARENT_STRUCTRE_VERSION_ID
3175 , null AS PARENT_ELEMENT_VERSION_ID
3176 , PA_PROJ_ELEMENTS_UTILS.check_child_element_exist(elemver.element_version_id) AS CHILD_ELEMENT_FLAG
3177 , elem.name AS TASK_NAME
3178 --, elem.element_number AS TASK_NUMBER -- Commented for Bug 5438975
3179 , verstruct.version_number as TASK_NUMBER -- Added for Bug 5438975
3180 , elem.object_type AS OBJECT_TYPE
3181 , elemver.display_sequence AS DISPLAY_SEQUENCE
3182 , elemver.wbs_number AS WBS_NUMBER
3183 , elem.proj_element_id AS PROJ_ELEMENT_ID
3184 , elemver.financial_task_flag AS FINANCIAL_TASK_FLAG
3185 FROM
3186 pa_proj_elements elem
3187 , pa_proj_element_versions elemver
3188 , pa_proj_elem_ver_structure verstruct -- Added for Bug 5438975
3189 WHERE elem.proj_element_id = elemver.proj_element_id
3190 AND elem.project_id = elemver.project_id
3191 AND elemver.element_version_id = l_element_version_id
3192 AND elemver.project_id = l_project_id
3193 -- Added for Bug 5438975
3194 AND verstruct.project_id = elemver.project_id
3195 AND verstruct.ELEMENT_VERSION_ID = elemver.element_version_id
3196 AND verstruct.PROJ_ELEMENT_ID = elemver.proj_element_id;
3197
3198 -- This curosor gets the details of the parents of the passed task along with the passed task itself
3199 CURSOR c_get_parents (l_project_id NUMBER, l_task_version_id NUMBER)
3200 IS
3201 SELECT
3202 elemver.project_id AS PROJECT_ID
3203 , elemver.element_version_id AS ELEMENT_VERSION_ID
3204 , elemver.parent_structure_version_id AS PARENT_STRUCTRE_VERSION_ID
3205 , por.object_id_from1 AS PARENT_ELEMENT_VERSION_ID
3206 , PA_PROJ_ELEMENTS_UTILS.check_child_element_exist(elemver.element_version_id) AS CHILD_ELEMENT_FLAG
3207 , projelem.name AS TASK_NAME
3208 , projelem.element_number AS TASK_NUMBER
3209 , elemver.object_type AS OBJECT_TYPE
3210 , elemver.display_sequence AS DISPLAY_SEQUENCE
3211 , elemver.wbs_number AS WBS_NUMBER
3212 , elemver.proj_element_id AS PROJ_ELEMENT_ID
3213 , elemver.financial_task_flag AS FINANCIAL_TASK_FLAG
3214 FROM
3215 pa_proj_element_versions elemver
3216 , pa_proj_elements projelem
3217 , pa_object_relationships por
3218 WHERE
3219 projelem.project_id = elemver.project_id
3220 AND projelem.proj_element_id = elemver.proj_element_id
3221 AND elemver.object_type='PA_TASKS'
3222 AND projelem.object_type='PA_TASKS'
3223 AND por.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
3224 AND por.object_id_to1 = elemver.element_version_id
3225 AND por.object_type_to IN ('PA_STRUCTURES', 'PA_TASKS')
3226 AND por.relationship_type = 'S'
3227 AND elemver.project_id = l_project_id
3228 AND elemver.element_version_id IN
3229 (--Get the Parents of the passed task
3230 SELECT object_id_from1 object_id
3231 FROM pa_object_relationships
3232 WHERE relationship_type = 'S'
3233 AND relationship_subtype = 'TASK_TO_TASK'
3234 START WITH object_id_to1 = l_task_version_id
3235 CONNECT BY Object_id_to1 = PRIOR object_id_from1
3236 UNION
3237 SELECT l_task_version_id--Get the Passed task itself
3238 FROM dual
3239 )
3240 AND NOT EXISTS -- This is to insure that the same record does not get inserted twice
3241 (
3242 SELECT 'xyz'
3243 FROM pa_preview_fin_tasks_temp temp
3244 WHERE temp.element_version_id = elemver.element_version_id
3245 );
3246
3247 BEGIN
3248
3249 x_msg_count := 0;
3250 x_return_status := FND_API.G_RET_STS_SUCCESS;
3251
3252 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
3253 --l_debug_mode := NVL(p_debug_mode,'N');
3254 IF l_debug_mode = 'Y' THEN
3255 PA_DEBUG.set_curr_function( p_function => 'POPULATE_TEMP_TABLE',
3256 p_debug_mode => l_debug_mode );
3257 END IF;
3258
3259
3260
3261 IF l_debug_mode = 'Y' THEN
3262 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB:POPULATE_TEMP_TABLE:Printing Input parameters';
3263 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3264 l_debug_level3);
3265 Pa_Debug.WRITE(g_pkg_name,'p_structure_version_id'||':'||p_structure_version_id,
3266 l_debug_level3);
3267 Pa_Debug.WRITE(g_pkg_name,'p_project_id'||':'||p_project_id,
3268 l_debug_level3);
3269 END IF;
3270
3271 --Delete all elements from temporary table first.
3272 BEGIN
3273 DELETE FROM pa_preview_fin_tasks_temp;
3274
3275 EXCEPTION
3276 WHEN OTHERS THEN
3277
3278 RAISE;
3279 END;
3280
3281 --Delete all the elements from all PL/sql tables before using
3282 l_project_id_tbl.DELETE;
3283 l_element_version_id_tbl.DELETE;
3284 l_prnt_struct_ver_id_tbl.DELETE;
3285 l_prnt_elem_ver_id_tbl.DELETE;
3286 l_child_element_flag_tbl.DELETE;
3287 l_task_name_tbl.DELETE;
3288 l_task_number_tbl.DELETE;
3289 l_object_type_tbl.DELETE;
3290 l_display_sequence_tbl.DELETE;
3291 l_wbs_number_tbl.DELETE;
3292 l_proj_element_id_tbl.DELETE;
3293 l_fin_task_flag_tbl.DELETE;
3294
3295 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
3296 FND_MSG_PUB.initialize;
3297 END IF;
3298
3299 IF (p_commit = FND_API.G_TRUE) THEN
3300 savepoint POPULATE_TEMP_TBL_PUB;
3301 END IF;
3302
3303 IF l_debug_mode = 'Y' THEN
3304 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : POPULATE_TEMP_TABLE : Validating Input parameters';
3305 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3306 l_debug_level3);
3307 END IF;
3308
3309 IF (
3310 --( p_task_version_id_array IS NULL ) OR
3311 ( p_structure_version_id IS NULL ) OR
3312 ( p_project_id IS NULL )
3313 )
3314 THEN
3315 IF l_debug_mode = 'Y' THEN
3316 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : POPULATE_TEMP_TABLE : At least one of the mandatory IN parameters are passed as NULL';
3317 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3318 l_debug_level3);
3319 END IF;
3320 RAISE Invalid_Arg_Exc_WP;
3321 END IF;
3322
3323 --Open cursor c_get_structure_info and get the structure information
3324 OPEN c_get_structure_info(p_project_id , p_structure_version_id);
3325 FETCH c_get_structure_info INTO l_rec_fin_tasks_temp;
3326 INSERT INTO pa_preview_fin_tasks_temp
3327 (
3328 PROJECT_ID
3329 , ELEMENT_VERSION_ID
3330 , PARENT_STRUCTURE_VERSION_ID
3331 , PARENT_ELEMENT_VERSION_ID
3332 , CHILD_ELEMENT_FLAG
3333 , TASK_NAME
3334 , TASK_NUMBER
3335 , OBJECT_TYPE
3336 , DISPLAY_SEQUENCE
3337 , WBS_NUMBER
3338 , PROJ_ELEMENT_ID
3339 , FINANCIAL_TASK_FLAG
3340 )
3341 VALUES
3342 (
3343 l_rec_fin_tasks_temp.PROJECT_ID
3344 , l_rec_fin_tasks_temp.element_version_id
3345 , l_rec_fin_tasks_temp.parent_structure_version_id
3346 , l_rec_fin_tasks_temp.parent_element_version_id
3347 , l_rec_fin_tasks_temp.child_element_flag
3348 , l_rec_fin_tasks_temp.task_name
3349 , l_rec_fin_tasks_temp.task_number
3350 , l_rec_fin_tasks_temp.object_type
3351 , l_rec_fin_tasks_temp.display_sequence
3352 , l_rec_fin_tasks_temp.wbs_number
3353 , l_rec_fin_tasks_temp.proj_element_id
3354 , l_rec_fin_tasks_temp.financial_task_flag
3355 );
3356 CLOSE c_get_structure_info;
3357
3358 IF (p_task_version_id_array IS NOT NULL AND p_task_version_id_array.COUNT >0) THEN
3359 FOR iCounter IN REVERSE p_task_version_id_array.FIRST..p_task_version_id_array.LAST LOOP
3360 --Get all the parentes of the task Ids passed
3361
3362 OPEN c_get_parents ( p_project_id , p_task_version_id_array (iCounter) );
3363 --Bulk Collect the cursor in to table of pa_preview_fin_tasks_temp_tbl type records
3364 FETCH c_get_parents BULK COLLECT INTO
3365 l_project_id_tbl
3366 , l_element_version_id_tbl
3367 , l_prnt_struct_ver_id_tbl
3368 , l_prnt_elem_ver_id_tbl
3369 , l_child_element_flag_tbl
3370 , l_task_name_tbl
3371 , l_task_number_tbl
3372 , l_object_type_tbl
3373 , l_display_sequence_tbl
3374 , l_wbs_number_tbl
3375 , l_proj_element_id_tbl
3376 , l_fin_task_flag_tbl;
3377
3378 CLOSE c_get_parents;
3379
3380
3381 IF (l_element_version_id_tbl.COUNT > 0)THEN
3382 --Loop thorugh the table and insert all the data in the temp table
3383 FORALL iCounter1 IN l_element_version_id_tbl.FIRST..l_element_version_id_tbl.LAST
3384 INSERT INTO pa_preview_fin_tasks_temp
3385 (
3386 PROJECT_ID
3387 , ELEMENT_VERSION_ID
3388 , PARENT_STRUCTURE_VERSION_ID
3389 , PARENT_ELEMENT_VERSION_ID
3390 , CHILD_ELEMENT_FLAG
3391 , TASK_NAME
3392 , TASK_NUMBER
3393 , OBJECT_TYPE
3394 , DISPLAY_SEQUENCE
3395 , WBS_NUMBER
3396 , PROJ_ELEMENT_ID
3397 , FINANCIAL_TASK_FLAG
3398 )
3399 VALUES
3400 (
3401 l_project_id_tbl(iCounter1)
3402 , l_element_version_id_tbl(iCounter1)
3403 , l_prnt_struct_ver_id_tbl(iCounter1)
3404 , l_prnt_elem_ver_id_tbl(iCounter1)
3405 , l_child_element_flag_tbl(iCounter1)
3406 , l_task_name_tbl(iCounter1)
3407 , l_task_number_tbl(iCounter1)
3408 , l_object_type_tbl(iCounter1)
3409 , l_display_sequence_tbl(iCounter1)
3410 , l_wbs_number_tbl(iCounter1)
3411 , l_proj_element_id_tbl(iCounter1)
3412 , l_fin_task_flag_tbl(iCounter1)
3413 );
3414 END IF;
3415 END LOOP;
3416 END IF;
3417 IF (p_commit = FND_API.G_TRUE) THEN
3418 COMMIT;
3419 END IF;
3420
3421 EXCEPTION
3422 WHEN FND_API.G_EXC_ERROR THEN
3423
3424 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3425 l_msg_count := Fnd_Msg_Pub.count_msg;
3426
3427 IF p_commit = FND_API.G_TRUE THEN
3428 ROLLBACK TO POPULATE_TEMP_TABLE_PUB;
3429 END IF;
3430
3431 IF c_get_structure_info%ISOPEN THEN
3432 CLOSE c_get_structure_info;
3433 END IF;
3434
3435 IF c_get_parents%ISOPEN THEN
3436 CLOSE c_get_parents;
3437 END IF;
3438
3439
3440 IF l_msg_count = 1 AND x_msg_data IS NULL
3441 THEN
3442 Pa_Interface_Utils_Pub.get_messages
3443 ( p_encoded => Fnd_Api.G_TRUE
3444 , p_msg_index => 1
3445 , p_msg_count => l_msg_count
3446 , p_msg_data => l_msg_data
3447 , p_data => l_data
3448 , p_msg_index_out => l_msg_index_out);
3449 x_msg_data := l_data;
3450 x_msg_count := l_msg_count;
3451 ELSE
3452 x_msg_count := l_msg_count;
3453 END IF;
3454 IF l_debug_mode = 'Y' THEN
3455 Pa_Debug.reset_curr_function;
3456 END IF;
3457
3458 WHEN Invalid_Arg_Exc_WP THEN
3459
3460 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3461 x_msg_count := 1;
3462 x_msg_data := 'PA_TASKS_MAINT_PUB : POPULATE_TEMP_TABLE : NULL PARAMETERS ARE PASSED OR CURSOR DIDNT RETURN ANY ROWS';
3463
3464 IF p_commit = FND_API.G_TRUE THEN
3465 ROLLBACK TO POPULATE_TEMP_TABLE_PUB;
3466 END IF;
3467 IF c_get_structure_info%ISOPEN THEN
3468 CLOSE c_get_structure_info;
3469 END IF;
3470
3471 IF c_get_parents%ISOPEN THEN
3472 CLOSE c_get_parents;
3473 END IF;
3474 Fnd_Msg_Pub.add_exc_msg
3475 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3476 , p_procedure_name => 'POPULATE_TEMP_TABLE'
3477 , p_error_text => x_msg_data);
3478
3479 IF l_debug_mode = 'Y' THEN
3480 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3481 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3482 l_debug_level5);
3483 Pa_Debug.reset_curr_function;
3484 END IF;
3485 RAISE;
3486
3487 WHEN OTHERS THEN
3488
3489 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3490 x_msg_count := 1;
3491 x_msg_data := substr(SQLERRM,1,120);-- Bug 3735089 Added substr
3492
3493 IF p_commit = FND_API.G_TRUE THEN
3494 ROLLBACK TO POPULATE_TEMP_TABLE_PUB;
3495 END IF;
3496 IF c_get_structure_info%ISOPEN THEN
3497 CLOSE c_get_structure_info;
3498 END IF;
3499
3500 IF c_get_parents%ISOPEN THEN
3501 CLOSE c_get_parents;
3502 END IF;
3503
3504 Fnd_Msg_Pub.add_exc_msg
3505 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3506 , p_procedure_name => 'POPULATE_TEMP_TABLE'
3507 , p_error_text => x_msg_data);
3508
3509 IF l_debug_mode = 'Y' THEN
3510 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3511 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3512 l_debug_level5);
3513 Pa_Debug.reset_curr_function;
3514 END IF;
3515 RAISE;
3516 END POPULATE_TEMP_TABLE ;
3517
3518
3519 -- Procedure : SYNC_UP_WP_TASKS_WITH_FIN
3520 -- Type : Public Procedure
3521 -- Purpose : This API will be called from set financial tasks page in financial tab
3522 -- : This API is to Sync up the financial tasks with pa_tasks table
3523 -- Note : This API does all the validations required on parameters and calls private API
3524 -- :
3525 -- Assumptions : The financial_task_flag is already set in the database.
3526
3527 -- Parameters Type Required Description and Purpose
3528 -- --------------------------- ------ -------- --------------------------------------------------------
3529 -- p_project_id NUMBER Yes Project_id of the project being synced up.
3530 -- p_syncup_all_tasks VARCHAR2 NO Flag indicating Y/N whether to sync up all the tasks for the given structure version id.
3531 -- p_task_version_id NUMBER NO The single task's version id. This is applicable for singular case.
3532 -- p_structure_version_id NUMBER NO The structre version_id of the structre being synced up. This is applicable when we want to sync up all the tasks.
3533 -- p_checked_flag VARCHAR2 NO This flag(Y/N) will be applicable in singular case where task_version_id is being passed. This is passed so that this API again do not have to fetch financial_task_flag from the database.
3534 -- p_mode VARCHAR2 NO The mode mentioning that whether processing is to be done for All the tasks in the structure or juts for the single passed task. Possible values are SINGLE and ALL
3535 -- p_patask_record_version_number NUMBER NO This is record version number of the record in pa_tasks
3536 -- p_parent_task_version_id NUMBER NO This is parent task version id of the current task, It is needed in create_task
3537
3538 PROCEDURE SYNC_UP_WP_TASKS_WITH_FIN
3539 (
3540 p_api_version IN NUMBER := 1.0
3541 , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
3542 , p_commit IN VARCHAR2 := FND_API.G_FALSE
3543 , p_validate_only IN VARCHAR2 := FND_API.G_FALSE
3544 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
3545 , p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
3546 , p_debug_mode IN VARCHAR2 := 'N'
3547 , p_patask_record_version_number IN NUMBER := FND_API.G_MISS_NUM
3548 , p_parent_task_version_id IN NUMBER := FND_API.G_MISS_NUM
3549 , p_project_id IN NUMBER
3550 , p_syncup_all_tasks IN VARCHAR2 := 'N'
3551 , p_task_version_id IN NUMBER := FND_API.G_MISS_NUM
3552 , p_structure_version_id IN NUMBER := FND_API.G_MISS_NUM
3553 , p_check_for_transactions IN VARCHAR2 := 'N'
3554 , p_checked_flag IN VARCHAR2 := FND_API.G_MISS_CHAR
3555 , p_mode IN VARCHAR2 := 'SINGLE'
3556 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3557 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
3558 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3559 )
3560 IS
3561
3562 l_msg_count NUMBER := 0;
3563 l_data VARCHAR2(2000);
3564 l_msg_data VARCHAR2(2000);
3565 l_msg_index_out NUMBER;
3566 l_debug_mode VARCHAR2(1);
3567
3568 l_debug_level2 CONSTANT NUMBER := 2;
3569 l_debug_level3 CONSTANT NUMBER := 3;
3570 l_debug_level4 CONSTANT NUMBER := 4;
3571 l_debug_level5 CONSTANT NUMBER := 5;
3572
3573 --Bug 3735089
3574 l_user_id NUMBER;
3575 l_login_id NUMBER;
3576
3577 BEGIN
3578
3579 x_msg_count := 0;
3580 x_return_status := FND_API.G_RET_STS_SUCCESS;
3581
3582 --Bug 3735089 - instead of fnd_profile.value use fnd_profile.value_specific
3583 --l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
3584 l_user_id := fnd_global.user_id;
3585 l_login_id := fnd_global.login_id;
3586 l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id, l_login_id,275,null,null),'N');
3587
3588 --l_debug_mode := NVL(p_debug_mode,'N');
3589 IF l_debug_mode = 'Y' THEN
3590 PA_DEBUG.set_curr_function( p_function => 'SYNC_UP_WP_TASKS_WITH_FIN',
3591 p_debug_mode => l_debug_mode );
3592 END IF;
3593
3594 IF l_debug_mode = 'Y' THEN
3595 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Printing Input parameters';
3596 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3597 l_debug_level3);
3598 Pa_Debug.WRITE(g_pkg_name,'p_project_id '||':'||p_project_id ,
3599 l_debug_level3);
3600 Pa_Debug.WRITE(g_pkg_name,'p_syncup_all_tasks'||':'||p_syncup_all_tasks,
3601 l_debug_level3);
3602 Pa_Debug.WRITE(g_pkg_name,'p_task_version_id'||':'|| p_task_version_id ,
3603 l_debug_level3);
3604 Pa_Debug.WRITE(g_pkg_name,'p_structure_version_id'||':'|| p_structure_version_id,
3605 l_debug_level3);
3606 Pa_Debug.WRITE(g_pkg_name,'p_checked_flag '||':'||p_checked_flag ,
3607 l_debug_level3);
3608 Pa_Debug.WRITE(g_pkg_name,'p_mode'||':'||p_mode,
3609 l_debug_level3);
3610 Pa_Debug.WRITE(g_pkg_name,'p_parent_task_version_id'||':'||p_parent_task_version_id,
3611 l_debug_level3);
3612 Pa_Debug.WRITE(g_pkg_name,'p_patask_record_version_number'||':'||p_patask_record_version_number,
3613 l_debug_level3);
3614 END IF;
3615
3616 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
3617 FND_MSG_PUB.initialize;
3618 END IF;
3619
3620 IF (p_commit = FND_API.G_TRUE) THEN
3621 savepoint SYNC_UP_WITH_FIN_PUBLIC;
3622 END IF;
3623
3624 IF l_debug_mode = 'Y' THEN
3625 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Validating Input parameters';
3626 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3627 l_debug_level3);
3628 END IF;
3629
3630 IF ( p_project_id IS NULL)
3631 THEN
3632 IF l_debug_mode = 'Y' THEN
3633 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Mandatory parameters are null';
3634 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3635 l_debug_level3);
3636 END IF;
3637 RAISE Invalid_Arg_Exc_WP;
3638 END IF;
3639
3640 --Validating for p_mode, it shopuld be either SINGLE or ALL
3641 /*IF (p_mode <> 'SINGLE' OR p_mode <> 'ALL')
3642 THEN
3643 IF l_debug_mode = 'Y' THEN
3644 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : p_mode is invalid';
3645 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3646 l_debug_level3);
3647 END IF;
3648 RAISE Invalid_Arg_Exc_WP;
3649 END IF;*/
3650 --If p_mode = SINGLE, then p_task_version_id and p_checked_flag should be passed not null
3651 IF ( ( p_mode='SINGLE') AND
3652 (
3653 ( p_task_version_id IS NULL OR p_task_version_id = FND_API.G_MISS_NUM ) OR
3654 ( p_checked_flag IS NULL OR p_checked_flag = FND_API.G_MISS_CHAR )
3655 )
3656 )
3657 THEN
3658 IF l_debug_mode = 'Y' THEN
3659 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Manadatory parameters with mode '||p_mode||'are not passed';
3660 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3661 l_debug_level3);
3662 END IF;
3663 RAISE Invalid_Arg_Exc_WP;
3664 ELSIF ( ( p_mode = 'ALL')
3665 AND
3666 ( p_structure_version_id IS NULL OR p_structure_version_id = FND_API.G_MISS_NUM )
3667 )
3668 THEN
3669 IF l_debug_mode = 'Y' THEN
3670 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Manadatory parameters with mode '||p_mode||'are not passed';
3671 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3672 l_debug_level3);
3673 END IF;
3674 RAISE Invalid_Arg_Exc_WP;
3675 END IF;
3676
3677 -- Call Private APIs
3678 PA_TASKS_MAINT_PVT.SYNC_UP_WP_TASKS_WITH_FIN
3679 (
3680 p_init_msg_list => FND_API.G_FALSE
3681 , p_commit => p_commit
3682 , p_debug_mode => l_debug_mode
3683 , p_project_id => p_project_id
3684 , p_syncup_all_tasks => p_syncup_all_tasks
3685 , p_patask_record_version_number => p_patask_record_version_number
3686 , p_parent_task_version_id => p_parent_task_version_id
3687 , p_task_version_id => p_task_version_id
3688 , p_structure_version_id => p_structure_version_id
3689 , p_checked_flag => p_checked_flag
3690 , p_mode => p_mode
3691 , x_return_status => x_return_status
3692 , x_msg_count => x_msg_count
3693 , x_msg_data => x_msg_data
3694 );
3695 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
3696 THEN
3697 RAISE FND_API.G_EXC_ERROR;
3698 END IF;
3699
3700 IF (p_commit = FND_API.G_TRUE) THEN
3701 COMMIT;
3702 END IF;
3703
3704 -- Bug 3735089 : using reset_curr_function too, just using set_curr_function may overflow it after several recursive calls
3705 -- and it gives ORA 06512 numeric or value error
3706 IF l_debug_mode = 'Y' THEN
3707 Pa_Debug.reset_curr_function;
3708 END IF;
3709
3710 EXCEPTION
3711
3712 WHEN FND_API.G_EXC_ERROR THEN
3713
3714 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3715 l_msg_count := Fnd_Msg_Pub.count_msg;
3716
3717 IF p_commit = FND_API.G_TRUE THEN
3718 ROLLBACK TO SYNC_UP_WITH_FIN_PUBLIC;
3719 END IF;
3720
3721
3722 IF l_msg_count = 1 AND x_msg_data IS NULL
3723 THEN
3724 Pa_Interface_Utils_Pub.get_messages
3725 ( p_encoded => Fnd_Api.G_TRUE
3726 , p_msg_index => 1
3727 , p_msg_count => l_msg_count
3728 , p_msg_data => l_msg_data
3729 , p_data => l_data
3730 , p_msg_index_out => l_msg_index_out);
3731 x_msg_data := l_data;
3732 x_msg_count := l_msg_count;
3733 ELSE
3734 x_msg_count := l_msg_count;
3735 END IF;
3736 IF l_debug_mode = 'Y' THEN
3737 Pa_Debug.reset_curr_function;
3738 END IF;
3739
3740 WHEN Invalid_Arg_Exc_WP THEN
3741
3742 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3743 x_msg_count := 1;
3744 x_msg_data := 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : NULL PARAMETERS ARE PASSED OR CURSOR DIDNT RETURN ANY ROWS';
3745
3746 IF p_commit = FND_API.G_TRUE THEN
3747 ROLLBACK TO SYNC_UP_WITH_FIN_PUBLIC;
3748 END IF;
3749
3750
3751 Fnd_Msg_Pub.add_exc_msg
3752 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3753 , p_procedure_name => 'SYNC_UP_WP_TASKS_WITH_FIN'
3754 , p_error_text => x_msg_data);
3755 IF l_debug_mode = 'Y' THEN
3756 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3757 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3758 l_debug_level5);
3759
3760 Pa_Debug.reset_curr_function;
3761 END IF;
3762 RAISE;
3763
3764 WHEN OTHERS THEN
3765
3766 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3767 x_msg_count := 1;
3768 x_msg_data := substr(SQLERRM,1,120);-- Bug 3735089 Added substr
3769
3770 IF p_commit = FND_API.G_TRUE THEN
3771 ROLLBACK TO SYNC_UP_WITH_FIN_PUBLIC;
3772 END IF;
3773
3774
3775
3776 Fnd_Msg_Pub.add_exc_msg
3777 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3778 , p_procedure_name => 'SYNC_UP_WP_TASKS_WITH_FIN'
3779 , p_error_text => x_msg_data);
3780
3781 IF l_debug_mode = 'Y' THEN
3782 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3783 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3784 l_debug_level5);
3785 Pa_Debug.reset_curr_function;
3786 END IF;
3787 RAISE;
3788 END SYNC_UP_WP_TASKS_WITH_FIN ;
3789
3790 --3279982 End Add rtarway for FP.M develeopment
3791 end PA_TASKS_MAINT_PUB;