[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.3 2009/02/26 13:47:52 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 -- Bug 8273954 : Commenting off the below code as it does not do any validations
949 -- and also results in task_manager_person_id to be updated to null when called
950 -- from PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES
951 -- --BEGIN VALIDATIONS
952 -- IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
953 -- --Check Task Manager and Task Manager Id
954 -- IF ((p_task_manager_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
955 -- (p_task_manager_name IS NOT NULL)) OR
956 -- ((p_task_manager_person_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
957 -- (p_task_manager_person_id IS NOT NULL)) THEN
958 -- --Call Check API.
959 --
960 -- /* pa_tasks_maint_utils.check_task_mgr_name_or_id(
961 -- p_task_mgr_name => p_task_manager_name,
962 -- p_task_mgr_id => p_task_manager_person_id,
963 -- x_task_mgr_id => l_task_manager_id,
964 -- x_return_status => l_return_status,
965 -- x_error_msg_code => l_error_msg_code);*/
966 --
967 -- l_task_manager_id := p_task_manager_person_id;
968 -- l_return_status := FND_API.G_RET_STS_SUCCESS;
969 --
970 -- IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
971 -- PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
972 -- p_msg_name => l_error_msg_code);
973 -- END IF;
974 --
975 -- END IF; --End Name-Id Conversion
976 ---- END IF;
977 --
978 ---- IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
979 -- --Check Carrying out organization name and Carrying out organization Id
980 -- IF ((p_carrying_out_org_name <> FND_API.G_MISS_CHAR) AND
981 -- (p_carrying_out_org_name IS NOT NULL)) OR
982 -- ((p_carrying_out_organization_id <> FND_API.G_MISS_NUM) AND
983 -- (p_carrying_out_organization_id IS NOT NULL)) THEN
984 --
985 -- /* pa_hr_org_utils.Check_OrgName_Or_Id
986 -- (p_organization_id => p_carrying_out_organization_id
987 -- ,p_organization_name => p_carrying_out_org_name
988 -- ,p_check_id_flag => 'A'
989 -- ,x_organization_id => l_carrying_out_org_id
990 -- ,x_return_status => l_return_status
991 -- ,x_error_msg_code => l_error_msg_code);*/
992 --
993 -- l_carrying_out_org_id := p_carrying_out_organization_id;
994 -- l_return_status := FND_API.G_RET_STS_SUCCESS;
995 --
996 -- IF l_return_status = FND_API.G_RET_STS_ERROR THEN
997 -- PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
998 -- p_msg_name => l_error_msg_code);
999 -- END IF;
1000 -- END IF; --End Name-Id Conversion
1001 -- ELSE
1002 -- l_carrying_out_org_id := p_carrying_out_organization_id;
1003 -- l_task_manager_id := p_task_manager_person_id;
1004 -- END IF;
1005
1006 -- Bug 8273954
1007 l_carrying_out_org_id := p_carrying_out_organization_id;
1008 l_task_manager_id := p_task_manager_person_id;
1009
1010
1011 --Check if there is any error
1012 l_msg_count := FND_MSG_PUB.count_msg;
1013 if l_msg_count > 0 then
1014 x_msg_count := l_msg_count;
1015 if x_msg_count = 1 then
1016 pa_interface_utils_pub.get_messages
1017 (p_encoded => FND_API.G_TRUE,
1018 p_msg_index => 1,
1019 p_data => l_data,
1020 p_msg_index_out => l_msg_index_out);
1021 x_msg_data := l_data;
1022 end if;
1023 raise FND_API.G_EXC_ERROR;
1024 end if;
1025
1026 /* temporarily commenting for project structures
1027 --Call Lock project
1028 IF p_wbs_record_version_number <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
1029 p_wbs_record_version_number IS NOT NULL
1030 THEN
1031 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
1032 p_validate_only => p_validate_only,
1033 p_calling_module => p_calling_module,
1034 p_project_id => p_project_id,
1035 p_wbs_record_version_number => p_wbs_record_version_number,
1036 x_return_status => x_return_status,
1037 x_msg_data => x_msg_data );
1038 END IF;*/
1039
1040
1041 --Call Private API
1042 PA_TASKS_MAINT_PVT.UPDATE_TASK
1043 (
1044 p_commit => p_commit
1045 ,p_calling_module => p_calling_module
1046 ,p_validate_only => p_validate_only
1047 ,p_debug_mode => p_debug_mode
1048
1049 ,p_project_id => p_project_id
1050 ,p_task_id => p_task_id
1051 ,p_task_number => p_task_number
1052 ,p_task_name => p_task_name
1053 ,p_long_task_name => p_long_task_name
1054 ,p_task_description => p_task_description
1055 ,p_task_manager_person_id => l_task_manager_id
1056 ,p_carrying_out_organization_id => l_carrying_out_org_id
1057 ,p_task_type_code => p_task_type_code
1058 ,p_priority_code => p_priority_code
1059 ,p_work_type_id => p_work_type_id
1060 ,p_service_type_code => p_service_type_code
1061 ,p_milestone_flag => p_milestone_flag
1062 ,p_critical_flag => p_critical_flag
1063 ,p_chargeable_flag => p_chargeable_flag
1064 ,p_billable_flag => p_billable_flag
1065 ,p_receive_project_invoice_flag => p_receive_project_invoice_flag
1066 ,p_scheduled_start_date => p_scheduled_start_date
1067 ,p_scheduled_finish_date => p_scheduled_finish_date
1068 ,p_estimated_start_date => p_estimated_start_date
1069 ,p_estimated_end_date => p_estimated_end_date
1070 ,p_actual_start_date => p_actual_start_date
1071 ,p_actual_finish_date => p_actual_finish_date
1072 ,p_task_start_date => p_task_start_date
1073 ,p_task_completion_date => p_task_completion_date
1074 ,p_baseline_start_date => p_baseline_start_date
1075 ,p_baseline_end_date => p_baseline_end_date
1076
1077 ,p_obligation_start_date => p_obligation_start_date
1078 ,p_obligation_end_date => p_obligation_end_date
1079 ,p_estimate_to_complete_work => p_estimate_to_complete_work
1080 ,p_baseline_work => p_baseline_work
1081 ,p_scheduled_work => p_scheduled_work
1082 ,p_actual_work_to_date => p_actual_work_to_date
1083 ,p_work_unit => p_work_unit
1084 ,p_progress_status_code => p_progress_status_code
1085
1086 ,p_job_bill_rate_schedule_id =>p_job_bill_rate_schedule_id
1087 ,p_emp_bill_rate_schedule_id =>p_emp_bill_rate_schedule_id
1088 ,p_pm_product_code =>p_pm_product_code
1089 ,p_pm_project_reference =>p_pm_project_reference
1090 ,p_pm_task_reference =>p_pm_task_reference
1091 ,p_pm_parent_task_reference =>p_pm_parent_task_reference
1092 ,p_parent_task_id =>p_parent_task_id
1093 ,p_address_id =>p_address_id
1094 ,p_ready_to_bill_flag =>p_ready_to_bill_flag
1095 ,p_ready_to_distribute_flag =>p_ready_to_distribute_flag
1096 ,p_limit_to_txn_controls_flag =>p_limit_to_txn_controls_flag
1097 ,p_labor_bill_rate_org_id =>p_labor_bill_rate_org_id
1098 ,p_labor_std_bill_rate_schdl =>p_labor_std_bill_rate_schdl
1099 ,p_labor_schedule_fixed_date =>p_labor_schedule_fixed_date
1100 ,p_labor_schedule_discount =>p_labor_schedule_discount
1101 ,p_nl_bill_rate_org_id =>p_nl_bill_rate_org_id
1102 ,p_nl_std_bill_rate_schdl =>p_nl_std_bill_rate_schdl
1103 ,p_nl_schedule_fixed_date =>p_nl_schedule_fixed_date
1104 ,p_nl_schedule_discount =>p_nl_schedule_discount
1105 ,p_labor_cost_multiplier_name =>p_labor_cost_multiplier_name
1106 ,p_cost_ind_rate_sch_id =>p_cost_ind_rate_sch_id
1107 ,p_rev_ind_rate_sch_id =>p_rev_ind_rate_sch_id
1108 ,p_inv_ind_rate_sch_id =>p_inv_ind_rate_sch_id
1109 ,p_cost_ind_sch_fixed_date =>p_cost_ind_sch_fixed_date
1110 ,p_rev_ind_sch_fixed_date =>p_rev_ind_sch_fixed_date
1111 ,p_inv_ind_sch_fixed_date =>p_inv_ind_sch_fixed_date
1112 ,p_labor_sch_type =>p_labor_sch_type
1113 ,p_nl_sch_type =>p_nl_sch_type
1114 ,p_early_start_date =>p_early_start_date
1115 ,p_early_finish_date =>p_early_finish_date
1116 ,p_late_start_date =>p_late_start_date
1117 ,p_late_finish_date =>p_late_finish_date
1118 ,p_attribute_category =>p_attribute_category
1119 ,p_attribute1 =>p_attribute1
1120 ,p_attribute2 =>p_attribute2
1121 ,p_attribute3 =>p_attribute3
1122 ,p_attribute4 =>p_attribute4
1123 ,p_attribute5 =>p_attribute5
1124 ,p_attribute6 =>p_attribute6
1125 ,p_attribute7 =>p_attribute7
1126 ,p_attribute8 =>p_attribute8
1127 ,p_attribute9 =>p_attribute9
1128 ,p_attribute10 =>p_attribute10
1129 ,p_allow_cross_charge_flag =>p_allow_cross_charge_flag
1130 ,p_project_rate_date =>p_project_rate_date
1131 ,p_project_rate_type =>p_project_rate_type
1132 ,p_cc_process_labor_flag =>p_cc_process_labor_flag
1133 ,p_labor_tp_schedule_id =>p_labor_tp_schedule_id
1134 ,p_labor_tp_fixed_date =>p_labor_tp_fixed_date
1135 ,p_cc_process_nl_flag =>p_cc_process_nl_flag
1136 ,p_nl_tp_schedule_id =>p_nl_tp_schedule_id
1137 ,p_nl_tp_fixed_date =>p_nl_tp_fixed_date
1138 ,p_inc_proj_progress_flag => p_inc_proj_progress_flag
1139 ,p_taskfunc_cost_rate_type => p_taskfunc_cost_rate_type
1140 ,p_taskfunc_cost_rate_date => p_taskfunc_cost_rate_date
1141 ,p_non_lab_std_bill_rt_sch_id => p_non_lab_std_bill_rt_sch_id
1142
1143 ,p_record_version_number => p_record_version_number
1144 ,p_comments => p_comments
1145 ,p_labor_disc_reason_code => p_labor_disc_reason_code
1146 ,p_non_labor_disc_reason_code => p_non_labor_disc_reason_code
1147 --PA L Capital Project Changes 2872708
1148 ,p_retirement_cost_flag => p_retirement_cost_flag
1149 ,p_cint_eligible_flag => p_cint_eligible_flag
1150 ,p_cint_stop_date => p_cint_stop_date
1151 --End PA L Capital Project Changes 2872708
1152 ,p_gen_etc_src_code => p_gen_etc_src_code
1153 ,p_dates_check => p_dates_check --bug 5665772
1154 ,x_return_status =>l_return_status
1155 ,x_msg_count =>x_msg_count
1156 ,x_msg_data =>x_msg_data
1157 );
1158
1159 --Check return status
1160 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1161 x_msg_count := FND_MSG_PUB.count_msg;
1162 if x_msg_count = 1 then
1163 pa_interface_utils_pub.get_messages
1164 (p_encoded => FND_API.G_TRUE,
1165 p_msg_index => 1,
1166 p_data => l_data,
1167 p_msg_index_out => l_msg_index_out);
1168 x_msg_data := l_data;
1169 end if;
1170 raise FND_API.G_EXC_ERROR;
1171 end if;
1172
1173 IF p_wbs_record_version_number <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
1174 p_wbs_record_version_number IS NOT NULL
1175 THEN
1176 PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
1177 p_project_id => p_project_id,
1178 p_wbs_record_version_number => p_wbs_record_version_number,
1179 x_return_status => x_return_status );
1180 END IF;
1181
1182 IF p_update_subtasks_end_dt = 'Y' --bug 4241863
1183 THEN
1184 --BUG 4081329, rtarway
1185 --Update Child tasks with the end date passed
1186 if ( p_task_completion_date is not null and p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) then
1187 open cur_get_child_task_dates (p_project_id,p_task_id);
1188 fetch cur_get_child_task_dates bulk collect into l_task_id_tbl,
1189 l_start_date_tbl,
1190 l_completion_date_tbl,
1191 l_parent_task_id_tbl; -- Bug 7386335
1192 close cur_get_child_task_dates;
1193 if l_task_id_tbl is not null and l_task_id_tbl.count > 0 then
1194 -- Bug 7386335
1195 FOR i in l_task_id_tbl.first..l_task_id_tbl.last LOOP
1196 IF l_parent_task_id_tbl(i) IS NOT NULL AND l_start_date_tbl(i) is NULL THEN
1197 SELECT start_date
1198 INTO l_parent_task_date
1199 FROM pa_tasks
1200 WHERE task_id = l_parent_task_id_tbl(i);
1201
1202 UPDATE pa_tasks
1203 SET completion_date = p_task_completion_date,
1204 start_date = l_parent_task_date
1205 WHERE task_id = l_task_id_tbl(i);
1206
1207 ELSE
1208 UPDATE pa_tasks
1209 SET completion_date = p_task_completion_date
1210 WHERE task_id = l_task_id_tbl(i);
1211 END IF;
1212 END LOOP;
1213 --FORALL i in l_task_id_tbl.first..l_task_id_tbl.last
1214 --update pa_tasks set completion_date = p_task_completion_date where task_id = l_task_id_tbl(i)
1215 --and project_id = p_project_id;
1216 end if;
1217 -- Bug 7386335
1218 ELSIF p_task_completion_date is NULL THEN
1219 OPEN cur_get_parent_tasks (p_project_id, p_task_id);
1220 FETCH cur_get_parent_tasks BULK COLLECT INTO l_task_id_tbl;
1221 CLOSE cur_get_parent_tasks;
1222
1223 FORALL i in l_task_id_tbl.first..l_task_id_tbl.last
1224 UPDATE pa_tasks
1225 SET completion_date = p_task_completion_date
1226 WHERE task_id = l_task_id_tbl(i) and project_id = p_project_id;
1227 end if;
1228 --End Add by rtarway for bug 4081329
1229 END IF;
1230 x_return_status := FND_API.G_RET_STS_SUCCESS;
1231
1232 --commit
1233 IF (p_commit = FND_API.G_TRUE) THEN
1234 commit;
1235 END IF;
1236
1237 IF (p_debug_mode = 'Y') THEN
1238 pa_debug.debug('PA_TASKS_MAINT_PUB.UPDATE_TASK END');
1239 END IF;
1240
1241 EXCEPTION
1242 WHEN FND_API.G_EXC_ERROR THEN
1243 IF (p_commit = FND_API.G_TRUE) THEN
1244 ROLLBACK to UPDATE_TASK;
1245 END IF;
1246 x_msg_count := FND_MSG_PUB.count_msg;
1247 x_return_status := FND_API.G_RET_STS_ERROR;
1248 WHEN OTHERS THEN
1249 IF (p_commit = FND_API.G_TRUE) THEN
1250 ROLLBACK to UPDATE_TASK;
1251 END IF;
1252 x_msg_count := FND_MSG_PUB.count_msg;
1253 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1254 --put message
1255 FND_MSG_PUB.ADD_EXC_MSG(p_pkg_name => 'PA_TASKS_MAINT_PUB',
1256 p_procedure_name => 'UPDATE_TASK',
1257 p_error_text => substrb(SQLERRM,1,240));
1258 -- RAISE;
1259 END UPDATE_TASK;
1260
1261
1262 -- API name : DELETE_TASK
1263 -- Type : Public Procedure
1264 -- Pre-reqs : None
1265 -- Return Value : N/A
1266 -- Parameters
1267 -- p_api_version IN NUMBER := 1.0
1268 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1269 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
1270 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1271 -- p_validation_level IN VARCHAR2 := 100
1272 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1273 -- p_debug_mode IN VARCHAR2 := 'N'
1274 -- p_project_id IN NUMBER
1275 -- p_task_id IN NUMBER
1276 -- p_record_version_number IN NUMBER
1277 -- x_return_status OUT VARCHAR2
1278 -- x_msg_count OUT NUMBER
1279 -- x_msg_data OUT VARCHAR2
1280 --
1281 -- History
1282 --
1283 -- 25-JUN-01 HSIU -Created
1284 --
1285 --
1286 procedure DELETE_TASK
1287 (
1288 p_api_version IN NUMBER := 1.0
1289 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1290 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
1291 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1292 ,p_validation_level IN VARCHAR2 := 100
1293 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1294 ,p_debug_mode IN VARCHAR2 := 'N'
1295 ,p_project_id IN NUMBER
1296 ,p_task_id IN NUMBER
1297 ,p_record_version_number IN NUMBER
1298 ,p_wbs_record_version_number IN NUMBER
1299 ,p_called_from_api IN VARCHAR2 := 'ABCD'
1300 ,p_bulk_flag IN VARCHAR2 := 'N' -- 4201927
1301 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1302 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1303 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1304 )
1305 IS
1306 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_TASK';
1307 l_api_version CONSTANT NUMBER := 1.0;
1308
1309 l_dummy VARCHAR2(1);
1310 l_return_status VARCHAR2(1);
1311
1312 l_msg_count NUMBER;
1313 l_msg_data VARCHAR2(250);
1314 l_data VARCHAR2(250);
1315 l_msg_index_out NUMBER;
1316
1317 l_task_cnt NUMBER;
1318 l_max_seq NUMBER;
1319
1320 --selected_seq_num PA_TASKS.DISPLAY_SEQUENCE%TYPE;
1321
1322 CURSOR c1 IS
1323 select 'x'
1324 from PA_TASKS
1325 where project_id = p_project_id
1326 for update of record_version_number NOWAIT;
1327
1328 CURSOR c2 IS
1329 select 'x'
1330 from PA_TASKS
1331 where project_id = p_project_id;
1332
1333 /* CURSOR cur_selected_task
1334 IS
1335 SELECT display_sequence
1336 FROM pa_tasks
1337 WHERE project_id = p_project_id
1338 AND task_id = p_task_id;*/
1339
1340 BEGIN
1341 pa_tasks_maint_utils.set_org_id(p_project_id);
1342
1343
1344 pa_debug.init_err_stack('PA_TASKS_MAINT_PUB.DELETE_TASK');
1345
1346 IF (p_debug_mode = 'Y') THEN
1347 pa_debug.debug('PA_TASKS_MAINT_PUB.DELETE_TASK begin');
1348 END IF;
1349
1350 IF (p_commit = FND_API.G_TRUE) THEN
1351 savepoint DELETE_TASK;
1352 END IF;
1353
1354
1355 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
1356 raise FND_API.G_EXC_UNEXPECTED_ERROR;
1357 END IF;
1358
1359 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list, FND_API.G_FALSE)) THEN
1360 pa_debug.debug('Performing ID validations and conversions');
1361 FND_MSG_PUB.initialize;
1362 END IF;
1363
1364 --Check if there is any error
1365 l_msg_count := FND_MSG_PUB.count_msg;
1366 if l_msg_count > 0 then
1367 x_msg_count := l_msg_count;
1368 if x_msg_count = 1 then
1369 pa_interface_utils_pub.get_messages
1370 (p_encoded => FND_API.G_TRUE,
1371 p_msg_index => 1,
1372 p_data => l_data,
1373 p_msg_index_out => l_msg_index_out);
1374 x_msg_data := l_data;
1375 end if;
1376 raise FND_API.G_EXC_ERROR;
1377 end if;
1378
1379 /*--Call Lock project
1380
1381 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
1382 p_validate_only => p_validate_only,
1383 p_calling_module => p_calling_module,
1384 p_project_id => p_project_id,
1385 p_wbs_record_version_number => p_wbs_record_version_number,
1386 x_return_status => x_return_status,
1387 x_msg_data => x_msg_data ); */
1388
1389 --Call Private API
1390 --count tasks to be deleted
1391
1392 select count('x')
1393 INTO l_task_cnt
1394 FROM PA_TASKS
1395 WHERE project_id = p_project_id
1396 START WITH task_id = p_task_id
1397 CONNECT BY parent_task_id = prior task_id;
1398
1399
1400 /* --Get the sequence number of the selected task;
1401 OPEN cur_selected_task;
1402 FETCH cur_selected_task INTO selected_seq_num;
1403 CLOSE cur_selected_task;*/
1404
1405
1406 PA_TASKS_MAINT_PVT.DELETE_TASK
1407 (
1408 p_commit => p_commit
1409 ,p_calling_module => p_calling_module
1410 ,p_validate_only => p_validate_only
1411 ,p_debug_mode => p_debug_mode
1412 ,p_task_id => p_task_id
1413 ,p_record_version_number => p_record_version_number
1414 ,p_called_from_api => p_called_from_api
1415 ,p_bulk_flag => p_bulk_flag -- 4201927 Passing the value to pvt api
1416 ,x_return_status => l_return_status
1417 ,x_msg_count => x_msg_count
1418 ,x_msg_data => x_msg_data
1419 );
1420
1421 --Check return status
1422 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1423 x_msg_count := FND_MSG_PUB.count_msg;
1424 if x_msg_count = 1 then
1425 pa_interface_utils_pub.get_messages
1426 (p_encoded => FND_API.G_TRUE,
1427 p_msg_index => 1,
1428 p_data => l_data,
1429 p_msg_index_out => l_msg_index_out);
1430 x_msg_data := l_data;
1431 end if;
1432 raise FND_API.G_EXC_ERROR;
1433 end if;
1434
1435 /* --This fcuntion is moved in PA_TASK_PVT1.DELETE_TASK_VERSION api.
1436 BEGIN
1437 select max(display_sequence)
1438 into l_max_seq
1439 from PA_TASKS
1440 where project_id = p_project_id;
1441
1442 update PA_TASKS
1443 set
1444 display_sequence =
1445 PA_TASKS_MAINT_UTILS.REARRANGE_DISPLAY_SEQ(display_sequence, l_max_seq, l_task_cnt, 'DELETE', 'DOWN'),
1446 record_version_number = record_version_number + 1
1447 where project_id = p_project_id
1448 and (display_sequence > selected_seq_num);
1449 EXCEPTION
1450 WHEN OTHERS THEN
1451 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_SEQ_NUM_ERR');
1452 raise FND_API.G_EXC_ERROR;
1453 END;*/
1454
1455
1456 /*PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
1457 p_project_id => p_project_id,
1458 p_wbs_record_version_number => p_wbs_record_version_number,
1459 x_return_status => x_return_status );*/
1460
1461 x_return_status := FND_API.G_RET_STS_SUCCESS;
1462
1463 --commit
1464 IF (p_commit = FND_API.G_TRUE) THEN
1465 commit;
1466 END IF;
1467
1468 IF (p_debug_mode = 'Y') THEN
1469 pa_debug.debug('PA_TASKS_MAINT_PUB.DELETE_TASK END');
1470 END IF;
1471
1472 EXCEPTION
1473 WHEN FND_API.G_EXC_ERROR THEN
1474 IF (p_commit = FND_API.G_TRUE) THEN
1475 ROLLBACK to DELETE_TASK;
1476 END IF;
1477 x_msg_count := FND_MSG_PUB.count_msg;
1478 x_return_status := FND_API.G_RET_STS_ERROR;
1479 WHEN OTHERS THEN
1480 IF (p_commit = FND_API.G_TRUE) THEN
1481 ROLLBACK to DELETE_TASK;
1482 END IF;
1483 x_msg_count := FND_MSG_PUB.count_msg;
1484 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1485 FND_MSG_PUB.ADD_EXC_MSG(p_pkg_name => 'PA_TASKS_MAINT_PUB',
1486 p_procedure_name => 'DELETE_TASK',
1487 p_error_text => substrb(SQLERRM,1,240));
1488 END DELETE_TASK;
1489
1490
1491 -- API name : Edit_Task_Structure
1492 -- Type : Utility Procedure
1493 -- Pre-reqs : None
1494 -- Return Value : N/A
1495 -- Prameters
1496 -- p_api_version IN NUMBER := 1.0
1497 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1498 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
1499 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1500 -- p_validation_level IN VARCHAR2 := 100
1501 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1502 -- p_debug_mode IN VARCHAR2 := 'N'
1503 -- p_project_id IN NUMBER := FND_API.G_MISS_NUM
1504 -- p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1505 -- p_task_id IN NUMBER := FND_API.G_MISS_NUM
1506 -- p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1507 -- p_edit_mode IN VARCHAR2 REQUIRED
1508 -- p_record_version_number IN NUMBER
1509 -- p_wbs_record_version_number IN NUMBER
1510 -- x_return_status OUT VARCHAR2
1511 -- x_msg_count OUT NUMBER
1512 -- x_msg_data OUT VARCHAR2
1513 --
1514 -- History
1515 --
1516 -- 25-JUN-01 Majid Ansari -Created
1517 --
1518 --
1519
1520 PROCEDURE Edit_Task_Structure(
1521 p_api_version IN NUMBER := 1.0
1522 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1523 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
1524 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1525 ,p_validation_level IN VARCHAR2 := 100
1526 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1527 ,p_debug_mode IN VARCHAR2 := 'N'
1528 ,p_project_id IN NUMBER := FND_API.G_MISS_NUM
1529 ,p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1530 ,p_task_id IN NUMBER := FND_API.G_MISS_NUM
1531 ,p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1532 ,p_edit_mode IN VARCHAR2
1533 ,p_record_version_number IN NUMBER
1534 ,p_wbs_record_version_number IN NUMBER
1535 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1536 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1537 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
1538
1539
1540 l_api_name CONSTANT VARCHAR(30) := 'Edit_Task_Structure';
1541 l_api_version CONSTANT NUMBER := 1.0;
1542
1543 l_return_status VARCHAR2(1);
1544 l_msg_data VARCHAR2(250);
1545 l_msg_count NUMBER;
1546
1547 l_dummy_char VARCHAR2(1);
1548 l_error_msg_code VARCHAR2(250);
1549 l_data VARCHAR2(250);
1550 l_msg_index_out NUMBER;
1551 l_task_id NUMBER;
1552 l_project_id NUMBER;
1553 BEGIN
1554
1555 pa_tasks_maint_utils.set_org_id(p_project_id);
1556
1557 -- Standard call to check for call compatibility
1558 IF (p_debug_mode = 'Y')
1559 THEN
1560 pa_debug.debug('Edit Task Structure PUB : Checking the api version number.');
1561 END IF;
1562
1563 IF p_commit = FND_API.G_TRUE
1564 THEN
1565 SAVEPOINT Edit_Structure;
1566 END IF;
1567
1568 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
1569 p_api_version,
1570 l_api_name,
1571 g_pkg_name)
1572 THEN
1573
1574 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1575 END IF;
1576
1577 if (p_debug_mode = 'Y') then
1578 pa_debug.debug('Edit Task Structure PUB : Initializing message stack.');
1579 end if;
1580
1581 pa_debug.init_err_stack('PA_TASK_MAINT_PUB.Edit_Task_Structure');
1582
1583 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
1584 fnd_msg_pub.initialize;
1585 end if;
1586
1587 /*IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
1588
1589 --Check Project Name and Id
1590 IF ((p_project_name <> FND_API.G_MISS_CHAR) AND
1591 (p_project_name IS NOT NULL)) OR
1592 ((p_project_id <> FND_API.G_MISS_NUM) AND
1593 (p_project_id IS NOT NULL)) THEN
1594 --Call Check API.
1595 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
1596 p_project_id => p_project_id,
1597 p_project_name => p_project_name,
1598 x_project_id => l_project_id,
1599 x_return_status => l_return_status,
1600 x_error_msg_code => l_error_msg_code);
1601 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1602 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1603 p_msg_name => l_error_msg_code);
1604 END IF;
1605 END IF; --End Project Name-Id Conversion
1606
1607 --Check Task Name and Id
1608 IF ((p_task_name <> FND_API.G_MISS_CHAR) AND
1609 (p_task_name IS NOT NULL)) OR
1610 ((p_task_id <> FND_API.G_MISS_NUM) AND
1611 (p_task_id IS NOT NULL)) THEN
1612 --Call Check API.
1613 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
1614 p_project_id => l_project_id,
1615 p_task_id => p_task_id,
1616 p_task_name => p_task_name,
1617 x_task_id => l_task_id,
1618 x_return_status => l_return_status,
1619 x_error_msg_code => l_error_msg_code);
1620 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1621 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1622 p_msg_name => l_error_msg_code);
1623 END IF;
1624 END IF; --End Task Name-Id Conversion
1625 ELSE*/
1626 l_project_id := p_project_id;
1627 l_task_id := p_task_id;
1628 --END IF;
1629
1630 --project and task id Required check.
1631 PA_TASKS_MAINT_UTILS.SRC_PRJ_TASK_ID_REQ_CHECK(
1632 p_project_id => l_project_id,
1633 p_task_id => l_task_id,
1634 x_return_status => l_return_status,
1635 x_error_msg_code => l_error_msg_code );
1636
1637 IF l_return_status = FND_API.G_RET_STS_ERROR
1638 THEN
1639 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1640 p_msg_name => l_error_msg_code);
1641 x_msg_data := l_error_msg_code;
1642 x_return_status := 'E';
1643 RAISE FND_API.G_EXC_ERROR;
1644 END IF;
1645
1646 x_return_status := 'S';
1647
1648 --Call Lock project
1649 /* temporarily commenting for project structures
1650
1651 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
1652 p_validate_only => p_validate_only,
1653 p_calling_module => p_calling_module,
1654 p_project_id => l_project_id,
1655 p_wbs_record_version_number => p_wbs_record_version_number,
1656 x_return_status => x_return_status,
1657 x_msg_data => x_msg_data ); */
1658
1659 l_msg_count := FND_MSG_PUB.count_msg;
1660
1661 If l_msg_count > 0 THEN
1662 x_msg_count := l_msg_count;
1663 If l_msg_count = 1 THEN
1664 pa_interface_utils_pub.get_messages
1665 (p_encoded => FND_API.G_TRUE ,
1666 p_msg_index => 1,
1667 p_msg_count => l_msg_count ,
1668 p_msg_data => l_msg_data,
1669 p_data => l_data,
1670 p_msg_index_out => l_msg_index_out );
1671
1672 x_msg_data := l_data;
1673 End if;
1674 RAISE FND_API.G_EXC_ERROR;
1675 End if;
1676
1677 IF p_edit_mode = 'INDENT'
1678 THEN
1679
1680 -- dbms_output.put_line( 'Edit Task structure. '||'Before Indent Task' );
1681
1682 PA_TASKS_MAINT_PVT.Indent_Task(
1683 p_commit => p_commit
1684 ,p_validate_only => p_validate_only
1685 ,p_validation_level => p_validation_level
1686 ,p_calling_module => p_calling_module
1687 ,p_debug_mode => p_debug_mode
1688 ,p_project_id => l_project_id
1689 ,p_task_id => l_task_id
1690 ,p_record_version_number => p_record_version_number
1691 ,x_return_status => x_return_status
1692 ,x_msg_count => x_msg_count
1693 ,x_msg_data => x_msg_data );
1694
1695 l_msg_count := FND_MSG_PUB.count_msg;
1696
1697 --dbms_output.put_line( 'Edit Task structure. '||'After Indent Task '||'Count '|| l_msg_count );
1698
1699 ELSIF p_edit_mode = 'OUTDENT'
1700 THEN
1701
1702 --dbms_output.put_line( 'Edit Task structure. '||'Before Outdent Task' );
1703
1704 PA_TASKS_MAINT_PVT.Outdent_Task(
1705 p_commit => p_commit
1706 ,p_validate_only => p_validate_only
1707 ,p_validation_level => p_validation_level
1708 ,p_calling_module => p_calling_module
1709 ,p_debug_mode => p_debug_mode
1710 ,p_project_id => l_project_id
1711 ,p_task_id => l_task_id
1712 ,p_record_version_number => p_record_version_number
1713 ,x_return_status => x_return_status
1714 ,x_msg_count => x_msg_count
1715 ,x_msg_data => x_msg_data );
1716
1717 END IF;
1718
1719 --dbms_output.put_line( 'After Edit Task structure. ' );
1720
1721
1722 if (p_debug_mode = 'Y') then
1723 pa_debug.debug('Edit Task Structure PUB : checking message count');
1724 end if;
1725 l_msg_count := FND_MSG_PUB.count_msg;
1726
1727 If l_msg_count > 0 THEN
1728 x_msg_count := l_msg_count;
1729 If l_msg_count = 1 THEN
1730 pa_interface_utils_pub.get_messages
1731 (p_encoded => FND_API.G_TRUE ,
1732 p_msg_index => 1,
1733 p_msg_count => l_msg_count ,
1734 p_msg_data => l_msg_data,
1735 p_data => l_data,
1736 p_msg_index_out => l_msg_index_out );
1737
1738 x_msg_data := l_data;
1739 End if;
1740 RAISE FND_API.G_EXC_ERROR;
1741 End if;
1742
1743 PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
1744 p_project_id => p_project_id,
1745 p_wbs_record_version_number => p_wbs_record_version_number,
1746 x_return_status => x_return_status );
1747
1748
1749 IF FND_API.TO_BOOLEAN(P_COMMIT)
1750 THEN
1751 COMMIT WORK;
1752 END IF;
1753 EXCEPTION
1754 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1755 IF p_commit = FND_API.G_TRUE
1756 THEN
1757 ROLLBACK TO Edit_Structure;
1758 END IF;
1759 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1760 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
1761 p_procedure_name => 'Edit_Task_Structure',
1762 p_error_text => SUBSTRB(SQLERRM,1,240));
1763 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1764
1765 WHEN FND_API.G_EXC_ERROR THEN
1766 IF p_commit = FND_API.G_TRUE
1767 THEN
1768 ROLLBACK TO Edit_Structure;
1769 END IF;
1770 x_return_status := 'E';
1771
1772 WHEN OTHERS THEN
1773 IF p_commit = FND_API.G_TRUE
1774 THEN
1775 ROLLBACK TO Edit_Structure;
1776 END IF;
1777 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1778 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
1779 p_procedure_name => 'Edit_Task_Structure',
1780 p_error_text => SUBSTRB(SQLERRM,1,240));
1781 RAISE;
1782
1783 END Edit_Task_Structure;
1784
1785 -- API name : Move_Task
1786 -- Type : Utility Procedure
1787 -- Pre-reqs : None
1788 -- Return Value : N/A
1789 -- Prameters
1790 -- p_api_version IN NUMBER := 1.0
1791 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1792 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
1793 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1794 -- p_validation_level IN VARCHAR2 := 100
1795 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1796 -- p_debug_mode IN VARCHAR2 := 'N'
1797 -- p_reference_project_id IN NUMBER := FND_API.G_MISS_NUM
1798 -- p_reference_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1799 -- p_reference_task_id IN NUMBER := FND_API.G_MISS_NUM
1800 -- p_reference_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1801 -- p_project_id IN NUMBER := FND_API.G_MISS_NUM
1802 -- p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1803 -- p_task_id IN NUMBER := FND_API.G_MISS_NUM
1804 -- p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1805 -- p_peer_or_sub IN VARCHAR2
1806 -- p_record_version_number IN NUMBER
1807 -- p_wbs_record_version_number IN NUMBER
1808 -- x_return_status OUT VARCHAR2
1809 -- x_msg_count OUT NUMBER
1810 -- x_msg_data OUT VARCHAR2
1811 --
1812 -- History
1813 --
1814 -- 25-JUN-01 Majid Ansari -Created
1815 --
1816 --
1817
1818 PROCEDURE Move_Task(
1819 p_api_version IN NUMBER := 1.0
1820 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1821 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
1822 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1823 ,p_validation_level IN VARCHAR2 := 100
1824 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1825 ,p_debug_mode IN VARCHAR2 := 'N'
1826 ,p_reference_project_id IN NUMBER := FND_API.G_MISS_NUM
1827 ,p_reference_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1828 ,p_reference_task_id IN NUMBER := FND_API.G_MISS_NUM
1829 ,p_reference_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1830 ,p_project_id IN NUMBER := FND_API.G_MISS_NUM
1831 ,p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1832 ,p_task_id IN NUMBER := FND_API.G_MISS_NUM
1833 ,p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
1834 ,p_peer_or_sub IN VARCHAR2
1835 ,p_record_version_number IN NUMBER
1836 ,p_wbs_record_version_number IN NUMBER
1837 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1838 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1839 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
1840
1841 l_api_name CONSTANT VARCHAR(30) := 'Move_Task';
1842 l_api_version CONSTANT NUMBER := 1.0;
1843
1844 l_return_status VARCHAR2(1);
1845 l_msg_data VARCHAR2(250);
1846 l_msg_count NUMBER;
1847
1848 l_dummy VARCHAR2(1);
1849 l_error_msg_code VARCHAR2(250);
1850 l_data VARCHAR2(250);
1851 l_msg_index_out NUMBER;
1852 l_project_id NUMBER;
1853 l_ref_project_id NUMBER;
1854 l_task_id NUMBER;
1855 l_ref_task_id NUMBER;
1856
1857 BEGIN
1858
1859 pa_tasks_maint_utils.set_org_id(p_project_id);
1860
1861 -- Standard call to check for call compatibility
1862 IF (p_debug_mode = 'Y')
1863 THEN
1864 pa_debug.debug('Move Task PUB : Checking the api version number.');
1865 END IF;
1866 IF p_commit = FND_API.G_TRUE
1867 THEN
1868 SAVEPOINT Move;
1869 END IF;
1870 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
1871 p_api_version,
1872 l_api_name,
1873 g_pkg_name)
1874 THEN
1875 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1876 END IF;
1877 if (p_debug_mode = 'Y') then
1878 pa_debug.debug('Move Task PUB : Initializing message stack.');
1879 end if;
1880 pa_debug.init_err_stack('PA_TASK_MAINT_PUB.MOVE_TASK');
1881 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
1882 fnd_msg_pub.initialize;
1883 end if;
1884
1885 --dbms_output.put_line( 'Before name to id conv. ' );
1886 --commenting after discussing with Hubert and Sakthi.
1887 /*IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
1888
1889 --Check Project Name and Id
1890 IF ((p_project_name <> FND_API.G_MISS_CHAR) AND
1891 (p_project_name IS NOT NULL)) OR
1892 ((p_project_id <> FND_API.G_MISS_NUM) AND
1893 (p_project_id IS NOT NULL)) THEN
1894 --Call Check API.
1895 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
1896 p_project_id => p_project_id,
1897 p_project_name => p_project_name,
1898 x_project_id => l_project_id,
1899 x_return_status => l_return_status,
1900 x_error_msg_code => l_error_msg_code);
1901 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1902 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1903 p_msg_name => l_error_msg_code);
1904 END IF;
1905 END IF; --End Project Name-Id Conversion
1906
1907 --dbms_output.put_line( 'Before name to id conv. 2' );
1908
1909 --Check Task Name and Id
1910 IF ((p_task_name <> FND_API.G_MISS_CHAR) AND
1911 (p_task_name IS NOT NULL)) OR
1912 ((p_task_id <> FND_API.G_MISS_NUM) AND
1913 (p_task_id IS NOT NULL)) THEN
1914 --Call Check API.
1915 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
1916 p_project_id => l_project_id,
1917 p_task_id => p_task_id,
1918 p_task_name => p_task_name,
1919 x_task_id => l_task_id,
1920 x_return_status => l_return_status,
1921 x_error_msg_code => l_error_msg_code);
1922 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1923 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1924 p_msg_name => l_error_msg_code);
1925 END IF;
1926 END IF; --End Task Name-Id Conversion
1927
1928 --dbms_output.put_line( 'Before name to id conv. 3' );
1929
1930 --Check reference Project Name and Id
1931 IF ((p_reference_project_name <> FND_API.G_MISS_CHAR) AND
1932 (p_reference_project_name IS NOT NULL)) OR
1933 ((p_reference_project_id <> FND_API.G_MISS_NUM) AND
1934 (p_reference_project_id IS NOT NULL)) THEN
1935 --Call Check API.
1936 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
1937 p_project_id => p_reference_project_id,
1938 p_project_name => p_reference_project_name,
1939 x_project_id => l_ref_project_id,
1940 x_return_status => l_return_status,
1941 x_error_msg_code => l_error_msg_code);
1942 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1943 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1944 p_msg_name => l_error_msg_code);
1945 END IF;
1946 END IF; --End Ref Project Name-Id Conversion
1947
1948 --dbms_output.put_line( 'Before name to id conv. 4' );
1949
1950 --Check reference Task Name and Id
1951 IF ((p_reference_task_name <> FND_API.G_MISS_CHAR) AND
1952 (p_reference_task_name IS NOT NULL)) OR
1953 ((p_reference_task_id <> FND_API.G_MISS_NUM) AND
1954 (p_reference_task_id IS NOT NULL)) THEN
1955 --Call Check API.
1956 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
1957 p_project_id => l_ref_project_id,
1958 p_task_id => p_reference_task_id,
1959 p_task_name => p_reference_task_name,
1960 x_task_id => l_ref_task_id,
1961 x_return_status => l_return_status,
1962 x_error_msg_code => l_error_msg_code);
1963 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1964 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1965 p_msg_name => l_error_msg_code);
1966 END IF;
1967 END IF; --End Ref Task Name-Id Conversion
1968
1969
1970 ELSE*/
1971 l_project_id := p_project_id;
1972 l_task_id := p_task_id;
1973 l_ref_project_id := p_reference_project_id;
1974 l_ref_task_id := p_reference_task_id;
1975 --END IF;
1976
1977 x_return_status := 'S';
1978
1979 --dbms_output.put_line( 'Before locking ' );
1980
1981 /* temporarily commenting for project structures
1982
1983 --Call Lock project
1984 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
1985 p_validate_only => p_validate_only,
1986 p_calling_module => p_calling_module,
1987 p_project_id => l_ref_project_id,
1988 p_wbs_record_version_number => p_wbs_record_version_number,
1989 x_return_status => x_return_status,
1990 x_msg_data => x_msg_data ); */
1991
1992 --dbms_output.put_line( 'After locking 1 ' );
1993
1994 l_msg_count := FND_MSG_PUB.count_msg;
1995 IF l_msg_count > 0 THEN
1996 x_msg_count := l_msg_count;
1997 x_msg_data := x_msg_data;
1998 --dbms_output.put_line( 'x_msg_data '||x_msg_data );
1999 x_return_status := 'E';
2000 RAISE FND_API.G_EXC_ERROR;
2001 END IF;
2002
2003 --dbms_output.put_line( 'After locking 2 ' );
2004
2005 if (p_debug_mode = 'Y') then
2006 pa_debug.debug('Move Task PUB : checking message count');
2007 end if;
2008
2009 l_msg_count := FND_MSG_PUB.count_msg;
2010
2011 --dbms_output.put_line( 'After locking 3 ' );
2012
2013 If l_msg_count > 0 THEN
2014 x_msg_count := l_msg_count;
2015 If l_msg_count = 1 THEN
2016 pa_interface_utils_pub.get_messages
2017 (p_encoded => FND_API.G_TRUE ,
2018 p_msg_index => 1,
2019 p_msg_count => l_msg_count ,
2020 p_msg_data => l_error_msg_code,
2021 p_data => l_data,
2022 p_msg_index_out => l_msg_index_out );
2023
2024 x_msg_data := l_data;
2025
2026 End if;
2027 RAISE FND_API.G_EXC_ERROR;
2028 End if;
2029
2030
2031 PA_TASKS_MAINT_PVT.Move_Task(
2032 p_commit => p_commit
2033 ,p_validate_only => p_validate_only
2034 ,p_validation_level => p_validation_level
2035 ,p_calling_module => p_calling_module
2036 ,p_debug_mode => p_debug_mode
2037 ,p_reference_project_id => l_ref_project_id
2038 ,p_reference_task_id => l_ref_task_id
2039 ,p_project_id => l_project_id
2040 ,p_task_id => l_task_id
2041 ,p_peer_or_sub => p_peer_or_sub
2042 ,p_record_version_number => p_record_version_number
2043 ,x_return_status => l_return_status
2044 ,x_msg_count => l_msg_count
2045 ,x_msg_data => l_msg_data );
2046
2047 if (p_debug_mode = 'Y') then
2048 pa_debug.debug('Move Task PUB : checking message count');
2049 end if;
2050 l_msg_count := FND_MSG_PUB.count_msg;
2051
2052
2053 If l_msg_count > 0 THEN
2054 x_msg_count := l_msg_count;
2055 If l_msg_count = 1 THEN
2056 pa_interface_utils_pub.get_messages
2057 (p_encoded => FND_API.G_TRUE ,
2058 p_msg_index => 1,
2059 p_msg_count => l_msg_count,
2060 p_msg_data => l_msg_data,
2061 p_data => l_data,
2062 p_msg_index_out => l_msg_index_out );
2063
2064 x_msg_data := l_data;
2065
2066
2067 End if;
2068 RAISE FND_API.G_EXC_ERROR;
2069 End if;
2070
2071 PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
2072 p_project_id => l_ref_project_id,
2073 p_wbs_record_version_number => p_wbs_record_version_number,
2074 x_return_status => x_return_status );
2075
2076
2077 IF FND_API.TO_BOOLEAN(P_COMMIT)
2078 THEN
2079 COMMIT WORK;
2080 END IF;
2081
2082 EXCEPTION
2083 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2084 IF p_commit = FND_API.G_TRUE
2085 THEN
2086 ROLLBACK TO Move;
2087 END IF;
2088 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2089 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
2090 p_procedure_name => 'Move_Task',
2091 p_error_text => SUBSTRB(SQLERRM,1,240));
2092 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2093
2094 WHEN FND_API.G_EXC_ERROR THEN
2095 IF p_commit = FND_API.G_TRUE
2096 THEN
2097 ROLLBACK TO Move;
2098 END IF;
2099 x_return_status := 'E';
2100
2101 WHEN OTHERS THEN
2102 IF p_commit = FND_API.G_TRUE
2103 THEN
2104 ROLLBACK TO Move;
2105 END IF;
2106 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2107 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
2108 p_procedure_name => 'Move_Task',
2109 p_error_text => SUBSTRB(SQLERRM,1,240));
2110 RAISE;
2111
2112 END Move_Task;
2113
2114
2115 -- API name : Copy_Task
2116 -- Type : Utility Procedure
2117 -- Pre-reqs : None
2118 -- Return Value : N/A
2119 -- Prameters
2120 -- p_api_version IN NUMBER := 1.0
2121 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
2122 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
2123 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
2124 -- p_validation_level IN VARCHAR2 := 100
2125 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
2126 -- p_debug_mode IN VARCHAR2 := 'N'
2127 -- p_reference_project_id IN NUMBER := FND_API.G_MISS_NUM
2128 -- p_reference_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2129 -- p_reference_task_id IN NUMBER := FND_API.G_MISS_NUM
2130 -- p_reference_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2131 -- p_project_id IN NUMBER := FND_API.G_MISS_NUM
2132 -- p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2133 -- p_task_id IN NUMBER := FND_API.G_MISS_NUM
2134 -- p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2135 -- p_peer_or_sub IN VARCHAR2 REQUIRED
2136 -- p_copy_node_flag IN VARCHAR2 REQUIRED
2137 -- p_task_prefix IN VARCHAR2 REQUIRED
2138 -- p_wbs_record_version_number IN NUMBER
2139 -- x_return_status OUT VARCHAR2
2140 -- x_msg_count OUT NUMBER
2141 -- x_msg_data OUT VARCHAR2
2142 --
2143 -- History
2144 --
2145 -- 25-JUN-01 Majid Ansari -Created
2146 --
2147 --
2148
2149 PROCEDURE Copy_Task(
2150 p_api_version IN NUMBER := 1.0
2151 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
2152 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
2153 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
2154 ,p_validation_level IN VARCHAR2 := 100
2155 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
2156 ,p_debug_mode IN VARCHAR2 := 'N'
2157 ,p_reference_project_id IN NUMBER := FND_API.G_MISS_NUM
2158 ,p_reference_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2159 ,p_reference_task_id IN NUMBER := FND_API.G_MISS_NUM
2160 ,p_reference_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2161 ,p_project_id IN NUMBER := FND_API.G_MISS_NUM
2162 ,p_project_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2163 ,p_task_id IN NUMBER := FND_API.G_MISS_NUM
2164 ,p_task_name IN VARCHAR2 := FND_API.G_MISS_CHAR
2165 ,p_peer_or_sub IN VARCHAR2
2166 ,p_copy_node_flag IN VARCHAR2
2167 ,p_task_prefix IN VARCHAR2
2168 ,p_wbs_record_version_number IN NUMBER
2169 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2170 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
2171 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
2172
2173 l_api_name CONSTANT VARCHAR(30) := 'Copy_Task';
2174 l_api_version CONSTANT NUMBER := 1.0;
2175
2176 l_return_status VARCHAR2(1);
2177 l_msg_data VARCHAR2(250);
2178 l_msg_count NUMBER;
2179
2180 l_dummy_char VARCHAR2(1);
2181 l_error_msg_code VARCHAR2(250);
2182 l_data VARCHAR2(250);
2183 l_msg_index_out NUMBER;
2184 l_dummy VARCHAR2(1);
2185
2186 l_project_id NUMBER;
2187 l_ref_project_id NUMBER;
2188 l_task_id NUMBER;
2189 l_ref_task_id NUMBER;
2190
2191 BEGIN
2192
2193 pa_tasks_maint_utils.set_org_id(p_project_id);
2194 -- Standard call to check for call compatibility
2195 IF (p_debug_mode = 'Y')
2196 THEN
2197 pa_debug.debug('Copy Task PUB : Checking the api version number.');
2198 END IF;
2199 IF p_commit = FND_API.G_TRUE
2200 THEN
2201 SAVEPOINT Copy;
2202 END IF;
2203 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
2204 p_api_version,
2205 l_api_name,
2206 g_pkg_name)
2207 THEN
2208 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2209 END IF;
2210 if (p_debug_mode = 'Y') then
2211 pa_debug.debug('Copy Task PUB : Initializing message stack.');
2212 end if;
2213 pa_debug.init_err_stack('PA_TASK_MAINT_PUB.COPY_TASK');
2214 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
2215 fnd_msg_pub.initialize;
2216 end if;
2217
2218 IF (p_calling_module = 'SELF_SERVICE') OR (p_calling_module = 'EXCHANGE') THEN
2219
2220 --Check Project Name and Id
2221 IF ((p_project_name <> FND_API.G_MISS_CHAR) AND
2222 (p_project_name IS NOT NULL)) OR
2223 ((p_project_id <> FND_API.G_MISS_NUM) AND
2224 (p_project_id IS NOT NULL)) THEN
2225 --Call Check API.
2226 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
2227 p_project_id => p_project_id,
2228 p_project_name => p_project_name,
2229 p_check_id_flag => 'Y', -- Bug 2623999
2230 x_project_id => l_project_id,
2231 x_return_status => l_return_status,
2232 x_error_msg_code => l_error_msg_code);
2233 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2234 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2235 p_msg_name => l_error_msg_code);
2236 END IF;
2237 END IF; --End Project Name-Id Conversion
2238
2239 --Check Task Name and Id
2240 IF ((p_task_name <> FND_API.G_MISS_CHAR) AND
2241 (p_task_name IS NOT NULL)) OR
2242 ((p_task_id <> FND_API.G_MISS_NUM) AND
2243 (p_task_id IS NOT NULL)) THEN
2244 --Call Check API.
2245 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
2246 p_project_id => l_project_id,
2247 p_task_id => p_task_id,
2248 p_check_id_flag => 'Y', -- Bug 2623999
2249 p_task_name => p_task_name,
2250 x_task_id => l_task_id,
2251 x_return_status => l_return_status,
2252 x_error_msg_code => l_error_msg_code);
2253 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2254 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2255 p_msg_name => l_error_msg_code);
2256 END IF;
2257 END IF; --End Task Name-Id Conversion
2258
2259 /*--Do not validate reference parameters - as per discussion with Sakthi and Zahid
2260 --Check reference Project Name and Id
2261 IF ((p_reference_project_name <> FND_API.G_MISS_CHAR) AND
2262 (p_reference_project_name IS NOT NULL)) OR
2263 ((p_reference_project_id <> FND_API.G_MISS_NUM) AND
2264 (p_reference_project_id IS NOT NULL)) THEN
2265 --Call Check API.
2266 pa_tasks_maint_utils.CHECK_PROJECT_NAME_OR_ID(
2267 p_project_id => p_reference_project_id,
2268 p_project_name => p_reference_project_name,
2269 x_project_id => l_ref_project_id,
2270 x_return_status => l_return_status,
2271 x_error_msg_code => l_error_msg_code);
2272 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2273 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2274 p_msg_name => l_error_msg_code);
2275 END IF;
2276 END IF; --End Ref Project Name-Id Conversion
2277
2278 --Check reference Task Name and Id
2279 IF ((p_reference_task_name <> FND_API.G_MISS_CHAR) AND
2280 (p_reference_task_name IS NOT NULL)) OR
2281 ((p_reference_task_id <> FND_API.G_MISS_NUM) AND
2282 (p_reference_task_id IS NOT NULL)) THEN
2283 --Call Check API.
2284 pa_tasks_maint_utils.CHECK_TASK_NAME_OR_ID(
2285 p_project_id => l_ref_project_id,
2286 p_task_id => p_reference_task_id,
2287 p_task_name => p_reference_task_name,
2288 x_task_id => l_ref_task_id,
2289 x_return_status => l_return_status,
2290 x_error_msg_code => l_error_msg_code);
2291 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2292 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2293 p_msg_name => l_error_msg_code);
2294 END IF;
2295 END IF; --End Ref Task Name-Id Conversion*/
2296 ELSE
2297 l_project_id := p_project_id;
2298 l_task_id := p_task_id;
2299 END IF;
2300
2301 l_ref_project_id := p_reference_project_id;
2302 l_ref_task_id := p_reference_task_id;
2303
2304 --Ref project and task id Required check.
2305 PA_TASKS_MAINT_UTILS.REF_PRJ_TASK_ID_REQ_CHECK(
2306 p_reference_project_id => l_ref_project_id,
2307 p_reference_task_id => l_ref_task_id,
2308 x_return_status => l_return_status,
2309 x_error_msg_code => l_error_msg_code );
2310
2311 IF l_return_status = FND_API.G_RET_STS_ERROR
2312 THEN
2313 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2314 p_msg_name => l_error_msg_code);
2315 x_msg_data := l_error_msg_code;
2316 x_return_status := 'E';
2317 END IF;
2318
2319 x_return_status := 'S';
2320
2321 /* temporarily commenting for project structures
2322
2323 --Call Lock project
2324 PA_TASKS_MAINT_UTILS.LOCK_PROJECT(
2325 p_validate_only => p_validate_only,
2326 p_calling_module => p_calling_module,
2327 p_project_id => l_ref_project_id,
2328 p_wbs_record_version_number => p_wbs_record_version_number,
2329 x_return_status => x_return_status,
2330 x_msg_data => x_msg_data ); */
2331
2332
2333 l_msg_count := FND_MSG_PUB.count_msg;
2334 IF l_msg_count > 0 THEN
2335 x_msg_count := l_msg_count;
2336 x_return_status := 'E';
2337 RAISE FND_API.G_EXC_ERROR;
2338 END IF;
2339
2340 IF p_copy_node_flag = 'P' ----copy entire project
2341 THEN
2342 PA_TASKS_MAINT_PVT.Copy_Entire_Project(
2343 p_commit => p_commit
2344 ,p_validate_only => p_validate_only
2345 ,p_validation_level => p_validation_level
2346 ,p_calling_module => p_calling_module
2347 ,p_debug_mode => p_debug_mode
2348 ,p_reference_project_id => l_ref_project_id
2349 ,p_reference_task_id => l_ref_task_id
2350 ,p_project_id => l_project_id
2351 ,p_peer_or_sub => p_peer_or_sub
2352 ,p_task_prefix => p_task_prefix
2353 ,x_return_status => l_return_status
2354 ,x_msg_count => l_msg_count
2355 ,x_msg_data => l_msg_data );
2356
2357 ELSIF p_copy_node_flag = 'T' ----copy selected task and its sub tasks
2358 THEN
2359 PA_TASKS_MAINT_PVT.Copy_Entire_Task(
2360 p_commit => p_commit
2361 ,p_validate_only => p_validate_only
2362 ,p_validation_level => p_validation_level
2363 ,p_calling_module => p_calling_module
2364 ,p_debug_mode => p_debug_mode
2365 ,p_reference_project_id => l_ref_project_id
2366 ,p_reference_task_id => l_ref_task_id
2367 ,p_project_id => l_project_id
2368 ,p_task_id => l_task_id
2369 ,p_peer_or_sub => p_peer_or_sub
2370 ,p_task_prefix => p_task_prefix
2371 ,x_return_status => l_return_status
2372 ,x_msg_count => l_msg_count
2373 ,x_msg_data => l_msg_data );
2374 ELSIF p_copy_node_flag = 'S' ----copy selected node
2375 THEN
2376 PA_TASKS_MAINT_PVT.Copy_Selected_Task(
2377 p_commit => p_commit
2378 ,p_validate_only => p_validate_only
2379 ,p_validation_level => p_validation_level
2380 ,p_calling_module => p_calling_module
2381 ,p_debug_mode => p_debug_mode
2382 ,p_reference_project_id => l_ref_project_id
2383 ,p_reference_task_id => l_ref_task_id
2384 ,p_task_id => l_task_id
2385 ,p_peer_or_sub => p_peer_or_sub
2386 ,p_task_prefix => p_task_prefix
2387 ,x_return_status => l_return_status
2388 ,x_msg_count => l_msg_count
2389 ,x_msg_data => l_msg_data );
2390
2391 END IF;
2392
2393 if (p_debug_mode = 'Y') then
2394 pa_debug.debug('Edit Task Structure PUB : checking message count');
2395 end if;
2396 l_msg_count := FND_MSG_PUB.count_msg;
2397
2398
2399 If l_msg_count > 0 THEN
2400 x_msg_count := l_msg_count;
2401 If l_msg_count = 1 THEN
2402 pa_interface_utils_pub.get_messages
2403 (p_encoded => FND_API.G_TRUE ,
2404 p_msg_index => 1,
2405 p_msg_count => l_msg_count ,
2406 p_msg_data => l_msg_data,
2407 p_data => l_data,
2408 p_msg_index_out => l_msg_index_out );
2409
2410 x_msg_data := l_data;
2411
2412 End if;
2413 RAISE FND_API.G_EXC_ERROR;
2414 End if;
2415
2416 PA_TASKS_MAINT_UTILS.INCREMENT_WBS_REC_VER_NUM(
2417 p_project_id => l_ref_project_id,
2418 p_wbs_record_version_number => p_wbs_record_version_number,
2419 x_return_status => x_return_status );
2420
2421 IF FND_API.TO_BOOLEAN(P_COMMIT)
2422 THEN
2423 COMMIT WORK;
2424 END IF;
2425
2426 EXCEPTION
2427 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2428 IF p_commit = FND_API.G_TRUE
2429 THEN
2430 ROLLBACK TO Copy;
2431 END IF;
2432 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2433 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
2434 p_procedure_name => 'Copy_Task',
2435 p_error_text => SUBSTRB(SQLERRM,1,240));
2436 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2437
2438 WHEN FND_API.G_EXC_ERROR THEN
2439 IF p_commit = FND_API.G_TRUE
2440 THEN
2441 ROLLBACK TO Copy;
2442 END IF;
2443 x_return_status := 'E';
2444
2445 WHEN OTHERS THEN
2446 IF p_commit = FND_API.G_TRUE
2447 THEN
2448 ROLLBACK TO Copy;
2449 END IF;
2450 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2451 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PUB',
2452 p_procedure_name => 'Copy_Task',
2453 p_error_text => SUBSTRB(SQLERRM,1,240));
2454 RAISE;
2455
2456 END Copy_Task;
2457
2458 --3279982 Begin Add by rtarway for FP.M development
2459
2460 -- Procedure : set_financial_flag_wrapper
2461 -- Type : Public Procedure
2462 -- Purpose : This API will be called from set financial tasks page only in financial tab
2463 -- : Wrapper API to call set_unset_financial_task and sync_up_wp_tasks_with_fin.
2464 -- Note : If a task is selected to be set as financial task, its all parents should be selected
2465 -- : to be set as financial task implicitly.
2466 -- : Similarly, if a task is unselected to be financial task, all child tasks should be unset.
2467 -- : However, set on lowest task has higher precedence than unset on higher level task.
2468 -- :
2469 -- Assumptions : This API assumes that it will be called in display sequence order of tasks.
2470 -- : So that lowest task action (checked/unchecked) precedes its parents.
2471 -- : We assume that OA will call VO row Impl's update row in the same order as it is shown in Hgrid.
2472
2473 -- Parameters Type Required Description and Purpose
2474 -- --------------------------- ------ -------- --------------------------------------------------------
2475 -- p_task_version_id IN Yes Element Version Id of the modified task.
2476 -- p_checked_flag IN Yes This is Y/N depending on the checkbox is checked in the page.
2477 -- p_record_version_number IN Yes Record version number from pa_proj_element_versions table
2478 -- p_project_id IN Yes Project_id of the project being updated.
2479 -- p_published_version_exists IN Yes Flag(Y/N) to indicate that whether published version exists for the project or not.
2480
2481 PROCEDURE SET_FINANCIAL_FLAG_WRAPPER
2482 (
2483 p_api_version IN NUMBER := 1.0
2484 , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
2485 , p_commit IN VARCHAR2 := FND_API.G_FALSE
2486 , p_validate_only IN VARCHAR2 := FND_API.G_FALSE
2487 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
2488 , p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
2489 , p_debug_mode IN VARCHAR2 := 'N'
2490 , p_task_version_id IN NUMBER
2491 , p_checked_flag IN VARCHAR2
2492 , p_record_version_number IN NUMBER
2493 , p_project_id IN NUMBER
2494 , p_published_version_exists IN VARCHAR2
2495 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2496 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
2497 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2498 )
2499 IS
2500 l_msg_count NUMBER := 0;
2501 l_data VARCHAR2(2000);
2502 l_msg_data VARCHAR2(2000);
2503 l_msg_index_out NUMBER;
2504 l_debug_mode VARCHAR2(1);
2505 l_task_version_id_tbl task_version_id_table_type;
2506 lCounterTable NUMBER := 0;
2507 l_patask_record_version_number NUMBER;
2508 l_db_financial_flag VARCHAR2(1);
2509 l_cur_task_version_id NUMBER;
2510 l_last_task_parent_id NUMBER;
2511
2512 l_debug_level2 CONSTANT NUMBER := 2;
2513 l_debug_level3 CONSTANT NUMBER := 3;
2514 l_debug_level4 CONSTANT NUMBER := 4;
2515 l_debug_level5 CONSTANT NUMBER := 5;
2516
2517 --This cursor gets all the parents of the current task
2518 --Commented by rtarway during performance BUG fix : 3693360
2519 /*CURSOR c_get_parents( l_project_id NUMBER, l_task_version_id NUMBER )
2520 IS
2521 SELECT
2522 element_version_id
2523 , financial_task_flag
2524 FROM
2525 pa_proj_element_versions
2526 WHERE
2527 project_id = l_project_id
2528 AND
2529 element_version_id
2530 IN
2531 (--Get the Parents of the passed task
2532 SELECT
2533 object_id_from1 object_id
2534 FROM
2535 pa_object_relationships
2536 WHERE
2537 relationship_type = 'S'
2538 AND
2539 relationship_subtype = 'TASK_TO_TASK'
2540 START WITH object_id_to1 = l_task_version_id
2541 CONNECT BY Object_id_to1 = PRIOR object_id_from1
2542 )
2543 order by display_sequence desc -- Bug 3735089
2544 ;*/
2545 --Commented by rtarway during performance BUG fix : 3693360
2546 CURSOR c_get_parents( l_project_id NUMBER, l_task_version_id NUMBER )
2547 IS
2548 SELECT
2549 element_version_id
2550 , financial_task_flag
2551 FROM
2552 pa_proj_element_versions elem,
2553 (--Get the Parents of the passed task
2554 SELECT
2555 object_id_from1 object_id
2556 FROM
2557 pa_object_relationships
2558 WHERE
2559 relationship_type = 'S'
2560 AND
2561 relationship_subtype = 'TASK_TO_TASK'
2562 START WITH object_id_to1 = l_task_version_id
2563 CONNECT BY Object_id_to1 = PRIOR object_id_from1
2564 AND RELATIONSHIP_TYPE = 'S'
2565 ) parents
2566
2567 WHERE
2568 elem.project_id = l_project_id
2569 AND elem.object_type = 'PA_TASKS'
2570 AND elem.element_version_id = parents.object_id
2571 order by elem.display_sequence desc;
2572
2573 --Commented by rtarway for Perf FIX : BUG 3693360
2574 /*
2575 --This cursor gets all the children of the current task
2576 CURSOR c_get_childs( l_project_id NUMBER, l_task_version_id NUMBER )
2577 IS
2578 SELECT
2579 element_version_id
2580 , financial_task_flag
2581 FROM
2582 pa_proj_element_versions
2583 WHERE
2584 project_id = l_project_id
2585 AND
2586 element_version_id
2587 IN
2588 (-- Get the Childs of the mapped task
2589 SELECT
2590 object_id_to1 object_id
2591 FROM
2592 pa_object_relationships
2593 WHERE
2594 relationship_type ='S'
2595 AND
2596 relationship_subtype ='TASK_TO_TASK'
2597 START WITH object_id_from1 = l_task_version_id
2598 CONNECT BY object_id_from1 = PRIOR object_id_to1
2599 )
2600 order by display_sequence -- Bug 3735089
2601 ;*/
2602
2603 --Added by rtarway, modified Query for improving perf, BUG 3693360
2604 CURSOR c_get_childs( l_project_id NUMBER, l_task_version_id NUMBER )
2605 IS
2606 SELECT
2607 element_version_id
2608 , financial_task_flag
2609 FROM
2610 pa_proj_element_versions elem,
2611 (
2612 SELECT
2613 object_id_to1 object_id
2614 FROM
2615 pa_object_relationships
2616 WHERE
2617 relationship_type ='S'
2618 AND relationship_subtype ='TASK_TO_TASK'
2619 START WITH object_id_from1 = l_task_version_id
2620 CONNECT BY object_id_from1 = PRIOR object_id_to1
2621 AND relationship_type ='S'
2622 ) childs
2623 WHERE
2624 elem.project_id = l_project_id
2625 and elem.object_type = 'PA_TASKS'
2626 and elem.element_version_id = childs.object_id
2627 order by elem.display_sequence;
2628
2629 --End Changes by rtarway for BUG 3693360
2630
2631
2632 --This cursor gets the immediate parent of the passed task version id from the pa_object_relationships
2633 CURSOR c_get_immediate_parent (l_object_id_to1 NUMBER)
2634 IS
2635 SELECT
2636 OBJECT_ID_FROM1
2637 FROM
2638 pa_object_relationships
2639 WHERE
2640 relationship_type ='S'
2641 AND
2642 relationship_subtype ='TASK_TO_TASK'
2643 AND
2644 OBJECT_ID_TO1 = l_object_id_to1;
2645
2646 --This cursor gets the record version number from pa_tasks for the passed task version id
2647 CURSOR c_get_pa_record_version_number (l_task_version_id NUMBER , l_project_id NUMBER)
2648 IS
2649 SELECT
2650 allTasks.record_version_number
2651
2652 FROM
2653 PA_TASKS allTasks,
2654 pa_proj_element_versions elever
2655 WHERE
2656 elever.element_version_id = l_task_version_id
2657 AND
2658 elever.project_id = l_project_id
2659 AND elever.proj_element_id = allTasks.task_id
2660 AND allTasks.project_id = elever.project_id;
2661
2662 --Bug 3735089
2663 l_syncup_task_version_id NUMBER;
2664 l_user_id NUMBER;
2665 l_login_id NUMBER;
2666 l_wp_version_enabled VARCHAR2(1);--Bug 4482903
2667 BEGIN
2668 x_msg_count := 0;
2669 x_return_status := FND_API.G_RET_STS_SUCCESS;
2670 --Delete the elements from the table, if any
2671 l_task_version_id_tbl.DELETE;
2672
2673 --Bug 3735089 - instead of fnd_profile.value use fnd_profile.value_specific
2674 --l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
2675 l_user_id := fnd_global.user_id;
2676 l_login_id := fnd_global.login_id;
2677 l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id, l_login_id,275,null,null),'N');
2678
2679 --l_debug_mode := NVL(p_debug_mode,'N');
2680 IF l_debug_mode = 'Y' THEN
2681 PA_DEBUG.set_curr_function( p_function => 'SET_FINANCIAL_FLAG_WRAPPER',
2682 p_debug_mode => l_debug_mode );
2683 END IF;
2684
2685 IF l_debug_mode = 'Y' THEN
2686
2687 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : Printing Input parameters';
2688
2689 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
2690 l_debug_level3);
2691 Pa_Debug.WRITE(g_pkg_name,'p_task_version_id'||':'||p_task_version_id,
2692 l_debug_level3);
2693 Pa_Debug.WRITE(g_pkg_name,'p_checked_flag'||':'||p_checked_flag,
2694 l_debug_level3);
2695 Pa_Debug.WRITE(g_pkg_name,'p_record_version_number'||':'||p_record_version_number,
2696 l_debug_level3);
2697 Pa_Debug.WRITE(g_pkg_name,'p_project_id'||':'||p_project_id,
2698 l_debug_level3);
2699 Pa_Debug.WRITE(g_pkg_name,'p_published_version_exists'||':'||p_published_version_exists,
2700 l_debug_level3);
2701 END IF;
2702
2703 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
2704 FND_MSG_PUB.initialize;
2705 END IF;
2706
2707 IF (p_commit = FND_API.G_TRUE) THEN
2708 savepoint SET_FIN_FLAG_WRAPPER_PUBLIC;
2709 END IF;
2710
2711 IF l_debug_mode = 'Y' THEN
2712 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : Validating Input parameters';
2713 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
2714 l_debug_level3);
2715 END IF;
2716
2717 IF (
2718 p_task_version_id IS NULL OR
2719 p_checked_flag IS NULL OR
2720 -- p_record_version_number IS NULL OR -- Bug # 4611527.
2721 p_project_id IS NULL OR
2722 p_published_version_exists IS NULL
2723 )
2724 THEN
2725 IF l_debug_mode = 'Y' THEN
2726 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';
2727 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
2728 l_debug_level3);
2729 END IF;
2730 RAISE Invalid_Arg_Exc_WP;
2731 END IF;
2732
2733 IF l_debug_mode = 'Y' THEN
2734 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : Calling set_unset_financial_task';
2735 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
2736 l_debug_level3);
2737 END IF;
2738 --This part of code is common whether p_checked_flag is 'Y' or 'N'
2739 --Call API to set/unset financial_flag for p_task_version_id depending on p_checked_flag.
2740
2741 PA_TASKS_MAINT_PVT.SET_UNSET_FINANCIAL_TASK
2742 (
2743 p_init_msg_list => FND_API.G_FALSE
2744 , p_commit => p_commit
2745 , p_debug_mode => l_debug_mode
2746 , p_task_version_id => p_task_version_id
2747 , p_project_id => p_project_id
2748 , p_checked_flag => p_checked_flag
2749 , x_return_status => x_return_status
2750 , x_msg_count => x_msg_count
2751 , x_msg_data => x_msg_data
2752 );
2753
2754 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2755 THEN
2756 RAISE FND_API.G_EXC_ERROR;
2757 END IF;
2758 l_wp_version_enabled := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(p_project_id); --Bug 4482903
2759 --If p_published_version_exists ='N'
2760 -- IF ( p_published_version_exists = 'N') --Bug 4482903
2761 -- Added an additional condition for handling the Version Disabled Case
2762 IF (p_published_version_exists ='N' OR l_wp_version_enabled= 'N') --Bug 4482903
2763 THEN
2764 --put the current task version id as the first element in table
2765 l_task_version_id_tbl(lCounterTable) := p_task_version_id;
2766 lCounterTable := lCounterTable + 1;
2767 END IF;
2768 --Intialize the counter with current count of the table
2769 --lCounterTable := l_task_version_id_tbl.COUNT;
2770 --if p_checked_flag is Y
2771 IF (p_checked_flag = 'Y')
2772 THEN
2773 -- LOOP thru cursor c_get_parents(p_project_id, p_task_version_id)
2774 -- This loop will set the financial task flag
2775 -- for all the parent tasks of the current task
2776
2777 FOR c_get_parents_rec IN c_get_parents(p_project_id, p_task_version_id) LOOP
2778 --FETCH c_get_parents INTO l_cur_task_version_id , l_db_financial_flag;
2779 l_cur_task_version_id := c_get_parents_rec.element_version_id;
2780 l_db_financial_flag := c_get_parents_rec.financial_task_flag;
2781
2782
2783 IF (l_db_financial_flag = 'Y')
2784 THEN
2785 --Exit from the loop as this condition implies that all the parent ladder tasks
2786 --are already set as financial task
2787 EXIT;
2788 ELSE
2789
2790 --Set the financial task flag
2791 PA_TASKS_MAINT_PVT.SET_UNSET_FINANCIAL_TASK
2792 (
2793 p_init_msg_list => p_init_msg_list
2794 , p_commit => p_commit
2795 , p_debug_mode => l_debug_mode
2796 , p_project_id => p_project_id
2797 , p_task_version_id => l_cur_task_version_id
2798 , p_checked_flag => p_checked_flag
2799 , x_return_status => x_return_status
2800 , x_msg_count => x_msg_count
2801 , x_msg_data => x_msg_data
2802 );
2803
2804 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2805 THEN
2806 RAISE FND_API.G_EXC_ERROR;
2807 END IF;
2808
2809 IF ( p_published_version_exists = 'N')
2810 THEN
2811 -- This will put all the task version id of the parent ladder
2812 l_task_version_id_tbl(lCounterTable) := l_cur_task_version_id;
2813 lCounterTable := lCounterTable + 1;
2814 END IF;
2815 END IF;--End if for l_db_financial task
2816 END LOOP;--End Loop for parent tasks of the current task
2817 ELSIF (p_checked_flag = 'N')
2818 THEN
2819 -- LOOP thru cursor c_get_childs(p_project_id, p_task_version_id)
2820 -- This loop will unset the financial task flag
2821 -- for all the child tasks of the current task
2822
2823 FOR c_get_childs_rec IN c_get_childs(p_project_id, p_task_version_id) LOOP
2824 --FETCH c_get_childs INTO l_cur_task_version_id , l_db_financial_flag;
2825 l_cur_task_version_id := c_get_childs_rec.element_version_id;
2826 l_db_financial_flag := c_get_childs_rec.financial_task_flag;
2827
2828
2829 IF (l_db_financial_flag = 'N')
2830 THEN
2831 --Exit from the loop as this condition implies that all the child ladder tasks
2832 --are already unset as financial task
2833 --EXIT;
2834 --As the above assumption is wrong if there are peer tasks at a level which are not set as financial task
2835 NULL;
2836 ELSE
2837
2838 --Unset the financial task flag
2839 PA_TASKS_MAINT_PVT.SET_UNSET_FINANCIAL_TASK
2840 (
2841 p_init_msg_list => p_init_msg_list
2842 , p_commit => p_commit
2843 , p_debug_mode => l_debug_mode
2844 , p_project_id => p_project_id
2845 , p_task_version_id => l_cur_task_version_id
2846 , p_checked_flag => p_checked_flag
2847 , x_return_status => x_return_status
2848 , x_msg_count => x_msg_count
2849 , x_msg_data => x_msg_data
2850 );
2851
2852 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2853 THEN
2854 RAISE FND_API.G_EXC_ERROR;
2855 END IF;
2856
2857 IF ( p_published_version_exists = 'N')
2858 THEN
2859 l_task_version_id_tbl(lCounterTable) := l_cur_task_version_id;
2860 lCounterTable := lCounterTable + 1;
2861 END IF;
2862 END IF;--End if for l_db_financial task
2863 END LOOP;--End Loop for child tasks of the current task
2864 END IF;--End if for the p_checked_flag='Y'
2865 --IF ( p_published_version_exists = 'N') --Bug 4482903
2866 -- Added an additional condition for handling the Version Disabled Case
2867 IF (p_published_version_exists ='N' OR l_wp_version_enabled= 'N') --Bug 4482903
2868 THEN
2869
2870
2871 -- Bug 3735089 Added below IF condition
2872 -- It is sufficient to delete top task in case checked flag as N
2873 -- no need to loop and delete all child tasks
2874 IF p_checked_flag = 'N' THEN
2875 l_syncup_task_version_id := p_task_version_id;
2876 ELSE
2877 l_syncup_task_version_id := l_task_version_id_tbl(l_task_version_id_tbl.LAST);
2878 END IF;
2879
2880 --Get record version number from pa_tasks table
2881 -- OPEN c_get_pa_record_version_number (l_task_version_id_tbl(l_task_version_id_tbl.LAST) , p_project_id); --Bug 3735089
2882 OPEN c_get_pa_record_version_number (l_syncup_task_version_id , p_project_id);
2883 FETCH c_get_pa_record_version_number INTO l_patask_record_version_number;
2884 CLOSE c_get_pa_record_version_number;
2885
2886 --get the parent of the last task.
2887 --OPEN c_get_immediate_parent (l_task_version_id_tbl(l_task_version_id_tbl.LAST)); --Bug 3735089
2888 OPEN c_get_immediate_parent (l_syncup_task_version_id);
2889 FETCH c_get_immediate_parent INTO l_last_task_parent_id;
2890 IF (c_get_immediate_parent%NOTFOUND)
2891 THEN
2892 --if the parent is structure then then pass p_parent_task_version_id as null
2893 PA_TASKS_MAINT_PUB.SYNC_UP_WP_TASKS_WITH_FIN
2894 (
2895 p_api_version => 1.0
2896 , p_init_msg_list => FND_API.G_FALSE
2897 , p_commit => p_commit
2898 , p_validate_only => FND_API.G_FALSE
2899 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
2900 , p_calling_module => 'SELF_SERVICE'
2901 , p_debug_mode => l_debug_mode
2902 , p_patask_record_version_number => l_patask_record_version_number
2903 , p_parent_task_version_id => FND_API.G_MISS_NUM
2904 , p_project_id => p_project_id
2905 , p_syncup_all_tasks => 'N'
2906 -- , p_task_version_id => l_task_version_id_tbl(l_task_version_id_tbl.LAST)--Bug 3735089
2907 , p_task_version_id => l_syncup_task_version_id
2908 , p_structure_version_id => FND_API.G_MISS_NUM
2909 , p_check_for_transactions => 'N'
2910 , p_checked_flag => p_checked_flag
2911 , p_mode => 'SINGLE'
2912 , x_return_status => x_return_status
2913 , x_msg_count => x_msg_count
2914 , x_msg_data => x_msg_data
2915 );
2916 -- Bug 3735089 : Added error handling code
2917 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2918 THEN
2919 RAISE FND_API.G_EXC_ERROR;
2920 END IF;
2921
2922 ELSE
2923
2924 --else pass the derived parent task version id
2925 PA_TASKS_MAINT_PUB.SYNC_UP_WP_TASKS_WITH_FIN
2926 (
2927 p_debug_mode => l_debug_mode
2928 , p_commit => p_commit
2929 , p_init_msg_list => FND_API.G_FALSE
2930 , p_patask_record_version_number => l_patask_record_version_number
2931 , p_parent_task_version_id => l_last_task_parent_id
2932 , p_project_id => p_project_id
2933 , p_syncup_all_tasks =>'N'
2934 --, p_task_version_id => l_task_version_id_tbl(l_task_version_id_tbl.LAST)-- Bug 3735089
2935 , p_task_version_id => l_syncup_task_version_id
2936 , p_checked_flag => p_checked_flag
2937 , p_mode => 'SINGLE'
2938 , p_check_for_transactions =>'N'
2939 , x_return_status => x_return_status
2940 , x_msg_count => x_msg_count
2941 , x_msg_data => x_msg_data
2942 );
2943 -- Bug 3735089 : Added error handling code
2944 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2945 THEN
2946 RAISE FND_API.G_EXC_ERROR;
2947 END IF;
2948
2949 END IF;
2950 CLOSE c_get_immediate_parent;
2951
2952 --For All other tasks in the l_task_version_id_tbl, loop in reverse order and call sync-up API
2953 -- Pass the 1 up task version id in table as the parent
2954 IF (l_task_version_id_tbl.COUNT > 1 AND p_checked_flag = 'Y') -- Bug 3735089 : Added p_checked_flag = 'Y'
2955 THEN
2956
2957 FOR iCounter IN REVERSE l_task_version_id_tbl.FIRST..l_task_version_id_tbl.LAST-1 LOOP
2958
2959 PA_TASKS_MAINT_PUB.SYNC_UP_WP_TASKS_WITH_FIN
2960 (
2961 p_debug_mode => l_debug_mode
2962 , p_commit => p_commit
2963 , p_init_msg_list => FND_API.G_FALSE
2964 , p_patask_record_version_number => l_patask_record_version_number
2965 , p_parent_task_version_id => l_task_version_id_tbl( iCounter + 1 )
2966 , p_project_id => p_project_id
2967 , p_syncup_all_tasks =>'N'
2968 , p_task_version_id => l_task_version_id_tbl( iCounter )
2969 , p_checked_flag => p_checked_flag
2970 , p_mode => 'SINGLE'
2971 , p_check_for_transactions =>'N'
2972 , x_return_status => x_return_status
2973 , x_msg_count => x_msg_count
2974 , x_msg_data => x_msg_data
2975 );
2976 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
2977 THEN
2978 RAISE FND_API.G_EXC_ERROR;
2979 END IF;
2980 END LOOP;
2981 END IF;
2982 END IF;
2983
2984 IF (p_commit = FND_API.G_TRUE) THEN
2985 COMMIT;
2986 END IF;
2987 -- Bug 3735089 : using reset_curr_function too, just using set_curr_function may overflow it after several recursive calls
2988 -- and it gives ORA 06512 numeric or value error
2989 IF l_debug_mode = 'Y' THEN
2990 Pa_Debug.reset_curr_function;
2991 END IF;
2992
2993 EXCEPTION
2994
2995 WHEN FND_API.G_EXC_ERROR THEN
2996
2997 x_return_status := Fnd_Api.G_RET_STS_ERROR;
2998 l_msg_count := Fnd_Msg_Pub.count_msg;
2999
3000 IF p_commit = FND_API.G_TRUE THEN
3001 ROLLBACK TO SET_FIN_FLAG_WRAPPER_PUBLIC;
3002 END IF;
3003
3004 IF c_get_parents%ISOPEN THEN
3005 CLOSE c_get_parents;
3006 END IF;
3007
3008 IF c_get_childs%ISOPEN THEN
3009 CLOSE c_get_childs;
3010 END IF;
3011 IF c_get_immediate_parent%ISOPEN THEN
3012 CLOSE c_get_immediate_parent;
3013 END IF;
3014 IF c_get_pa_record_version_number%ISOPEN THEN
3015 CLOSE c_get_pa_record_version_number;
3016 END IF;
3017
3018
3019 IF l_msg_count = 1 AND x_msg_data IS NULL
3020 THEN
3021 Pa_Interface_Utils_Pub.get_messages
3022 ( p_encoded => Fnd_Api.G_TRUE
3023 , p_msg_index => 1
3024 , p_msg_count => l_msg_count
3025 , p_msg_data => l_msg_data
3026 , p_data => l_data
3027 , p_msg_index_out => l_msg_index_out);
3028 x_msg_data := l_data;
3029 x_msg_count := l_msg_count;
3030 ELSE
3031 x_msg_count := l_msg_count;
3032 END IF;
3033
3034 IF l_debug_mode = 'Y' THEN
3035 Pa_Debug.reset_curr_function;
3036 END IF;
3037
3038 WHEN Invalid_Arg_Exc_WP THEN
3039
3040 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3041 x_msg_count := 1;
3042 x_msg_data := 'PA_TASKS_MAINT_PUB : SET_FINANCIAL_FLAG_WRAPPER : NULL PARAMETERS ARE PASSED OR CURSOR DIDNT RETURN ANY ROWS';
3043
3044 IF p_commit = FND_API.G_TRUE THEN
3045 ROLLBACK TO SET_FIN_FLAG_WRAPPER_PUBLIC;
3046 END IF;
3047 IF c_get_parents%ISOPEN THEN
3048 CLOSE c_get_parents;
3049 END IF;
3050
3051 IF c_get_childs%ISOPEN THEN
3052 CLOSE c_get_childs;
3053 END IF;
3054 IF c_get_immediate_parent%ISOPEN THEN
3055 CLOSE c_get_immediate_parent;
3056 END IF;
3057 IF c_get_pa_record_version_number%ISOPEN THEN
3058 CLOSE c_get_pa_record_version_number;
3059 END IF;
3060 Fnd_Msg_Pub.add_exc_msg
3061 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3062 , p_procedure_name => 'SET_FINANCIAL_FLAG_WRAPPER'
3063 , p_error_text => x_msg_data);
3064
3065 IF l_debug_mode = 'Y' THEN
3066 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3067 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3068 l_debug_level5);
3069 Pa_Debug.reset_curr_function;
3070 END IF;
3071 RAISE;
3072
3073 WHEN OTHERS THEN
3074
3075 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3076 x_msg_count := 1;
3077 x_msg_data := substr(SQLERRM,1,120);-- Bug 3735089 Added substr
3078
3079 IF p_commit = FND_API.G_TRUE THEN
3080 ROLLBACK TO SET_FIN_FLAG_WRAPPER_PUBLIC;
3081 END IF;
3082
3083 IF c_get_parents%ISOPEN THEN
3084 CLOSE c_get_parents;
3085 END IF;
3086
3087 IF c_get_childs%ISOPEN THEN
3088 CLOSE c_get_childs;
3089 END IF;
3090 IF c_get_immediate_parent%ISOPEN THEN
3091 CLOSE c_get_immediate_parent;
3092 END IF;
3093 IF c_get_pa_record_version_number%ISOPEN THEN
3094 CLOSE c_get_pa_record_version_number;
3095 END IF;
3096
3097 Fnd_Msg_Pub.add_exc_msg
3098 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3099 , p_procedure_name => 'SET_FINANCIAL_FLAG_WRAPPER'
3100 , p_error_text => x_msg_data);
3101
3102 IF l_debug_mode = 'Y' THEN
3103 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3104 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3105 l_debug_level5);
3106
3107 Pa_Debug.reset_curr_function;
3108
3109 END IF;
3110 RAISE;
3111 END SET_FINANCIAL_FLAG_WRAPPER ;
3112
3113 -- Procedure : POPULATE_TEMP_TABLE
3114 -- Type : Public Procedure
3115 -- Purpose : This API will be called from set financial tasks page in financial tab
3116 -- : This Api is to populate the global temp
3117 -- : table PA_PREVIEW_FIN_TASKS_TEMP for Preview Financial tasks page.
3118 -- : The VO of Preview page is based on this temp table
3119 -- :
3120 -- Note : This API first populates the temp table with structure information and then it selects all the parent
3121 -- : tasks for the passed task id and popultes the temp table with parent tasks information
3122 -- :
3123 -- Assumptions :
3124
3125 -- Parameters Type Required Description and Purpose
3126 -- --------------------------- ------ -------- --------------------------------------------------------
3127 -- p_task_version_id_array SYSTEM.PA_NUM_TBL_TYPE Yes Array of checked Element Version Id from the Set Financial Tasks page.
3128 -- p_structure_version_id NUMBER Yes Structure Version Id of the structure being previewed.
3129 -- p_project_id NUMBER Yes Project_id of the project being used.
3130
3131 PROCEDURE POPULATE_TEMP_TABLE
3132 (
3133 p_api_version IN NUMBER := 1.0
3134 , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
3135 , p_commit IN VARCHAR2 := FND_API.G_FALSE
3136 , p_validate_only IN VARCHAR2 := FND_API.G_FALSE
3137 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
3138 , p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
3139 , p_debug_mode IN VARCHAR2 := 'N'
3140 , p_task_version_id_array IN SYSTEM.PA_NUM_TBL_TYPE := NULL
3141 , p_structure_version_id IN NUMBER
3142 , p_project_id IN NUMBER
3143 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3144 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
3145 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3146 )
3147 IS
3148
3149 l_msg_count NUMBER := 0;
3150 l_data VARCHAR2(2000);
3151 l_msg_data VARCHAR2(2000);
3152 l_msg_index_out NUMBER;
3153 l_debug_mode VARCHAR2(1);
3154 l_rec_fin_tasks_temp fin_tasks_temp_record_type;
3155 --l_rec_fin_tasks_temp_tbl fin_tasks_temp_table_type;
3156
3157
3158 l_project_id_tbl project_id_table_type ;
3159 l_element_version_id_tbl ELEMENT_VERSION_ID_table_type;
3160 l_prnt_struct_ver_id_tbl PRNT_STRUCT_VER_ID_table_type;
3161 l_prnt_elem_ver_id_tbl PRNT_ELEM_VER_ID_table_type;
3162 l_child_element_flag_tbl CHILD_ELEMENT_FLAG_table_type ;
3163 l_task_name_tbl TASK_NAME_table_type ;
3164 l_task_number_tbl TASK_NUMBER_table_type;
3165 l_object_type_tbl OBJECT_TYPE_table_type ;
3166 l_display_sequence_tbl DISPLAY_SEQUENCE_table_type;
3167 l_wbs_number_tbl WBS_NUMBER_table_type ;
3168 l_proj_element_id_tbl PROJ_ELEMENT_ID_table_type;
3169 l_fin_task_flag_tbl FINANCIAL_TASK_FLAG_table_type;
3170
3171 l_debug_level2 CONSTANT NUMBER := 2;
3172 l_debug_level3 CONSTANT NUMBER := 3;
3173 l_debug_level4 CONSTANT NUMBER := 4;
3174 l_debug_level5 CONSTANT NUMBER := 5;
3175
3176 --This cursor will get all the structure Information for the passed project id and structure id
3177 CURSOR c_get_structure_info(l_project_id NUMBER, l_element_version_id NUMBER)
3178 IS
3179 SELECT
3180 elemver.project_id AS PROJECT_ID
3181 , elemver.element_version_id AS ELEMENT_VERSION_ID
3182 , elemver.parent_structure_version_id AS PARENT_STRUCTRE_VERSION_ID
3183 , null AS PARENT_ELEMENT_VERSION_ID
3184 , PA_PROJ_ELEMENTS_UTILS.check_child_element_exist(elemver.element_version_id) AS CHILD_ELEMENT_FLAG
3185 , elem.name AS TASK_NAME
3186 --, elem.element_number AS TASK_NUMBER -- Commented for Bug 5438975
3187 , verstruct.version_number as TASK_NUMBER -- Added for Bug 5438975
3188 , elem.object_type AS OBJECT_TYPE
3189 , elemver.display_sequence AS DISPLAY_SEQUENCE
3190 , elemver.wbs_number AS WBS_NUMBER
3191 , elem.proj_element_id AS PROJ_ELEMENT_ID
3192 , elemver.financial_task_flag AS FINANCIAL_TASK_FLAG
3193 FROM
3194 pa_proj_elements elem
3195 , pa_proj_element_versions elemver
3196 , pa_proj_elem_ver_structure verstruct -- Added for Bug 5438975
3197 WHERE elem.proj_element_id = elemver.proj_element_id
3198 AND elem.project_id = elemver.project_id
3199 AND elemver.element_version_id = l_element_version_id
3200 AND elemver.project_id = l_project_id
3201 -- Added for Bug 5438975
3202 AND verstruct.project_id = elemver.project_id
3203 AND verstruct.ELEMENT_VERSION_ID = elemver.element_version_id
3204 AND verstruct.PROJ_ELEMENT_ID = elemver.proj_element_id;
3205
3206 -- This curosor gets the details of the parents of the passed task along with the passed task itself
3207 CURSOR c_get_parents (l_project_id NUMBER, l_task_version_id NUMBER)
3208 IS
3209 SELECT
3210 elemver.project_id AS PROJECT_ID
3211 , elemver.element_version_id AS ELEMENT_VERSION_ID
3212 , elemver.parent_structure_version_id AS PARENT_STRUCTRE_VERSION_ID
3213 , por.object_id_from1 AS PARENT_ELEMENT_VERSION_ID
3214 , PA_PROJ_ELEMENTS_UTILS.check_child_element_exist(elemver.element_version_id) AS CHILD_ELEMENT_FLAG
3215 , projelem.name AS TASK_NAME
3216 , projelem.element_number AS TASK_NUMBER
3217 , elemver.object_type AS OBJECT_TYPE
3218 , elemver.display_sequence AS DISPLAY_SEQUENCE
3219 , elemver.wbs_number AS WBS_NUMBER
3220 , elemver.proj_element_id AS PROJ_ELEMENT_ID
3221 , elemver.financial_task_flag AS FINANCIAL_TASK_FLAG
3222 FROM
3223 pa_proj_element_versions elemver
3224 , pa_proj_elements projelem
3225 , pa_object_relationships por
3226 WHERE
3227 projelem.project_id = elemver.project_id
3228 AND projelem.proj_element_id = elemver.proj_element_id
3229 AND elemver.object_type='PA_TASKS'
3230 AND projelem.object_type='PA_TASKS'
3231 AND por.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
3232 AND por.object_id_to1 = elemver.element_version_id
3233 AND por.object_type_to IN ('PA_STRUCTURES', 'PA_TASKS')
3234 AND por.relationship_type = 'S'
3235 AND elemver.project_id = l_project_id
3236 AND elemver.element_version_id IN
3237 (--Get the Parents of the passed task
3238 SELECT object_id_from1 object_id
3239 FROM pa_object_relationships
3240 WHERE relationship_type = 'S'
3241 AND relationship_subtype = 'TASK_TO_TASK'
3242 START WITH object_id_to1 = l_task_version_id
3243 CONNECT BY Object_id_to1 = PRIOR object_id_from1
3244 UNION
3245 SELECT l_task_version_id--Get the Passed task itself
3246 FROM dual
3247 )
3248 AND NOT EXISTS -- This is to insure that the same record does not get inserted twice
3249 (
3250 SELECT 'xyz'
3251 FROM pa_preview_fin_tasks_temp temp
3252 WHERE temp.element_version_id = elemver.element_version_id
3253 );
3254
3255 BEGIN
3256
3257 x_msg_count := 0;
3258 x_return_status := FND_API.G_RET_STS_SUCCESS;
3259
3260 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
3261 --l_debug_mode := NVL(p_debug_mode,'N');
3262 IF l_debug_mode = 'Y' THEN
3263 PA_DEBUG.set_curr_function( p_function => 'POPULATE_TEMP_TABLE',
3264 p_debug_mode => l_debug_mode );
3265 END IF;
3266
3267
3268
3269 IF l_debug_mode = 'Y' THEN
3270 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB:POPULATE_TEMP_TABLE:Printing Input parameters';
3271 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3272 l_debug_level3);
3273 Pa_Debug.WRITE(g_pkg_name,'p_structure_version_id'||':'||p_structure_version_id,
3274 l_debug_level3);
3275 Pa_Debug.WRITE(g_pkg_name,'p_project_id'||':'||p_project_id,
3276 l_debug_level3);
3277 END IF;
3278
3279 --Delete all elements from temporary table first.
3280 BEGIN
3281 DELETE FROM pa_preview_fin_tasks_temp;
3282
3283 EXCEPTION
3284 WHEN OTHERS THEN
3285
3286 RAISE;
3287 END;
3288
3289 --Delete all the elements from all PL/sql tables before using
3290 l_project_id_tbl.DELETE;
3291 l_element_version_id_tbl.DELETE;
3292 l_prnt_struct_ver_id_tbl.DELETE;
3293 l_prnt_elem_ver_id_tbl.DELETE;
3294 l_child_element_flag_tbl.DELETE;
3295 l_task_name_tbl.DELETE;
3296 l_task_number_tbl.DELETE;
3297 l_object_type_tbl.DELETE;
3298 l_display_sequence_tbl.DELETE;
3299 l_wbs_number_tbl.DELETE;
3300 l_proj_element_id_tbl.DELETE;
3301 l_fin_task_flag_tbl.DELETE;
3302
3303 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
3304 FND_MSG_PUB.initialize;
3305 END IF;
3306
3307 IF (p_commit = FND_API.G_TRUE) THEN
3308 savepoint POPULATE_TEMP_TBL_PUB;
3309 END IF;
3310
3311 IF l_debug_mode = 'Y' THEN
3312 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : POPULATE_TEMP_TABLE : Validating Input parameters';
3313 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3314 l_debug_level3);
3315 END IF;
3316
3317 IF (
3318 --( p_task_version_id_array IS NULL ) OR
3319 ( p_structure_version_id IS NULL ) OR
3320 ( p_project_id IS NULL )
3321 )
3322 THEN
3323 IF l_debug_mode = 'Y' THEN
3324 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : POPULATE_TEMP_TABLE : At least one of the mandatory IN parameters are passed as NULL';
3325 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3326 l_debug_level3);
3327 END IF;
3328 RAISE Invalid_Arg_Exc_WP;
3329 END IF;
3330
3331 --Open cursor c_get_structure_info and get the structure information
3332 OPEN c_get_structure_info(p_project_id , p_structure_version_id);
3333 FETCH c_get_structure_info INTO l_rec_fin_tasks_temp;
3334 INSERT INTO pa_preview_fin_tasks_temp
3335 (
3336 PROJECT_ID
3337 , ELEMENT_VERSION_ID
3338 , PARENT_STRUCTURE_VERSION_ID
3339 , PARENT_ELEMENT_VERSION_ID
3340 , CHILD_ELEMENT_FLAG
3341 , TASK_NAME
3342 , TASK_NUMBER
3343 , OBJECT_TYPE
3344 , DISPLAY_SEQUENCE
3345 , WBS_NUMBER
3346 , PROJ_ELEMENT_ID
3347 , FINANCIAL_TASK_FLAG
3348 )
3349 VALUES
3350 (
3351 l_rec_fin_tasks_temp.PROJECT_ID
3352 , l_rec_fin_tasks_temp.element_version_id
3353 , l_rec_fin_tasks_temp.parent_structure_version_id
3354 , l_rec_fin_tasks_temp.parent_element_version_id
3355 , l_rec_fin_tasks_temp.child_element_flag
3356 , l_rec_fin_tasks_temp.task_name
3357 , l_rec_fin_tasks_temp.task_number
3358 , l_rec_fin_tasks_temp.object_type
3359 , l_rec_fin_tasks_temp.display_sequence
3360 , l_rec_fin_tasks_temp.wbs_number
3361 , l_rec_fin_tasks_temp.proj_element_id
3362 , l_rec_fin_tasks_temp.financial_task_flag
3363 );
3364 CLOSE c_get_structure_info;
3365
3366 IF (p_task_version_id_array IS NOT NULL AND p_task_version_id_array.COUNT >0) THEN
3367 FOR iCounter IN REVERSE p_task_version_id_array.FIRST..p_task_version_id_array.LAST LOOP
3368 --Get all the parentes of the task Ids passed
3369
3370 OPEN c_get_parents ( p_project_id , p_task_version_id_array (iCounter) );
3371 --Bulk Collect the cursor in to table of pa_preview_fin_tasks_temp_tbl type records
3372 FETCH c_get_parents BULK COLLECT INTO
3373 l_project_id_tbl
3374 , l_element_version_id_tbl
3375 , l_prnt_struct_ver_id_tbl
3376 , l_prnt_elem_ver_id_tbl
3377 , l_child_element_flag_tbl
3378 , l_task_name_tbl
3379 , l_task_number_tbl
3380 , l_object_type_tbl
3381 , l_display_sequence_tbl
3382 , l_wbs_number_tbl
3383 , l_proj_element_id_tbl
3384 , l_fin_task_flag_tbl;
3385
3386 CLOSE c_get_parents;
3387
3388
3389 IF (l_element_version_id_tbl.COUNT > 0)THEN
3390 --Loop thorugh the table and insert all the data in the temp table
3391 FORALL iCounter1 IN l_element_version_id_tbl.FIRST..l_element_version_id_tbl.LAST
3392 INSERT INTO pa_preview_fin_tasks_temp
3393 (
3394 PROJECT_ID
3395 , ELEMENT_VERSION_ID
3396 , PARENT_STRUCTURE_VERSION_ID
3397 , PARENT_ELEMENT_VERSION_ID
3398 , CHILD_ELEMENT_FLAG
3399 , TASK_NAME
3400 , TASK_NUMBER
3401 , OBJECT_TYPE
3402 , DISPLAY_SEQUENCE
3403 , WBS_NUMBER
3404 , PROJ_ELEMENT_ID
3405 , FINANCIAL_TASK_FLAG
3406 )
3407 VALUES
3408 (
3409 l_project_id_tbl(iCounter1)
3410 , l_element_version_id_tbl(iCounter1)
3411 , l_prnt_struct_ver_id_tbl(iCounter1)
3412 , l_prnt_elem_ver_id_tbl(iCounter1)
3413 , l_child_element_flag_tbl(iCounter1)
3414 , l_task_name_tbl(iCounter1)
3415 , l_task_number_tbl(iCounter1)
3416 , l_object_type_tbl(iCounter1)
3417 , l_display_sequence_tbl(iCounter1)
3418 , l_wbs_number_tbl(iCounter1)
3419 , l_proj_element_id_tbl(iCounter1)
3420 , l_fin_task_flag_tbl(iCounter1)
3421 );
3422 END IF;
3423 END LOOP;
3424 END IF;
3425 IF (p_commit = FND_API.G_TRUE) THEN
3426 COMMIT;
3427 END IF;
3428
3429 EXCEPTION
3430 WHEN FND_API.G_EXC_ERROR THEN
3431
3432 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3433 l_msg_count := Fnd_Msg_Pub.count_msg;
3434
3435 IF p_commit = FND_API.G_TRUE THEN
3436 ROLLBACK TO POPULATE_TEMP_TABLE_PUB;
3437 END IF;
3438
3439 IF c_get_structure_info%ISOPEN THEN
3440 CLOSE c_get_structure_info;
3441 END IF;
3442
3443 IF c_get_parents%ISOPEN THEN
3444 CLOSE c_get_parents;
3445 END IF;
3446
3447
3448 IF l_msg_count = 1 AND x_msg_data IS NULL
3449 THEN
3450 Pa_Interface_Utils_Pub.get_messages
3451 ( p_encoded => Fnd_Api.G_TRUE
3452 , p_msg_index => 1
3453 , p_msg_count => l_msg_count
3454 , p_msg_data => l_msg_data
3455 , p_data => l_data
3456 , p_msg_index_out => l_msg_index_out);
3457 x_msg_data := l_data;
3458 x_msg_count := l_msg_count;
3459 ELSE
3460 x_msg_count := l_msg_count;
3461 END IF;
3462 IF l_debug_mode = 'Y' THEN
3463 Pa_Debug.reset_curr_function;
3464 END IF;
3465
3466 WHEN Invalid_Arg_Exc_WP THEN
3467
3468 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3469 x_msg_count := 1;
3470 x_msg_data := 'PA_TASKS_MAINT_PUB : POPULATE_TEMP_TABLE : NULL PARAMETERS ARE PASSED OR CURSOR DIDNT RETURN ANY ROWS';
3471
3472 IF p_commit = FND_API.G_TRUE THEN
3473 ROLLBACK TO POPULATE_TEMP_TABLE_PUB;
3474 END IF;
3475 IF c_get_structure_info%ISOPEN THEN
3476 CLOSE c_get_structure_info;
3477 END IF;
3478
3479 IF c_get_parents%ISOPEN THEN
3480 CLOSE c_get_parents;
3481 END IF;
3482 Fnd_Msg_Pub.add_exc_msg
3483 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3484 , p_procedure_name => 'POPULATE_TEMP_TABLE'
3485 , p_error_text => x_msg_data);
3486
3487 IF l_debug_mode = 'Y' THEN
3488 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3489 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3490 l_debug_level5);
3491 Pa_Debug.reset_curr_function;
3492 END IF;
3493 RAISE;
3494
3495 WHEN OTHERS THEN
3496
3497 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3498 x_msg_count := 1;
3499 x_msg_data := substr(SQLERRM,1,120);-- Bug 3735089 Added substr
3500
3501 IF p_commit = FND_API.G_TRUE THEN
3502 ROLLBACK TO POPULATE_TEMP_TABLE_PUB;
3503 END IF;
3504 IF c_get_structure_info%ISOPEN THEN
3505 CLOSE c_get_structure_info;
3506 END IF;
3507
3508 IF c_get_parents%ISOPEN THEN
3509 CLOSE c_get_parents;
3510 END IF;
3511
3512 Fnd_Msg_Pub.add_exc_msg
3513 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3514 , p_procedure_name => 'POPULATE_TEMP_TABLE'
3515 , p_error_text => x_msg_data);
3516
3517 IF l_debug_mode = 'Y' THEN
3518 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3519 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3520 l_debug_level5);
3521 Pa_Debug.reset_curr_function;
3522 END IF;
3523 RAISE;
3524 END POPULATE_TEMP_TABLE ;
3525
3526
3527 -- Procedure : SYNC_UP_WP_TASKS_WITH_FIN
3528 -- Type : Public Procedure
3529 -- Purpose : This API will be called from set financial tasks page in financial tab
3530 -- : This API is to Sync up the financial tasks with pa_tasks table
3531 -- Note : This API does all the validations required on parameters and calls private API
3532 -- :
3533 -- Assumptions : The financial_task_flag is already set in the database.
3534
3535 -- Parameters Type Required Description and Purpose
3536 -- --------------------------- ------ -------- --------------------------------------------------------
3537 -- p_project_id NUMBER Yes Project_id of the project being synced up.
3538 -- p_syncup_all_tasks VARCHAR2 NO Flag indicating Y/N whether to sync up all the tasks for the given structure version id.
3539 -- p_task_version_id NUMBER NO The single task's version id. This is applicable for singular case.
3540 -- 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.
3541 -- 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.
3542 -- 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
3543 -- p_patask_record_version_number NUMBER NO This is record version number of the record in pa_tasks
3544 -- p_parent_task_version_id NUMBER NO This is parent task version id of the current task, It is needed in create_task
3545
3546 PROCEDURE SYNC_UP_WP_TASKS_WITH_FIN
3547 (
3548 p_api_version IN NUMBER := 1.0
3549 , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
3550 , p_commit IN VARCHAR2 := FND_API.G_FALSE
3551 , p_validate_only IN VARCHAR2 := FND_API.G_FALSE
3552 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
3553 , p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
3554 , p_debug_mode IN VARCHAR2 := 'N'
3555 , p_patask_record_version_number IN NUMBER := FND_API.G_MISS_NUM
3556 , p_parent_task_version_id IN NUMBER := FND_API.G_MISS_NUM
3557 , p_project_id IN NUMBER
3558 , p_syncup_all_tasks IN VARCHAR2 := 'N'
3559 , p_task_version_id IN NUMBER := FND_API.G_MISS_NUM
3560 , p_structure_version_id IN NUMBER := FND_API.G_MISS_NUM
3561 , p_check_for_transactions IN VARCHAR2 := 'N'
3562 , p_checked_flag IN VARCHAR2 := FND_API.G_MISS_CHAR
3563 , p_mode IN VARCHAR2 := 'SINGLE'
3564 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3565 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
3566 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3567 )
3568 IS
3569
3570 l_msg_count NUMBER := 0;
3571 l_data VARCHAR2(2000);
3572 l_msg_data VARCHAR2(2000);
3573 l_msg_index_out NUMBER;
3574 l_debug_mode VARCHAR2(1);
3575
3576 l_debug_level2 CONSTANT NUMBER := 2;
3577 l_debug_level3 CONSTANT NUMBER := 3;
3578 l_debug_level4 CONSTANT NUMBER := 4;
3579 l_debug_level5 CONSTANT NUMBER := 5;
3580
3581 --Bug 3735089
3582 l_user_id NUMBER;
3583 l_login_id NUMBER;
3584
3585 BEGIN
3586
3587 x_msg_count := 0;
3588 x_return_status := FND_API.G_RET_STS_SUCCESS;
3589
3590 --Bug 3735089 - instead of fnd_profile.value use fnd_profile.value_specific
3591 --l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
3592 l_user_id := fnd_global.user_id;
3593 l_login_id := fnd_global.login_id;
3594 l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id, l_login_id,275,null,null),'N');
3595
3596 --l_debug_mode := NVL(p_debug_mode,'N');
3597 IF l_debug_mode = 'Y' THEN
3598 PA_DEBUG.set_curr_function( p_function => 'SYNC_UP_WP_TASKS_WITH_FIN',
3599 p_debug_mode => l_debug_mode );
3600 END IF;
3601
3602 IF l_debug_mode = 'Y' THEN
3603 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Printing Input parameters';
3604 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3605 l_debug_level3);
3606 Pa_Debug.WRITE(g_pkg_name,'p_project_id '||':'||p_project_id ,
3607 l_debug_level3);
3608 Pa_Debug.WRITE(g_pkg_name,'p_syncup_all_tasks'||':'||p_syncup_all_tasks,
3609 l_debug_level3);
3610 Pa_Debug.WRITE(g_pkg_name,'p_task_version_id'||':'|| p_task_version_id ,
3611 l_debug_level3);
3612 Pa_Debug.WRITE(g_pkg_name,'p_structure_version_id'||':'|| p_structure_version_id,
3613 l_debug_level3);
3614 Pa_Debug.WRITE(g_pkg_name,'p_checked_flag '||':'||p_checked_flag ,
3615 l_debug_level3);
3616 Pa_Debug.WRITE(g_pkg_name,'p_mode'||':'||p_mode,
3617 l_debug_level3);
3618 Pa_Debug.WRITE(g_pkg_name,'p_parent_task_version_id'||':'||p_parent_task_version_id,
3619 l_debug_level3);
3620 Pa_Debug.WRITE(g_pkg_name,'p_patask_record_version_number'||':'||p_patask_record_version_number,
3621 l_debug_level3);
3622 END IF;
3623
3624 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
3625 FND_MSG_PUB.initialize;
3626 END IF;
3627
3628 IF (p_commit = FND_API.G_TRUE) THEN
3629 savepoint SYNC_UP_WITH_FIN_PUBLIC;
3630 END IF;
3631
3632 IF l_debug_mode = 'Y' THEN
3633 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Validating Input parameters';
3634 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3635 l_debug_level3);
3636 END IF;
3637
3638 IF ( p_project_id IS NULL)
3639 THEN
3640 IF l_debug_mode = 'Y' THEN
3641 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Mandatory parameters are null';
3642 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3643 l_debug_level3);
3644 END IF;
3645 RAISE Invalid_Arg_Exc_WP;
3646 END IF;
3647
3648 --Validating for p_mode, it shopuld be either SINGLE or ALL
3649 /*IF (p_mode <> 'SINGLE' OR p_mode <> 'ALL')
3650 THEN
3651 IF l_debug_mode = 'Y' THEN
3652 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : p_mode is invalid';
3653 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3654 l_debug_level3);
3655 END IF;
3656 RAISE Invalid_Arg_Exc_WP;
3657 END IF;*/
3658 --If p_mode = SINGLE, then p_task_version_id and p_checked_flag should be passed not null
3659 IF ( ( p_mode='SINGLE') AND
3660 (
3661 ( p_task_version_id IS NULL OR p_task_version_id = FND_API.G_MISS_NUM ) OR
3662 ( p_checked_flag IS NULL OR p_checked_flag = FND_API.G_MISS_CHAR )
3663 )
3664 )
3665 THEN
3666 IF l_debug_mode = 'Y' THEN
3667 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Manadatory parameters with mode '||p_mode||'are not passed';
3668 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3669 l_debug_level3);
3670 END IF;
3671 RAISE Invalid_Arg_Exc_WP;
3672 ELSIF ( ( p_mode = 'ALL')
3673 AND
3674 ( p_structure_version_id IS NULL OR p_structure_version_id = FND_API.G_MISS_NUM )
3675 )
3676 THEN
3677 IF l_debug_mode = 'Y' THEN
3678 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : Manadatory parameters with mode '||p_mode||'are not passed';
3679 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3680 l_debug_level3);
3681 END IF;
3682 RAISE Invalid_Arg_Exc_WP;
3683 END IF;
3684
3685 -- Call Private APIs
3686 PA_TASKS_MAINT_PVT.SYNC_UP_WP_TASKS_WITH_FIN
3687 (
3688 p_init_msg_list => FND_API.G_FALSE
3689 , p_commit => p_commit
3690 , p_debug_mode => l_debug_mode
3691 , p_project_id => p_project_id
3692 , p_syncup_all_tasks => p_syncup_all_tasks
3693 , p_patask_record_version_number => p_patask_record_version_number
3694 , p_parent_task_version_id => p_parent_task_version_id
3695 , p_task_version_id => p_task_version_id
3696 , p_structure_version_id => p_structure_version_id
3697 , p_checked_flag => p_checked_flag
3698 , p_mode => p_mode
3699 , x_return_status => x_return_status
3700 , x_msg_count => x_msg_count
3701 , x_msg_data => x_msg_data
3702 );
3703 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
3704 THEN
3705 RAISE FND_API.G_EXC_ERROR;
3706 END IF;
3707
3708 IF (p_commit = FND_API.G_TRUE) THEN
3709 COMMIT;
3710 END IF;
3711
3712 -- Bug 3735089 : using reset_curr_function too, just using set_curr_function may overflow it after several recursive calls
3713 -- and it gives ORA 06512 numeric or value error
3714 IF l_debug_mode = 'Y' THEN
3715 Pa_Debug.reset_curr_function;
3716 END IF;
3717
3718 EXCEPTION
3719
3720 WHEN FND_API.G_EXC_ERROR THEN
3721
3722 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3723 l_msg_count := Fnd_Msg_Pub.count_msg;
3724
3725 IF p_commit = FND_API.G_TRUE THEN
3726 ROLLBACK TO SYNC_UP_WITH_FIN_PUBLIC;
3727 END IF;
3728
3729
3730 IF l_msg_count = 1 AND x_msg_data IS NULL
3731 THEN
3732 Pa_Interface_Utils_Pub.get_messages
3733 ( p_encoded => Fnd_Api.G_TRUE
3734 , p_msg_index => 1
3735 , p_msg_count => l_msg_count
3736 , p_msg_data => l_msg_data
3737 , p_data => l_data
3738 , p_msg_index_out => l_msg_index_out);
3739 x_msg_data := l_data;
3740 x_msg_count := l_msg_count;
3741 ELSE
3742 x_msg_count := l_msg_count;
3743 END IF;
3744 IF l_debug_mode = 'Y' THEN
3745 Pa_Debug.reset_curr_function;
3746 END IF;
3747
3748 WHEN Invalid_Arg_Exc_WP THEN
3749
3750 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3751 x_msg_count := 1;
3752 x_msg_data := 'PA_TASKS_MAINT_PUB : SYNC_UP_WP_TASKS_WITH_FIN : NULL PARAMETERS ARE PASSED OR CURSOR DIDNT RETURN ANY ROWS';
3753
3754 IF p_commit = FND_API.G_TRUE THEN
3755 ROLLBACK TO SYNC_UP_WITH_FIN_PUBLIC;
3756 END IF;
3757
3758
3759 Fnd_Msg_Pub.add_exc_msg
3760 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3761 , p_procedure_name => 'SYNC_UP_WP_TASKS_WITH_FIN'
3762 , p_error_text => x_msg_data);
3763 IF l_debug_mode = 'Y' THEN
3764 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3765 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3766 l_debug_level5);
3767
3768 Pa_Debug.reset_curr_function;
3769 END IF;
3770 RAISE;
3771
3772 WHEN OTHERS THEN
3773
3774 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3775 x_msg_count := 1;
3776 x_msg_data := substr(SQLERRM,1,120);-- Bug 3735089 Added substr
3777
3778 IF p_commit = FND_API.G_TRUE THEN
3779 ROLLBACK TO SYNC_UP_WITH_FIN_PUBLIC;
3780 END IF;
3781
3782
3783
3784 Fnd_Msg_Pub.add_exc_msg
3785 ( p_pkg_name => 'PA_TASKS_MAINT_PUB'
3786 , p_procedure_name => 'SYNC_UP_WP_TASKS_WITH_FIN'
3787 , p_error_text => x_msg_data);
3788
3789 IF l_debug_mode = 'Y' THEN
3790 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
3791 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
3792 l_debug_level5);
3793 Pa_Debug.reset_curr_function;
3794 END IF;
3795 RAISE;
3796 END SYNC_UP_WP_TASKS_WITH_FIN ;
3797
3798 --3279982 End Add rtarway for FP.M develeopment
3799 end PA_TASKS_MAINT_PUB;