[Home] [Help]
PACKAGE BODY: APPS.PA_TASKS_MAINT_PVT
Source
1 package body PA_TASKS_MAINT_PVT as
2 /*$Header: PATSKSVB.pls 120.22.12020000.4 2013/04/09 11:06:47 pstawar ship $*/
3
4 g_pkg_name CONSTANT VARCHAR2(30):= 'PA_TASKS_MAINT_PVT';
5 --begin add by rtarway for FP.M developement
6 Invalid_Arg_Exc_WP Exception;
7 --End add by rtarway for FP.M developement
8 -- API name : CREATE_TASK
9 -- Type : Private Procedure
10 -- Pre-reqs : None
11 -- Return Value : N/A
12 -- Parameters
13 -- p_api_version IN NUMBER := 1.0
14 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
15 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
16 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
17 -- p_validation_level IN VARCHAR2 := 100
18 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
19 -- p_debug_mode IN VARCHAR2 := 'N'
20 -- p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
21 -- p_reference_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
22 -- p_peer_or_sub IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
23 -- p_task_number IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
24 -- p_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
25 -- p_long_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
26 -- p_task_description IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
27 -- p_task_manager_person_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
28 -- p_carrying_out_organization_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
29 -- p_task_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
30 -- p_priority_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
31 -- p_work_type_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
32 -- p_service_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
33 -- p_milestone_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
34 -- p_critical_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
35 -- p_chargeable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
36 -- p_billable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
37 -- p_receive_project_invoice_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
38 -- p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
39 -- p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
40 -- p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
41 -- p_estimated_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
42 -- p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
43 -- p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
44 -- p_task_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
45 -- p_task_completion_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
46 -- p_baseline_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
47 -- p_baseline_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
48 -- p_obligation_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
49 -- p_obligation_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
50 -- p_estimate_to_complete_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
51 -- p_baseline_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
52 -- p_scheduled_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
53 -- p_actual_work_to_date IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
54 -- p_work_unit IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
55 -- p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
56 -- p_job_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
57 -- p_emp_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
58 -- p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
59 -- p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
60 -- p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
61 -- p_pm_parent_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
62 -- p_pa_parent_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
63 -- p_address_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
64 -- p_ready_to_bill_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
65 -- p_ready_to_distribute_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
66 -- p_limit_to_txn_controls_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
67 -- p_labor_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
68 -- p_labor_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
69 -- p_labor_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
70 -- p_labor_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
71 -- p_nl_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
72 -- p_nl_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
73 -- p_nl_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
74 -- p_nl_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
75 -- p_labor_cost_multiplier_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
76 -- p_cost_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
77 -- p_rev_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
78 -- p_inv_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
79 -- p_cost_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
80 -- p_rev_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
81 -- p_inv_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
82 -- p_labor_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
83 -- p_nl_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
84 -- p_early_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
85 -- p_early_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
86 -- p_late_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
87 -- p_late_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
88 -- p_attribute_category IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
89 -- p_attribute1 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
90 -- p_attribute2 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
91 -- p_attribute3 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
92 -- p_attribute4 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
93 -- p_attribute5 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
94 -- p_attribute6 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
95 -- p_attribute7 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
96 -- p_attribute8 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
97 -- p_attribute9 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
98 -- p_attribute10 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
99 -- p_allow_cross_charge_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
100 -- p_project_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
101 -- p_project_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
102 -- p_cc_process_labor_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
103 -- p_labor_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
104 -- p_labor_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
105 -- p_cc_process_nl_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
106 -- p_nl_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
107 -- p_nl_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
108 -- p_inc_proj_progress_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
109 -- p_task_id IN OUT NUMBER
110 -- x_display_seq OUT NUMBER
111 -- x_return_status OUT VARCHAR2
112 -- x_msg_count OUT NUMBER
113 -- x_msg_data OUT VARCHAR2
114 --
115 -- History
116 --
117 -- 25-JUN-01 HSIU -Created
118 --
119 --
120 procedure CREATE_TASK
121 (
122 p_api_version IN NUMBER := 1.0
123 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
124 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
125 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
126 ,p_validation_level IN VARCHAR2 := 100
127 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
128 ,p_debug_mode IN VARCHAR2 := 'N'
129
130 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
131 ,p_reference_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
132 ,p_peer_or_sub IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
133 ,p_task_number IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
134 ,p_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
135 ,p_long_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
136 ,p_task_description IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
137 ,p_task_manager_person_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
138 ,p_carrying_out_organization_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
139 ,p_task_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
140 ,p_priority_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
141 ,p_work_type_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
142 ,p_service_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
143 ,p_milestone_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
144 ,p_critical_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
145 ,p_chargeable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
146 ,p_billable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
147 ,p_receive_project_invoice_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
148 ,p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
149 ,p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
150 ,p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
151 ,p_estimated_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
152 ,p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
153 ,p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
154 ,p_task_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
155 ,p_task_completion_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
156 ,p_baseline_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
157 ,p_baseline_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
158
159 ,p_obligation_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
160 ,p_obligation_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
161 ,p_estimate_to_complete_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
162 ,p_baseline_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
163 ,p_scheduled_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
164 ,p_actual_work_to_date IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
165 ,p_work_unit IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
166 ,p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
167
168 ,p_job_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
169 ,p_emp_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
170 ,p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
171 ,p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
172 ,p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
173 ,p_pm_parent_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
174 ,p_pa_parent_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
175 ,p_address_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
176 ,p_ready_to_bill_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
177 ,p_ready_to_distribute_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
178 ,p_limit_to_txn_controls_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
179 ,p_labor_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
180 ,p_labor_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
181 ,p_labor_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
182 ,p_labor_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
183 ,p_nl_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
184 ,p_nl_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
185 ,p_nl_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
186 ,p_nl_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
187 ,p_labor_cost_multiplier_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
188 ,p_cost_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
189 ,p_rev_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
190 ,p_inv_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
191 ,p_cost_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
192 ,p_rev_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
193 ,p_inv_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
194 ,p_labor_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
195 ,p_nl_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
196 ,p_early_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
197 ,p_early_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
198 ,p_late_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
199 ,p_late_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
200 ,p_attribute_category IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
201 ,p_attribute1 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
202 ,p_attribute2 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
203 ,p_attribute3 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
204 ,p_attribute4 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
205 ,p_attribute5 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
206 ,p_attribute6 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
207 ,p_attribute7 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
208 ,p_attribute8 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
209 ,p_attribute9 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
210 ,p_attribute10 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
211 ,p_allow_cross_charge_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
212 ,p_project_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
213 ,p_project_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
214 ,p_cc_process_labor_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
215 ,p_labor_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
216 ,p_labor_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
217 ,p_cc_process_nl_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
218 ,p_nl_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
219 ,p_nl_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
220 ,p_inc_proj_progress_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
221 ,p_taskfunc_cost_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
222 ,p_taskfunc_cost_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
223 ,p_non_lab_std_bill_rt_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
224 ,p_labor_disc_reason_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
225 ,p_non_labor_disc_reason_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
226 --PA L Capital Project Changes 2872708
227 ,p_retirement_cost_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
228 ,p_cint_eligible_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
229 ,p_cint_stop_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
230 --End PA L Capital Project Changes 2872708
231
232 ,p_task_id IN OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
233 ,x_display_seq OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
234
235 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
236 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
237 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
238 )
239 IS
240 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TASK';
241 l_api_version CONSTANT NUMBER := 1.0;
242 l_msg_count NUMBER;
243 l_err_code NUMBER := 0;
244 l_err_stack VARCHAR2(630);
245 l_err_stage VARCHAR2(80); -- VARCHAR2(80)
246 l_data VARCHAR2(250);
247 l_msg_data VARCHAR2(250);
248 l_msg_index_out NUMBER;
249
250 l_delete_project_allowed VARCHAR2(1);
251 l_update_proj_num_allowed VARCHAR2(1);
252 l_update_proj_name_allowed VARCHAR2(1);
253 l_update_proj_desc_allowed VARCHAR2(1);
254 l_update_proj_dates_allowed VARCHAR2(1);
255 l_update_proj_status_allowed VARCHAR2(1);
256 l_update_proj_manager_allowed VARCHAR2(1);
257 l_update_proj_org_allowed VARCHAR2(1);
258 l_add_task_allowed VARCHAR2(1);
259 l_delete_task_allowed VARCHAR2(1);
260 l_update_task_num_allowed VARCHAR2(1);
261 l_update_task_name_allowed VARCHAR2(1);
262 l_update_task_dates_allowed VARCHAR2(1);
263 l_update_task_desc_allowed VARCHAR2(1);
264 l_update_parent_task_allowed VARCHAR2(1);
265 l_update_task_org_allowed VARCHAR2(1);
266 l_f1 VARCHAR2(1);
267 l_f2 VARCHAR2(1);
268 l_ret VARCHAR2(1);
269 l_msg_cnt NUMBER;
270
271 l_rowid VARCHAR2(50);
272 l_new_task_id NUMBER;
273 l_parent_task_id NUMBER;
274 l_top_task_id NUMBER;
275
276 l_sequence_number NUMBER;
277
278 -- For Task Attributes, for defaulting
279 TDESCRIPTION VARCHAR2(250);
280 TTASK_ID NUMBER;
281 TTOP_TASK_ID NUMBER;
282 TPARENT_TASK_ID NUMBER;
283 TADDRESS_ID NUMBER;
284 TREADY_TO_BILL_FLAG VARCHAR2(1);
285 TREADY_TO_DISTRIBUTE_FLAG VARCHAR2(1);
286 TCARRYING_OUT_ORG_ID NUMBER;
287 TSERVICE_TYPE_CODE VARCHAR2(30);
288 TTASK_MANAGER_PERSON_ID NUMBER;
289 TCHARGEABLE VARCHAR2(1);
290 TBILLABLE VARCHAR2(1);
291 TLIMIT_TO_TXN_CONTROLS_FLAG VARCHAR2(1);
292 TSTART_DATE DATE;
293 TCOMPLETION_DATE DATE;
294 TLABOR_BILL_RATE_ORG_ID NUMBER;
295 TLABOR_STD_BILL_RATE_SCHDL VARCHAR2(30);
296 TLABOR_SCHEDULE_FIXED_DATE DATE;
297 TLABOR_SCHEDULE_DISCOUNT NUMBER;
298 TNLR_BILL_RATE_ORG_ID NUMBER;
299 TNLR_STD_BILL_RATE_SCHDL VARCHAR2(30);
300 TNLR_SCHEDULE_FIXED_DATE DATE;
301 TNLR_SCHEDULE_DISCOUNT NUMBER;
302 TCOST_IND_RATE_SCH_ID NUMBER;
303 TREV_IND_RATE_SCH_ID NUMBER;
304 TINV_IND_RATE_SCH_ID NUMBER;
305 TCOST_IND_SCH_FIXED_DATE DATE;
306 TREV_IND_SCH_FIXED_DATE DATE;
307 TINV_IND_SCH_FIXED_DATE DATE;
308 TLABOR_SCH_TYPE VARCHAR2(1);
309 TNLR_SCH_TYPE VARCHAR2(1);
310 TALLOW_CROSS_CHARGE_FLAG VARCHAR2(1);
311 TPROJECT_RATE_TYPE VARCHAR2(30);
312 TPROJECT_RATE_DATE DATE;
313 TCC_PROCESS_LABOR_FLAG VARCHAR2(1);
314 TLABOR_TP_SCHEDULE_ID NUMBER;
315 TLABOR_TP_FIXED_DATE DATE;
316 TCC_PROCESS_NL_FLAG VARCHAR2(1);
317 TNL_TP_SCHEDULE_ID NUMBER;
318 TNL_TP_FIXED_DATE DATE;
319 TRECEIVE_PROJECT_INVOICE_FLAG VARCHAR2(1);
320 TWORK_TYPE_ID NUMBER;
321 TJOB_BILL_RATE_SCHEDULE_ID NUMBER;
322 TEMP_BILL_RATE_SCHEDULE_ID NUMBER;
323 --NEW ATTRIBUTES
324 TTASK_TYPE_CODE VARCHAR2(30);
325 TPRIORITY_CODE VARCHAR2(30);
326 TCRITICAL_FLAG VARCHAR2(1);
327 TMILESTONE_FLAG VARCHAR2(1);
328 TESTIMATED_START_DATE DATE;
329 TESTIMATED_END_DATE DATE;
330 TBASELINE_START_DATE DATE;
331 TBASELINE_END_DATE DATE;
332 TOBLIGATION_START_DATE DATE;
333 TOBLIGATION_END_DATE DATE;
334 TSCHEDULED_START_DATE DATE;
335 TSCHEDULED_FINISH_DATE DATE;
336 TESTIMATE_TO_COMPLETE_WORK NUMBER;
337 TBASELINE_WORK NUMBER;
338 TSCHEDULED_WORK NUMBER;
339 TACTUAL_WORK_TO_DATE NUMBER;
340 TWORK_UNIT_CODE VARCHAR2(30);
341 TPROGRESS_STATUS_CODE VARCHAR2(30);
342 TWBS_LEVEL NUMBER;
343
344 TACTUAL_START_DATE DATE;
345 TACTUAL_FINISH_DATE DATE;
346 TPA_PARENT_TASK_ID NUMBER;
347 TLABOR_COST_MULTIPLIER_NAME VARCHAR2(20);
348 TEARLY_START_DATE DATE;
349 TEARLY_FINISH_DATE DATE;
350 TLATE_START_DATE DATE;
351 TLATE_FINISH_DATE DATE;
352 TATTRIBUTE_CATEGORY VARCHAR2(30);
353 TATTRIBUTE1 VARCHAR2(150);
354 TATTRIBUTE2 VARCHAR2(150);
355 TATTRIBUTE3 VARCHAR2(150);
356 TATTRIBUTE4 VARCHAR2(150);
357 TATTRIBUTE5 VARCHAR2(150);
358 TATTRIBUTE6 VARCHAR2(150);
359 TATTRIBUTE7 VARCHAR2(150);
360 TATTRIBUTE8 VARCHAR2(150);
361 TATTRIBUTE9 VARCHAR2(150);
362 TATTRIBUTE10 VARCHAR2(150);
363
364 TPROJECT_TYPE VARCHAR2(20);
365 CARRYING_OUT_ORG_ID_TMP NUMBER;
366 Tinc_proj_progress_flag VARCHAR2(1);
367 ttaskfunc_cost_rate_type VARCHAR2(30);
368 ttaskfunc_cost_rate_date DATE;
369 tnon_lab_std_bill_rt_Sch_id NUMBER;
370 Tlabor_disc_reason_code VARCHAR2(30);
371 Tnon_labor_disc_reason_code VARCHAR2(30);
372
373 --PA L Capital Project Changes 2872708
374 tretirement_cost_flag VARCHAR2(1);
375 tcint_eligible_flag VARCHAR2(1);
376 tcint_stop_date DATE;
377 --End PA L Capital Project Changes 2872708
378
379 TGEN_ETC_SOURCE_CODE VARCHAR2(30);
380 /*FPM development for Project Setup */
381 l_customer_id Number;
382 l_revenue_accrual_method varchar2(30);
383 l_invoice_method varchar2(30);
384 l_project_type_class_code varchar2(80);
385 l_adj_on_std_inv varchar2(2); /* Added for 12.2Payroll billing ER 11899223 */
386 --cursor for getting reference task info; from FORMS task2.create_task
387 --new columns added starting from task_type_code
388 CURSOR ref_task IS
389 SELECT TASK_ID,
390 TOP_TASK_ID,
391 PARENT_TASK_ID,
392 ADDRESS_ID,
393 'N', -- READY_TO_BILL_FLAG
394 'N', -- READY_TO_DISTRIBUTE_FLAG
395 CARRYING_OUT_ORGANIZATION_ID,
396 SERVICE_TYPE_CODE,
397 TASK_MANAGER_PERSON_ID,
398 'Y', -- CHARGEABLE_FLAG
399 BILLABLE_FLAG,
400 'N', -- LIMIT_TO_TXN_CONTROLS_FLAG
401 START_DATE,
402 COMPLETION_DATE,
403 LABOR_BILL_RATE_ORG_ID,
404 LABOR_STD_BILL_RATE_SCHDL,
405 LABOR_SCHEDULE_FIXED_DATE,
406 LABOR_SCHEDULE_DISCOUNT,
407 NON_LABOR_BILL_RATE_ORG_ID,
408 NON_LABOR_STD_BILL_RATE_SCHDL,
409 NON_LABOR_SCHEDULE_FIXED_DATE,
410 NON_LABOR_SCHEDULE_DISCOUNT,
411 COST_IND_RATE_SCH_ID,
412 REV_IND_RATE_SCH_ID,
413 INV_IND_RATE_SCH_ID,
414 COST_IND_SCH_FIXED_DATE,
415 REV_IND_SCH_FIXED_DATE,
416 INV_IND_SCH_FIXED_DATE,
417 LABOR_SCH_TYPE,
418 NON_LABOR_SCH_TYPE,
419 ALLOW_CROSS_CHARGE_FLAG,
420 PROJECT_RATE_TYPE,
421 PROJECT_RATE_DATE,
422 CC_PROCESS_LABOR_FLAG,
423 LABOR_TP_SCHEDULE_ID,
424 LABOR_TP_FIXED_DATE,
425 CC_PROCESS_NL_FLAG,
426 NL_TP_SCHEDULE_ID,
427 NL_TP_FIXED_DATE,
428 'N', -- RECEIVE_PROJECT_INVOICE_FLAG
429 WORK_TYPE_ID,
430 JOB_BILL_RATE_SCHEDULE_ID,
431 EMP_BILL_RATE_SCHEDULE_ID,
432 -- HY TASK_TYPE_CODE,
433 -- HY PRIORITY_CODE,
434 -- HY CRITICAL_FLAG,
435 -- HY MILESTONE_FLAG,
436 -- HY ESTIMATED_START_DATE,
437 -- HY ESTIMATED_END_DATE,
438 SCHEDULED_START_DATE,
439 SCHEDULED_FINISH_DATE,
440 -- HY ESTIMATE_TO_COMPLETE_WORK,
441 -- HY SCHEDULED_WORK,
442 -- HY WORK_UNIT_CODE,
443 -- HY PROGRESS_STATUS_CODE,
444 WBS_LEVEL,
445 -- HY inc_proj_progress_flag,
446 taskfunc_cost_rate_type,
447 taskfunc_cost_rate_date,
448 non_lab_std_bill_rt_sch_id,
449 labor_disc_reason_code,
450 non_labor_disc_reason_code,
451 --PA L Capital Project changes 2872708
452 retirement_cost_flag,
453 cint_eligible_flag,
454 cint_stop_date,
455 --End PA L Capital Project changes 2872708
456 /*FPM development for Project Setup */
457 customer_id,
458 revenue_accrual_method,
459 invoice_method,
460 GEN_ETC_SOURCE_CODE
461 FROM PA_TASKS
462 WHERE TASK_ID = p_reference_task_id;
463
464 -- cursor for defaulting peer task that is not a top task.
465 CURSOR ref_parent_task IS
466 SELECT T.TASK_ID,
467 T.TOP_TASK_ID,
468 T.PARENT_TASK_ID,
469 T.ADDRESS_ID,
470 'N',
471 'N',
472 T.CARRYING_OUT_ORGANIZATION_ID,
473 T.SERVICE_TYPE_CODE,
474 T.TASK_MANAGER_PERSON_ID,
475 'Y', -- CHARGEABLE_FLAG
476 T.BILLABLE_FLAG,
477 'N', -- LIMIT_TO_TXN_CONTROLS_FLAG
478 T.START_DATE,
479 T.COMPLETION_DATE,
480 T.LABOR_BILL_RATE_ORG_ID,
481 T.LABOR_STD_BILL_RATE_SCHDL,
482 T.LABOR_SCHEDULE_FIXED_DATE,
483 T.LABOR_SCHEDULE_DISCOUNT,
484 T.NON_LABOR_BILL_RATE_ORG_ID,
485 T.NON_LABOR_STD_BILL_RATE_SCHDL,
486 T.NON_LABOR_SCHEDULE_FIXED_DATE,
487 T.NON_LABOR_SCHEDULE_DISCOUNT,
488 T.COST_IND_RATE_SCH_ID,
489 T.REV_IND_RATE_SCH_ID,
490 T.INV_IND_RATE_SCH_ID,
491 T.COST_IND_SCH_FIXED_DATE,
492 T.REV_IND_SCH_FIXED_DATE,
493 T.INV_IND_SCH_FIXED_DATE,
494 T.LABOR_SCH_TYPE,
495 T.NON_LABOR_SCH_TYPE,
496 T.ALLOW_CROSS_CHARGE_FLAG,
497 T.PROJECT_RATE_TYPE,
498 T.PROJECT_RATE_DATE,
499 T.CC_PROCESS_LABOR_FLAG,
500 T.LABOR_TP_SCHEDULE_ID,
501 T.LABOR_TP_FIXED_DATE,
502 T.CC_PROCESS_NL_FLAG,
503 T.NL_TP_SCHEDULE_ID,
504 T.NL_TP_FIXED_DATE,
505 'N', -- RECEIVE_PROJECT_INVOICE_FLAG
506 T.WORK_TYPE_ID,
507 T.JOB_BILL_RATE_SCHEDULE_ID,
508 T.EMP_BILL_RATE_SCHEDULE_ID,
509 -- HY T.TASK_TYPE_CODE,
510 -- HY T.PRIORITY_CODE,
511 -- HY T.CRITICAL_FLAG,
512 -- HY T.MILESTONE_FLAG,
513 -- HY T.ESTIMATED_START_DATE,
514 -- HY T.ESTIMATED_END_DATE,
515 T.SCHEDULED_START_DATE,
516 T.SCHEDULED_FINISH_DATE,
517 -- HY T.ESTIMATE_TO_COMPLETE_WORK,
518 -- HY T.SCHEDULED_WORK,
519 -- HY T.WORK_UNIT_CODE,
520 -- HY T.PROGRESS_STATUS_CODE,
521 T.WBS_LEVEL,
522 -- HY T.inc_proj_progress_flag,
523 T.taskfunc_cost_rate_type,
524 T.taskfunc_cost_rate_date,
525 T.non_lab_std_bill_rt_sch_id,
526 T.labor_disc_reason_code,
527 T.non_labor_disc_reason_code,
528 --bug 3032842
529 --PA L Capital Project changes 2872708
530 retirement_cost_flag,
531 cint_eligible_flag,
532 cint_stop_date,
533 --End PA L Capital Project changes 2872708
534 --end bug 3032842
535 /*FPM development for Project Setup */
536 T.customer_id,
537 T.revenue_accrual_method,
538 T.invoice_method,
539 T.GEN_ETC_SOURCE_CODE
540 FROM PA_TASKS T
541 WHERE T.TASK_ID =
542 (SELECT T2.PARENT_TASK_ID
543 FROM PA_TASKS T2
544 WHERE T2.TASK_ID = p_reference_task_id);
545
546 --Cursor for defaulting top task
547 CURSOR top_task IS
548 select
549 NULL,
550 NULL,
551 NULL,
552 NULL,
553 'Y',
554 'Y',
555 pa.carrying_out_organization_id,
556 pt.SERVICE_TYPE_CODE,--service_type_code,
557 pt.project_type_class_code, -- Project Type class code
558 NULL,
559 'Y',
560 'N',
561 'N',
562 pa.start_date,
563 pa.completion_date,
564 pa.labor_bill_rate_org_id,
565 pa.labor_std_bill_rate_schdl,
566 pa.labor_schedule_fixed_date,
567 pa.labor_schedule_discount,
568 pa.non_labor_bill_rate_org_id,
569 pa.non_labor_std_bill_rate_schdl,
570 pa.non_labor_schedule_fixed_date,
571 pa.non_labor_schedule_discount,
572 pa.cost_ind_rate_sch_id,
573 pa.rev_ind_rate_sch_id,
574 pa.inv_ind_rate_sch_id,
575 pa.cost_ind_sch_fixed_date,
576 pa.rev_ind_sch_fixed_date,
577 pa.inv_ind_sch_fixed_date,
578 pa.labor_sch_type,
579 pa.non_labor_sch_type,
580 pa.allow_cross_charge_flag,
581 pa.project_rate_type,
582 pa.project_rate_date,
583 pa.cc_process_labor_flag,
584 pa.labor_tp_schedule_id,
585 pa.labor_tp_fixed_date,
586 pa.cc_process_nl_flag,
587 pa.nl_tp_schedule_id,
588 nl_tp_fixed_date,
589 'N',
590 pa.work_type_id,
591 pa.job_bill_rate_schedule_id,
592 pa.emp_bill_rate_schedule_id,
593 NULL,
594 NULL,
595 'N',
596 'N',
597 NULL,
598 NULL,
599 NULL,
600 NULL,
601 NULL,
602 NULL,
603 NULL,
604 NULL,
605 1, --WBS_LEVEL
606 --bug 3032842
607 --PA L Capital Project changes 2872708
608 'N', --retirment_flag
609 decode( template_flag, 'N', 'N', 'Y' ), --cint_eligible_flag
610 /*FPM development for Project Setup */
611 pa.revenue_accrual_method,
612 pa.Invoice_method,
613 --End PA L Capital Project changes 2872708
614 NULL,
615 --end bug 3032842
616 pa.Non_lab_std_bill_rt_sch_id -- Added for bug 4963525.
617 FROM PA_PROJECTS_ALL pa,
618 PA_PROJECT_TYPES_ALL pt
619 WHERE pa.PROJECT_ID = p_project_id and
620 pa.PROJECT_TYPE = pt.PROJECT_TYPE and
621 pa.ORG_ID = pt.ORG_ID;--MOAC Changes: Bug 4363092 : removed nvl usage with org_id
622
623 CURSOR work_type_from_proj IS
624 SELECT WORK_TYPE_ID, PROJECT_TYPE, CARRYING_OUT_ORGANIZATION_ID
625 FROM PA_PROJECTS_ALL
626 WHERE PROJECT_ID = p_project_id;
627
628 /* Commented for bug#3512486
629 CURSOR work_type_from_proj_type(v_project_type VARCHAR2) IS
630 SELECT WORK_TYPE_ID
631 FROM PA_PROJECT_TYPES
632 WHERE PROJECT_TYPE = v_project_type; */
633
634 /* Modified the cursor work_type_from_proj_type for bug#3512486 */
635 --MOAC Changes: Bug 4363092 : removed nvl usage with org_id
636 CURSOR work_type_from_proj_type(v_project_type VARCHAR2) IS
637 SELECT PT.WORK_TYPE_ID
638 FROM PA_PROJECT_TYPES_ALL PT, PA_PROJECTS_ALL PA
639 WHERE PT.PROJECT_TYPE = v_project_type
640 and PA.PROJECT_ID = p_project_id
641 and PA.ORG_ID = PT.ORG_ID;
642
643
644 CURSOR billable_flag_c(v_work_type_id NUMBER) IS
645 SELECT BILLABLE_CAPITALIZABLE_FLAG
646 FROM PA_WORK_TYPES_VL
647 WHERE WORK_TYPE_ID = v_work_type_id;
648
649 /* FPM Changes for Project Setup */
650 CURSOR top_task_customer is
651 SELECT customer_id from pa_project_customers
652 where project_id=p_project_id
653 and default_top_task_cust_flag ='Y';
654 --rtarway, BUG 3924597
655 l_wp_separate_from_fin VARCHAR2(1);
656
657 BEGIN
658 IF (p_debug_mode = 'Y') THEN
659 pa_debug.debug('PA_TASKS_MAINT_PVT.CREATE_TASK BEGIN');
660 END IF;
661
662 IF (p_commit = FND_API.G_TRUE) THEN
663 savepoint CREATE_TASK_PRIVATE;
664 END IF;
665
666 IF (p_debug_mode = 'Y') THEN
667 pa_debug.debug('Performing validations');
668 END IF;
669
670 IF (p_calling_module IN ('EXCHANGE')) THEN
671 --check if task reference is null
672 IF p_reference_task_id IS NULL THEN
673 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_REF_EMPTY');
674 END IF;
675 END IF;
676
677 IF (p_calling_module IN ('FORMS', 'EXCHANGE', 'SELF_SERVICE')) THEN
678 --check if task_name is null
679 IF p_task_name IS NULL THEN
680 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_NAME_EMPTY');
681 END IF;
682 END IF;
683
684 -- Set controls
685 IF (p_calling_module IN ('SELF_SERVICE')) THEN
686 If (p_pm_product_code IS NOT NULL) OR
687 (p_pm_product_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
688 PA_PM_CONTROLS.GET_PROJECT_ACTIONS_ALLOWED(
689 p_pm_product_code => p_pm_product_code,
690 p_delete_project_allowed => l_delete_project_allowed,
691 p_update_proj_num_allowed => l_update_proj_num_allowed,
692 p_update_proj_name_allowed => l_update_proj_name_allowed,
693 p_update_proj_desc_allowed => l_update_proj_desc_allowed,
694 p_update_proj_dates_allowed => l_update_proj_dates_allowed,
695 p_update_proj_status_allowed => l_update_proj_status_allowed,
696 p_update_proj_manager_allowed => l_update_proj_manager_allowed,
697 p_update_proj_org_allowed => l_update_proj_org_allowed,
698 p_add_task_allowed => l_add_task_allowed,
699 p_delete_task_allowed => l_delete_task_allowed,
700 p_update_task_num_allowed => l_update_task_num_allowed,
701 p_update_task_name_allowed => l_update_task_name_allowed,
702 p_update_task_dates_allowed => l_update_task_dates_allowed,
703 p_update_task_desc_allowed => l_update_task_desc_allowed,
704 p_update_parent_task_allowed => l_update_parent_task_allowed,
705 p_update_task_org_allowed => l_update_task_org_allowed,
706 p_error_code => l_err_code,
707 p_error_stack => l_err_stack,
708 p_error_stage => l_err_stage
709 );
710 END IF; --product code is not null
711 END IF;
712
713 -- Check if pm_product code is not null and add_task_allowed = 'N'
714 -- From Task Summary, when-button-pressed
715 -- For Self-service, Exchange, Form
716 IF ((p_pm_product_code IS NOT NULL) OR
717 (p_pm_product_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)) and
718 (l_add_task_allowed = 'N') THEN
719 --throw error PA_PR_PM_CANNOT_ADDTASK
720 PA_UTILS.ADD_MESSAGE('PA', 'PA_PR_PM_CANNOT_ADDTASK');
721 l_msg_count := FND_MSG_PUB.count_msg;
722 IF (l_msg_count > 0) THEN
723 x_msg_count := l_msg_count;
724 IF (x_msg_count = 1) THEN
725 pa_interface_utils_pub.get_messages(
726 p_encoded => FND_API.G_TRUE,
727 p_msg_index => 1,
728 p_data => l_data,
729 p_msg_index_out => l_msg_index_out);
730 x_msg_data := l_data;
731 END IF;
732 RAISE FND_API.G_EXC_ERROR;
733 END IF;
734 END IF;
735
736
737 -- Check if task number is Unique
738 IF (p_calling_module IN ('FORMS', 'SELF_SERVICE')) THEN
739 If Pa_Task_Utils.Check_Unique_Task_number (p_project_id,
740 p_task_number, NULL ) <> 1 Then
741 PA_UTILS.ADD_MESSAGE('PA', 'PA_ALL_DUPLICATE_NUM');
742 END IF;
743 END IF;
744
745 -- Check Start Date; will replace by Date roll-up in future
746 -- Check Completion Date; will replace by Date roll-up in future
747 IF (p_calling_module IN ('FORMS', 'EXCHANGE', 'SELF_SERVICE')) THEN
748 --Check Start Date End Date
749 IF (p_task_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
750 p_task_start_date IS NULL) AND
751 (p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
752 p_task_completion_date IS NULL) THEN
753 PA_TASKS_MAINT_UTILS.check_start_end_date(
754 p_old_start_date => null,
755 p_old_end_date => null,
756 p_new_start_date => p_task_start_date,
757 p_new_end_date => p_task_completion_date,
758 p_update_start_date_flag => l_f1,
759 p_update_end_date_flag => l_f2,
760 p_return_status => l_ret);
761 IF (l_ret <> 'S') THEN
762 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
763 p_msg_name => 'PA_SU_INVALID_DATES');
764 END IF;
765 END IF;
766 END IF;
767
768 IF (p_calling_module IN ('SELF_SERVICE')) THEN
769 -- Check if PRM is installed
770 IF (PA_INSTALL.IS_PRM_LICENSED() = 'Y') THEN
771 -- Work Type is required
772 IF (p_work_type_id IS NULL) THEN
773 PA_UTILS.ADD_MESSAGE('PA','PA_WORK_TYPE_REQ');
774 END IF;
775 END IF;
776 null;
777 END IF;
778
779 -- Check if there is any error. Get new Task Id if no error
780 l_msg_count := FND_MSG_PUB.count_msg;
781 IF (l_msg_count > 0) THEN
782 x_msg_count := l_msg_count;
783 IF (x_msg_count = 1) THEN
784 pa_interface_utils_pub.get_messages(
785 p_encoded => FND_API.G_TRUE,
786 p_msg_index => 1,
787 p_data => l_data,
788 p_msg_index_out => l_msg_index_out);
789 x_msg_data := l_data;
790 END IF;
791 RAISE FND_API.G_EXC_ERROR;
792 END IF;
793
794
795 -- Get Task Id
796 --Commented the following line and replaced with new one.
797 -- IF (p_calling_module IN ('FORMS', 'EXCHANGE', 'SELF_SERVICE')) THEN
798 IF p_task_id IS NULL THEN --Added by Ansari
799 select PA_TASKS_S.NEXTVAL INTO l_new_task_id from sys.dual;
800 ELSE --Added by Ansari
801 l_new_task_id := p_task_id;
802 END IF;
803
804 -- Check if this is a Subtask or a Peer task
805 --HSIU, modified for structures
806 IF (p_peer_or_sub = 'SUB') AND
807 (p_reference_task_id IS NOT NULL OR p_reference_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
808
809 -- Add as subtask
810
811 -- Check create subtask ok
812 IF (p_calling_module IN ('FORMS', 'SELF_SERVICE')) THEN
813 --Call PA_TASK_UTILS.CHECK_CREATE_SUBTASK_OK
814 PA_TASK_UTILS.CHECK_CREATE_SUBTASK_OK(x_task_id => p_reference_task_id,
815 x_err_code => l_err_code,
816 x_err_stack => l_err_stack,
817 x_err_stage => l_err_stage
818 );
819 IF (l_err_code <> 0) THEN
820 PA_UTILS.ADD_MESSAGE('PA', substr(l_err_stage,1,30));
821 END IF;
822 END IF;
823
824 -- Copy parent task attributes to task.
825 IF (p_calling_module IN ('FORMS', 'SELF_SERVICE')) THEN
826 --Select attributes from parent task (cursor)
827 OPEN ref_task;
828 FETCH ref_task INTO
829 TTASK_ID,
830 TTOP_TASK_ID,
831 TPARENT_TASK_ID,
832 TADDRESS_ID,
833 TREADY_TO_BILL_FLAG,
834 TREADY_TO_DISTRIBUTE_FLAG,
835 TCARRYING_OUT_ORG_ID,
836 TSERVICE_TYPE_CODE,
837 TTASK_MANAGER_PERSON_ID,
838 TCHARGEABLE,
839 TBILLABLE,
840 TLIMIT_TO_TXN_CONTROLS_FLAG,
841 TSTART_DATE,
842 TCOMPLETION_DATE,
843 TLABOR_BILL_RATE_ORG_ID,
844 TLABOR_STD_BILL_RATE_SCHDL,
845 TLABOR_SCHEDULE_FIXED_DATE,
846 TLABOR_SCHEDULE_DISCOUNT,
847 TNLR_BILL_RATE_ORG_ID,
848 TNLR_STD_BILL_RATE_SCHDL,
849 TNLR_SCHEDULE_FIXED_DATE,
850 TNLR_SCHEDULE_DISCOUNT,
851 TCOST_IND_RATE_SCH_ID,
852 TREV_IND_RATE_SCH_ID,
853 TINV_IND_RATE_SCH_ID,
854 TCOST_IND_SCH_FIXED_DATE,
855 TREV_IND_SCH_FIXED_DATE,
856 TINV_IND_SCH_FIXED_DATE,
857 TLABOR_SCH_TYPE,
858 TNLR_SCH_TYPE,
859 TALLOW_CROSS_CHARGE_FLAG,
860 TPROJECT_RATE_TYPE,
861 TPROJECT_RATE_DATE,
862 TCC_PROCESS_LABOR_FLAG,
863 TLABOR_TP_SCHEDULE_ID,
864 TLABOR_TP_FIXED_DATE,
865 TCC_PROCESS_NL_FLAG,
866 TNL_TP_SCHEDULE_ID,
867 TNL_TP_FIXED_DATE,
868 TRECEIVE_PROJECT_INVOICE_FLAG,
869 TWORK_TYPE_ID,
870 TJOB_BILL_RATE_SCHEDULE_ID,
871 TEMP_BILL_RATE_SCHEDULE_ID,
872 -- HY TTASK_TYPE_CODE,
873 -- HY TPRIORITY_CODE,
874 -- HY TCRITICAL_FLAG,
875 -- HY TMILESTONE_FLAG,
876 -- HY TESTIMATED_START_DATE,
877 -- HY TESTIMATED_END_DATE,
878 TSCHEDULED_START_DATE,
879 TSCHEDULED_FINISH_DATE,
880 -- HY TESTIMATE_TO_COMPLETE_WORK,
881 -- HY TSCHEDULED_WORK,
882 -- HY TWORK_UNIT_CODE,
883 -- HY TPROGRESS_STATUS_CODE,
884 TWBS_LEVEL,
885 -- HY Tinc_proj_progress_flag,
886 Ttaskfunc_cost_rate_type,
887 Ttaskfunc_cost_rate_date,
888 Tnon_lab_std_bill_rt_Sch_id,
889 Tlabor_disc_reason_code,
890 Tnon_labor_disc_reason_code,
891 --PA L Capital Project changes 2872708
892 tretirement_cost_flag,
893 tcint_eligible_flag,
894 tcint_stop_date,
895 --End PA L Capital Project changes 2872708
896 /*FPM development for Project Setup */
897 l_customer_id,
898 l_revenue_accrual_method,
899 l_invoice_method,
900 TGEN_ETC_SOURCE_CODE;
901
902 -- IF ref_task%NOTFOUND THEN
903 --This should not occur
904 -- END IF;
905 CLOSE ref_task;
906
907 -- Setting parent and top task id
908 l_parent_task_id := TTASK_ID;
909 l_top_task_id := TTOP_TASK_ID;
910 TWBS_LEVEL := TWBS_LEVEL + 1;
911 END IF;
912
913 -- ELSIF (p_peer_or_sub = 'PEER') THEN
914 -- HSIU, for creating the first task in a structure since
915 -- p_peer_or_sub is 'SUB' if reference is structure
916 ELSE
917 -- Add as peer task
918 -- Insert Peer task
919 OPEN ref_parent_task;
920 FETCH ref_parent_task INTO
921 TTASK_ID
922 ,TTOP_TASK_ID
923 ,TPARENT_TASK_ID
924 ,TADDRESS_ID
925 ,TREADY_TO_BILL_FLAG
926 ,TREADY_TO_DISTRIBUTE_FLAG
927 ,TCARRYING_OUT_ORG_ID
928 ,TSERVICE_TYPE_CODE
929 ,TTASK_MANAGER_PERSON_ID
930 ,TCHARGEABLE
931 ,TBILLABLE
932 ,TLIMIT_TO_TXN_CONTROLS_FLAG
933 ,TSTART_DATE
934 ,TCOMPLETION_DATE
935 ,TLABOR_BILL_RATE_ORG_ID
936 ,TLABOR_STD_BILL_RATE_SCHDL
937 ,TLABOR_SCHEDULE_FIXED_DATE
938 ,TLABOR_SCHEDULE_DISCOUNT
939 ,TNLR_BILL_RATE_ORG_ID
940 ,TNLR_STD_BILL_RATE_SCHDL
941 ,TNLR_SCHEDULE_FIXED_DATE
942 ,TNLR_SCHEDULE_DISCOUNT
943 ,TCOST_IND_RATE_SCH_ID
944 ,TREV_IND_RATE_SCH_ID
945 ,TINV_IND_RATE_SCH_ID
946 ,TCOST_IND_SCH_FIXED_DATE
947 ,TREV_IND_SCH_FIXED_DATE
948 ,TINV_IND_SCH_FIXED_DATE
949 ,TLABOR_SCH_TYPE
950 ,TNLR_SCH_TYPE
951 ,TALLOW_CROSS_CHARGE_FLAG
952 ,TPROJECT_RATE_TYPE
953 ,TPROJECT_RATE_DATE
954 ,TCC_PROCESS_LABOR_FLAG
955 ,TLABOR_TP_SCHEDULE_ID
956 ,TLABOR_TP_FIXED_DATE
957 ,TCC_PROCESS_NL_FLAG
958 ,TNL_TP_SCHEDULE_ID
959 ,TNL_TP_FIXED_DATE
960 ,TRECEIVE_PROJECT_INVOICE_FLAG
961 ,TWORK_TYPE_ID
962 ,TJOB_BILL_RATE_SCHEDULE_ID
963 ,TEMP_BILL_RATE_SCHEDULE_ID
964 -- HY ,TTASK_TYPE_CODE
965 -- HY ,TPRIORITY_CODE
966 -- HY ,TCRITICAL_FLAG
967 -- HY ,TMILESTONE_FLAG
968 -- HY ,TESTIMATED_START_DATE
969 -- HY ,TESTIMATED_END_DATE
970 ,TSCHEDULED_START_DATE
971 ,TSCHEDULED_FINISH_DATE
972 -- HY ,TESTIMATE_TO_COMPLETE_WORK
973 -- HY ,TSCHEDULED_WORK
974 -- HY ,TWORK_UNIT_CODE
975 -- HY ,TPROGRESS_STATUS_CODE
976 ,TWBS_LEVEL
977 -- HY ,Tinc_proj_progress_flag
978 ,Ttaskfunc_cost_rate_type
979 ,Ttaskfunc_cost_rate_date
980 ,Tnon_lab_std_bill_rt_Sch_id
981 ,Tlabor_disc_reason_code
982 ,Tnon_labor_disc_reason_code
983 --bug 3032842
984 --PA L Capital Project changes 2872708
985 ,tretirement_cost_flag
986 ,tcint_eligible_flag
987 ,tcint_stop_date
988 --End PA L Capital Project changes 2872708
989 --end bug 3032842
990 /*FPM development for Project Setup */
991 ,l_customer_id
992 ,l_revenue_accrual_method
993 ,l_invoice_method
994 ,TGEN_ETC_SOURCE_CODE;
995 IF (ref_parent_task%NOTFOUND) THEN
996 --DEFAULT FROM PROJECT
997 OPEN top_task;
998 FETCH top_task INTO
999 TTASK_ID
1000 ,TTOP_TASK_ID
1001 ,TPARENT_TASK_ID
1002 ,TADDRESS_ID
1003 ,TREADY_TO_BILL_FLAG
1004 ,TREADY_TO_DISTRIBUTE_FLAG
1005 ,TCARRYING_OUT_ORG_ID
1006 ,TSERVICE_TYPE_CODE
1007 ,l_project_type_class_code
1008 ,TTASK_MANAGER_PERSON_ID
1009 ,TCHARGEABLE
1010 ,TBILLABLE
1011 ,TLIMIT_TO_TXN_CONTROLS_FLAG
1012 ,TSTART_DATE
1013 ,TCOMPLETION_DATE
1014 ,TLABOR_BILL_RATE_ORG_ID
1015 ,TLABOR_STD_BILL_RATE_SCHDL
1016 ,TLABOR_SCHEDULE_FIXED_DATE
1017 ,TLABOR_SCHEDULE_DISCOUNT
1018 ,TNLR_BILL_RATE_ORG_ID
1019 ,TNLR_STD_BILL_RATE_SCHDL
1020 ,TNLR_SCHEDULE_FIXED_DATE
1021 ,TNLR_SCHEDULE_DISCOUNT
1022 ,TCOST_IND_RATE_SCH_ID
1023 ,TREV_IND_RATE_SCH_ID
1024 ,TINV_IND_RATE_SCH_ID
1025 ,TCOST_IND_SCH_FIXED_DATE
1026 ,TREV_IND_SCH_FIXED_DATE
1027 ,TINV_IND_SCH_FIXED_DATE
1028 ,TLABOR_SCH_TYPE
1029 ,TNLR_SCH_TYPE
1030 ,TALLOW_CROSS_CHARGE_FLAG
1031 ,TPROJECT_RATE_TYPE
1032 ,TPROJECT_RATE_DATE
1033 ,TCC_PROCESS_LABOR_FLAG
1034 ,TLABOR_TP_SCHEDULE_ID
1035 ,TLABOR_TP_FIXED_DATE
1036 ,TCC_PROCESS_NL_FLAG
1037 ,TNL_TP_SCHEDULE_ID
1038 ,TNL_TP_FIXED_DATE
1039 ,TRECEIVE_PROJECT_INVOICE_FLAG
1040 ,TWORK_TYPE_ID
1041 ,TJOB_BILL_RATE_SCHEDULE_ID
1042 ,TEMP_BILL_RATE_SCHEDULE_ID
1043 ,TTASK_TYPE_CODE
1044 ,TPRIORITY_CODE
1045 ,TCRITICAL_FLAG
1046 ,TMILESTONE_FLAG
1047 ,TESTIMATED_START_DATE
1048 ,TESTIMATED_END_DATE
1049 ,TSCHEDULED_START_DATE
1050 ,TSCHEDULED_FINISH_DATE
1051 ,TESTIMATE_TO_COMPLETE_WORK
1052 ,TSCHEDULED_WORK
1053 ,TWORK_UNIT_CODE
1054 ,TPROGRESS_STATUS_CODE
1055 ,TWBS_LEVEL
1056 --bug 3032842
1057 --PA L Capital Project changes 2872708
1058 ,tretirement_cost_flag
1059 ,tcint_eligible_flag
1060 /*FPM development for Project Setup */
1061 ,l_revenue_accrual_method
1062 ,l_invoice_method
1063 --End PA L Capital Project changes 2872708
1064 --end bug 3032842
1065 ,TGEN_ETC_SOURCE_CODE
1066 ,Tnon_lab_std_bill_rt_Sch_id ; -- Bug 4963525
1067 CLOSE top_task;
1068
1069 TADDRESS_ID := PA_TASKS_MAINT_UTILS.DEFAULT_ADDRESS_ID(p_project_id);
1070 l_parent_task_id := NULL;
1071 l_top_task_id := l_new_task_id;
1072 /*FPM development for Project Setup */
1073 IF l_project_type_class_code ='CONTRACT' THEN
1074 open top_task_customer;
1075 Fetch top_task_customer into l_customer_id;
1076 close top_task_customer;
1077
1078 TBILLABLE := 'Y'; --Bug 7524711
1079
1080 END IF;
1081
1082 ELSE
1083 -- Peer task found.
1084 l_parent_task_id := TTASK_ID;
1085 l_top_task_id := TTOP_TASK_ID;
1086 TWBS_LEVEL := TWBS_LEVEL + 1;
1087 END IF;
1088 CLOSE ref_parent_task;
1089 END IF;
1090
1091 l_msg_count := FND_MSG_PUB.count_msg; --commented by ansari
1092
1093 IF (p_calling_module IN ('FORMS', 'EXCHANGE', 'SELF_SERVICE')) THEN
1094 --Check Start Date
1095 IF (p_task_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1096 PA_TASKS_MAINT_UTILS.Check_Start_Date(
1097 p_project_id => p_project_id,
1098 p_parent_task_id => l_parent_task_id,
1099 p_task_id => NULL,
1100 p_start_date => p_task_start_date,
1101 x_return_status => l_ret,
1102 x_msg_count => l_msg_cnt,
1103 x_msg_data => l_msg_data);
1104 IF (l_ret <> 'S') THEN
1105 PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
1106 END IF;
1107 END IF;
1108
1109 l_msg_count := FND_MSG_PUB.count_msg;
1110
1111 --Check Completion Date
1112 IF (p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1113 PA_TASKS_MAINT_UTILS.Check_End_Date(
1114 p_project_id => p_project_id,
1115 p_parent_task_id => l_parent_task_id,
1116 p_task_id => NULL,
1117 p_end_date => p_task_completion_date,
1118 x_return_status => l_ret,
1119 x_msg_count => l_msg_cnt,
1120 x_msg_data => l_msg_data);
1121 IF (l_ret <> 'S') THEN
1122 PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
1123 END IF;
1124 END IF;
1125
1126
1127 l_msg_count := FND_MSG_PUB.count_msg;
1128
1129
1130
1131 --Start Commenting by rtarway for BUG 3927343
1132 -- These checks are commented because schedule dates are not stored in pa_tasks.
1133
1134 --Check Schedule Dates
1135 --IF (p_scheduled_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
1136 -- p_scheduled_start_date IS NULL) AND
1137 -- (p_scheduled_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
1138 -- p_scheduled_finish_date IS NULL) THEN
1139 -- PA_TASKS_MAINT_UTILS.CHECK_SCHEDULE_DATES(
1140 -- p_project_id => p_project_id,
1141 -- p_sch_start_date => p_scheduled_start_date,
1142 -- p_sch_end_date => p_scheduled_finish_date,
1143 -- x_return_status => l_ret,
1144 -- x_msg_count => l_msg_cnt,
1145 -- x_msg_data => l_msg_data);
1146 --commented to suppress redundant messages appearing on
1147 --create task page
1148 /*IF (l_ret <> 'S') THEN
1149 PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
1150 END IF;*/
1151 -- END IF;
1152
1153
1154 --l_msg_count := FND_MSG_PUB.count_msg;
1155
1156 --Check Estimate Dates
1157 -- IF (p_estimated_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
1158 -- p_estimated_start_date IS NULL) AND
1159 -- (p_estimated_end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
1160 -- p_estimated_end_date IS NULL) THEN
1161 -- PA_TASKS_MAINT_UTILS.CHECK_ESTIMATE_DATES(
1162 -- p_project_id => p_project_id,
1163 -- p_estimate_start_date => p_estimated_start_date,
1164 -- p_estimate_end_date => p_estimated_end_date,
1165 -- x_return_status => l_ret,
1166 -- x_msg_count => l_msg_cnt,
1167 -- x_msg_data => l_msg_data);
1168 -- IF (l_ret <> 'S') THEN
1169 -- PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
1170 -- END IF;
1171 -- END IF;
1172
1173 --l_msg_count := FND_MSG_PUB.count_msg;
1174
1175 --Check Actual Dates
1176 -- IF (p_actual_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
1177 -- p_actual_start_date IS NULL) AND
1178 -- (p_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
1179 -- p_actual_finish_date IS NULL) THEN
1180 -- PA_TASKS_MAINT_UTILS.CHECK_ACTUAL_DATES(
1181 -- p_project_id => p_project_id,
1182 -- p_actual_start_date => p_actual_start_date,
1183 -- p_actual_end_date => p_actual_finish_date,
1184 -- x_return_status => l_ret,
1185 -- x_msg_count => l_msg_cnt,
1186 -- x_msg_data => l_msg_data);
1187 -- IF (l_ret <> 'S') THEN
1188 -- PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
1189 -- END IF;
1190 --END IF;
1191 --End Commenting by rtarway for BUG 3927343
1192
1193 END IF;
1194
1195 l_msg_count := FND_MSG_PUB.count_msg;
1196 IF (l_msg_count > 0) THEN
1197 x_msg_count := l_msg_count;
1198 IF (x_msg_count = 1) THEN
1199 pa_interface_utils_pub.get_messages(
1200 p_encoded => FND_API.G_TRUE,
1201 p_msg_index => 1,
1202 p_data => l_data,
1203 p_msg_index_out => l_msg_index_out);
1204 x_msg_data := l_data;
1205 END IF;
1206 RAISE FND_API.G_EXC_ERROR;
1207 END IF;
1208
1209
1210 IF (p_calling_module IN ('FORMS', 'SELF_SERVICE')) THEN
1211
1212 -- If Work Type Id is Null, then default from Project
1213 IF TWORK_TYPE_ID IS NULL THEN
1214 OPEN work_type_from_proj;
1215 FETCH work_type_from_proj INTO TWORK_TYPE_ID, TPROJECT_TYPE, CARRYING_OUT_ORG_ID_TMP;
1216 IF TWORK_TYPE_ID IS NULL THEN
1217 OPEN work_type_from_proj_type(TPROJECT_TYPE);
1218 FETCH work_type_from_proj_type INTO TWORK_TYPE_ID;
1219 CLOSE work_type_from_proj_type;
1220 END IF;
1221 CLOSE work_type_from_proj;
1222 END IF;
1223
1224 -- Set Billable Flag base on work type
1225 IF TWORK_TYPE_ID IS NOT NULL THEN
1226 OPEN billable_flag_c(TWORK_TYPE_ID);
1227 FETCH billable_flag_c INTO TBILLABLE;
1228 CLOSE billable_flag_c;
1229 END IF;
1230
1231 END IF;
1232
1233
1234 -- Replacing with user-entered values
1235 IF (p_task_manager_person_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1236 TTASK_MANAGER_PERSON_ID := p_task_manager_person_id;
1237 END IF;
1238
1239 IF (p_carrying_out_organization_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1240 TCARRYING_OUT_ORG_ID := p_carrying_out_organization_id;
1241 END IF;
1242 -- If Organization Id is Null, then default from Project
1243 IF (TCARRYING_OUT_ORG_ID IS NULL) THEN
1244 TCARRYING_OUT_ORG_ID := CARRYING_OUT_ORG_ID_TMP; -- From Project
1245 END IF;
1246
1247 IF (p_task_type_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1248 TTASK_TYPE_CODE := p_task_type_code;
1249 END IF;
1250
1251 IF (p_priority_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1252 TPRIORITY_CODE := p_priority_code;
1253 END IF;
1254
1255 IF (p_work_type_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1256 TWORK_TYPE_ID := p_work_type_id;
1257 END IF;
1258
1259 IF (p_service_type_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1260 TSERVICE_TYPE_CODE := p_service_type_code;
1261 END IF;
1262
1263 IF (p_milestone_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1264 TMILESTONE_FLAG := p_milestone_flag;
1265 END IF;
1266
1267 IF (p_critical_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1268 TCRITICAL_FLAG := p_critical_flag;
1269 END IF;
1270
1271 IF (p_chargeable_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1272 TCHARGEABLE := p_chargeable_flag;
1273 END IF;
1274
1275 IF (p_billable_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1276 TBILLABLE := p_billable_flag;
1277 END IF;
1278
1279 -- Check Allow Charges
1280 --Chargeable flag, receive project invoice flag validation
1281 IF (p_receive_project_invoice_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1282 PA_TASKS_MAINT_UTILS.Check_Chargeable_Flag( p_chargeable_flag => TCHARGEABLE,
1283 p_receive_project_invoice_flag => p_receive_project_invoice_flag,
1284 p_project_type => TPROJECT_TYPE,
1285 p_project_id => p_project_id, -- Added for bug#3512486
1286 x_receive_project_invoice_flag => TRECEIVE_PROJECT_INVOICE_FLAG);
1287 -- TRECEIVE_PROJECT_INVOICE_FLAG := p_receive_project_invoice_flag;
1288 END IF;
1289
1290 IF (p_scheduled_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1291 TSCHEDULED_START_DATE := p_scheduled_start_date;
1292 END IF;
1293
1294 IF (p_scheduled_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1295 TSCHEDULED_FINISH_DATE := p_scheduled_finish_date;
1296 END IF;
1297
1298 IF (p_estimated_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1299 TESTIMATED_START_DATE := p_estimated_start_date;
1300 ELSE
1301 -- Default from schedule
1302 TESTIMATED_START_DATE := TSCHEDULED_START_DATE;
1303 END IF;
1304
1305 IF (p_estimated_end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1306 TESTIMATED_END_DATE := p_estimated_end_date;
1307 ELSE
1308 -- Default from schedule
1309 TESTIMATED_END_DATE := TSCHEDULED_FINISH_DATE;
1310 END IF;
1311
1312
1313 IF (p_actual_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1314 TACTUAL_START_DATE := p_actual_start_date;
1315 END IF;
1316
1317 IF (p_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1318 TACTUAL_FINISH_DATE := p_actual_finish_date;
1319 END IF;
1320
1321
1322 IF (p_task_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1323 TSTART_DATE := p_task_start_date;
1324 -- ELSE
1325 -- Default from schedule
1326 -- TSTART_DATE := TSCHEDULED_START_DATE;
1327 END IF;
1328
1329 IF (p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1330 TCOMPLETION_DATE := p_task_completion_date;
1331 -- ELSE
1332 -- Default from schedule
1333 -- TCOMPLETION_DATE := TSCHEDULED_FINISH_DATE;
1334 END IF;
1335
1336 IF (p_baseline_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1337 TBASELINE_START_DATE := p_baseline_start_date;
1338 END IF;
1339
1340 IF (p_baseline_end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1341 TBASELINE_END_DATE := p_baseline_end_date;
1342 END IF;
1343
1344
1345 IF (p_obligation_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1346 TOBLIGATION_START_DATE := p_obligation_start_date;
1347 END IF;
1348
1349 IF (p_obligation_end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1350 TOBLIGATION_END_DATE := p_obligation_end_date;
1351 END IF;
1352
1353 IF (p_estimate_to_complete_work <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1354 TESTIMATE_TO_COMPLETE_WORK := p_estimate_to_complete_work;
1355 END IF;
1356
1357 IF (p_baseline_work <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1358 TBASELINE_WORK := p_baseline_work;
1359 END IF;
1360
1361 IF (p_scheduled_work <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1362 TSCHEDULED_WORK := p_scheduled_work;
1363 END IF;
1364
1365 IF (p_actual_work_to_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1366 TACTUAL_WORK_TO_DATE := p_actual_work_to_date;
1367 END IF;
1368
1369 IF (p_work_unit <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1370 TWORK_UNIT_CODE := p_work_unit;
1371 END IF;
1372
1373 IF (p_progress_status_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1374 TPROGRESS_STATUS_CODE := p_progress_status_code;
1375 END IF;
1376
1377 IF (p_job_bill_rate_schedule_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1378 TJOB_BILL_RATE_SCHEDULE_ID := p_job_bill_rate_schedule_id;
1379 END IF;
1380
1381 IF (p_emp_bill_rate_schedule_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1382 TEMP_BILL_RATE_SCHEDULE_ID := p_emp_bill_rate_schedule_id;
1383 END IF;
1384
1385 IF (p_pa_parent_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1386 TPA_PARENT_TASK_ID := p_pa_parent_task_id;
1387 END IF;
1388
1389 IF (p_address_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1390 TADDRESS_ID := p_address_id;
1391 END IF;
1392
1393 IF (p_ready_to_bill_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1394 TREADY_TO_BILL_FLAG := p_ready_to_bill_flag;
1395 END IF;
1396
1397 IF (p_ready_to_distribute_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1398 TREADY_TO_DISTRIBUTE_FLAG := p_ready_to_distribute_flag;
1399 END IF;
1400
1401 IF (p_limit_to_txn_controls_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1402 TLIMIT_TO_TXN_CONTROLS_FLAG := p_limit_to_txn_controls_flag;
1403 END IF;
1404
1405 IF (p_labor_bill_rate_org_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1406 TLABOR_BILL_RATE_ORG_ID := p_labor_bill_rate_org_id;
1407 END IF;
1408
1409 IF (p_labor_std_bill_rate_schdl <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1410 TLABOR_STD_BILL_RATE_SCHDL := p_labor_std_bill_rate_schdl;
1411 END IF;
1412
1413 IF (p_labor_schedule_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1414 TLABOR_SCHEDULE_FIXED_DATE := p_labor_schedule_fixed_date;
1415 END IF;
1416
1417 IF (p_labor_schedule_discount <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1418 TLABOR_SCHEDULE_DISCOUNT := p_labor_schedule_discount;
1419 END IF;
1420
1421 IF (p_nl_bill_rate_org_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1422 TNLR_BILL_RATE_ORG_ID := p_nl_bill_rate_org_id;
1423 END IF;
1424
1425 IF (p_nl_std_bill_rate_schdl <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1426 TNLR_STD_BILL_RATE_SCHDL := p_nl_std_bill_rate_schdl;
1427 END IF;
1428
1429 IF (p_nl_schedule_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1430 TNLR_SCHEDULE_FIXED_DATE := p_nl_schedule_fixed_date;
1431 END IF;
1432
1433 IF (p_nl_schedule_discount <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1434 TNLR_SCHEDULE_DISCOUNT := p_nl_schedule_discount;
1435 END IF;
1436
1437 IF (p_labor_cost_multiplier_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1438 TLABOR_COST_MULTIPLIER_NAME := p_labor_cost_multiplier_name;
1439 END IF;
1440
1441 IF (p_cost_ind_rate_sch_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1442 TCOST_IND_RATE_SCH_ID := p_cost_ind_rate_sch_id;
1443 END IF;
1444
1445 IF (p_rev_ind_rate_sch_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1446 TREV_IND_RATE_SCH_ID := p_rev_ind_rate_sch_id;
1447 END IF;
1448
1449 IF (p_inv_ind_rate_sch_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1450 TINV_IND_RATE_SCH_ID := p_inv_ind_rate_sch_id;
1451 END IF;
1452
1453 IF (p_cost_ind_sch_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1454 TCOST_IND_SCH_FIXED_DATE := p_cost_ind_sch_fixed_date;
1455 END IF;
1456
1457 IF (p_rev_ind_sch_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1458 TREV_IND_SCH_FIXED_DATE := p_rev_ind_sch_fixed_date;
1459 END IF;
1460
1461 IF (p_inv_ind_sch_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1462 TINV_IND_SCH_FIXED_DATE := p_inv_ind_sch_fixed_date;
1463 END IF;
1464
1465 IF (p_labor_sch_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1466 TLABOR_SCH_TYPE := p_labor_sch_type;
1467 END IF;
1468
1469 IF (p_nl_sch_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1470 TNLR_SCH_TYPE := p_nl_sch_type;
1471 END IF;
1472
1473 IF (p_early_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1474 TEARLY_START_DATE := p_early_start_date;
1475 END IF;
1476
1477 IF (p_early_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1478 TEARLY_FINISH_DATE := p_early_finish_date;
1479 END IF;
1480
1481 IF (p_late_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1482 TLATE_START_DATE := p_late_start_date;
1483 END IF;
1484
1485 IF (p_late_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1486 TLATE_FINISH_DATE := p_late_finish_date;
1487 END IF;
1488
1489 IF (p_attribute_category <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1490 TATTRIBUTE_CATEGORY := p_attribute_category;
1491 END IF;
1492
1493 IF (p_attribute1 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1494 TATTRIBUTE1 := p_attribute1;
1495 END IF;
1496
1497 IF (p_attribute2 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1498 TATTRIBUTE2 := p_attribute2;
1499 END IF;
1500
1501 IF (p_attribute3 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1502 TATTRIBUTE3 := p_attribute3;
1503 END IF;
1504
1505 IF (p_attribute4 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1506 TATTRIBUTE4 := p_attribute4;
1507 END IF;
1508
1509 IF (p_attribute5 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1510 TATTRIBUTE5 := p_attribute5;
1511 END IF;
1512
1513 IF (p_attribute6 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1514 TATTRIBUTE6 := p_attribute6;
1515 END IF;
1516
1517 IF (p_attribute7 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1518 TATTRIBUTE7 := p_attribute7;
1519 END IF;
1520
1521 IF (p_attribute8 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1522 TATTRIBUTE8 := p_attribute8;
1523 END IF;
1524
1525 IF (p_attribute9 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1526 TATTRIBUTE9 := p_attribute9;
1527 END IF;
1528
1529 IF (p_attribute10 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1530 TATTRIBUTE10 := p_attribute10;
1531 END IF;
1532
1533 IF (p_allow_cross_charge_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1534 TALLOW_CROSS_CHARGE_FLAG := p_allow_cross_charge_flag;
1535 END IF;
1536
1537 IF (p_project_rate_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1538 TPROJECT_RATE_DATE := p_project_rate_date;
1539 END IF;
1540
1541 IF (p_project_rate_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1542 TPROJECT_RATE_TYPE := p_project_rate_type;
1543 END IF;
1544
1545 IF (p_cc_process_labor_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1546 TCC_PROCESS_LABOR_FLAG := p_cc_process_labor_flag;
1547 END IF;
1548
1549 IF (p_labor_tp_schedule_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1550 TLABOR_TP_SCHEDULE_ID := p_labor_tp_schedule_id;
1551 END IF;
1552
1553 IF (p_labor_tp_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1554 TLABOR_TP_FIXED_DATE := p_labor_tp_fixed_date;
1555 END IF;
1556
1557 IF (p_cc_process_nl_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1558 TCC_PROCESS_NL_FLAG := p_cc_process_nl_flag;
1559 END IF;
1560
1561 IF (p_nl_tp_schedule_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1562 TNL_TP_SCHEDULE_ID := p_nl_tp_schedule_id;
1563 END IF;
1564
1565 IF (p_nl_tp_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
1566 TNL_TP_FIXED_DATE := p_nl_tp_fixed_date;
1567 END IF;
1568
1569 IF (p_task_description <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1570 TDESCRIPTION := substrb( p_task_description, 1, 250); --Bug 4297289
1571 END IF;
1572
1573 IF (p_inc_proj_progress_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
1574 Tinc_proj_progress_flag := p_inc_proj_progress_flag;
1575 END IF;
1576
1577 IF (p_taskfunc_cost_rate_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_taskfunc_cost_rate_type IS NULL ) THEN
1578 ttaskfunc_cost_rate_type:= p_taskfunc_cost_rate_type;
1579 END IF;
1580
1581 IF (p_taskfunc_cost_rate_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_taskfunc_cost_rate_date IS NULL ) THEN
1582 ttaskfunc_cost_rate_date:= p_taskfunc_cost_rate_date;
1583 END IF;
1584
1585 IF (p_non_lab_std_bill_rt_sch_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_non_lab_std_bill_rt_sch_id IS NULL ) THEN
1586 tnon_lab_std_bill_rt_sch_id:= p_non_lab_std_bill_rt_sch_id;
1587 END IF;
1588
1589 -- FP.K changes by msundare
1590 IF (p_labor_disc_reason_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR
1591 p_labor_disc_reason_code IS NULL ) THEN
1592 Tlabor_disc_reason_code:= p_labor_disc_reason_code;
1593 END IF;
1594
1595 IF (p_non_labor_disc_reason_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR
1596 p_non_labor_disc_reason_code IS NULL ) THEN
1597 Tnon_labor_disc_reason_code:= p_non_labor_disc_reason_code;
1598 END IF;
1599
1600 --PA L Capital Project Changes 2872708
1601 IF (p_retirement_cost_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR
1602 p_retirement_cost_flag IS NULL ) THEN
1603 tretirement_cost_flag:= p_retirement_cost_flag;
1604 END IF;
1605
1606 IF (p_cint_eligible_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR
1607 p_cint_eligible_flag IS NULL ) THEN
1608 tcint_eligible_flag:= p_cint_eligible_flag;
1609 END IF;
1610
1611 IF (p_cint_stop_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
1612 p_cint_stop_date IS NULL ) THEN
1613 tcint_stop_date:= p_cint_stop_date;
1614 END IF;
1615
1616 --End PA L Capital Project Changes 2872708
1617
1618 --added by rtarway for BUG 3924597, etc sorce defaulting.
1619 --1. get the structure_share_code
1620 l_wp_separate_from_fin := PA_PROJ_TASK_STRUC_PUB.IS_WP_SEPARATE_FROM_FN( p_project_id );
1621 --end by rtarway for BUG 3924597
1622 -- Get Display Sequence
1623
1624
1625 IF p_reference_task_id IS NOT NULL --Modified by Ansari. Added logic to create top task.
1626 THEN
1627 l_sequence_number := PA_TASKS_MAINT_UTILS.Get_Sequence_Number(p_peer_or_sub,
1628 p_project_id,
1629 p_reference_task_id);
1630
1631 --added by rtarway for BUG 3924597, etc sorce defaulting.
1632 --if TGEN_ETC_SOURCE_CODE is null, i.e. not defaulted from top tasks , then we should default this value
1633 if ( TGEN_ETC_SOURCE_CODE is null or TGEN_ETC_SOURCE_CODE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) then
1634 if (p_calling_module = 'FORMS') then
1635 TGEN_ETC_SOURCE_CODE := 'FINANCIAL_PLAN';
1636 else
1637 if (nvl(l_wp_separate_from_fin,'N') = 'N') then
1638 TGEN_ETC_SOURCE_CODE := 'WORKPLAN_RESOURCES';
1639 else
1640 TGEN_ETC_SOURCE_CODE := 'FINANCIAL_PLAN';
1641 end if;
1642 end if;
1643 end if;
1644 ELSE
1645 --No reference task is passed . Its assumed top task.
1646 l_sequence_number := 1;
1647 --Added by rtarway for BUG 3924597, Default the ETC_SOURCE_CODE for top tasks
1648 if (p_calling_module = 'FORMS') then
1649 TGEN_ETC_SOURCE_CODE := 'FINANCIAL_PLAN';
1650 else
1651 if (nvl(l_wp_separate_from_fin,'N') = 'N') then
1652 TGEN_ETC_SOURCE_CODE := 'WORKPLAN_RESOURCES';
1653 else
1654 TGEN_ETC_SOURCE_CODE := 'FINANCIAL_PLAN';
1655 end if;
1656 end if;
1657 END IF;
1658
1659 --Changes for 8566495 anuragag
1660 --PA_TASK_PVT1.G_CHG_DOC_CNTXT will be 1 for task created via change management, so this call will be skipped
1661 if(PA_TASK_PVT1.G_CHG_DOC_CNTXT = 0)
1662 then
1663 -- Call Table Handler
1664 --Insert using table handler
1665
1666
1667 /* Added for 12.2Payroll billing ER 11899223 */
1668 if l_parent_task_Id is null then
1669 /* select adj_on_std_inv into l_adj_on_std_inv from pa_projects_all where project_id =p_project_id;
1670 commented for bug 12659208 */
1671
1672 l_adj_on_std_inv := NULL;
1673 else
1674 select adj_on_std_inv into l_adj_on_std_inv from pa_tasks where task_id =l_top_task_id;
1675 end if;
1676 /* Added for 12.2Payroll billing ER 11899223 */
1677 PA_TASKS_PKG.insert_row(
1678 l_rowid,
1679 l_new_task_id,
1680 p_project_id,
1681 p_task_number,
1682 sysdate,
1683 FND_GLOBAL.USER_ID, -- created_by
1684 sysdate,
1685 FND_GLOBAL.USER_ID, -- Last_Updated_By
1686 FND_GLOBAL.USER_ID, -- Last_Update_Login
1687 p_task_name,
1688 p_long_task_name,
1689 l_top_task_id,
1690 TWBS_LEVEL,
1691 TREADY_TO_BILL_FLAG,
1692 TREADY_TO_DISTRIBUTE_FLAG,
1693 l_parent_task_Id,
1694 TDESCRIPTION,
1695 TCARRYING_OUT_ORG_ID,
1696 TSERVICE_TYPE_CODE,
1697 p_task_manager_person_id,
1698 TCHARGEABLE,
1699 TBILLABLE,
1700 TLIMIT_TO_TXN_CONTROLS_FLAG,
1701 TSTART_DATE,
1702 TCOMPLETION_DATE,
1703 TADDRESS_ID,
1704 TLABOR_BILL_RATE_ORG_ID,
1705 TLABOR_STD_BILL_RATE_SCHDL,
1706 TLABOR_SCHEDULE_FIXED_DATE,
1707 TLABOR_SCHEDULE_DISCOUNT,
1708 TNLR_BILL_RATE_ORG_ID,
1709 TNLR_STD_BILL_RATE_SCHDL,
1710 TNLR_SCHEDULE_FIXED_DATE,
1711 TNLR_SCHEDULE_DISCOUNT,
1712 TLABOR_COST_MULTIPLIER_NAME, -- Labor_Cost_Multiplier_Name
1713 TATTRIBUTE_CATEGORY, -- Attribute_Category
1714 TATTRIBUTE1, -- Attribute1
1715 TATTRIBUTE2, -- Attribute2
1716 TATTRIBUTE3, -- Attribute3
1717 TATTRIBUTE4, -- Attribute4
1718 TATTRIBUTE5, -- Attribute5
1719 TATTRIBUTE6, -- Attribute6
1720 TATTRIBUTE7, -- Attribute7
1721 TATTRIBUTE8, -- Attribute8
1722 TATTRIBUTE9, -- Attribute9
1723 TATTRIBUTE10, -- Attribute10
1724 TCOST_IND_RATE_SCH_ID,
1725 TREV_IND_RATE_SCH_ID,
1726 TINV_IND_RATE_SCH_ID,
1727 TCOST_IND_SCH_FIXED_DATE,
1728 TREV_IND_SCH_FIXED_DATE,
1729 TINV_IND_SCH_FIXED_DATE,
1730 TLABOR_SCH_TYPE,
1731 TNLR_SCH_TYPE,
1732 TALLOW_CROSS_CHARGE_FLAG,
1733 TPROJECT_RATE_DATE,
1734 TPROJECT_RATE_TYPE,
1735 TCC_PROCESS_LABOR_FLAG,
1736 TLABOR_TP_SCHEDULE_ID,
1737 TLABOR_TP_FIXED_DATE,
1738 TCC_PROCESS_NL_FLAG,
1739 TNL_TP_SCHEDULE_ID,
1740 TNL_TP_FIXED_DATE,
1741 TRECEIVE_PROJECT_INVOICE_FLAG,
1742 TWORK_TYPE_ID,
1743 TJOB_BILL_RATE_SCHEDULE_ID,
1744 TEMP_BILL_RATE_SCHEDULE_ID,
1745
1746 /*TTASK_TYPE_CODE,
1747 l_sequence_number, --DISPLAY SEQUENCE
1748 TPRIORITY_CODE,
1749 TCRITICAL_FLAG,
1750 TMILESTONE_FLAG,
1751 TSCHEDULED_START_DATE,
1752 TSCHEDULED_FINISH_DATE,
1753 TACTUAL_START_DATE, -- Actual Start Date
1754 TACTUAL_FINISH_DATE, -- Actual Finish Date
1755 TESTIMATED_START_DATE,
1756 TESTIMATED_END_DATE,
1757 TBASELINE_START_DATE,
1758 TBASELINE_END_DATE,
1759 TOBLIGATION_START_DATE,
1760 TOBLIGATION_END_DATE,
1761 TESTIMATE_TO_COMPLETE_WORK,
1762 TBASELINE_WORK,
1763 TSCHEDULED_WORK,
1764 TACTUAL_WORK_TO_DATE,
1765 TWORK_UNIT_CODE,
1766 TPROGRESS_STATUS_CODE,
1767 Tinc_proj_progress_flag,
1768
1769 1, --Record version Number */
1770 ttaskfunc_cost_rate_type,
1771 ttaskfunc_cost_rate_date,
1772 tnon_lab_std_bill_rt_sch_id,
1773 Tlabor_disc_reason_code,
1774 Tnon_labor_disc_reason_code,
1775 --PA L Capital Project Changes 2872708
1776 NVL( tretirement_cost_flag, 'N'),
1777 NVL( tcint_eligible_flag, 'N'),
1778 tcint_stop_date,
1779 --End PA L Capital Project Changes 2872708
1780
1781 /*FPM development for Project Setup */
1782 l_customer_id,
1783 l_revenue_accrual_method,
1784 l_invoice_method,
1785 TGEN_ETC_SOURCE_CODE,
1786 l_adj_on_std_inv /* Added for 12.2Payroll billing ER 11899223 */
1787 );
1788
1789 -- Date Roll-up
1790
1791
1792 -- Update parent task chargeable and receive project invoice flags
1793 -- if creating subtask
1794 IF (p_peer_or_sub = 'SUB') THEN
1795 IF (p_calling_module IN ('FORMS', 'SELF_SERVICE')) THEN
1796 -- Set parent task chargeable flag to 'N' and set
1797 -- Parent Task Receive_Project_Invoice_Flag to 'N'
1798 -- This should be performed after the task is added.
1799 UPDATE PA_TASKS
1800 SET
1801 CHARGEABLE_FLAG = 'N',
1802 RECEIVE_PROJECT_INVOICE_FLAG = 'N',
1803 RECORD_VERSION_NUMBER = nvl(RECORD_VERSION_NUMBER,0)+1,
1804 last_updated_by = FND_GLOBAL.USER_ID,
1805 last_update_login = FND_GLOBAL.USER_ID,
1806 last_update_date = sysdate
1807 WHERE TASK_ID = l_parent_task_Id;
1808 END IF;
1809 END IF;
1810
1811
1812
1813 x_return_status := FND_API.G_RET_STS_SUCCESS;
1814 p_task_id := l_new_task_id;
1815 x_display_seq := l_sequence_number;
1816
1817 end if; -- end check for chg_doc_cntxt
1818 EXCEPTION
1819 WHEN FND_API.G_EXC_ERROR THEN
1820 IF (p_commit = FND_API.G_TRUE) THEN
1821 ROLLBACK to CREATE_TASK_PRIVATE;
1822 END IF;
1823 x_msg_count := FND_MSG_PUB.count_msg;
1824 x_return_status := FND_API.G_RET_STS_ERROR;
1825 WHEN OTHERS THEN
1826 IF (p_commit = FND_API.G_TRUE) THEN
1827 ROLLBACK to CREATE_TASK_PRIVATE;
1828 END IF;
1829 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1830 x_msg_count := FND_MSG_PUB.count_msg;
1831 --put message
1832 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
1833 p_procedure_name => 'CREATE_TASK',
1834 p_error_text => SUBSTRB(SQLERRM,1,240));
1835 RAISE;
1836 END CREATE_TASK;
1837
1838 -- API name : UPDATE_TASK
1839 -- Type : Private Procedure
1840 -- Pre-reqs : None
1841 -- Return Value : N/A
1842 -- Parameters
1843 -- p_api_version IN NUMBER := 1.0
1844 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1845 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
1846 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1847 -- p_validation_level IN VARCHAR2 := 100
1848 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1849 -- p_debug_mode IN VARCHAR2 := 'N'
1850 -- p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1851 -- p_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1852 -- p_task_number IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1853 -- p_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1854 -- p_long_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1855 -- p_task_description IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1856 -- p_task_manager_person_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1857 -- p_carrying_out_organization_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1858 -- p_task_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1859 -- p_priority_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1860 -- p_work_type_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1861 -- p_service_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1862 -- p_milestone_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1863 -- p_critical_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1864 -- p_chargeable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1865 -- p_billable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1866 -- p_receive_project_invoice_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1867 -- p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1868 -- p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1869 -- p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1870 -- p_estimated_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1871 -- p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1872 -- p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1873 -- p_task_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1874 -- p_task_completion_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1875 -- p_baseline_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1876 -- p_baseline_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1877 -- p_obligation_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1878 -- p_obligation_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1879 -- p_estimate_to_complete_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1880 -- p_baseline_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1881 -- p_scheduled_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1882 -- p_actual_work_to_date IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1883 -- p_work_unit IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1884 -- p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1885 -- p_job_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1886 -- p_emp_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1887 -- p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1888 -- p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1889 -- p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1890 -- p_pm_parent_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1891 -- p_top_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1892 -- p_wbs_level IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1893 -- p_parent_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1894 -- p_display_sequence IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1895 -- p_address_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1896 -- p_ready_to_bill_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1897 -- p_ready_to_distribute_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1898 -- p_limit_to_txn_controls_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1899 -- p_labor_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1900 -- p_labor_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1901 -- p_labor_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1902 -- p_labor_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1903 -- p_nl_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1904 -- p_nl_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1905 -- p_nl_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1906 -- p_nl_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1907 -- p_labor_cost_multiplier_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1908 -- p_cost_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1909 -- p_rev_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1910 -- p_inv_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1911 -- p_cost_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1912 -- p_rev_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1913 -- p_inv_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1914 -- p_labor_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1915 -- p_nl_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1916 -- p_early_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1917 -- p_early_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1918 -- p_late_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1919 -- p_late_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1920 -- p_attribute_category IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1921 -- p_attribute1 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1922 -- p_attribute2 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1923 -- p_attribute3 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1924 -- p_attribute4 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1925 -- p_attribute5 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1926 -- p_attribute6 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1927 -- p_attribute7 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1928 -- p_attribute8 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1929 -- p_attribute9 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1930 -- p_attribute10 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1931 -- p_allow_cross_charge_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1932 -- p_project_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1933 -- p_project_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1934 -- p_cc_process_labor_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1935 -- p_labor_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1936 -- p_labor_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1937 -- p_cc_process_nl_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1938 -- p_nl_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1939 -- p_nl_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1940 -- p_inc_proj_progress_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1941 -- p_record_version_number IN NUMBER
1942 -- p_comments IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1943 -- x_return_status OUT VARCHAR2
1944 -- x_msg_count OUT NUMBER
1945 -- x_msg_data OUT VARCHAR2
1946 --
1947 -- History
1948 --
1949 -- 25-JUN-01 HSIU -Created
1950 --
1951 --
1952
1953 procedure UPDATE_TASK
1954 (
1955 p_api_version IN NUMBER := 1.0
1956 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
1957 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
1958 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
1959 ,p_validation_level IN VARCHAR2 := 100
1960 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
1961 ,p_debug_mode IN VARCHAR2 := 'N'
1962
1963 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1964 ,p_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1965 ,p_task_number IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1966 ,p_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1967 ,p_long_task_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1968 ,p_task_description IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1969 ,p_task_manager_person_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1970 ,p_carrying_out_organization_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1971 ,p_task_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1972 ,p_priority_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1973 ,p_work_type_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1974 ,p_service_type_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1975 ,p_milestone_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1976 ,p_critical_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1977 ,p_chargeable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1978 ,p_billable_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1979 ,p_receive_project_invoice_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1980 ,p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1981 ,p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1982 ,p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1983 ,p_estimated_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1984 ,p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1985 ,p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1986 ,p_task_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1987 ,p_task_completion_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1988 ,p_baseline_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1989 ,p_baseline_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1990
1991 ,p_obligation_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1992 ,p_obligation_end_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1993 ,p_estimate_to_complete_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1994 ,p_baseline_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1995 ,p_scheduled_work IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1996 ,p_actual_work_to_date IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1997 ,p_work_unit IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1998 ,p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1999
2000 ,p_job_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2001 ,p_emp_bill_rate_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2002 ,p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2003 ,p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2004 ,p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2005 ,p_pm_parent_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2006 ,p_top_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2007 ,p_wbs_level IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2008 ,p_parent_task_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2009 ,p_display_sequence IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2010 ,p_address_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2011 ,p_ready_to_bill_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2012 ,p_ready_to_distribute_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2013 ,p_limit_to_txn_controls_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2014 ,p_labor_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2015 ,p_labor_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2016 ,p_labor_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2017 ,p_labor_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2018 ,p_nl_bill_rate_org_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2019 ,p_nl_std_bill_rate_schdl IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2020 ,p_nl_schedule_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2021 ,p_nl_schedule_discount IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2022 ,p_labor_cost_multiplier_name IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2023 ,p_cost_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2024 ,p_rev_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2025 ,p_inv_ind_rate_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2026 ,p_cost_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2027 ,p_rev_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2028 ,p_inv_ind_sch_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2029 ,p_labor_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2030 ,p_nl_sch_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2031 ,p_early_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2032 ,p_early_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2033 ,p_late_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2034 ,p_late_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2035 ,p_attribute_category IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2036 ,p_attribute1 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2037 ,p_attribute2 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2038 ,p_attribute3 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2039 ,p_attribute4 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2040 ,p_attribute5 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2041 ,p_attribute6 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2042 ,p_attribute7 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2043 ,p_attribute8 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2044 ,p_attribute9 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2045 ,p_attribute10 IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2046 ,p_allow_cross_charge_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2047 ,p_project_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2048 ,p_project_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2049 ,p_cc_process_labor_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2050 ,p_labor_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2051 ,p_labor_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2052 ,p_cc_process_nl_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2053 ,p_nl_tp_schedule_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2054 ,p_nl_tp_fixed_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2055 ,p_inc_proj_progress_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2056 ,p_taskfunc_cost_rate_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2057 ,p_taskfunc_cost_rate_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2058 ,p_non_lab_std_bill_rt_sch_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2059 ,p_record_version_number IN NUMBER
2060 ,p_comments IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2061 ,p_labor_disc_reason_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2062 ,p_non_labor_disc_reason_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2063 --PA L Capital Project Changes 2872708
2064 ,p_retirement_cost_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2065 ,p_cint_eligible_flag IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2066 ,p_cint_stop_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2067 --End PA L Capital Project Changes 2872708
2068 ,p_gen_etc_src_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2069 ,p_dates_check IN VARCHAR2 := 'Y' --bug 5665772
2070 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2071 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
2072 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2073 )
2074 IS
2075 l_rowid VARCHAR2(50);
2076
2077 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TASK';
2078 l_api_version CONSTANT NUMBER := 1.0;
2079 l_msg_count NUMBER;
2080 l_err_code NUMBER := 0;
2081 l_err_stack VARCHAR2(630);
2082 l_err_stage VARCHAR2(80);
2083 l_data VARCHAR2(250);
2084 l_msg_data VARCHAR2(250);
2085 l_msg_index_out NUMBER;
2086 l_msg_cnt NUMBER;
2087
2088 l_delete_project_allowed VARCHAR2(1);
2089 l_update_proj_num_allowed VARCHAR2(1);
2090 l_update_proj_name_allowed VARCHAR2(1);
2091 l_update_proj_desc_allowed VARCHAR2(1);
2092 l_update_proj_dates_allowed VARCHAR2(1);
2093 l_update_proj_status_allowed VARCHAR2(1);
2094 l_update_proj_manager_allowed VARCHAR2(1);
2095 l_update_proj_org_allowed VARCHAR2(1);
2096 l_add_task_allowed VARCHAR2(1);
2097 l_delete_task_allowed VARCHAR2(1);
2098 l_update_task_num_allowed VARCHAR2(1);
2099 l_update_task_name_allowed VARCHAR2(1);
2100 l_update_task_dates_allowed VARCHAR2(1);
2101 l_update_task_desc_allowed VARCHAR2(1);
2102 l_update_parent_task_allowed VARCHAR2(1);
2103 l_update_task_org_allowed VARCHAR2(1);
2104 l_f1 VARCHAR2(1);
2105 l_f2 VARCHAR2(1);
2106 l_ret VARCHAR2(1);
2107 l_change_parent_flag VARCHAR2(1);
2108
2109 t_pm_product_code PA_TASKS.PM_PRODUCT_CODE%TYPE;
2110
2111 -- For Task Attributes, defaulting from parent task
2112 TTASK_ID NUMBER;
2113 TTASK_NAME PA_TASKS.TASK_NAME%TYPE;
2114 TLONG_TASK_NAME PA_TASKS.LONG_TASK_NAME%TYPE;
2115 TTASK_NUMBER PA_TASKS.TASK_NUMBER%TYPE;
2116 TDESCRIPTION PA_TASKS.DESCRIPTION%TYPE;
2117 TTOP_TASK_ID NUMBER;
2118 TPARENT_TASK_ID NUMBER;
2119 TADDRESS_ID NUMBER;
2120 TREADY_TO_BILL_FLAG VARCHAR2(1);
2121 TREADY_TO_DISTRIBUTE_FLAG VARCHAR2(1);
2122 TCARRYING_OUT_ORG_ID NUMBER;
2123 TSERVICE_TYPE_CODE VARCHAR2(30);
2124 TTASK_MANAGER_PERSON_ID NUMBER;
2125 TCHARGEABLE VARCHAR2(1);
2126 TBILLABLE VARCHAR2(1);
2127 TLIMIT_TO_TXN_CONTROLS_FLAG VARCHAR2(1);
2128 TSTART_DATE DATE;
2129 TCOMPLETION_DATE DATE;
2130 TLABOR_BILL_RATE_ORG_ID NUMBER;
2131 TLABOR_STD_BILL_RATE_SCHDL VARCHAR2(30);
2132 TLABOR_SCHEDULE_FIXED_DATE DATE;
2133 TLABOR_SCHEDULE_DISCOUNT NUMBER;
2134 TNLR_BILL_RATE_ORG_ID NUMBER;
2135 TNLR_STD_BILL_RATE_SCHDL VARCHAR2(30);
2136 TNLR_SCHEDULE_FIXED_DATE DATE;
2137 TNLR_SCHEDULE_DISCOUNT NUMBER;
2138 TCOST_IND_RATE_SCH_ID NUMBER;
2139 TREV_IND_RATE_SCH_ID NUMBER;
2140 TINV_IND_RATE_SCH_ID NUMBER;
2141 TCOST_IND_SCH_FIXED_DATE DATE;
2142 TREV_IND_SCH_FIXED_DATE DATE;
2143 TINV_IND_SCH_FIXED_DATE DATE;
2144 TLABOR_SCH_TYPE VARCHAR2(1);
2145 TNLR_SCH_TYPE VARCHAR2(1);
2146 TALLOW_CROSS_CHARGE_FLAG VARCHAR2(1);
2147 TPROJECT_RATE_TYPE VARCHAR2(30);
2148 TPROJECT_RATE_DATE DATE;
2149 TCC_PROCESS_LABOR_FLAG VARCHAR2(1);
2150 TLABOR_TP_SCHEDULE_ID NUMBER;
2151 TLABOR_TP_FIXED_DATE DATE;
2152 TCC_PROCESS_NL_FLAG VARCHAR2(1);
2153 TNL_TP_SCHEDULE_ID NUMBER;
2154 TNL_TP_FIXED_DATE DATE;
2155 TRECEIVE_PROJECT_INVOICE_FLAG VARCHAR2(1);
2156 TWORK_TYPE_ID NUMBER;
2157 TJOB_BILL_RATE_SCHEDULE_ID NUMBER;
2158 TEMP_BILL_RATE_SCHEDULE_ID NUMBER;
2159 --NEW ATTRIBUTES
2160 TTASK_TYPE_CODE VARCHAR2(30);
2161 TPRIORITY_CODE VARCHAR2(30);
2162 TCRITICAL_FLAG VARCHAR2(1);
2163 TMILESTONE_FLAG VARCHAR2(1);
2164 TESTIMATED_START_DATE DATE;
2165 TESTIMATED_END_DATE DATE;
2166 TBASELINE_START_DATE DATE;
2167 TBASELINE_END_DATE DATE;
2168 TOBLIGATION_START_DATE DATE;
2169 TOBLIGATION_END_DATE DATE;
2170 TSCHEDULED_START_DATE DATE;
2171 TSCHEDULED_FINISH_DATE DATE;
2172 TESTIMATE_TO_COMPLETE_WORK NUMBER;
2173 TBASELINE_WORK NUMBER;
2174 TSCHEDULED_WORK NUMBER;
2175 TACTUAL_WORK_TO_DATE NUMBER;
2176 TWORK_UNIT_CODE VARCHAR2(30);
2177 TPROGRESS_STATUS_CODE VARCHAR2(30);
2178 TWBS_LEVEL NUMBER;
2179
2180 TACTUAL_START_DATE DATE;
2181 TACTUAL_FINISH_DATE DATE;
2182 TLABOR_COST_MULTIPLIER_NAME VARCHAR2(20);
2183 TEARLY_START_DATE DATE;
2184 TEARLY_FINISH_DATE DATE;
2185 TLATE_START_DATE DATE;
2186 TLATE_FINISH_DATE DATE;
2187 TATTRIBUTE_CATEGORY VARCHAR2(30);
2188 TATTRIBUTE1 VARCHAR2(150);
2189 TATTRIBUTE2 VARCHAR2(150);
2190 TATTRIBUTE3 VARCHAR2(150);
2191 TATTRIBUTE4 VARCHAR2(150);
2192 TATTRIBUTE5 VARCHAR2(150);
2193 TATTRIBUTE6 VARCHAR2(150);
2194 TATTRIBUTE7 VARCHAR2(150);
2195 TATTRIBUTE8 VARCHAR2(150);
2196 TATTRIBUTE9 VARCHAR2(150);
2197 TATTRIBUTE10 VARCHAR2(150);
2198
2199 Tinc_proj_progress_flag VARCHAR2(1);
2200 Tcomments VARCHAR2(4000);
2201 TDISPLAY_SEQUENCE NUMBER;
2202
2203 TPROJECT_TYPE VARCHAR2(20);
2204 CARRYING_OUT_ORG_ID_TMP NUMBER;
2205 ttaskfunc_cost_rate_type VARCHAR2(30);
2206 ttaskfunc_cost_rate_date DATE;
2207 tnon_lab_std_bill_rt_Sch_id NUMBER;
2208 Tlabor_disc_reason_code VARCHAR2(30);
2209 Tnon_labor_disc_reason_code VARCHAR2(30);
2210
2211 --PA L Capital Project Changes 2872708
2212 tretirement_cost_flag VARCHAR2(1);
2213 tcint_eligible_flag VARCHAR2(1);
2214 tcint_stop_date DATE;
2215 --End PA L Capital Project Changes 2872708
2216
2217 TGEN_ETC_SOURCE_CODE VARCHAR2(30);
2218
2219 CURSOR ref_task IS
2220 SELECT rowid,
2221 TASK_ID,
2222 TASK_NAME, --new
2223 LONG_TASK_NAME, --new
2224 TASK_NUMBER, --new
2225 DESCRIPTION, --new
2226 TOP_TASK_ID,
2227 PARENT_TASK_ID,
2228 ADDRESS_ID,
2229 READY_TO_BILL_FLAG,
2230 READY_TO_DISTRIBUTE_FLAG,
2231 CARRYING_OUT_ORGANIZATION_ID,
2232 SERVICE_TYPE_CODE,
2233 TASK_MANAGER_PERSON_ID,
2234 CHARGEABLE_FLAG,
2235 BILLABLE_FLAG,
2236 LIMIT_TO_TXN_CONTROLS_FLAG,
2237 START_DATE,
2238 COMPLETION_DATE,
2239 LABOR_BILL_RATE_ORG_ID,
2240 LABOR_STD_BILL_RATE_SCHDL,
2241 LABOR_SCHEDULE_FIXED_DATE,
2242 LABOR_SCHEDULE_DISCOUNT,
2243 NON_LABOR_BILL_RATE_ORG_ID,
2244 NON_LABOR_STD_BILL_RATE_SCHDL,
2245 NON_LABOR_SCHEDULE_FIXED_DATE,
2246 NON_LABOR_SCHEDULE_DISCOUNT,
2247 COST_IND_RATE_SCH_ID,
2248 REV_IND_RATE_SCH_ID,
2249 INV_IND_RATE_SCH_ID,
2250 COST_IND_SCH_FIXED_DATE,
2251 REV_IND_SCH_FIXED_DATE,
2252 INV_IND_SCH_FIXED_DATE,
2253 LABOR_SCH_TYPE,
2254 NON_LABOR_SCH_TYPE,
2255 ALLOW_CROSS_CHARGE_FLAG,
2256 PROJECT_RATE_TYPE,
2257 PROJECT_RATE_DATE,
2258 CC_PROCESS_LABOR_FLAG,
2259 LABOR_TP_SCHEDULE_ID,
2260 LABOR_TP_FIXED_DATE,
2261 CC_PROCESS_NL_FLAG,
2262 NL_TP_SCHEDULE_ID,
2263 NL_TP_FIXED_DATE,
2264 RECEIVE_PROJECT_INVOICE_FLAG,
2265 WORK_TYPE_ID,
2266 JOB_BILL_RATE_SCHEDULE_ID,
2267 EMP_BILL_RATE_SCHEDULE_ID,
2268 -- HY TASK_TYPE_CODE,
2269 -- HY PRIORITY_CODE,
2270 -- HY CRITICAL_FLAG,
2271 -- HY MILESTONE_FLAG,
2272 -- HY ESTIMATED_START_DATE,
2273 -- HY ESTIMATED_END_DATE,
2274 SCHEDULED_START_DATE,
2275 SCHEDULED_FINISH_DATE,
2276 -- HY ESTIMATE_TO_COMPLETE_WORK,
2277 -- HY SCHEDULED_WORK,
2278 -- HY WORK_UNIT_CODE,
2279 -- HY PROGRESS_STATUS_CODE,
2280 WBS_LEVEL,
2281 LABOR_COST_MULTIPLIER_NAME,
2282 ATTRIBUTE_CATEGORY,
2283 ATTRIBUTE1,
2284 ATTRIBUTE2,
2285 ATTRIBUTE3,
2286 ATTRIBUTE4,
2287 ATTRIBUTE5,
2288 ATTRIBUTE6,
2289 ATTRIBUTE7,
2290 ATTRIBUTE8,
2291 ATTRIBUTE9,
2292 ATTRIBUTE10,
2293 -- HY inc_proj_progress_flag,
2294 -- HY comments,
2295 -- HY DISPLAY_SEQUENCE
2296 taskfunc_cost_rate_type,
2297 taskfunc_cost_rate_date,
2298 non_lab_std_bill_rt_sch_id,
2299 labor_disc_reason_code,
2300 non_labor_disc_reason_code,
2301 --PA L Capital Project changes 2872708
2302 retirement_cost_flag,
2303 cint_eligible_flag,
2304 cint_stop_date,
2305 --End PA L Capital Project changes 2872708
2306 GEN_ETC_SOURCE_CODE
2307 FROM PA_TASKS
2308 WHERE TASK_ID = p_task_id;
2309
2310 BEGIN
2311
2312 IF (p_debug_mode = 'Y') THEN
2313 pa_debug.debug('PA_TASKS_MAINT_PVT.UPDATE_TASK BEGIN');
2314 END IF;
2315
2316 IF (p_commit = FND_API.G_TRUE) THEN
2317 savepoint UPDATE_TASK_PRIVATE;
2318 END IF;
2319
2320 IF (p_debug_mode = 'Y') THEN
2321 pa_debug.debug('Performing validations');
2322 END IF;
2323
2324 IF (p_calling_module IN ('FORMS', 'EXCHANGE', 'SELF_SERVICE')) THEN
2325 --check if task_name is null
2326 IF p_task_name IS NULL THEN
2327 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_NAME_EMPTY');
2328 END IF;
2329 END IF;
2330
2331 -- Get PM_PRODUCT_CODE
2332 IF (p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) THEN
2333 BEGIN
2334 select PM_PRODUCT_CODE
2335 into t_pm_product_code
2336 from pa_tasks
2337 where task_id = p_task_id;
2338 EXCEPTION
2339 WHEN NO_DATA_FOUND THEN
2340 PA_UTILS.ADD_MESSAGE('PA','PA_EXP_NO_TASK'); -- specified task does not exist
2341 raise FND_API.G_EXC_ERROR;
2342 END;
2343 ELSE
2344 t_pm_product_code := p_pm_product_code;
2345 END IF;
2346
2347 --l_msg_count := FND_MSG_PUB.count_msg;
2348
2349
2350 -- Set controls
2351 IF (p_calling_module in ('SELF_SERVICE')) THEN
2352 If (t_pm_product_code IS NOT NULL) THEN
2353 PA_PM_CONTROLS.GET_PROJECT_ACTIONS_ALLOWED(
2354 p_pm_product_code => t_pm_product_code,
2355 p_delete_project_allowed => l_delete_project_allowed,
2356 p_update_proj_num_allowed => l_update_proj_num_allowed,
2357 p_update_proj_name_allowed => l_update_proj_name_allowed,
2358 p_update_proj_desc_allowed => l_update_proj_desc_allowed,
2359 p_update_proj_dates_allowed => l_update_proj_dates_allowed,
2360 p_update_proj_status_allowed => l_update_proj_status_allowed,
2361 p_update_proj_manager_allowed => l_update_proj_manager_allowed,
2362 p_update_proj_org_allowed => l_update_proj_org_allowed,
2363 p_add_task_allowed => l_add_task_allowed,
2364 p_delete_task_allowed => l_delete_task_allowed,
2365 p_update_task_num_allowed => l_update_task_num_allowed,
2366 p_update_task_name_allowed => l_update_task_name_allowed,
2367 p_update_task_dates_allowed => l_update_task_dates_allowed,
2368 p_update_task_desc_allowed => l_update_task_desc_allowed,
2369 p_update_parent_task_allowed => l_update_parent_task_allowed,
2370 p_update_task_org_allowed => l_update_task_org_allowed,
2371 p_error_code => l_err_code,
2372 p_error_stack => l_err_stack,
2373 p_error_stage => l_err_stage
2374 );
2375 END IF; --product code is not null
2376 END IF;
2377
2378 --dbms_output.put_line( 'In update task 3' );
2379
2380 --getting all information
2381 OPEN ref_task;
2382 FETCH ref_task INTO
2383 l_rowid
2384 ,TTASK_ID
2385 ,TTASK_NAME
2386 ,TLONG_TASK_NAME
2387 ,TTASK_NUMBER
2388 ,TDESCRIPTION
2389 ,TTOP_TASK_ID
2390 ,TPARENT_TASK_ID
2391 ,TADDRESS_ID
2392 ,TREADY_TO_BILL_FLAG
2393 ,TREADY_TO_DISTRIBUTE_FLAG
2394 ,TCARRYING_OUT_ORG_ID
2395 ,TSERVICE_TYPE_CODE
2396 ,TTASK_MANAGER_PERSON_ID
2397 ,TCHARGEABLE
2398 ,TBILLABLE
2399 ,TLIMIT_TO_TXN_CONTROLS_FLAG
2400 ,TSTART_DATE
2401 ,TCOMPLETION_DATE
2402 ,TLABOR_BILL_RATE_ORG_ID
2403 ,TLABOR_STD_BILL_RATE_SCHDL
2404 ,TLABOR_SCHEDULE_FIXED_DATE
2405 ,TLABOR_SCHEDULE_DISCOUNT
2406 ,TNLR_BILL_RATE_ORG_ID
2407 ,TNLR_STD_BILL_RATE_SCHDL
2408 ,TNLR_SCHEDULE_FIXED_DATE
2409 ,TNLR_SCHEDULE_DISCOUNT
2410 ,TCOST_IND_RATE_SCH_ID
2411 ,TREV_IND_RATE_SCH_ID
2412 ,TINV_IND_RATE_SCH_ID
2413 ,TCOST_IND_SCH_FIXED_DATE
2414 ,TREV_IND_SCH_FIXED_DATE
2415 ,TINV_IND_SCH_FIXED_DATE
2416 ,TLABOR_SCH_TYPE
2417 ,TNLR_SCH_TYPE
2418 ,TALLOW_CROSS_CHARGE_FLAG
2419 ,TPROJECT_RATE_TYPE
2420 ,TPROJECT_RATE_DATE
2421 ,TCC_PROCESS_LABOR_FLAG
2422 ,TLABOR_TP_SCHEDULE_ID
2423 ,TLABOR_TP_FIXED_DATE
2424 ,TCC_PROCESS_NL_FLAG
2425 ,TNL_TP_SCHEDULE_ID
2426 ,TNL_TP_FIXED_DATE
2427 ,TRECEIVE_PROJECT_INVOICE_FLAG
2428 ,TWORK_TYPE_ID
2429 ,TJOB_BILL_RATE_SCHEDULE_ID
2430 ,TEMP_BILL_RATE_SCHEDULE_ID
2431 -- HY ,TTASK_TYPE_CODE
2432 -- HY ,TPRIORITY_CODE
2433 -- HY ,TCRITICAL_FLAG
2434 -- HY ,TMILESTONE_FLAG
2435 -- HY ,TESTIMATED_START_DATE
2436 -- HY ,TESTIMATED_END_DATE
2437 ,TSCHEDULED_START_DATE
2438 ,TSCHEDULED_FINISH_DATE
2439 -- HY ,TESTIMATE_TO_COMPLETE_WORK
2440 -- HY ,TSCHEDULED_WORK
2441 -- HY ,TWORK_UNIT_CODE
2442 -- HY ,TPROGRESS_STATUS_CODE
2443 ,TWBS_LEVEL
2444 ,TLABOR_COST_MULTIPLIER_NAME
2445 ,TATTRIBUTE_CATEGORY
2446 ,TATTRIBUTE1
2447 ,TATTRIBUTE2
2448 ,TATTRIBUTE3
2449 ,TATTRIBUTE4
2450 ,TATTRIBUTE5
2451 ,TATTRIBUTE6
2452 ,TATTRIBUTE7
2453 ,TATTRIBUTE8
2454 ,TATTRIBUTE9
2455 ,TATTRIBUTE10
2456 ,ttaskfunc_cost_rate_type
2457 ,ttaskfunc_cost_rate_date
2458 ,tnon_lab_std_bill_rt_sch_id
2459 ,Tlabor_disc_reason_code
2460 ,Tnon_labor_disc_reason_code
2461 --PA L Capital Project changes 2872708
2462 ,tretirement_cost_flag
2463 ,tcint_eligible_flag
2464 ,tcint_stop_date
2465 --End PA L Capital Project changes 2872708
2466 ,tGEN_ETC_SOURCE_CODE
2467 ;
2468 -- HY ,Tinc_proj_progress_flag
2469 -- HY ,Tcomments
2470 -- HY ,TDISPLAY_SEQUENCE;
2471
2472 IF (ref_task%NOTFOUND) THEN
2473 RAISE NO_DATA_FOUND;
2474 END IF;
2475 CLOSE ref_task;
2476
2477 --dbms_output.put_line( 'In update task 4 ');
2478
2479 IF (p_calling_module IN ('FORMS', 'EXCHANGE', 'SELF_SERVICE')) THEN
2480 --Check if it is ok to change task number
2481 --IF (p_task_number <> TTASK_NUMBER) THEN -- Commented for Bug#5968516
2482 IF (substrb(p_task_number, 0, 25) <> TTASK_NUMBER) -- Added substrb for Bug#5968516
2483 AND (p_task_number IS NOT NULL) -- Bug 5968516
2484 AND (p_task_number <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) -- Bug 5968516
2485 THEN
2486 PA_TASKS_MAINT_UTILS.CHECK_TASK_NUMBER_DISP(
2487 p_project_id,
2488 p_task_id,
2489 p_task_number,
2490 l_rowid);
2491 END IF;
2492 END IF;
2493
2494 --dbms_output.put_line( 'In update task 5' );
2495
2496 --Bug 6316383 :Changed the below condition for SELF SERVICE, as it is now handled in a different manner.
2497 --IF (p_calling_module IN ('FORMS', 'SELF_SERVICE')) THEN
2498 --If Carrying Out Organization has changed
2499 IF (p_calling_module = 'FORMS') THEN
2500 IF (TCARRYING_OUT_ORG_ID <> p_carrying_out_organization_id) AND
2501 (p_carrying_out_organization_id IS NOT NULL) AND
2502 (p_carrying_out_organization_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
2503 PA_TASK_UTILS.CHANGE_TASK_ORG_OK(p_task_id,
2504 l_err_code,
2505 l_err_stage,
2506 l_err_stack);
2507 IF (l_err_code <> 0) Then
2508 PA_UTILS.ADD_MESSAGE('PA', substr(l_err_stage,1,30));
2509 End If;
2510 END IF;
2511 END IF;
2512
2513 --dbms_output.put_line( 'In update task 6' );
2514
2515 -- Check Start Date; will replace by Date roll-up in future
2516 -- Check Completion Date; will replace by Date roll-up in future
2517 IF (p_calling_module IN ('FORMS', 'EXCHANGE', 'SELF_SERVICE')) THEN
2518 --Check Start Date End Date
2519 IF (p_task_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
2520 p_task_start_date IS NULL) AND
2521 (p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
2522 p_task_completion_date IS NULL) THEN
2523 PA_TASKS_MAINT_UTILS.check_start_end_date(
2524 p_old_start_date => null,
2525 p_old_end_date => null,
2526 p_new_start_date => p_task_start_date,
2527 p_new_end_date => p_task_completion_date,
2528 p_update_start_date_flag => l_f1,
2529 p_update_end_date_flag => l_f2,
2530 p_return_status => l_ret);
2531 IF (l_ret <> 'S') THEN
2532 -- Bug 7386335
2533 -- The API check_start_end_date will log a single error message. Not required to log further.
2534 l_msg_count := FND_MSG_PUB.count_msg;
2535 IF (l_msg_count > 0) THEN
2536 x_msg_count := l_msg_count;
2537 IF (x_msg_count = 1) THEN
2538 pa_interface_utils_pub.get_messages(
2539 p_encoded => FND_API.G_TRUE,
2540 p_msg_index => 1,
2541 p_data => l_data,
2542 p_msg_index_out => l_msg_index_out);
2543 x_msg_data := l_data;
2544 END IF;
2545 RAISE FND_API.G_EXC_ERROR;
2546 END IF;
2547 END IF;
2548 END IF;
2549
2550 --dbms_output.put_line( 'In update task 7' );
2551
2552 --Check Start Date
2553 -- Added for bug 5665772
2554 IF p_dates_check = 'Y' THEN
2555 IF (p_task_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE AND
2556 nvl(p_task_start_date,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) <>
2557 nvl(TSTART_DATE,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) ) -- Bug 6163119
2558 THEN
2559 PA_TASKS_MAINT_UTILS.Check_Start_Date(
2560 p_project_id => p_project_id,
2561 p_parent_task_id => TPARENT_TASK_ID,
2562 p_task_id => p_task_id, -- Bug 7386335
2563 p_start_date => p_task_start_date,
2564 x_return_status => l_ret,
2565 x_msg_count => l_msg_cnt,
2566 x_msg_data => l_msg_data);
2567 IF (l_ret <> 'S') THEN
2568 PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
2569 END IF;
2570 END IF;
2571 END IF;
2572
2573 --BUG 4081329, rtarway
2574 --Check Start Date EI
2575 IF (p_task_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE AND
2576 nvl(p_task_start_date,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) <>
2577 nvl(TSTART_DATE,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) ) -- Bug 6163119
2578 THEN
2579 PA_TASKS_MAINT_UTILS.Check_Start_Date_EI(
2580 p_project_id => p_project_id,
2581 p_task_id => p_task_id,
2582 p_start_date => p_task_start_date,
2583 x_return_status => l_ret,
2584 x_msg_count => l_msg_cnt,
2585 x_msg_data => l_msg_data);
2586 --Since This API would have Added message in Stack, dont add it again
2587 END IF;
2588 --End Add BUG 4081329, rtarway
2589 --dbms_output.put_line( 'In update task 8' );
2590
2591 -- Bug 7386335
2592 -- This serves only as a workaround fix. We cannot change the condition IF (x_msg_count = 1) to IF
2593 -- (x_msg_count > 1) since the change will have to be made in all the procedures involved in the flow.
2594 l_msg_count := FND_MSG_PUB.count_msg;
2595 IF (l_msg_count > 0) THEN
2596 x_msg_count := l_msg_count;
2597 IF (x_msg_count = 1) THEN
2598 pa_interface_utils_pub.get_messages(
2599 p_encoded => FND_API.G_TRUE,
2600 p_msg_index => 1,
2601 p_data => l_data,
2602 p_msg_index_out => l_msg_index_out);
2603 x_msg_data := l_data;
2604 END IF;
2605 RAISE FND_API.G_EXC_ERROR;
2606 END IF;
2607
2608 --Check Completion Date
2609 -- Added for bug 5665772
2610 IF p_dates_check = 'Y' THEN
2611
2612 IF (p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE AND
2613 nvl(p_task_completion_date,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) <>
2614 nvl(TCOMPLETION_DATE,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) ) -- Bug 6163119
2615 THEN
2616
2617 PA_TASKS_MAINT_UTILS.Check_End_Date(
2618 p_project_id => p_project_id,
2619 p_parent_task_id => TPARENT_TASK_ID,
2620 --p_task_id => NULL,
2621 p_task_id => p_task_id,--BUG 4081329, rtarway
2622 p_end_date => p_task_completion_date,
2623 x_return_status => l_ret,
2624 x_msg_count => l_msg_cnt,
2625 x_msg_data => l_msg_data);
2626 IF (l_ret <> 'S') THEN
2627 PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
2628 END IF;
2629 END IF;
2630 END IF;
2631
2632 --BUG 4081329, rtarway
2633 --Check Completion Date against EI date
2634 IF (p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE AND
2635 nvl(p_task_completion_date,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) <>
2636 nvl(TCOMPLETION_DATE,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) ) -- Bug 6163119
2637 THEN
2638
2639 PA_TASKS_MAINT_UTILS.Check_End_Date_EI(
2640 p_project_id => p_project_id,
2641 p_task_id => p_task_id,
2642 p_end_date => p_task_completion_date,
2643 x_return_status => l_ret,
2644 x_msg_count => l_msg_cnt,
2645 x_msg_data => l_msg_data);
2646 --Since This API would have Added message in Stack, dont add it again
2647 END IF;
2648 --End Add BUG 4081329, rtarway
2649
2650 --dbms_output.put_line( 'In update task 9' );
2651
2652 --Check Schedule Dates
2653 IF (p_scheduled_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
2654 p_scheduled_start_date IS NULL) AND
2655 (p_scheduled_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
2656 p_scheduled_finish_date IS NULL) THEN
2657 PA_TASKS_MAINT_UTILS.CHECK_SCHEDULE_DATES(
2658 p_project_id => p_project_id,
2659 p_sch_start_date => p_scheduled_start_date,
2660 p_sch_end_date => p_scheduled_finish_date,
2661 x_return_status => l_ret,
2662 x_msg_count => l_msg_cnt,
2663 x_msg_data => l_msg_data);
2664 -- IF (l_ret <> 'S') THEN
2665 -- PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
2666 -- END IF;
2667 END IF;
2668 --dbms_output.put_line( 'In update task 10' );
2669
2670 --Check Estimate Dates
2671 IF (p_estimated_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
2672 p_estimated_start_date IS NULL) AND
2673 (p_estimated_end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
2674 p_estimated_end_date IS NULL) THEN
2675 PA_TASKS_MAINT_UTILS.CHECK_ESTIMATE_DATES(
2676 p_project_id => p_project_id,
2677 p_estimate_start_date => p_estimated_start_date,
2678 p_estimate_end_date => p_estimated_end_date,
2679 x_return_status => l_ret,
2680 x_msg_count => l_msg_cnt,
2681 x_msg_data => l_msg_data);
2682 -- IF (l_ret <> 'S') THEN
2683 -- PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
2684 -- END IF;
2685 END IF;
2686
2687 --dbms_output.put_line( 'In update task 11' );
2688
2689 --Check Actual Dates
2690 IF (p_actual_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
2691 p_actual_start_date IS NULL) AND
2692 (p_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
2693 p_actual_finish_date IS NULL) THEN
2694 PA_TASKS_MAINT_UTILS.CHECK_ACTUAL_DATES(
2695 p_project_id => p_project_id,
2696 p_actual_start_date => p_actual_start_date,
2697 p_actual_end_date => p_actual_finish_date,
2698 x_return_status => l_ret,
2699 x_msg_count => l_msg_cnt,
2700 x_msg_data => l_msg_data);
2701 -- IF (l_ret <> 'S') THEN
2702 -- PA_UTILS.ADD_MESSAGE('PA', l_msg_data);
2703 -- END IF;
2704 END IF;
2705
2706 END IF;
2707
2708 --dbms_output.put_line( 'In update task 12' );
2709
2710 IF (p_calling_module IN ('SELF_SERVICE')) THEN
2711 -- Check if PRM is installed
2712 IF (PA_INSTALL.IS_PRM_LICENSED() = 'Y') THEN
2713 -- Work Type is required
2714 IF (p_work_type_id IS NULL) THEN
2715 PA_UTILS.ADD_MESSAGE('PA','PA_WORK_TYPE_REQ');
2716 END IF;
2717 END IF;
2718 null;
2719 END IF;
2720
2721 --Check if it is okay to change parent task
2722
2723 --dbms_output.put_line( 'In update task 13' );
2724
2725 IF (p_calling_module IN ('SELF_SERVICE', 'FORM')) THEN
2726 IF NVL( p_parent_task_id, -1 ) <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
2727 NVL( p_parent_task_id, -1 ) <> TPARENT_TASK_ID THEN --parent task has changed
2728
2729
2730
2731 IF (p_parent_task_id IS NOT NULL AND NVL( p_parent_task_id, -1 ) <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
2732
2733 l_msg_count := FND_MSG_PUB.count_msg;
2734
2735 --dbms_output.put_line( 'In update task 14 '|| l_msg_count);
2736
2737
2738 PA_PROJECT_PUB.CHECK_CHANGE_PARENT_OK(
2739 p_api_version_number => 1.0,
2740 p_project_id => p_project_id,
2741 p_task_id => p_task_id,
2742 p_new_parent_task_id => p_parent_task_id,
2743 p_pm_project_reference => NULL,
2744 p_pm_task_reference => NULL,
2745 p_pm_new_parent_task_reference => NULL,
2746 p_change_parent_ok_flag => l_change_parent_flag,
2747 p_return_status => l_ret,
2748 p_msg_count => l_msg_cnt,
2749 p_msg_data => l_msg_data);
2750
2751 l_msg_count := FND_MSG_PUB.count_msg;
2752
2753 --dbms_output.put_line( 'In update task 14 --erro msg '|| l_msg_count);
2754
2755 IF (l_change_parent_flag <> 'Y') THEN
2756 PA_UTILS.ADD_MESSAGE('PA', 'PA_CANT_CHANGE_PARENT');
2757 END IF;
2758 ELSE
2759 --new parent task is null; cannot change
2760 /* Bug2740269 -- commented the following message populataion. The parent can be null in case of top task
2761 PA_UTILS.ADD_MESSAGE('PA', 'PA_CANT_CHANGE_PARENT');
2762 */
2763 null;
2764 END IF;
2765 END IF;
2766 END IF;
2767
2768 -- Check if there is any error. Get new Task Id if no error
2769
2770 l_msg_count := FND_MSG_PUB.count_msg;
2771 IF (l_msg_count > 0) THEN
2772 x_msg_count := l_msg_count;
2773 IF (x_msg_count = 1) THEN
2774 pa_interface_utils_pub.get_messages(
2775 p_encoded => FND_API.G_TRUE,
2776 p_msg_index => 1,
2777 p_data => l_data,
2778 p_msg_index_out => l_msg_index_out);
2779 x_msg_data := l_data;
2780 END IF;
2781 RAISE FND_API.G_EXC_ERROR;
2782 END IF;
2783
2784
2785 --dbms_output.put_line( 'In update task 15' );
2786
2787 --Update with incoming parameters
2788 -- Replacing non-entered values
2789 IF (p_task_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_task_name IS NULL ) THEN
2790 TTASK_NAME := substrb(p_task_name,1,20); -- 4151509
2791 END IF;
2792
2793 IF (p_long_task_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_long_task_name IS NULL ) THEN
2794 TLONG_TASK_NAME := p_long_task_name;
2795 END IF;
2796 --dbms_output.put_line( 'In update task 15 -- 1' );
2797
2798
2799 IF (p_task_number <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_task_number IS NULL ) THEN
2800 TTASK_NUMBER := substrb(p_task_number,1,25); -- 4151509
2801 END IF;
2802
2803 --dbms_output.put_line( 'In update task 15 -- 2' );
2804
2805
2806 IF (p_task_description <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_task_description IS NULL ) THEN
2807 TDESCRIPTION := substrb(p_task_description,1,250); -- 4151509
2808 END IF;
2809
2810 IF (p_task_manager_person_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_task_manager_person_id IS NULL ) THEN
2811 TTASK_MANAGER_PERSON_ID := p_task_manager_person_id;
2812 END IF;
2813
2814 IF (p_carrying_out_organization_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_carrying_out_organization_id IS NULL ) THEN
2815 IF (p_carrying_out_organization_id IS NOT NULL) THEN
2816 TCARRYING_OUT_ORG_ID := p_carrying_out_organization_id;
2817 END IF;
2818 END IF;
2819
2820 IF (p_task_type_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_task_type_code IS NULL ) THEN
2821 TTASK_TYPE_CODE := p_task_type_code;
2822 END IF;
2823
2824 IF (p_priority_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_priority_code IS NULL ) THEN
2825 TPRIORITY_CODE := p_priority_code;
2826 END IF;
2827
2828 IF (p_work_type_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_work_type_id IS NULL ) THEN
2829 TWORK_TYPE_ID := p_work_type_id;
2830 END IF;
2831
2832 IF (p_service_type_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_service_type_code IS NULL ) THEN
2833 TSERVICE_TYPE_CODE := p_service_type_code;
2834 END IF;
2835
2836 IF (p_milestone_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_milestone_flag IS NULL ) THEN
2837 TMILESTONE_FLAG := p_milestone_flag;
2838 END IF;
2839
2840 IF (p_critical_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_critical_flag IS NULL ) THEN
2841 TCRITICAL_FLAG := p_critical_flag;
2842 END IF;
2843
2844 IF (p_chargeable_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_chargeable_flag IS NULL ) THEN
2845 TCHARGEABLE := p_chargeable_flag;
2846 END IF;
2847
2848 --hy
2849 --Check if child exist for current parent task. If not,
2850 --update chargeable flag to Y
2851 IF (Pa_Task_Utils.check_child_Exists(NVL(p_task_id,0)) = 1 ) THEN
2852 TCHARGEABLE := 'N';
2853 END IF;
2854
2855
2856 IF (p_billable_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_billable_flag IS NULL ) THEN
2857 TBILLABLE := p_billable_flag;
2858 END IF;
2859
2860 IF (p_receive_project_invoice_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_receive_project_invoice_flag IS NULL ) THEN
2861 --dbms_output.put_line( 'In update task 16' );
2862
2863 select project_type INTO TPROJECT_TYPE
2864 from pa_projects_all
2865 where project_id = p_project_id;
2866 PA_TASKS_MAINT_UTILS.Check_Chargeable_Flag( p_chargeable_flag => TCHARGEABLE,
2867 p_receive_project_invoice_flag => p_receive_project_invoice_flag,
2868 p_project_type => TPROJECT_TYPE,
2869 p_project_id => p_project_id, -- Added for bug#3512486
2870 x_receive_project_invoice_flag => TRECEIVE_PROJECT_INVOICE_FLAG);
2871 -- TRECEIVE_PROJECT_INVOICE_FLAG := p_receive_project_invoice_flag;
2872 END IF;
2873
2874 IF (p_scheduled_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_scheduled_start_date IS NULL ) THEN
2875 TSCHEDULED_START_DATE := p_scheduled_start_date;
2876 END IF;
2877
2878 IF (p_scheduled_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_scheduled_finish_date IS NULL ) THEN
2879 TSCHEDULED_FINISH_DATE := p_scheduled_finish_date;
2880 END IF;
2881
2882 IF (p_estimated_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_estimated_start_date IS NOT NULL ) THEN
2883 TESTIMATED_START_DATE := p_estimated_start_date;
2884
2885 ELSIF (TESTIMATED_START_DATE is NULL or TESTIMATED_START_DATE =PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
2886 TESTIMATED_START_DATE := TSCHEDULED_START_DATE;
2887 END IF;
2888
2889
2890 IF (p_estimated_end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_estimated_end_date IS NOT NULL ) THEN
2891 TESTIMATED_END_DATE := p_estimated_end_date;
2892
2893 ELSIF (TESTIMATED_END_DATE is NULL or TESTIMATED_END_DATE =PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
2894 TESTIMATED_END_DATE := TSCHEDULED_FINISH_DATE;
2895 END IF;
2896
2897 IF (p_actual_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_actual_start_date IS NULL ) THEN
2898 TACTUAL_START_DATE := p_actual_start_date;
2899 END IF;
2900
2901 IF (p_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_actual_finish_date IS NULL ) THEN
2902 TACTUAL_FINISH_DATE := p_actual_finish_date;
2903 END IF;
2904
2905 IF (p_task_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_task_start_date IS NULL ) THEN
2906 TSTART_DATE := p_task_start_date;
2907 END IF;
2908
2909 IF (p_task_completion_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_task_completion_date IS NULL ) THEN
2910 TCOMPLETION_DATE := p_task_completion_date;
2911 END IF;
2912
2913 IF (p_baseline_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_baseline_start_date IS NULL ) THEN
2914 TBASELINE_START_DATE := p_baseline_start_date;
2915 END IF;
2916
2917 IF (p_baseline_end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_baseline_end_date IS NULL ) THEN
2918 TBASELINE_END_DATE := p_baseline_end_date;
2919 END IF;
2920
2921 IF (p_obligation_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_obligation_start_date IS NULL ) THEN
2922 TOBLIGATION_START_DATE := p_obligation_start_date;
2923 END IF;
2924
2925 IF (p_obligation_end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_obligation_end_date IS NULL ) THEN
2926 TOBLIGATION_END_DATE := p_obligation_end_date;
2927 END IF;
2928
2929 IF (p_estimate_to_complete_work <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_estimate_to_complete_work IS NULL ) THEN
2930 TESTIMATE_TO_COMPLETE_WORK := p_estimate_to_complete_work;
2931 END IF;
2932
2933 IF (p_baseline_work <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_baseline_work IS NULL ) THEN
2934 TBASELINE_WORK := p_baseline_work;
2935 END IF;
2936
2937 IF (p_scheduled_work <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_scheduled_work IS NULL ) THEN
2938 TSCHEDULED_WORK := p_scheduled_work;
2939 END IF;
2940
2941 IF (p_actual_work_to_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_actual_work_to_date IS NULL ) THEN
2942 TACTUAL_WORK_TO_DATE := p_actual_work_to_date;
2943 END IF;
2944
2945 IF (p_work_unit <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_work_unit IS NULL ) THEN
2946 TWORK_UNIT_CODE := p_work_unit;
2947 END IF;
2948
2949 IF (p_progress_status_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_progress_status_code IS NULL ) THEN
2950 TPROGRESS_STATUS_CODE := p_progress_status_code;
2951 END IF;
2952
2953 IF (p_job_bill_rate_schedule_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_job_bill_rate_schedule_id IS NULL ) THEN
2954 TJOB_BILL_RATE_SCHEDULE_ID := p_job_bill_rate_schedule_id;
2955 END IF;
2956
2957 IF (p_emp_bill_rate_schedule_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_emp_bill_rate_schedule_id IS NULL ) THEN
2958 TEMP_BILL_RATE_SCHEDULE_ID := p_emp_bill_rate_schedule_id;
2959 END IF;
2960
2961 IF (p_address_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_address_id IS NULL ) THEN
2962 TADDRESS_ID := p_address_id;
2963 END IF;
2964
2965 IF (p_ready_to_bill_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_ready_to_bill_flag IS NULL ) THEN
2966 TREADY_TO_BILL_FLAG := p_ready_to_bill_flag;
2967 END IF;
2968
2969 IF (p_ready_to_distribute_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_ready_to_distribute_flag IS NULL ) THEN
2970 TREADY_TO_DISTRIBUTE_FLAG := p_ready_to_distribute_flag;
2971 END IF;
2972
2973 IF (p_limit_to_txn_controls_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_limit_to_txn_controls_flag IS NULL ) THEN
2974 TLIMIT_TO_TXN_CONTROLS_FLAG := p_limit_to_txn_controls_flag;
2975 END IF;
2976
2977 IF (p_labor_bill_rate_org_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_labor_bill_rate_org_id IS NULL ) THEN
2978 TLABOR_BILL_RATE_ORG_ID := p_labor_bill_rate_org_id;
2979 END IF;
2980
2981 IF (p_labor_std_bill_rate_schdl <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_labor_std_bill_rate_schdl IS NULL ) THEN
2982 TLABOR_STD_BILL_RATE_SCHDL := p_labor_std_bill_rate_schdl;
2983 END IF;
2984
2985 IF (p_labor_schedule_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_labor_schedule_fixed_date IS NULL ) THEN
2986 TLABOR_SCHEDULE_FIXED_DATE := p_labor_schedule_fixed_date;
2987 END IF;
2988
2989 IF (p_labor_schedule_discount <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_labor_schedule_discount IS NULL ) THEN
2990 TLABOR_SCHEDULE_DISCOUNT := p_labor_schedule_discount;
2991 END IF;
2992
2993 IF (p_nl_bill_rate_org_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_nl_bill_rate_org_id IS NULL ) THEN
2994 TNLR_BILL_RATE_ORG_ID := p_nl_bill_rate_org_id;
2995 END IF;
2996
2997 IF (p_nl_std_bill_rate_schdl <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_nl_std_bill_rate_schdl IS NULL ) THEN
2998 TNLR_STD_BILL_RATE_SCHDL := p_nl_std_bill_rate_schdl;
2999 END IF;
3000
3001 IF (p_nl_schedule_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_nl_schedule_fixed_date IS NULL ) THEN
3002 TNLR_SCHEDULE_FIXED_DATE := p_nl_schedule_fixed_date;
3003 END IF;
3004
3005 IF (p_nl_schedule_discount <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_nl_schedule_discount IS NULL ) THEN
3006 TNLR_SCHEDULE_DISCOUNT := p_nl_schedule_discount;
3007 END IF;
3008
3009 IF (p_labor_cost_multiplier_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_labor_cost_multiplier_name IS NULL ) THEN
3010 TLABOR_COST_MULTIPLIER_NAME := p_labor_cost_multiplier_name;
3011 END IF;
3012
3013 IF (p_cost_ind_rate_sch_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_cost_ind_rate_sch_id IS NULL ) THEN
3014 TCOST_IND_RATE_SCH_ID := p_cost_ind_rate_sch_id;
3015 END IF;
3016
3017 IF (p_rev_ind_rate_sch_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_rev_ind_rate_sch_id IS NULL ) THEN
3018 TREV_IND_RATE_SCH_ID := p_rev_ind_rate_sch_id;
3019 END IF;
3020
3021 IF (p_inv_ind_rate_sch_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_inv_ind_rate_sch_id IS NULL ) THEN
3022 TINV_IND_RATE_SCH_ID := p_inv_ind_rate_sch_id;
3023 END IF;
3024
3025 IF (p_cost_ind_sch_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_cost_ind_sch_fixed_date IS NULL ) THEN
3026 TCOST_IND_SCH_FIXED_DATE := p_cost_ind_sch_fixed_date;
3027 END IF;
3028
3029 IF (p_rev_ind_sch_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_rev_ind_sch_fixed_date IS NULL ) THEN
3030 TREV_IND_SCH_FIXED_DATE := p_rev_ind_sch_fixed_date;
3031 END IF;
3032
3033 IF (p_inv_ind_sch_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_inv_ind_sch_fixed_date IS NULL ) THEN
3034 TINV_IND_SCH_FIXED_DATE := p_inv_ind_sch_fixed_date;
3035 END IF;
3036
3037 IF (p_labor_sch_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_labor_sch_type IS NULL ) THEN
3038 TLABOR_SCH_TYPE := p_labor_sch_type;
3039 END IF;
3040
3041 IF (p_nl_sch_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_nl_sch_type IS NULL ) THEN
3042 TNLR_SCH_TYPE := p_nl_sch_type;
3043 END IF;
3044
3045 IF (p_early_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_early_start_date IS NULL ) THEN
3046 TEARLY_START_DATE := p_early_start_date;
3047 END IF;
3048
3049 IF (p_early_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_early_finish_date IS NULL ) THEN
3050 TEARLY_FINISH_DATE := p_early_finish_date;
3051 END IF;
3052
3053 IF (p_late_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_late_start_date IS NULL ) THEN
3054 TLATE_START_DATE := p_late_start_date;
3055 END IF;
3056
3057 IF (p_late_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_late_finish_date IS NULL ) THEN
3058 TLATE_FINISH_DATE := p_late_finish_date;
3059 END IF;
3060
3061 IF (p_attribute_category <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute_category IS NULL ) THEN
3062 TATTRIBUTE_CATEGORY := p_attribute_category;
3063 END IF;
3064
3065 IF (p_attribute1 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute1 IS NULL) THEN /* Modified for Bug#6041525 */
3066 TATTRIBUTE1 := p_attribute1;
3067 END IF;
3068
3069 IF (p_attribute2 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute2 IS NULL) THEN /* Modified for Bug#6041525 */
3070 TATTRIBUTE2 := p_attribute2;
3071 END IF;
3072
3073 IF (p_attribute3 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute3 IS NULL) THEN /* Modified for Bug#6041525 */
3074 TATTRIBUTE3 := p_attribute3;
3075 END IF;
3076
3077 IF (p_attribute4 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute4 IS NULL) THEN /* Modified for Bug#6041525 */
3078 TATTRIBUTE4 := p_attribute4;
3079 END IF;
3080
3081 IF (p_attribute5 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute5 IS NULL) THEN /* Modified for Bug#6041525 */
3082 TATTRIBUTE5 := p_attribute5;
3083 END IF;
3084
3085 IF (p_attribute6 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute6 IS NULL) THEN /* Modified for Bug#6041525 */
3086 TATTRIBUTE6 := p_attribute6;
3087 END IF;
3088
3089 IF (p_attribute7 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute7 IS NULL) THEN /* Modified for Bug#6041525 */
3090 TATTRIBUTE7 := p_attribute7;
3091 END IF;
3092
3093 IF (p_attribute8 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute8 IS NULL) THEN /* Modified for Bug#6041525 */
3094 TATTRIBUTE8 := p_attribute8;
3095 END IF;
3096
3097 IF (p_attribute9 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute9 IS NULL) THEN /* Modified for Bug#6041525 */
3098 TATTRIBUTE9 := p_attribute9;
3099 END IF;
3100
3101 IF (p_attribute10 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_attribute10 IS NULL) THEN /* Modified for Bug#6041525 */
3102 TATTRIBUTE10 := p_attribute10;
3103 END IF;
3104
3105 IF (p_allow_cross_charge_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_allow_cross_charge_flag IS NULL ) THEN
3106 TALLOW_CROSS_CHARGE_FLAG := p_allow_cross_charge_flag;
3107 END IF;
3108
3109 IF (p_project_rate_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_project_rate_date IS NULL ) THEN
3110 TPROJECT_RATE_DATE := p_project_rate_date;
3111 END IF;
3112
3113 IF (p_project_rate_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_project_rate_type IS NULL ) THEN
3114 TPROJECT_RATE_TYPE := p_project_rate_type;
3115 END IF;
3116
3117 IF (p_cc_process_labor_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_cc_process_labor_flag IS NULL ) THEN
3118 TCC_PROCESS_LABOR_FLAG := p_cc_process_labor_flag;
3119 END IF;
3120
3121 IF (p_labor_tp_schedule_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_labor_tp_schedule_id IS NULL ) THEN
3122 TLABOR_TP_SCHEDULE_ID := p_labor_tp_schedule_id;
3123 END IF;
3124
3125 IF (p_labor_tp_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_labor_tp_fixed_date IS NULL ) THEN
3126 TLABOR_TP_FIXED_DATE := p_labor_tp_fixed_date;
3127 END IF;
3128
3129 IF (p_cc_process_nl_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_cc_process_nl_flag IS NULL ) THEN
3130 TCC_PROCESS_NL_FLAG := p_cc_process_nl_flag;
3131 END IF;
3132
3133 IF (p_nl_tp_schedule_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_nl_tp_schedule_id IS NULL ) THEN
3134 TNL_TP_SCHEDULE_ID := p_nl_tp_schedule_id;
3135 END IF;
3136
3137 IF (p_nl_tp_fixed_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_nl_tp_fixed_date IS NULL ) THEN
3138 TNL_TP_FIXED_DATE := p_nl_tp_fixed_date;
3139 END IF;
3140
3141 --Added by ansari
3142 --dbms_output.put_line( 'In update task 15 -- 2' );
3143
3144 IF (p_top_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_top_task_id IS NULL ) THEN
3145 TTOP_TASK_ID := p_top_task_id;
3146 END IF;
3147
3148 IF (p_parent_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_parent_task_id IS NULL ) THEN
3149 TPARENT_TASK_ID := p_parent_task_id;
3150 END IF;
3151
3152 IF (p_wbs_level <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_wbs_level IS NULL ) THEN
3153 TWBS_LEVEL:= p_wbs_level;
3154 END IF;
3155
3156 IF (p_display_sequence <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
3157 TDISPLAY_SEQUENCE:= p_display_sequence;
3158 END IF;
3159
3160 IF (p_inc_proj_progress_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_inc_proj_progress_flag IS NULL ) THEN
3161 Tinc_proj_progress_flag:= p_inc_proj_progress_flag;
3162 END IF;
3163
3164 IF (p_comments <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_comments IS NULL ) THEN
3165 Tcomments:= p_comments;
3166 END IF;
3167
3168 IF (p_comments <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_comments IS NULL ) THEN
3169 Tcomments:= p_comments;
3170 END IF;
3171
3172
3173 IF (p_taskfunc_cost_rate_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_taskfunc_cost_rate_type IS NULL ) THEN
3174 ttaskfunc_cost_rate_type:= p_taskfunc_cost_rate_type;
3175 END IF;
3176
3177 IF (p_taskfunc_cost_rate_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_taskfunc_cost_rate_date IS NULL ) THEN
3178 ttaskfunc_cost_rate_date:= p_taskfunc_cost_rate_date;
3179 END IF;
3180
3181 IF (p_non_lab_std_bill_rt_sch_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_non_lab_std_bill_rt_sch_id IS NULL ) THEN
3182 tnon_lab_std_bill_rt_sch_id:= p_non_lab_std_bill_rt_sch_id;
3183 END IF;
3184 -- FP.K changes msundare
3185 IF (p_labor_disc_reason_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_labor_disc_reason_code IS NULL ) THEN
3186 Tlabor_disc_reason_code:= p_labor_disc_reason_code;
3187 END IF;
3188
3189 IF (p_non_labor_disc_reason_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_non_labor_disc_reason_code IS NULL ) THEN
3190 Tnon_labor_disc_reason_code:= p_non_labor_disc_reason_code;
3191 END IF;
3192
3193 --PA L Capital Project Changes 2872708
3194 IF (p_retirement_cost_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR
3195 p_retirement_cost_flag IS NULL ) THEN
3196 tretirement_cost_flag:= p_retirement_cost_flag;
3197 END IF;
3198
3199 IF (p_cint_eligible_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR
3200 p_cint_eligible_flag IS NULL ) THEN
3201 tcint_eligible_flag:= p_cint_eligible_flag;
3202 END IF;
3203
3204 IF (p_cint_stop_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR
3205 p_cint_stop_date IS NULL ) THEN
3206 tcint_stop_date:= p_cint_stop_date;
3207 END IF;
3208
3209 --End PA L Capital Project Changes 2872708
3210
3211 IF (p_gen_etc_src_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR or
3212 p_gen_etc_src_code IS NULL) THEN
3213 TGEN_ETC_SOURCE_CODE := p_gen_etc_src_code;
3214
3215
3216 END IF;
3217
3218 --dbms_output.put_line( 'In update task 17' );
3219
3220 -- update task
3221 PA_TASKS_PKG.update_row(
3222 l_rowid,
3223 p_task_id,
3224 p_project_id,
3225 TTASK_NUMBER,
3226 sysdate,
3227 FND_GLOBAL.USER_ID,
3228 FND_GLOBAL.USER_ID,
3229 TTASK_NAME,
3230 TLONG_TASK_NAME, --new
3231 TTOP_TASK_ID,
3232 TWBS_LEVEL,
3233 TREADY_TO_BILL_FLAG,
3234 TREADY_TO_DISTRIBUTE_FLAG,
3235 TPARENT_TASK_ID,
3236 TDESCRIPTION,
3237 TCARRYING_OUT_ORG_ID,
3238 TSERVICE_TYPE_CODE,
3239 TTASK_MANAGER_PERSON_ID,
3240 TCHARGEABLE,
3241 TBILLABLE,
3242 TLIMIT_TO_TXN_CONTROLS_FLAG,
3243 TSTART_DATE,
3244 TCOMPLETION_DATE,
3245 TADDRESS_ID,
3246 TLABOR_BILL_RATE_ORG_ID,
3247 TLABOR_STD_BILL_RATE_SCHDL,
3248 TLABOR_SCHEDULE_FIXED_DATE,
3249 TLABOR_SCHEDULE_DISCOUNT,
3250 TNLR_BILL_RATE_ORG_ID,
3251 TNLR_STD_BILL_RATE_SCHDL,
3252 TNLR_SCHEDULE_FIXED_DATE,
3253 TNLR_SCHEDULE_DISCOUNT,
3254 TLABOR_COST_MULTIPLIER_NAME,
3255 TATTRIBUTE_CATEGORY,
3256 TATTRIBUTE1,
3257 TATTRIBUTE2,
3258 TATTRIBUTE3,
3259 TATTRIBUTE4,
3260 TATTRIBUTE5,
3261 TATTRIBUTE6,
3262 TATTRIBUTE7,
3263 TATTRIBUTE8,
3264 TATTRIBUTE9,
3265 TATTRIBUTE10,
3266 TCOST_IND_RATE_SCH_ID,
3267 TREV_IND_RATE_SCH_ID,
3268 TINV_IND_RATE_SCH_ID,
3269 TCOST_IND_SCH_FIXED_DATE,
3270 TREV_IND_SCH_FIXED_DATE,
3271 TINV_IND_SCH_FIXED_DATE,
3272 TLABOR_SCH_TYPE,
3273 TNLR_SCH_TYPE,
3274 TALLOW_CROSS_CHARGE_FLAG,
3275 TPROJECT_RATE_DATE,
3276 TPROJECT_RATE_TYPE,
3277 TCC_PROCESS_LABOR_FLAG,
3278 TLABOR_TP_SCHEDULE_ID,
3279 TLABOR_TP_FIXED_DATE,
3280 TCC_PROCESS_NL_FLAG,
3281 TNL_TP_SCHEDULE_ID,
3282 TNL_TP_FIXED_DATE,
3283 TRECEIVE_PROJECT_INVOICE_FLAG,
3284 TWORK_TYPE_ID,
3285 TJOB_BILL_RATE_SCHEDULE_ID,
3286 TEMP_BILL_RATE_SCHEDULE_ID,
3287
3288 /*TTASK_TYPE_CODE,
3289 TDISPLAY_SEQUENCE, --DISPLAY SEQUENCE
3290 TPRIORITY_CODE,
3291 TCRITICAL_FLAG,
3292 TMILESTONE_FLAG,
3293 TSCHEDULED_START_DATE,
3294 TSCHEDULED_FINISH_DATE,
3295 TACTUAL_START_DATE, -- Actual Start Date
3296 TACTUAL_FINISH_DATE, -- Actual Finish Date
3297 TESTIMATED_START_DATE,
3298 TESTIMATED_END_DATE,
3299 TBASELINE_START_DATE,
3300 TBASELINE_END_DATE,
3301 TOBLIGATION_START_DATE,
3302 TOBLIGATION_END_DATE,
3303 TESTIMATE_TO_COMPLETE_WORK,
3304 TBASELINE_WORK,
3305 TSCHEDULED_WORK,
3306 TACTUAL_WORK_TO_DATE,
3307 TWORK_UNIT_CODE,
3308 TPROGRESS_STATUS_CODE,
3309 Tinc_proj_progress_flag,
3310 Tcomments,
3311 p_record_version_number --Record version Number*/
3312
3313 ttaskfunc_cost_rate_type,
3314 ttaskfunc_cost_rate_date,
3315 tnon_lab_std_bill_rt_sch_id,
3316 Tlabor_disc_reason_code,
3317 Tnon_labor_disc_reason_code,
3318 --PA L Capital Project Changes 2872708
3319 tretirement_cost_flag ,
3320 tcint_eligible_flag ,
3321 tcint_stop_date ,
3322 --End PA L Capital Project Changes 2872708
3323 tGEN_ETC_SOURCE_CODE
3324 );
3325
3326 x_return_status := FND_API.G_RET_STS_SUCCESS;
3327
3328
3329 EXCEPTION
3330 WHEN FND_API.G_EXC_ERROR THEN
3331 IF (p_commit = FND_API.G_TRUE) THEN
3332 ROLLBACK to UPDATE_TASK_PRIVATE;
3333 END IF;
3334 x_return_status := FND_API.G_RET_STS_ERROR;
3335 WHEN NO_DATA_FOUND THEN
3336 IF (p_commit = FND_API.G_TRUE) THEN
3337 ROLLBACK to UPDATE_TASK_PRIVATE;
3338 END IF;
3339 x_msg_count := FND_MSG_PUB.count_msg;
3340 x_return_status := FND_API.G_RET_STS_ERROR;
3341 WHEN OTHERS THEN
3342 IF (p_commit = FND_API.G_TRUE) THEN
3343 ROLLBACK to UPDATE_TASK_PRIVATE;
3344 END IF;
3345 x_msg_count := FND_MSG_PUB.count_msg;
3346 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3347 --put message
3348 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
3349 p_procedure_name => 'UPDATE_TASK',
3350 p_error_text => SUBSTRB(SQLERRM,1,240));
3351 RAISE;
3352 END UPDATE_TASK;
3353
3354
3355 procedure DELETE_TASK
3356 (
3357 p_api_version IN NUMBER := 1.0
3358 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
3359 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
3360 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
3361 ,p_validation_level IN VARCHAR2 := 100
3362 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
3363 ,p_debug_mode IN VARCHAR2 := 'N'
3364 ,p_task_id IN NUMBER
3365 ,p_record_version_number IN NUMBER
3366 ,p_called_from_api IN VARCHAR2 := 'ABCD'
3367 ,p_bulk_flag IN VARCHAR2 := 'N' -- 4201927
3368 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3369 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
3370 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3371 )
3372 IS
3373 l_msg_count NUMBER := 0;
3374
3375 l_err_code NUMBER := 0;
3376 l_err_stack VARCHAR2(630);
3377 l_err_stage VARCHAR2(80);
3378 l_data VARCHAR2(250);
3379 l_msg_data VARCHAR2(250);
3380 l_msg_index_out NUMBER;
3381
3382 l_delete_project_allowed VARCHAR2(1);
3383 l_update_proj_num_allowed VARCHAR2(1);
3384 l_update_proj_name_allowed VARCHAR2(1);
3385 l_update_proj_desc_allowed VARCHAR2(1);
3386 l_update_proj_dates_allowed VARCHAR2(1);
3387 l_update_proj_status_allowed VARCHAR2(1);
3388 l_update_proj_manager_allowed VARCHAR2(1);
3389 l_update_proj_org_allowed VARCHAR2(1);
3390 l_add_task_allowed VARCHAR2(1);
3391 l_delete_task_allowed VARCHAR2(1);
3392 l_update_task_num_allowed VARCHAR2(1);
3393 l_update_task_name_allowed VARCHAR2(1);
3394 l_update_task_dates_allowed VARCHAR2(1);
3395 l_update_task_desc_allowed VARCHAR2(1);
3396 l_update_parent_task_allowed VARCHAR2(1);
3397 l_update_task_org_allowed VARCHAR2(1);
3398
3399 t_pm_product_code PA_TASKS.PM_PRODUCT_CODE%TYPE;
3400 t_parent_task_id PA_TASKS.PARENT_TASK_ID%TYPE;
3401 BEGIN
3402 IF (p_debug_mode = 'Y') THEN
3403 pa_debug.debug('PA_TASKS_MAINT_PVT.DELETE_TASK BEGIN');
3404 END IF;
3405
3406 IF (p_commit = FND_API.G_TRUE) THEN
3407 savepoint DELETE_TASK_PRIVATE;
3408 END IF;
3409
3410 IF (p_debug_mode = 'Y') THEN
3411 pa_debug.debug('Performing validations');
3412 END IF;
3413
3414 -- Get PM_PRODUCT_CODE
3415 BEGIN
3416 select PM_PRODUCT_CODE, PARENT_TASK_ID
3417 into t_pm_product_code, t_parent_task_id
3418 from pa_tasks
3419 where task_id = p_task_id;
3420 EXCEPTION
3421 WHEN NO_DATA_FOUND THEN
3422 PA_UTILS.ADD_MESSAGE('PA','PA_EXP_NO_TASK'); -- specified task does not exist
3423 raise FND_API.G_EXC_ERROR;
3424 END;
3425
3426 -- Set controls
3427 IF (p_calling_module IN ('SELF_SERVICE')) THEN
3428 If (t_pm_product_code IS NOT NULL) THEN
3429 PA_PM_CONTROLS.GET_PROJECT_ACTIONS_ALLOWED(
3430 p_pm_product_code => t_pm_product_code,
3431 p_delete_project_allowed => l_delete_project_allowed,
3432 p_update_proj_num_allowed => l_update_proj_num_allowed,
3433 p_update_proj_name_allowed => l_update_proj_name_allowed,
3434 p_update_proj_desc_allowed => l_update_proj_desc_allowed,
3435 p_update_proj_dates_allowed => l_update_proj_dates_allowed,
3436 p_update_proj_status_allowed => l_update_proj_status_allowed,
3437 p_update_proj_manager_allowed => l_update_proj_manager_allowed,
3438 p_update_proj_org_allowed => l_update_proj_org_allowed,
3439 p_add_task_allowed => l_add_task_allowed,
3440 p_delete_task_allowed => l_delete_task_allowed,
3441 p_update_task_num_allowed => l_update_task_num_allowed,
3442 p_update_task_name_allowed => l_update_task_name_allowed,
3443 p_update_task_dates_allowed => l_update_task_dates_allowed,
3444 p_update_task_desc_allowed => l_update_task_desc_allowed,
3445 p_update_parent_task_allowed => l_update_parent_task_allowed,
3446 p_update_task_org_allowed => l_update_task_org_allowed,
3447 p_error_code => l_err_code,
3448 p_error_stack => l_err_stack,
3449 p_error_stage => l_err_stage
3450 );
3451 END IF; --product code is not null
3452 END IF;
3453
3454 If (p_calling_module IN ('SELF_SERVICE', 'FORM')) THEN
3455 --Check if task can be deleted;
3456 IF (t_pm_product_code IS NOT NULL) AND (l_delete_task_allowed = 'N') THEN
3457 PA_UTILS.ADD_MESSAGE('PA', 'PA_PR_PM_CANNOT_DELETE');
3458 raise FND_API.G_EXC_ERROR;
3459 END IF;
3460
3461 /* do not stop delting the last task. FPM changes
3462 refer bug 3427157
3463 IF p_called_from_api <> 'IMPORT' --do not perform the following validation if called from
3464 --PA_TASK_PUB1.DELETE_TASK_VERSION and PA_TASK_PUB1.DELETE_TASK_VERSION
3465 --is called from import logic.
3466 THEN
3467 --Check if this is last task;
3468 If (PA_TASK_UTILS.check_last_task(p_task_id) <> 0) THEN
3469 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3470 p_msg_name => 'PA_TK_CANT_DELETE_LAST_TASK');
3471 raise FND_API.G_EXC_ERROR;
3472 END IF;
3473 END IF;
3474 do not stop delting the last task. FPM changes*/
3475
3476 --Bug 2947492: The following api call is modified to pass parameters by notation.
3477 --Check if it is okay to delete task
3478 -- 4201927 If this api is getting called from bulk task delete version, p_bulk_flag will
3479 -- be passed as 'Y' and below validation will not be done in that flow
3480 IF p_bulk_flag = 'N' THEN
3481 PA_TASK_UTILS.CHECK_DELETE_TASK_OK(x_task_id => p_task_id,
3482 x_err_code => l_err_code,
3483 x_err_stage => l_err_stage,
3484 x_err_stack => l_err_stack);
3485 IF (l_err_code <> 0) THEN
3486 PA_UTILS.ADD_MESSAGE('PA', substr(l_err_stage, 1, 30));
3487 raise FND_API.G_EXC_ERROR;
3488 END IF;
3489 END IF;
3490 -- 4201927 end
3491
3492 END IF;
3493
3494 --Bug 2947492: The following api call is modified to pass parameters by notation.
3495 PA_PROJECT_CORE.Delete_Task(
3496 x_task_id => p_task_id,
3497 x_bulk_flag => p_bulk_flag,
3498 x_err_code => l_err_code,
3499 x_err_stage => l_err_stage,
3500 x_err_stack => l_err_stack);
3501
3502 If (l_err_code <> 0) THEN
3503 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3504 p_msg_name => substr(l_err_stage,1,30));
3505 raise FND_API.G_EXC_ERROR;
3506 END IF;
3507
3508 IF (p_calling_module IN ('SELF_SERVICE', 'FORM')) THEN
3509 --Check if child exist for current parent task. If not,
3510 --update chargeable flag to Y
3511 IF (Pa_Task_Utils.check_child_Exists(NVL(t_parent_task_id,0)) = 0 ) THEN
3512 UPDATE Pa_tasks
3513 SET Chargeable_Flag = 'Y',
3514 RECORD_VERSION_NUMBER = nvl(RECORD_VERSION_NUMBER,0) + 1,
3515 last_updated_by = FND_GLOBAL.USER_ID,
3516 last_update_login = FND_GLOBAL.USER_ID,
3517 last_update_date = sysdate
3518 WHERE TASK_ID = t_parent_task_id;
3519 END IF;
3520 END IF;
3521
3522 l_msg_count := FND_MSG_PUB.count_msg;
3523 IF (l_msg_count > 0) then
3524 x_msg_count := l_msg_count;
3525 IF (x_msg_count = 1) then
3526 pa_interface_utils_pub.get_messages
3527 (p_encoded => FND_API.G_TRUE,
3528 p_msg_index => 1,
3529 p_data => l_data,
3530 p_msg_index_out => l_msg_index_out);
3531 x_msg_data := l_data;
3532 end if;
3533 raise FND_API.G_EXC_ERROR;
3534 end if;
3535
3536 x_return_status := FND_API.G_RET_STS_SUCCESS;
3537
3538 EXCEPTION
3539 WHEN FND_API.G_EXC_ERROR THEN
3540 IF (p_commit = FND_API.G_TRUE) THEN
3541 ROLLBACK to DELETE_TASK_PRIVATE;
3542 END IF;
3543 x_msg_count := FND_MSG_PUB.count_msg;
3544 x_return_status := FND_API.G_RET_STS_ERROR;
3545 WHEN OTHERS THEN
3546 IF (p_commit = FND_API.G_TRUE) THEN
3547 ROLLBACK to DELETE_TASK_PRIVATE;
3548 END IF;
3549 x_msg_count := FND_MSG_PUB.count_msg;
3550 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3551 --put message
3552 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
3553 p_procedure_name => 'DELETE_TASK',
3554 p_error_text => SUBSTRB(SQLERRM,1,240));
3555 RAISE;
3556 END DELETE_TASK;
3557
3558 -- API name : Indent_Task
3559 -- Type : Private procedure
3560 -- Pre-reqs : None
3561 -- Return Value : N/A
3562 -- Prameters
3563 -- p_commit IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_FALSE
3564 -- p_validate_only IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_TRUE
3565 -- p_validation_level IN NUMBER OPTIONAL DEFAULT=FND_API.G_VALID_LEVEL_FULL
3566 -- p_calling_module IN VARCHAR2 OPTIONAL DEFAULT='SELF_SERVICE'
3567 -- p_debug_mode IN VARCHAR2 OPTIONAL DEFAULT='N'
3568 -- p_max_msg_count IN NUMBER OPTIONAL DEFAULT=FND_API.G_MISS_NUM
3569 -- p_project_id IN NUMBER REQUIRED
3570 -- p_task_id IN NUMBER REQUIRED
3571 -- p_record_version_number IN NUMBER REQUIRED DEFAULT=1
3572 -- x_return_status OUT VARCHAR2 REQUIRED
3573 -- x_msg_count OUT VARCHAR2 REQUIRED
3574 -- x_msg_data OUT VARCHAR2 REQUIRED
3575 --
3576 -- History
3577 --
3578 -- 25-JUN-01 Majid Ansari -Created
3579 --
3580 --
3581
3582 PROCEDURE Indent_Task(
3583 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
3584 ,p_validate_only IN VARCHAR2 DEFAULT FND_API.G_TRUE
3585 ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
3586 ,p_calling_module IN VARCHAR2 DEFAULT 'SELF_SERVICE'
3587 ,p_debug_mode IN VARCHAR2 DEFAULT 'N'
3588 ,p_max_msg_count IN NUMBER DEFAULT FND_API.G_MISS_NUM
3589 ,p_project_id IN NUMBER
3590 ,p_task_id IN NUMBER
3591 ,p_record_version_number IN NUMBER DEFAULT 1
3592 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3593 ,x_msg_count OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3594 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
3595
3596 CURSOR c1 IS
3597 select 'x'
3598 from PA_TASKS
3599 where project_id = p_project_id
3600 for update of record_version_number NOWAIT;
3601
3602 CURSOR c2 IS
3603 select 'x'
3604 from PA_TASKS
3605 where project_id = p_project_id;
3606
3607 CURSOR cur_task_heirarchy
3608 IS
3609 SELECT task_id, wbs_level, record_version_number
3610 FROM pa_tasks
3611 START WITH task_id = p_task_id
3612 CONNECT BY PRIOR task_id = parent_task_id;
3613
3614
3615 --Get the parent of the indenting task if the above task is at higher level
3616 CURSOR cur_parent_of_above( p_wbs_level NUMBER,
3617 p_top_task_id_above NUMBER,
3618 p_display_sequence NUMBER )
3619 IS
3620 /* SELECT task_id, top_task_id
3621 FROM pa_tasks
3622 WHERE wbs_level = p_wbs_level
3623 AND top_task_id = p_top_task_id_above
3624 AND display_sequence = ( SELECT max( display_sequence )
3625 FROM pa_tasks
3626 WHERE top_task_id = p_top_task_id_above
3627 AND wbs_level = p_wbs_level
3628 AND display_sequence < p_display_sequence );*/
3629 --Project Structure changes
3630 SELECT task_id, top_task_id
3631 FROM pa_tasks pt, pa_proj_element_versions ppev
3632 WHERE pt.wbs_level = p_wbs_level
3633 AND top_task_id = p_top_task_id_above
3634 AND pt.task_id = ppev.proj_element_id
3635 AND ppev.display_sequence = ( SELECT max( ppev.display_sequence )
3636 FROM pa_tasks pt, pa_proj_element_versions ppev
3637 WHERE top_task_id = p_top_task_id_above
3638 AND pt.wbs_level = p_wbs_level
3639 AND ppev.proj_element_id = pt.task_id
3640 AND ppev.display_sequence < p_display_sequence );
3641
3642 l_return_status VARCHAR2(1);
3643 l_msg_data VARCHAR2(250);
3644 l_msg_count NUMBER;
3645
3646 l_dummy VARCHAR2(1);
3647 l_error_msg_code VARCHAR2(250);
3648 l_data VARCHAR2(250);
3649 l_msg_index_out NUMBER;
3650
3651 l_task_level PA_TASKS.WBS_LEVEL%TYPE :=0;
3652 l_parent_task_id NUMBER;
3653 l_top_task_id NUMBER;
3654 l_display_sequence NUMBER;
3655
3656 l_task_level_above PA_TASKS.WBS_LEVEL%TYPE :=0;
3657 l_task_id_above NUMBER;
3658 l_parent_task_id_above NUMBER;
3659 l_top_task_id_above NUMBER;
3660 l_display_sequence_above NUMBER;
3661
3662 l_new_parent_id NUMBER;
3663 l_new_top_id NUMBER;
3664
3665 -- 23-JUL-2001 Added by HSIU
3666 l_err_code NUMBER := 0;
3667 l_err_stack VARCHAR2(630);
3668 l_err_stage VARCHAR2(80); -- VARCHAR2(80)
3669
3670 BEGIN
3671
3672 IF p_commit = FND_API.G_TRUE
3673 THEN
3674 SAVEPOINT Edit_Structure;
3675 END IF;
3676 x_return_status := 'S';
3677
3678 PA_TASKS_MAINT_UTILS.GetWbsLevel(
3679 p_project_id => p_project_id,
3680 p_task_id => p_task_id,
3681
3682 x_task_level => l_task_level,
3683 x_parent_task_id => l_parent_task_id,
3684 x_top_task_id => l_top_task_id,
3685 x_display_sequence => l_display_sequence,
3686
3687 x_task_id_above => l_task_id_above,
3688 x_task_level_above => l_task_level_above,
3689 x_parent_task_id_above => l_parent_task_id_above,
3690 x_top_task_id_above => l_top_task_id_above,
3691 x_display_sequence_above => l_display_sequence_above,
3692
3693 x_return_status => x_return_status,
3694 x_error_msg_code => x_msg_data );
3695
3696 -- if the above task is at the higher level ( with low wbs level value ) then the task
3697 -- cannot be indented.
3698
3699 --dbms_output.put_line( 'Indent Task PVT : Stage 1' );
3700 /* Bug2740269 -- Commented the following If condition and added a new
3701 IF l_task_level > l_task_level_above OR l_task_level = 1
3702 */
3703 IF l_task_level > l_task_level_above OR l_display_sequence = 1
3704 THEN
3705 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3706 p_msg_name => 'PA_TASK_CANNOT_INDENT' );
3707 x_msg_data := 'PA_TASK_CANNOT_INDENT';
3708 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3709 RAISE FND_API.G_EXC_ERROR;
3710
3711 ELSE
3712
3713 --dbms_output.put_line( 'Indent Task PVT : Stage 2' ||' l_task_level '||l_task_level||' l_task_level_above '||l_task_level_above);
3714
3715 -- If the above task has the same wbs level as that of the indenting task then the indenting
3716 -- task becomes the child of the above task
3717
3718 IF l_task_level = l_task_level_above
3719 THEN
3720 -- 0) Check if this task can have a subtask; no need to check in other cases since
3721 -- the task is already at a higher level, which means it is already a subtask of
3722 -- another task
3723 -- 23-JUL-2001
3724 -- Added by HSIU--check if the reference task can have child tasks
3725
3726 l_msg_count := FND_MSG_PUB.count_msg;
3727
3728 --dbms_output.put_line( 'Indent Task PVT : Stage 3 '||'Count '||l_msg_count );
3729
3730 PA_TASK_UTILS.CHECK_CREATE_SUBTASK_OK(x_task_id => l_task_id_above,
3731 x_err_code => l_err_code,
3732 x_err_stack => l_err_stack,
3733 x_err_stage => l_err_stage
3734 );
3735 IF (l_err_code <> 0) THEN
3736 PA_UTILS.ADD_MESSAGE('PA', substr(l_err_stage,1,30));
3737 END IF;
3738
3739 l_msg_count := FND_MSG_PUB.count_msg;
3740
3741 --dbms_output.put_line( 'Indent Task PVT : Stage 4'||' Count '||l_msg_count );
3742
3743 -- HSIU changes ends here
3744
3745 -- 1) update the parent task id of the indenting task with the above task id
3746 PA_TASKS_MAINT_PVT.UPDATE_TASK
3747 (
3748 p_commit => p_commit
3749 ,p_validate_only => p_validate_only
3750 ,p_validation_level => p_validation_level
3751 ,p_calling_module => p_calling_module
3752 ,p_debug_mode => p_debug_mode
3753
3754 ,p_project_id => p_project_id
3755 ,p_task_id => p_task_id
3756 ,p_parent_task_id => l_task_id_above
3757 ,p_record_version_number => p_record_version_number
3758 ,x_return_status => x_return_status
3759 ,x_msg_count => x_msg_count
3760 ,x_msg_data => x_msg_data );
3761
3762 l_msg_count := FND_MSG_PUB.count_msg;
3763
3764 --dbms_output.put_line( 'Indent Task PVT : Stage 5'||' Count '||l_msg_count );
3765
3766
3767 l_msg_count := FND_MSG_PUB.count_msg;
3768
3769 IF l_msg_count > 0 THEN
3770 x_msg_count := l_msg_count;
3771 x_return_status := 'E';
3772 RAISE FND_API.G_EXC_ERROR;
3773 END IF;
3774
3775 -- Changes for bug 3125880
3776 -- As Parent Task Id of the Task being indented is updated and b'coz of this
3777 -- for this particular case the parent task was earlier a lowest level task
3778 -- but now it has become a summarized level task so need to update its chargeable flag to N
3779
3780 UPDATE PA_TASKS SET CHARGEABLE_FLAG='N'
3781 WHERE TASK_ID = l_task_id_above;
3782
3783 -- End of Changes for bug 3125880
3784
3785 -- 2) update the wbs level of the indenting task and its children
3786
3787 --dbms_output.put_line( 'Indent Task PVT : Stage 6' );
3788
3789
3790 FOR cur_task_heirarchy_rec IN cur_task_heirarchy LOOP
3791
3792 PA_TASKS_MAINT_PVT.UPDATE_TASK
3793 (
3794 p_commit => p_commit
3795 ,p_validate_only => p_validate_only
3796 ,p_validation_level => p_validation_level
3797 ,p_calling_module => p_calling_module
3798 ,p_debug_mode => p_debug_mode
3799
3800 ,p_project_id => p_project_id
3801 ,p_task_id => cur_task_heirarchy_rec.task_id
3802 ,p_wbs_level => cur_task_heirarchy_rec.wbs_level + 1
3803
3804 --3) update the top task id of the indenting task including its children with the top task id of the task above.
3805 ,p_top_task_id => l_top_task_id_above
3806 ,p_record_version_number => cur_task_heirarchy_rec.record_version_number
3807 ,x_return_status => x_return_status
3808 ,x_msg_count => x_msg_count
3809 ,x_msg_data => x_msg_data );
3810
3811 l_msg_count := FND_MSG_PUB.count_msg;
3812
3813 IF l_msg_count > 0 THEN
3814 x_msg_count := l_msg_count;
3815 x_return_status := 'E';
3816 RAISE FND_API.G_EXC_ERROR;
3817 END IF;
3818
3819 END LOOP;
3820
3821 --dbms_output.put_line( 'Indent Task PVT : Stage 7' );
3822
3823 ELSIF l_task_level < l_task_level_above
3824 THEN
3825
3826
3827 -- 1) update the parent task id of the indenting task same as that above task in the above heirarchy which used to
3828 -- at the same level as that of indenting task before indenting.
3829
3830
3831 OPEN cur_parent_of_above( l_task_level , l_top_task_id_above, l_display_sequence );
3832 FETCH cur_parent_of_above INTO l_new_parent_id, l_new_top_id;
3833 CLOSE cur_parent_of_above;
3834
3835 PA_TASKS_MAINT_PVT.UPDATE_TASK
3836 (
3837 p_commit => p_commit
3838 ,p_validate_only => p_validate_only
3839 ,p_validation_level => p_validation_level
3840 ,p_calling_module => p_calling_module
3841 ,p_debug_mode => p_debug_mode
3842
3843 ,p_project_id => p_project_id
3844 ,p_task_id => p_task_id
3845 ,p_parent_task_id => l_new_parent_id
3846 ,p_record_version_number => p_record_version_number
3847 ,x_return_status => x_return_status
3848 ,x_msg_count => x_msg_count
3849 ,x_msg_data => x_msg_data );
3850
3851
3852 l_msg_count := FND_MSG_PUB.count_msg;
3853
3854 IF l_msg_count > 0 THEN
3855 x_msg_count := l_msg_count;
3856 x_return_status := 'E';
3857 RAISE FND_API.G_EXC_ERROR;
3858 END IF;
3859
3860 -- 2) update the top task id of the indenting task including its children with the top task id of the task above.
3861 -- 3) update the wbs level of the indenting task and its children
3862
3863
3864 FOR cur_task_heirarchy_rec IN cur_task_heirarchy LOOP
3865
3866 PA_TASKS_MAINT_PVT.UPDATE_TASK
3867 (
3868 p_commit => p_commit
3869 ,p_validate_only => p_validate_only
3870 ,p_validation_level => p_validation_level
3871 ,p_calling_module => p_calling_module
3872 ,p_debug_mode => p_debug_mode
3873
3874 ,p_project_id => p_project_id
3875 ,p_task_id => cur_task_heirarchy_rec.task_id
3876 ,p_wbs_level => cur_task_heirarchy_rec.wbs_level + 1
3877 ,p_top_task_id => l_top_task_id_above
3878 ,p_record_version_number => cur_task_heirarchy_rec.record_version_number
3879 ,x_return_status => x_return_status
3880 ,x_msg_count => x_msg_count
3881 ,x_msg_data => x_msg_data );
3882
3883 l_msg_count := FND_MSG_PUB.count_msg;
3884
3885 IF l_msg_count > 0 THEN
3886 x_msg_count := l_msg_count;
3887 x_return_status := 'E';
3888 RAISE FND_API.G_EXC_ERROR;
3889 END IF;
3890
3891 END LOOP;
3892 END IF;
3893 END IF;
3894
3895 EXCEPTION
3896 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3897 IF p_commit = FND_API.G_TRUE
3898 THEN
3899 ROLLBACK TO Edit_Structure;
3900 END IF;
3901 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3902 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
3903 p_procedure_name => 'Indent_task',
3904 p_error_text => SUBSTRB(SQLERRM,1,240));
3905 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3906
3907 WHEN FND_API.G_EXC_ERROR THEN
3908 IF p_commit = FND_API.G_TRUE
3909 THEN
3910 ROLLBACK TO Edit_Structure;
3911 END IF;
3912 x_return_status := 'E';
3913
3914 WHEN OTHERS THEN
3915 IF p_commit = FND_API.G_TRUE
3916 THEN
3917 ROLLBACK TO Edit_Structure;
3918 END IF;
3919 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3920 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
3921 p_procedure_name => 'Indent_task',
3922 p_error_text => SUBSTRB(SQLERRM,1,240));
3923 RAISE;
3924
3925 END Indent_Task;
3926
3927 -- API name : Outdent_Task
3928 -- Type : Private procedure
3929 -- Pre-reqs : None
3930 -- Return Value : N/A
3931 -- Prameters
3932 -- p_commit IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_FALSE
3933 -- p_validate_only IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_TRUE
3934 -- p_validation_level IN NUMBER OPTIONAL DEFAULT=FND_API.G_VALID_LEVEL_FULL
3935 -- p_calling_module IN VARCHAR2 OPTIONAL DEFAULT='SELF_SERVICE'
3936 -- p_debug_mode IN VARCHAR2 OPTIONAL DEFAULT='N'
3937 -- p_max_msg_count IN NUMBER OPTIONAL DEFAULT=FND_API.G_MISS_NUM
3938 -- p_project_id IN NUMBER REQUIRED
3939 -- p_task_id IN NUMBER REQUIRED
3940 -- p_record_version_number IN NUMBER REQUIRED DEFAULT=1
3941 -- x_return_status OUT VARCHAR2 REQUIRED
3942 -- x_msg_count OUT VARCHAR2 REQUIRED
3943 -- x_msg_data OUT VARCHAR2 REQUIRED
3944 --
3945 -- History
3946 --
3947 -- 25-JUN-01 Majid Ansari -Created
3948 --
3949 --
3950
3951 PROCEDURE Outdent_Task(
3952 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
3953 ,p_validate_only IN VARCHAR2 DEFAULT FND_API.G_TRUE
3954 ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
3955 ,p_calling_module IN VARCHAR2 DEFAULT 'SELF_SERVICE'
3956 ,p_debug_mode IN VARCHAR2 DEFAULT 'N'
3957 ,p_max_msg_count IN NUMBER DEFAULT FND_API.G_MISS_NUM
3958 ,p_project_id IN NUMBER
3959 ,p_task_id IN NUMBER
3960 ,p_record_version_number IN NUMBER DEFAULT 1
3961 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3962 ,x_msg_count OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3963 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
3964
3965 l_return_status VARCHAR2(1);
3966 l_msg_data VARCHAR2(250);
3967 l_msg_count NUMBER;
3968
3969 l_dummy VARCHAR2(1);
3970 l_error_msg_code VARCHAR2(250);
3971 l_data VARCHAR2(250);
3972 l_msg_index_out NUMBER;
3973
3974 l_task_level PA_TASKS.WBS_LEVEL%TYPE :=0;
3975 l_parent_task_id NUMBER;
3976 l_top_task_id NUMBER;
3977 l_display_sequence NUMBER;
3978
3979 l_task_level_above PA_TASKS.WBS_LEVEL%TYPE :=0;
3980 l_task_id_above NUMBER;
3981 l_parent_task_id_above NUMBER;
3982 l_top_task_id_above NUMBER;
3983 l_display_sequence_above NUMBER;
3984 l_new_parent_id NUMBER;
3985 l_new_top_id NUMBER;
3986
3987 CURSOR c1 IS
3988 select 'x'
3989 from PA_TASKS
3990 where project_id = p_project_id
3991 for update of record_version_number NOWAIT;
3992
3993 CURSOR c2 IS
3994 select 'x'
3995 from PA_TASKS
3996 where project_id = p_project_id;
3997
3998
3999 CURSOR cur_task_heirarchy( p_task_id NUMBER )
4000 IS
4001 SELECT task_id, wbs_level, record_version_number
4002 FROM pa_tasks
4003 START WITH task_id = p_task_id
4004 CONNECT BY PRIOR task_id = parent_task_id;
4005
4006
4007 --For updating top task id
4008 --select all tasks under outdenting task's parent task with display sequence greater than
4009 --the display sequence of the outdenting task
4010 CURSOR cur_all_tasks( p_top_task_id NUMBER, p_display_sequence NUMBER )
4011 IS
4012 /*SELECT task_id, record_version_number
4013 FROM pa_tasks
4014 WHERE top_task_id = p_top_task_id
4015 AND display_sequence > p_display_sequence;*/
4016
4017 --Project Structure changes
4018 SELECT pt.task_id, pt.record_version_number
4019 FROM pa_tasks pt, pa_proj_element_versions ppev
4020 WHERE top_task_id = p_top_task_id
4021 AND pt.task_id = ppev.proj_element_id
4022 AND ppev.display_sequence >= p_display_sequence; --bug 2968468
4023
4024 --For updating parent task id
4025 --All tasks ,that were peer task with outdenting task with larger display order than outdenting task,
4026 --now becomes children of outdenting task.
4027 CURSOR cur_new_child_task( p_wbs_level NUMBER, p_display_sequence NUMBER )
4028 IS
4029 /* SELECT task_id, record_version_number
4030 FROM pa_tasks
4031 WHERE wbs_level = p_wbs_level
4032 AND parent_task_id = l_parent_task_id
4033 AND project_id = p_project_id
4034 AND display_sequence > p_display_sequence;*/
4035
4036 SELECT pt.task_id, pt.record_version_number
4037 FROM pa_tasks pt, pa_proj_element_versions ppev
4038 WHERE pt.wbs_level = p_wbs_level
4039 AND parent_task_id = l_parent_task_id
4040 AND pt.project_id = p_project_id
4041 AND pt.task_id = ppev.proj_element_id
4042 AND ppev.display_sequence > p_display_sequence;
4043
4044 CURSOR cur_parent_of_above( p_wbs_level NUMBER, p_top_task_id_above NUMBER )
4045 IS
4046 SELECT parent_task_id, top_task_id
4047 FROM pa_tasks
4048 WHERE wbs_level = p_wbs_level
4049 AND project_id = p_project_id
4050 AND top_task_id = p_top_task_id_above;
4051 BEGIN
4052
4053 IF p_commit = FND_API.G_TRUE
4054 THEN
4055 SAVEPOINT Edit_Structure;
4056 END IF;
4057 x_return_status := 'S';
4058
4059 PA_TASKS_MAINT_UTILS.GetWbsLevel(
4060 p_project_id => p_project_id,
4061 p_task_id => p_task_id,
4062
4063 x_task_level => l_task_level,
4064 x_parent_task_id => l_parent_task_id,
4065 x_top_task_id => l_top_task_id,
4066 x_display_sequence => l_display_sequence,
4067
4068 x_task_id_above => l_task_id_above,
4069 x_task_level_above => l_task_level_above,
4070 x_parent_task_id_above => l_parent_task_id_above,
4071 x_top_task_id_above => l_top_task_id_above,
4072 x_display_sequence_above => l_display_sequence_above,
4073
4074 x_return_status => x_return_status,
4075 x_error_msg_code => x_msg_data );
4076
4077
4078 --If if the selected task is topmost task then it cannot be outdented.
4079 IF l_top_task_id = p_task_id OR l_task_level = 1
4080 THEN
4081 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4082 p_msg_name => 'PA_TASK_CANNOT_OUTDENT' );
4083 x_msg_data := 'PA_TASK_CANNOT_OUTDENT';
4084 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4085 RAISE FND_API.G_EXC_ERROR;
4086 END IF;
4087
4088 --If the task above is at lower wbs level
4089 IF l_task_level_above < l_task_level
4090 THEN
4091 --2) update the parent task id of outdenting task with the parent task id of the task above
4092
4093 PA_TASKS_MAINT_PVT.UPDATE_TASK
4094 (
4095 p_commit => p_commit
4096 ,p_validate_only => p_validate_only
4097 ,p_validation_level => p_validation_level
4098 ,p_calling_module => p_calling_module
4099 ,p_debug_mode => p_debug_mode
4100
4101 ,p_project_id => p_project_id
4102 ,p_task_id => p_task_id
4103 ,p_parent_task_id => l_parent_task_id_above
4104 ,p_record_version_number => p_record_version_number
4105 ,x_return_status => x_return_status
4106 ,x_msg_count => x_msg_count
4107 ,x_msg_data => x_msg_data );
4108
4109 l_msg_count := FND_MSG_PUB.count_msg;
4110
4111 IF l_msg_count > 0 THEN
4112 x_msg_count := l_msg_count;
4113 x_return_status := 'E';
4114 RAISE FND_API.G_EXC_ERROR;
4115 END IF;
4116
4117 --1) update wbs level of outdenting task includinf its children
4118
4119 FOR cur_task_heirarchy_rec IN cur_task_heirarchy( p_task_id ) LOOP
4120
4121 PA_TASKS_MAINT_PVT.UPDATE_TASK
4122 (
4123 p_commit => p_commit
4124 ,p_validate_only => p_validate_only
4125 ,p_validation_level => p_validation_level
4126 ,p_calling_module => p_calling_module
4127 ,p_debug_mode => p_debug_mode
4128
4129 ,p_project_id => p_project_id
4130 ,p_task_id => cur_task_heirarchy_rec.task_id
4131 ,p_wbs_level => cur_task_heirarchy_rec.wbs_level - 1
4132 ,p_record_version_number => cur_task_heirarchy_rec.record_version_number
4133 ,x_return_status => x_return_status
4134 ,x_msg_count => x_msg_count
4135 ,x_msg_data => x_msg_data );
4136
4137 l_msg_count := FND_MSG_PUB.count_msg;
4138
4139 IF l_msg_count > 0 THEN
4140 x_msg_count := l_msg_count;
4141 x_return_status := 'E';
4142 RAISE FND_API.G_EXC_ERROR;
4143 END IF;
4144
4145 END LOOP;
4146
4147
4148 --3) update top_task id for all the task including outdenting task that belong to the
4149 -- to parent task of the outdenting task with display order larger than the outdenting
4150 -- task.
4151
4152 --if the outdenting task is going to be the top most task then
4153 --update the top task ids of outdenting task's new children with outdenting task id.
4154
4155 IF l_parent_task_id_above IS NULL
4156 THEN
4157 FOR cur_all_tasks_rec IN cur_all_tasks( l_top_task_id , l_display_sequence ) LOOP
4158
4159 PA_TASKS_MAINT_PVT.UPDATE_TASK
4160 (
4161 p_commit => p_commit
4162 ,p_validate_only => p_validate_only
4163 ,p_validation_level => p_validation_level
4164 ,p_calling_module => p_calling_module
4165 ,p_debug_mode => p_debug_mode
4166
4167 ,p_project_id => p_project_id
4168 ,p_task_id => cur_all_tasks_rec.task_id
4169 ,p_top_task_id => p_task_id
4170 ,p_record_version_number => cur_all_tasks_rec.record_version_number
4171 ,x_return_status => x_return_status
4172 ,x_msg_count => x_msg_count
4173 ,x_msg_data => x_msg_data );
4174
4175 l_msg_count := FND_MSG_PUB.count_msg;
4176
4177 IF l_msg_count > 0 THEN
4178 x_msg_count := l_msg_count;
4179 x_return_status := 'E';
4180 RAISE FND_API.G_EXC_ERROR;
4181 END IF;
4182
4183 END LOOP;
4184 END IF;
4185
4186 --4) update the parent task id of all tasks are new children underneath the outdenting task
4187 --( these new child tasks used to be at the same level before the outdenting task outedented )
4188 --l_task_level now contains old value of the wbs level.
4189 FOR cur_new_child_task_rec IN cur_new_child_task( l_task_level, l_display_sequence ) LOOP
4190
4191 PA_TASKS_MAINT_PVT.UPDATE_TASK
4192 (
4193 p_commit => p_commit
4194 ,p_validate_only => p_validate_only
4195 ,p_validation_level => p_validation_level
4196 ,p_calling_module => p_calling_module
4197 ,p_debug_mode => p_debug_mode
4198
4199 ,p_project_id => p_project_id
4200 ,p_task_id => cur_new_child_task_rec.task_id
4201 ,p_parent_task_id => p_task_id
4202 ,p_record_version_number => cur_new_child_task_rec.record_version_number
4203 ,x_return_status => x_return_status
4204 ,x_msg_count => x_msg_count
4205 ,x_msg_data => x_msg_data );
4206
4207 l_msg_count := FND_MSG_PUB.count_msg;
4208
4209 IF l_msg_count > 0 THEN
4210 x_msg_count := l_msg_count;
4211 x_return_status := 'E';
4212 RAISE FND_API.G_EXC_ERROR;
4213 END IF;
4214
4215 END LOOP;
4216
4217 --task above having wbs level greater than the wbs level of outdenting task.
4218 ELSIF l_task_level_above > l_task_level
4219 THEN
4220
4221 --2) update the parent task id and top task id of the outdenting task.
4222
4223 OPEN cur_parent_of_above( l_task_level - 1, l_top_task_id_above );
4224 FETCH cur_parent_of_above INTO l_new_parent_id, l_new_top_id;
4225 CLOSE cur_parent_of_above;
4226
4227 --The outdenting task may become a child of another task or
4228 --it may become the top most task in its branch.
4229
4230
4231 IF l_new_parent_id IS NULL
4232 THEN
4233 l_new_top_id := p_task_id;
4234 l_new_parent_id := null;
4235 END IF;
4236 PA_TASKS_MAINT_PVT.UPDATE_TASK
4237 (
4238 p_commit => p_commit
4239 ,p_validate_only => p_validate_only
4240 ,p_validation_level => p_validation_level
4241 ,p_calling_module => p_calling_module
4242 ,p_debug_mode => p_debug_mode
4243 ,p_project_id => p_project_id
4244 ,p_task_id => p_task_id
4245 ,p_parent_task_id => l_new_parent_id
4246 ,p_top_task_id => l_new_top_id
4247 ,p_record_version_number => p_record_version_number
4248 ,x_return_status => x_return_status
4249 ,x_msg_count => x_msg_count
4250 ,x_msg_data => x_msg_data );
4251
4252 l_msg_count := FND_MSG_PUB.count_msg;
4253
4254 IF l_msg_count > 0 THEN
4255 x_msg_count := l_msg_count;
4256 x_return_status := 'E';
4257 RAISE FND_API.G_EXC_ERROR;
4258 END IF;
4259
4260
4261 --1) update wbs level
4262
4263 FOR cur_task_heirarchy_rec IN cur_task_heirarchy( p_task_id ) LOOP
4264
4265 PA_TASKS_MAINT_PVT.UPDATE_TASK
4266 (
4267 p_commit => p_commit
4268 ,p_validate_only => p_validate_only
4269 ,p_validation_level => p_validation_level
4270 ,p_calling_module => p_calling_module
4271 ,p_debug_mode => p_debug_mode
4272
4273 ,p_project_id => p_project_id
4274 ,p_task_id => cur_task_heirarchy_rec.task_id
4275 ,p_wbs_level => cur_task_heirarchy_rec.wbs_level - 1
4276 ,p_record_version_number => cur_task_heirarchy_rec.record_version_number
4277 ,x_return_status => x_return_status
4278 ,x_msg_count => x_msg_count
4279 ,x_msg_data => x_msg_data );
4280
4281 l_msg_count := FND_MSG_PUB.count_msg;
4282
4283 IF l_msg_count > 0 THEN
4284 x_msg_count := l_msg_count;
4285 x_return_status := 'E';
4286 RAISE FND_API.G_EXC_ERROR;
4287 END IF;
4288
4289 END LOOP;
4290
4291
4292 --4) update the parent task id of all tasks are new children underneath the outdenting task
4293 --( these new child tasks used to be at the same level before the outdenting task outedented )
4294 --l_task_level now contains old value of the wbs level.
4295 --Also update the top task id for the new children
4296 FOR cur_new_child_task_rec IN cur_new_child_task( l_task_level, l_display_sequence ) LOOP
4297
4298 PA_TASKS_MAINT_PVT.UPDATE_TASK
4299 (
4300 p_commit => p_commit
4301 ,p_validate_only => p_validate_only
4302 ,p_validation_level => p_validation_level
4303 ,p_calling_module => p_calling_module
4304 ,p_debug_mode => p_debug_mode
4305
4306 ,p_project_id => p_project_id
4307 ,p_task_id => cur_new_child_task_rec.task_id
4308 ,p_parent_task_id => p_task_id
4309 ,p_top_task_id => l_new_top_id
4310 ,p_record_version_number => cur_new_child_task_rec.record_version_number
4311 ,x_return_status => x_return_status
4312 ,x_msg_count => x_msg_count
4313 ,x_msg_data => x_msg_data );
4314
4315 l_msg_count := FND_MSG_PUB.count_msg;
4316
4317 IF l_msg_count > 0 THEN
4318 x_msg_count := l_msg_count;
4319 x_return_status := 'E';
4320 RAISE FND_API.G_EXC_ERROR;
4321 END IF;
4322
4323 END LOOP;
4324
4325 ELSIF l_task_level_above = l_task_level
4326 THEN
4327
4328 -- The outdenting task when outdented IS NOT a topmost task
4329 IF l_task_level > 2
4330 THEN
4331
4332 --1) update the parent task id of the outdenting task.
4333
4334 --Here the task above and the outdenting task used to be at the same level
4335 --therefore the parent of, parent of the task above, is the parent of the
4336 --outdenting task. So pass wbs level as after outdenting.
4337
4338 OPEN cur_parent_of_above( l_task_level - 1, l_top_task_id_above );
4339 FETCH cur_parent_of_above INTO l_new_parent_id, l_new_top_id;
4340 CLOSE cur_parent_of_above;
4341
4342 --The outdenting task may become a child of another task or
4343 --it may become the top most task in its branch.
4344
4345 PA_TASKS_MAINT_PVT.UPDATE_TASK
4346 (
4347 p_commit => p_commit
4348 ,p_validate_only => p_validate_only
4349 ,p_validation_level => p_validation_level
4350 ,p_calling_module => p_calling_module
4351 ,p_debug_mode => p_debug_mode
4352 ,p_project_id => p_project_id
4353 ,p_task_id => p_task_id
4354 ,p_parent_task_id => l_new_parent_id
4355 ,p_record_version_number => p_record_version_number
4356 ,x_return_status => x_return_status
4357 ,x_msg_count => x_msg_count
4358 ,x_msg_data => x_msg_data );
4359
4360 l_msg_count := FND_MSG_PUB.count_msg;
4361
4362 IF l_msg_count > 0 THEN
4363 x_msg_count := l_msg_count;
4364 x_return_status := 'E';
4365 RAISE FND_API.G_EXC_ERROR;
4366 END IF;
4367
4368 --1) update wbs level of outdenting task and its all child tasks
4369 FOR cur_task_heirarchy_rec IN cur_task_heirarchy( p_task_id ) LOOP
4370
4371 PA_TASKS_MAINT_PVT.UPDATE_TASK
4372 (
4373 p_commit => p_commit
4374 ,p_validate_only => p_validate_only
4375 ,p_validation_level => p_validation_level
4376 ,p_calling_module => p_calling_module
4377 ,p_debug_mode => p_debug_mode
4378
4379 ,p_project_id => p_project_id
4380 ,p_task_id => cur_task_heirarchy_rec.task_id
4381 ,p_wbs_level => cur_task_heirarchy_rec.wbs_level - 1
4382 ,p_record_version_number => cur_task_heirarchy_rec.record_version_number
4383 ,x_return_status => x_return_status
4384 ,x_msg_count => x_msg_count
4385 ,x_msg_data => x_msg_data );
4386
4387 l_msg_count := FND_MSG_PUB.count_msg;
4388
4389 IF l_msg_count > 0 THEN
4390 x_msg_count := l_msg_count;
4391 x_return_status := 'E';
4392 RAISE FND_API.G_EXC_ERROR;
4393 END IF;
4394 END LOOP;
4395
4396 --2) updating parent of the new children
4397
4398 -- update the parent task id of all tasks taht are new children underneath the outdenting task
4399 --( these new child tasks used to be at the same level before the outdenting task outedented )
4400 --l_task_level now contains old value of the wbs level.
4401 FOR cur_new_child_task_rec IN cur_new_child_task( l_task_level, l_display_sequence ) LOOP
4402
4403 PA_TASKS_MAINT_PVT.UPDATE_TASK
4404 (
4405 p_commit => p_commit
4406 ,p_validate_only => p_validate_only
4407 ,p_validation_level => p_validation_level
4408 ,p_calling_module => p_calling_module
4409 ,p_debug_mode => p_debug_mode
4410
4411 ,p_project_id => p_project_id
4412 ,p_task_id => cur_new_child_task_rec.task_id
4413 ,p_parent_task_id => p_task_id
4414 ,p_record_version_number => cur_new_child_task_rec.record_version_number
4415 ,x_return_status => x_return_status
4416 ,x_msg_count => x_msg_count
4417 ,x_msg_data => x_msg_data );
4418
4419 l_msg_count := FND_MSG_PUB.count_msg;
4420
4421 IF l_msg_count > 0 THEN
4422 x_msg_count := l_msg_count;
4423 x_return_status := 'E';
4424 RAISE FND_API.G_EXC_ERROR;
4425 END IF;
4426
4427 END LOOP;
4428
4429 -- The outdenting task becomes the top most task
4430 ELSIF l_task_level = 2
4431 THEN
4432 --1) update parent of outdenting task as null
4433 PA_TASKS_MAINT_PVT.UPDATE_TASK
4434 (
4435 p_commit => p_commit
4436 ,p_validate_only => p_validate_only
4437 ,p_validation_level => p_validation_level
4438 ,p_calling_module => p_calling_module
4439 ,p_debug_mode => p_debug_mode
4440 ,p_project_id => p_project_id
4441 ,p_task_id => p_task_id
4442 ,p_parent_task_id => null
4443
4444 -- updating the outdenting top task with p_task id
4445 ,p_top_task_id => p_task_id
4446 ,p_record_version_number => p_record_version_number
4447 ,x_return_status => x_return_status
4448 ,x_msg_count => x_msg_count
4449 ,x_msg_data => x_msg_data );
4450
4451 l_msg_count := FND_MSG_PUB.count_msg;
4452
4453 IF l_msg_count > 0 THEN
4454 x_msg_count := l_msg_count;
4455 x_return_status := 'E';
4456 RAISE FND_API.G_EXC_ERROR;
4457 END IF;
4458
4459 --2) updating parent of the new children
4460
4461 -- update the parent task id of all tasks taht are new children underneath the outdenting task
4462 --( these new child tasks used to be at the same level before the outdenting task outedented )
4463 --l_task_level now contains old value of the wbs level.
4464 FOR cur_new_child_task_rec IN cur_new_child_task( l_task_level, l_display_sequence ) LOOP
4465
4466 PA_TASKS_MAINT_PVT.UPDATE_TASK
4467 (
4468 p_commit => p_commit
4469 ,p_validate_only => p_validate_only
4470 ,p_validation_level => p_validation_level
4471 ,p_calling_module => p_calling_module
4472 ,p_debug_mode => p_debug_mode
4473
4474 ,p_project_id => p_project_id
4475 ,p_task_id => cur_new_child_task_rec.task_id
4476 ,p_parent_task_id => p_task_id
4477
4478 -- updating the new child top tas with p_task id
4479 ,p_top_task_id => p_task_id
4480 ,p_record_version_number => cur_new_child_task_rec.record_version_number
4481 ,x_return_status => x_return_status
4482 ,x_msg_count => x_msg_count
4483 ,x_msg_data => x_msg_data );
4484
4485 l_msg_count := FND_MSG_PUB.count_msg;
4486
4487 IF l_msg_count > 0 THEN
4488 x_msg_count := l_msg_count;
4489 x_return_status := 'E';
4490 RAISE FND_API.G_EXC_ERROR;
4491 END IF;
4492
4493 --updating top_task_id of child tasks of outdenting task's new child tasks
4494 FOR cur_task_heirarchy_rec IN cur_task_heirarchy( cur_new_child_task_rec.task_id ) LOOP
4495 PA_TASKS_MAINT_PVT.UPDATE_TASK
4496 (
4497 p_commit => p_commit
4498 ,p_validate_only => p_validate_only
4499 ,p_validation_level => p_validation_level
4500 ,p_calling_module => p_calling_module
4501 ,p_debug_mode => p_debug_mode
4502
4503 ,p_project_id => p_project_id
4504 ,p_task_id => cur_task_heirarchy_rec.task_id
4505 ,p_top_task_id => p_task_id
4506 ,p_record_version_number => cur_task_heirarchy_rec.record_version_number
4507 ,x_return_status => x_return_status
4508 ,x_msg_count => x_msg_count
4509 ,x_msg_data => x_msg_data );
4510
4511 l_msg_count := FND_MSG_PUB.count_msg;
4512
4513 IF l_msg_count > 0 THEN
4514 x_msg_count := l_msg_count;
4515 x_return_status := 'E';
4516 RAISE FND_API.G_EXC_ERROR;
4517 END IF;
4518 END LOOP;
4519 END LOOP;
4520
4521 --1) update wbs level of outdenting task and its all child tasks
4522 FOR cur_task_heirarchy_rec IN cur_task_heirarchy( p_task_id ) LOOP
4523
4524 PA_TASKS_MAINT_PVT.UPDATE_TASK
4525 (
4526 p_commit => p_commit
4527 ,p_validate_only => p_validate_only
4528 ,p_validation_level => p_validation_level
4529 ,p_calling_module => p_calling_module
4530 ,p_debug_mode => p_debug_mode
4531
4532 ,p_project_id => p_project_id
4533 ,p_task_id => cur_task_heirarchy_rec.task_id
4534 ,p_wbs_level => cur_task_heirarchy_rec.wbs_level - 1
4535 ,p_record_version_number => cur_task_heirarchy_rec.record_version_number
4536 ,x_return_status => x_return_status
4537 ,x_msg_count => x_msg_count
4538 ,x_msg_data => x_msg_data );
4539
4540 l_msg_count := FND_MSG_PUB.count_msg;
4541 IF l_msg_count > 0 THEN
4542 x_msg_count := l_msg_count;
4543 x_return_status := 'E';
4544 RAISE FND_API.G_EXC_ERROR;
4545 END IF;
4546 END LOOP;
4547
4548
4549 --3) update the top task id of outdenting task, child tasks of outdenting task , new child tasks
4550 -- of outdenting task and child tasks of new child tasks with outdenting task id.
4551
4552 --updating top_task_id of child tasks of outdenting task
4553 FOR cur_task_heirarchy_rec IN cur_task_heirarchy( p_task_id ) LOOP
4554 PA_TASKS_MAINT_PVT.UPDATE_TASK
4555 (
4556 p_commit => p_commit
4557 ,p_validate_only => p_validate_only
4558 ,p_validation_level => p_validation_level
4559 ,p_calling_module => p_calling_module
4560 ,p_debug_mode => p_debug_mode
4561
4562 ,p_project_id => p_project_id
4563 ,p_task_id => cur_task_heirarchy_rec.task_id
4564 ,p_top_task_id => p_task_id
4565 ,p_record_version_number => cur_task_heirarchy_rec.record_version_number
4566 ,x_return_status => x_return_status
4567 ,x_msg_count => x_msg_count
4568 ,x_msg_data => x_msg_data );
4569
4570 l_msg_count := FND_MSG_PUB.count_msg;
4571
4572 IF l_msg_count > 0 THEN
4573 x_msg_count := l_msg_count;
4574 x_return_status := 'E';
4575 RAISE FND_API.G_EXC_ERROR;
4576 END IF;
4577 END LOOP;
4578 END IF;
4579 END IF;
4580
4581 EXCEPTION
4582 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4583 IF p_commit = FND_API.G_TRUE
4584 THEN
4585 ROLLBACK TO Edit_Structure;
4586 END IF;
4587 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4588 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
4589 p_procedure_name => 'Outdent_task',
4590 p_error_text => SUBSTRB(SQLERRM,1,240));
4591 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4592
4593 WHEN FND_API.G_EXC_ERROR THEN
4594 IF p_commit = FND_API.G_TRUE
4595 THEN
4596 ROLLBACK TO Edit_Structure;
4597 END IF;
4598 x_return_status := 'E';
4599
4600 WHEN OTHERS THEN
4601 IF p_commit = FND_API.G_TRUE
4602 THEN
4603 ROLLBACK TO Edit_Structure;
4604 END IF;
4605 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4606 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
4607 p_procedure_name => 'Outdent_task',
4608 p_error_text => SUBSTRB(SQLERRM,1,240));
4609 RAISE;
4610 END Outdent_Task;
4611
4612 -- API name : Copy_Entire_Project
4613 -- Type : Private procedure
4614 -- Pre-reqs : None
4615 -- Return Value : N/A
4616 -- Prameters
4617 -- p_commit IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_FALSE
4618 -- p_validate_only IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_TRUE
4619 -- p_validation_level IN NUMBER OPTIONAL DEFAULT=FND_API.G_VALID_LEVEL_FULL
4620 -- p_calling_module IN VARCHAR2 OPTIONAL DEFAULT='SELF_SERVICE'
4621 -- p_debug_mode IN VARCHAR2 OPTIONAL DEFAULT='N'
4622 -- p_max_msg_count IN NUMBER OPTIONAL DEFAULT=FND_API.G_MISS_NUM
4623 -- p_reference_project_id IN NUMBER
4624 -- p_reference_task_id IN NUMBER
4625 -- p_project_id IN NUMBER
4626 -- p_peer_or_sub IN VARCHAR2
4627 -- p_task_prefix IN VARCHAR2 --
4628 -- x_return_status OUT VARCHAR2 REQUIRED
4629 -- x_msg_count OUT VARCHAR2 REQUIRED
4630 -- x_msg_data OUT VARCHAR2 REQUIRED
4631 --
4632 -- History
4633 --
4634 -- 25-JUN-01 Majid Ansari -Created
4635 --
4636 --
4637
4638 PROCEDURE Copy_Entire_Project(
4639 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
4640 ,p_validate_only IN VARCHAR2 DEFAULT FND_API.G_TRUE
4641 ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
4642 ,p_calling_module IN VARCHAR2 DEFAULT 'SELF_SERVICE'
4643 ,p_debug_mode IN VARCHAR2 DEFAULT 'N'
4644 ,p_max_msg_count IN NUMBER DEFAULT FND_API.G_MISS_NUM
4645 ,p_reference_project_id IN NUMBER
4646 ,p_reference_task_id IN NUMBER
4647 ,p_project_id IN NUMBER
4648 ,p_peer_or_sub IN VARCHAR2
4649 ,p_task_prefix IN VARCHAR2
4650 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4651 ,x_msg_count OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4652 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
4653
4654 CURSOR cur_entire_proj
4655 IS
4656 /* SELECT *
4657 FROM pa_tasks pt
4658 WHERE project_id = p_project_id
4659 ORDER BY display_sequence;*/
4660
4661 SELECT pt.task_number, pt.task_name, pt.long_task_name, pt.description, pt.carrying_out_organization_id,
4662 pt.work_type_id, pt.service_type_code,
4663 pt.chargeable_flag, pt.billable_flag, pt.receive_project_invoice_flag,
4664 pt.scheduled_start_date, pt.scheduled_finish_date, pt.start_date,
4665 pt.wbs_level, pt.task_id, ppev.display_sequence
4666 FROM pa_tasks pt, pa_proj_element_versions ppev
4667 WHERE pt.project_id = p_project_id
4668 AND pt.task_id = ppev.proj_element_id
4669 ORDER BY ppev.display_sequence;
4670
4671 CURSOR cur_ref_info
4672 IS
4673 SELECT *
4674 FROM pa_tasks
4675 WHERE project_id = p_reference_project_id
4676 AND task_id = p_reference_task_id;
4677
4678 CURSOR cur_data_length(c_pa_schema_name VARCHAR2)
4679 IS
4680 SELECT column_name, data_length
4681 FROM user_synonyms syn, all_tab_columns col
4682 WHERE col.table_name = 'PA_TASKS'
4683 and col.owner = syn.table_owner
4684 and col.table_name = syn.table_name
4685 AND col.owner = c_pa_schema_name
4686 AND column_name IN ( 'TASK_NAME', 'LONG_TASK_NAME', 'TASK_NUMBER' );
4687
4688 --schema swap changes
4689 l_table_owner VARCHAR2(30);
4690 l_fnd_return_status BOOLEAN;
4691 l_fnd_status VARCHAR2(30);
4692 l_fnd_industry VARCHAR2(30);
4693 --schema swap changes
4694
4695 l_rec_cur_ref_info cur_ref_info%ROWTYPE;
4696
4697 l_parent_task_id NUMBER;
4698 l_top_task_id NUMBER;
4699 l_wbs_level NUMBER;
4700 l_option VARCHAR2(4);
4701 l_reference_task_id NUMBER;
4702 l_max_display NUMBER;
4703 l_prev_wbs_level NUMBER;
4704 l_task_id NUMBER;
4705 l_display_seq NUMBER;
4706 l_max_seq NUMBER;
4707 l_first_seq NUMBER;
4708
4709 l_estimated_start_date DATE;
4710 l_estimated_end_date DATE;
4711
4712 TYPE CurrTasks IS RECORD( task_id NUMBER(15), wbs_level NUMBER(15),
4713 display_sequence NUMBER(15), new_task_id NUMBER(15) );
4714 TYPE TaskTab IS TABLE OF CurrTasks INDEX BY BINARY_INTEGER;
4715
4716 l_TaskTab TaskTab;
4717 i NUMBER := 0;
4718 k NUMBER := 0;
4719 l_msg_count NUMBER;
4720
4721 l_task_number_len NUMBER;
4722 l_task_name_len NUMBER;
4723 l_long_task_name_len NUMBER;
4724 l_column_name VARCHAR2(30);
4725 l_data_length NUMBER;
4726
4727 BEGIN
4728
4729 IF p_commit = FND_API.G_TRUE
4730 THEN
4731 SAVEPOINT Copy;
4732 END IF;
4733 x_return_status := 'S';
4734
4735 --get the max data length allowed for task_number and task_name from data dictionary
4736 --This is to make sure that the task_name and task_number does not exceed after
4737 --appended with prefix.
4738
4739 --schema swap changes
4740 l_fnd_return_status := FND_INSTALLATION.GET_APP_INFO(
4741 application_short_name => 'PA',
4742 status => l_fnd_status,
4743 industry => l_fnd_industry,
4744 oracle_schema => l_table_owner);
4745 IF NOT l_fnd_return_status
4746 THEN
4747 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
4748 p_procedure_name => 'Copy_Entire_Project',
4749 p_error_text => SUBSTRB('FND_INSTALLATION.GET_APP_INFO api call failed:'||SQLERRM,1,240));
4750 RAISE FND_API.G_EXC_ERROR;
4751 END IF;
4752 --schema swap changes
4753
4754 OPEN cur_data_length(l_table_owner);
4755 LOOP
4756 FETCH cur_data_length INTO l_column_name, l_data_length;
4757 IF cur_data_length%FOUND
4758 THEN
4759 IF l_column_name = 'TASK_NUMBER'
4760 THEN
4761 l_task_number_len := l_data_length;
4762 ELSIF l_column_name = 'LONG_TASK_NAME'
4763 THEN
4764 l_long_task_name_len := l_data_length;
4765 ELSE
4766 l_task_name_len := l_data_length;
4767 END IF;
4768 ELSE
4769 Exit;
4770 END IF;
4771 END LOOP;
4772
4773 OPEN cur_ref_info;
4774 FETCH cur_ref_info INTO l_rec_cur_ref_info;
4775 CLOSE cur_ref_info;
4776
4777 l_option := p_peer_or_sub;
4778 l_reference_task_id := p_reference_task_id;
4779
4780 FOR cur_entire_proj_rec IN cur_entire_proj LOOP
4781
4782 IF cur_entire_proj%ROWCOUNT > 1
4783 THEN
4784 --Find now the relationship between the next task in the cursor and the previously created task.
4785 IF cur_entire_proj_rec.wbs_level = l_prev_wbs_level
4786 THEN
4787 l_reference_task_id := l_task_id;
4788 l_option := 'PEER';
4789 ELSIF cur_entire_proj_rec.wbs_level > l_prev_wbs_level
4790 THEN
4791 l_reference_task_id := l_task_id;
4792 l_option := 'SUB';
4793 ELSE
4794 --Find the task above the heirarchy at the same level as that of the current task
4795 --from the matrix.
4796 --Assign a min value to max display sequence.
4797 l_max_display := 0;
4798 k := 1;
4799 LOOP
4800 --Getting the exact display sequence number. It is possible that there could be
4801 --more than one task at the same level above.
4802 IF l_TaskTab( k ).display_sequence > l_max_display AND
4803 l_TaskTab( k ).display_sequence < cur_entire_proj_rec.display_sequence AND
4804 l_TaskTab( k ).wbs_level = cur_entire_proj_rec.wbs_level
4805 THEN
4806 l_max_display := l_TaskTab( k ).display_sequence;
4807 l_reference_task_id := l_TaskTab( k ).new_task_id;
4808 END IF;
4809 IF k = i -- If there does not exists any record in the matrix.
4810 THEN
4811 Exit;
4812 ELSE
4813 k := k + 1;
4814 END IF;
4815 END LOOP;
4816 l_option := 'PEER';
4817 END IF;
4818 END IF;
4819
4820 IF l_option = 'PEER' AND
4821 l_rec_cur_ref_info.wbs_level > 1 ---Not a Top level
4822 THEN
4823 --Project structure changes. estimated_start_date and estimated_end_date cols do not exist.
4824 -- l_estimated_start_date := cur_entire_proj_rec.estimated_start_date;
4825 -- l_estimated_end_date := cur_entire_proj_rec.estimated_end_date;
4826 l_estimated_start_date := cur_entire_proj_rec.scheduled_start_date;
4827 l_estimated_end_date := cur_entire_proj_rec.scheduled_finish_date;
4828 ELSE --TOP LEVEL PEER task or SUB task.
4829 l_estimated_start_date := cur_entire_proj_rec.scheduled_start_date;
4830 l_estimated_end_date := cur_entire_proj_rec.scheduled_finish_date;
4831 END IF;
4832
4833 --Write the basic info in the PL/SQL table.
4834 i := i + 1;
4835 l_TaskTab( i ).task_id := cur_entire_proj_rec.task_id;
4836 l_TaskTab( i ).new_task_id := 0;
4837 l_TaskTab( i ).wbs_level := cur_entire_proj_rec.wbs_level;
4838 l_TaskTab( i ).display_sequence := cur_entire_proj_rec.display_sequence;
4839
4840 IF length( p_task_prefix||cur_entire_proj_rec.task_number ) > l_task_number_len OR
4841 length( p_task_prefix||cur_entire_proj_rec.task_name ) > l_task_name_len
4842 OR length( p_task_prefix||cur_entire_proj_rec.long_task_name ) > l_long_task_name_len
4843 THEN
4844 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4845 p_msg_name => 'PA_TASK_PREFIX_TOO_LARGE' );
4846 x_msg_data := 'PA_TASK_PREFIX_TOO_LARGE';
4847 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4848 RAISE FND_API.G_EXC_ERROR;
4849 END IF;
4850
4851 PA_TASKS_MAINT_PVT.CREATE_TASK
4852 (
4853 p_commit => p_commit
4854 ,p_validate_only => p_validate_only
4855 ,p_validation_level => p_validation_level
4856 ,p_calling_module => p_calling_module
4857 ,p_debug_mode => p_debug_mode
4858
4859 ,p_project_id => p_reference_project_id
4860 ,p_reference_task_id => l_reference_task_id
4861 ,p_peer_or_sub => l_option
4862 ,p_task_number => p_task_prefix||cur_entire_proj_rec.task_number
4863 ,p_task_name => p_task_prefix||cur_entire_proj_rec.task_name
4864 ,p_long_task_name => p_task_prefix||cur_entire_proj_rec.long_task_name
4865 ,p_task_description => cur_entire_proj_rec.description
4866 ,p_task_manager_person_id => null
4867 ,p_carrying_out_organization_id => cur_entire_proj_rec.carrying_out_organization_id
4868 --,p_task_type_code => cur_entire_proj_rec.task_type_code
4869 --,p_priority_code => cur_entire_proj_rec.priority_code
4870 ,p_work_type_id => cur_entire_proj_rec.work_type_id
4871 ,p_service_type_code => cur_entire_proj_rec.service_type_code
4872 --,p_milestone_flag => cur_entire_proj_rec.milestone_flag
4873 --,p_critical_flag => null
4874 ,p_chargeable_flag => cur_entire_proj_rec.chargeable_flag
4875 ,p_billable_flag => cur_entire_proj_rec.billable_flag
4876 ,p_receive_project_invoice_flag => cur_entire_proj_rec.receive_project_invoice_flag
4877 ,p_scheduled_start_date => cur_entire_proj_rec.scheduled_start_date
4878 ,p_scheduled_finish_date => cur_entire_proj_rec.scheduled_finish_date
4879 ,p_estimated_start_date => l_estimated_start_date
4880 ,p_estimated_end_date => l_estimated_end_date
4881 ,p_actual_start_date => null
4882 ,p_actual_finish_date => null
4883 ,p_task_start_date => cur_entire_proj_rec.start_date
4884 --,p_task_completion_date => cur_entire_proj_rec.end_date
4885 ,p_baseline_start_date => null
4886 ,p_baseline_end_date => null
4887
4888 ,p_estimate_to_complete_work => null
4889 ,p_baseline_work => null
4890 --,p_scheduled_work => cur_entire_proj_rec.scheduled_work
4891 ,p_actual_work_to_date => null
4892 ,p_work_unit => 'Hours'
4893
4894 ,p_task_id => l_task_id
4895 ,x_display_seq => l_display_seq
4896
4897 ,x_return_status => x_return_status
4898 ,x_msg_count => x_msg_count
4899 ,x_msg_data => x_msg_data );
4900
4901 l_prev_wbs_level := cur_entire_proj_rec.wbs_level;
4902 l_TaskTab( i ).new_task_id := l_task_id;
4903
4904 IF cur_entire_proj%ROWCOUNT = 1
4905 THEN
4906 --capture the first sequence created.
4907 l_first_seq := l_display_seq;
4908 END IF;
4909
4910 l_msg_count := FND_MSG_PUB.count_msg;
4911
4912 IF l_msg_count > 0 THEN
4913 x_msg_count := l_msg_count;
4914 x_return_status := 'E';
4915 RAISE FND_API.G_EXC_ERROR;
4916 END IF;
4917
4918
4919 END LOOP;
4920
4921 /* --Call Update statement to update display order
4922
4923 ************************************************************
4924 THIS FUNCTIONALITY IS MOVED TO PA_TASK_PUB1.COPY_TASK API.
4925 ************************************************************
4926 BEGIN
4927 -- Need to get max number
4928 SELECT max(display_sequence)
4929 INTO l_max_seq
4930 FROM PA_TASKS
4931 WHERE project_id = p_reference_project_id;
4932
4933 UPDATE PA_TASKS
4934 SET display_sequence =
4935 PA_TASKS_MAINT_UTILS.REARRANGE_DISPLAY_SEQ(display_sequence, l_max_seq, i, 'INSERT', null),
4936 record_version_number = record_version_number + 1
4937 WHERE project_id = p_reference_project_id
4938 AND ( display_sequence > -( l_first_seq + 1 ) or display_sequence < 0 );
4939 EXCEPTION
4940 WHEN OTHERS THEN
4941 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_SEQ_NUM_ERR');
4942 RAISE FND_API.G_EXC_ERROR;
4943 END; */
4944
4945 EXCEPTION
4946 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4947 IF p_commit = FND_API.G_TRUE
4948 THEN
4949 ROLLBACK TO Copy;
4950 END IF;
4951 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4952 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
4953 p_procedure_name => 'Copy_Entire_Task',
4954 p_error_text => SUBSTRB(SQLERRM,1,240));
4955 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4956
4957 WHEN FND_API.G_EXC_ERROR THEN
4958 IF p_commit = FND_API.G_TRUE
4959 THEN
4960 ROLLBACK TO Copy;
4961 END IF;
4962 x_return_status := 'E';
4963
4964 WHEN OTHERS THEN
4965 IF p_commit = FND_API.G_TRUE
4966 THEN
4967 ROLLBACK TO Copy;
4968 END IF;
4969 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4970 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
4971 p_procedure_name => 'Copy_Entire_Task',
4972 p_error_text => SUBSTRB(SQLERRM,1,240));
4973 RAISE;
4974 END Copy_Entire_Project;
4975
4976 -- API name : Copy_Selected_Task
4977 -- Type : Private procedure
4978 -- Pre-reqs : None
4979 -- Return Value : N/A
4980 -- Prameters
4981 -- p_commit IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_FALSE
4982 -- p_validate_only IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_TRUE
4983 -- p_validation_level IN NUMBER OPTIONAL DEFAULT=FND_API.G_VALID_LEVEL_FULL
4984 -- p_calling_module IN VARCHAR2 OPTIONAL DEFAULT='SELF_SERVICE'
4985 -- p_debug_mode IN VARCHAR2 OPTIONAL DEFAULT='N'
4986 -- p_max_msg_count IN NUMBER OPTIONAL DEFAULT=FND_API.G_MISS_NUM
4987 -- p_reference_project_id IN NUMBER
4988 -- p_reference_task_id IN NUMBER
4989 -- p_task_id IN NUMBER
4990 -- p_peer_or_sub IN VARCHAR2
4991 -- p_task_prefix IN VARCHAR2 --
4992 -- x_return_status OUT VARCHAR2 REQUIRED
4993 -- x_msg_count OUT VARCHAR2 REQUIRED
4994 -- x_msg_data OUT VARCHAR2 REQUIRED
4995 --
4996 -- History
4997 --
4998 -- 25-JUN-01 Majid Ansari -Created
4999 --
5000 --
5001
5002 PROCEDURE Copy_Selected_Task(
5003 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
5004 ,p_validate_only IN VARCHAR2 DEFAULT FND_API.G_TRUE
5005 ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
5006 ,p_calling_module IN VARCHAR2 DEFAULT 'SELF_SERVICE'
5007 ,p_debug_mode IN VARCHAR2 DEFAULT 'N'
5008 ,p_max_msg_count IN NUMBER DEFAULT FND_API.G_MISS_NUM
5009 ,p_reference_project_id IN NUMBER
5010 ,p_reference_task_id IN NUMBER
5011 ,p_task_id IN NUMBER
5012 ,p_peer_or_sub IN VARCHAR2
5013 ,p_task_prefix IN VARCHAR2
5014 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5015 ,x_msg_count OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5016 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
5017
5018 CURSOR cur_select_task
5019 IS
5020 SELECT *
5021 FROM pa_tasks
5022 WHERE task_id = p_task_id;
5023
5024 CURSOR cur_ref_info
5025 IS
5026 SELECT *
5027 FROM pa_tasks
5028 WHERE project_id = p_reference_project_id
5029 AND task_id = p_reference_task_id;
5030
5031 CURSOR cur_data_length(c_pa_schema_name VARCHAR2)
5032 IS
5033 SELECT column_name, data_length
5034 FROM user_synonyms syn, all_tab_columns col
5035 WHERE col.table_name = 'PA_TASKS'
5036 and col.owner = syn.table_owner
5037 and col.table_name = syn.table_name
5038 AND col.owner = c_pa_schema_name
5039 AND col.column_name IN ( 'TASK_NAME', 'LONG_TASK_NAME', 'TASK_NUMBER' );
5040
5041 --schema swap changes
5042 l_table_owner VARCHAR2(30);
5043 l_fnd_return_status BOOLEAN;
5044 l_fnd_status VARCHAR2(30);
5045 l_fnd_industry VARCHAR2(30);
5046 --schema swap changes
5047
5048 l_rec_cur_ref_info cur_ref_info%ROWTYPE;
5049
5050 l_parent_task_id NUMBER;
5051 l_top_task_id NUMBER;
5052 l_wbs_level NUMBER;
5053 l_task_id NUMBER;
5054 l_display_seq NUMBER;
5055 l_max_seq NUMBER;
5056
5057 l_estimated_start_date DATE;
5058 l_estimated_end_date DATE;
5059 l_msg_count NUMBER;
5060
5061 l_task_number_len NUMBER;
5062 l_task_name_len NUMBER;
5063 l_long_task_name_len NUMBER;
5064 l_column_name VARCHAR2(30);
5065 l_data_length NUMBER;
5066
5067 BEGIN
5068 IF p_commit = FND_API.G_TRUE
5069 THEN
5070 SAVEPOINT Copy;
5071 END IF;
5072 x_return_status := 'S';
5073
5074 --get the max data length allowed for task_number and task_name from data dictionary
5075 --This is to make sure that the task_name and task_number does not exceed after
5076 --appended with prefix.
5077
5078 --schema swap changes
5079 l_fnd_return_status := FND_INSTALLATION.GET_APP_INFO(
5080 application_short_name => 'PA',
5081 status => l_fnd_status,
5082 industry => l_fnd_industry,
5083 oracle_schema => l_table_owner);
5084 IF NOT l_fnd_return_status
5085 THEN
5086 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
5087 p_procedure_name => 'Copy_Entire_Project',
5088 p_error_text => SUBSTRB('FND_INSTALLATION.GET_APP_INFO api call failed:'||SQLERRM,1,240));
5089 RAISE FND_API.G_EXC_ERROR;
5090 END IF;
5091 --schema swap changes
5092
5093 OPEN cur_data_length(l_table_owner);
5094 LOOP
5095 FETCH cur_data_length INTO l_column_name, l_data_length;
5096 IF cur_data_length%FOUND
5097 THEN
5098 IF l_column_name = 'TASK_NUMBER'
5099 THEN
5100 l_task_number_len := l_data_length;
5101 ELSIF l_column_name = 'LONG_TASK_NAME'
5102 THEN
5103 l_long_task_name_len := l_data_length;
5104 ELSE
5105 l_task_name_len := l_data_length;
5106 END IF;
5107 ELSE
5108 Exit;
5109 END IF;
5110 END LOOP;
5111
5112 OPEN cur_ref_info;
5113 FETCH cur_ref_info INTO l_rec_cur_ref_info;
5114 CLOSE cur_ref_info;
5115
5116 -- Only a single task is going to be inserted in this for-loop cursor
5117 FOR cur_select_task_rec IN cur_select_task LOOP
5118
5119 IF p_peer_or_sub = 'PEER' AND
5120 l_rec_cur_ref_info.wbs_level > 1 ---Not a Top level
5121 THEN
5122 --l_estimated_start_date := cur_select_task_rec.estimated_start_date;
5123 --l_estimated_end_date := cur_select_task_rec.estimated_end_date;
5124 l_estimated_start_date := cur_select_task_rec.scheduled_start_date;
5125 l_estimated_end_date := cur_select_task_rec.scheduled_finish_date;
5126 ELSE --TOP LEVEL PEER task or SUB task.
5127 l_estimated_start_date := cur_select_task_rec.scheduled_start_date;
5128 l_estimated_end_date := cur_select_task_rec.scheduled_finish_date;
5129 END IF;
5130
5131 IF length( p_task_prefix||cur_select_task_rec.task_number ) > l_task_number_len OR
5132 length( p_task_prefix||cur_select_task_rec.task_name ) > l_task_name_len OR
5133 length( p_task_prefix||cur_select_task_rec.long_task_name ) > l_long_task_name_len
5134 THEN
5135 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5136 p_msg_name => 'PA_TASK_PREFIX_TOO_LARGE' );
5137 x_msg_data := 'PA_TASK_PREFIX_TOO_LARGE';
5138 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5139 RAISE FND_API.G_EXC_ERROR;
5140 END IF;
5141
5142 PA_TASKS_MAINT_PVT.CREATE_TASK
5143 (
5144 p_commit => p_commit
5145 ,p_validate_only => p_validate_only
5146 ,p_validation_level => p_validation_level
5147 ,p_calling_module => p_calling_module
5148 ,p_debug_mode => p_debug_mode
5149
5150 ,p_project_id => p_reference_project_id
5151 ,p_reference_task_id => p_reference_task_id
5152 ,p_peer_or_sub => p_peer_or_sub
5153 ,p_task_number => p_task_prefix||cur_select_task_rec.task_number
5154 ,p_task_name => p_task_prefix||cur_select_task_rec.task_name
5155 ,p_long_task_name => p_task_prefix||cur_select_task_rec.long_task_name
5156 ,p_task_description => cur_select_task_rec.description
5157 ,p_task_manager_person_id => null
5158 ,p_carrying_out_organization_id => cur_select_task_rec.carrying_out_organization_id
5159 --,p_task_type_code => cur_select_task_rec.task_type_code
5160 --,p_priority_code => cur_select_task_rec.priority_code
5161 ,p_work_type_id => cur_select_task_rec.work_type_id
5162 ,p_service_type_code => cur_select_task_rec.service_type_code
5163 --,p_milestone_flag => cur_select_task_rec.milestone_flag
5164 --,p_critical_flag => null
5165 ,p_chargeable_flag => cur_select_task_rec.chargeable_flag
5166 ,p_billable_flag => cur_select_task_rec.billable_flag
5167 ,p_receive_project_invoice_flag => cur_select_task_rec.receive_project_invoice_flag
5168 ,p_scheduled_start_date => cur_select_task_rec.scheduled_start_date
5169 ,p_scheduled_finish_date => cur_select_task_rec.scheduled_finish_date
5170 ,p_estimated_start_date => l_estimated_start_date
5171 ,p_estimated_end_date => l_estimated_end_date
5172 ,p_actual_start_date => null
5173 ,p_actual_finish_date => null
5174 ,p_task_start_date => cur_select_task_rec.start_date
5175 --,p_task_completion_date => cur_select_task_rec.end_date
5176 ,p_baseline_start_date => null
5177 ,p_baseline_end_date => null
5178
5179 ,p_estimate_to_complete_work => null
5180 ,p_baseline_work => null
5181 -- ,p_scheduled_work => cur_select_task_rec.scheduled_work
5182 ,p_actual_work_to_date => null
5183 ,p_work_unit => 'Hours'
5184
5185 ,p_task_id => l_task_id
5186 ,x_display_seq => l_display_seq
5187
5188 ,x_return_status => x_return_status
5189 ,x_msg_count => x_msg_count
5190 ,x_msg_data => x_msg_data );
5191
5192 l_msg_count := FND_MSG_PUB.count_msg;
5193
5194 IF l_msg_count > 0 THEN
5195 x_msg_count := l_msg_count;
5196 x_return_status := 'E';
5197 RAISE FND_API.G_EXC_ERROR;
5198 END IF;
5199
5200 END LOOP;
5201
5202 /*
5203 --Call Update statement to update display order
5204
5205 ************************************************************
5206 THIS FUNCTIONALITY IS MOVED IN PA_TASK_PUB1.COPY_TASK API.
5207 ************************************************************
5208
5209 BEGIN
5210 -- Need to get max number
5211 SELECT max(display_sequence)
5212 INTO l_max_seq
5213 FROM PA_TASKS
5214 WHERE project_id = p_reference_project_id;
5215
5216 UPDATE PA_TASKS
5217 SET display_sequence =
5218 PA_TASKS_MAINT_UTILS.REARRANGE_DISPLAY_SEQ(display_sequence, l_max_seq, 1, 'INSERT', null),
5219 record_version_number = record_version_number + 1
5220 WHERE project_id = p_reference_project_id
5221 AND ( display_sequence > -( l_display_seq + 1 ) or display_sequence < 0 );
5222 EXCEPTION
5223 WHEN OTHERS THEN
5224 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_SEQ_NUM_ERR');
5225 RAISE FND_API.G_EXC_ERROR;
5226 END;*/
5227
5228 EXCEPTION
5229 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5230 IF p_commit = FND_API.G_TRUE
5231 THEN
5232 ROLLBACK TO Copy;
5233 END IF;
5234 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5235 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
5236 p_procedure_name => 'Copy_Selected_Task',
5237 p_error_text => SUBSTRB(SQLERRM,1,240));
5238 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5239
5240 WHEN FND_API.G_EXC_ERROR THEN
5241 IF p_commit = FND_API.G_TRUE
5242 THEN
5243 ROLLBACK TO Copy;
5244 END IF;
5245 x_return_status := 'E';
5246
5247 WHEN OTHERS THEN
5248 IF p_commit = FND_API.G_TRUE
5249 THEN
5250 ROLLBACK TO Copy;
5251 END IF;
5252 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5253 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
5254 p_procedure_name => 'Copy_Selected_Task',
5255 p_error_text => SUBSTRB(SQLERRM,1,240));
5256 RAISE;
5257 END Copy_Selected_Task;
5258
5259 -- API name : Copy_Entire_Task
5260 -- Type : Private procedure
5261 -- Pre-reqs : None
5262 -- Return Value : N/A
5263 -- Prameters
5264 -- p_commit IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_FALSE
5265 -- p_validate_only IN VARCHAR2 REQUIRED DEFAULT=FND_API.G_TRUE
5266 -- p_validation_level IN NUMBER OPTIONAL DEFAULT=FND_API.G_VALID_LEVEL_FULL
5267 -- p_calling_module IN VARCHAR2 OPTIONAL DEFAULT='SELF_SERVICE'
5268 -- p_debug_mode IN VARCHAR2 OPTIONAL DEFAULT='N'
5269 -- p_max_msg_count IN NUMBER OPTIONAL DEFAULT=FND_API.G_MISS_NUM
5270 -- p_reference_project_id IN NUMBER
5271 -- p_reference_task_id IN NUMBER
5272 -- p_project_id IN NUMBER
5273 -- p_task_id IN NUMBER
5274 -- p_peer_or_sub IN VARCHAR2
5275 -- p_task_prefix IN VARCHAR2 --
5276 -- x_return_status OUT VARCHAR2 REQUIRED
5277 -- x_msg_count OUT VARCHAR2 REQUIRED
5278 -- x_msg_data OUT VARCHAR2 REQUIRED
5279 --
5280 -- History
5281 --
5282 -- 25-JUN-01 Majid Ansari -Created
5283 --
5284 --
5285
5286 PROCEDURE Copy_Entire_Task(
5287 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
5288 ,p_validate_only IN VARCHAR2 DEFAULT FND_API.G_TRUE
5289 ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
5290 ,p_calling_module IN VARCHAR2 DEFAULT 'SELF_SERVICE'
5291 ,p_debug_mode IN VARCHAR2 DEFAULT 'N'
5292 ,p_max_msg_count IN NUMBER DEFAULT FND_API.G_MISS_NUM
5293 ,p_reference_project_id IN NUMBER
5294 ,p_reference_task_id IN NUMBER
5295 ,p_project_id IN NUMBER
5296 ,p_task_id IN NUMBER
5297 ,p_peer_or_sub IN VARCHAR2
5298 ,p_task_prefix IN VARCHAR2
5299 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5300 ,x_msg_count OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5301 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
5302
5303 CURSOR cur_entire_task
5304 IS
5305
5306 /*SELECT *
5307 FROM pa_tasks
5308 WHERE project_id = p_project_id
5309 START WITH task_id = p_task_id
5310 CONNECT BY PRIOR task_id = parent_task_id
5311 ORDER BY display_sequence; */
5312
5313 SELECT pt.task_number, pt.task_name, pt.long_task_name, pt.description, pt.carrying_out_organization_id,
5314 pt.work_type_id, pt.service_type_code,
5315 pt.chargeable_flag, pt.billable_flag, pt.receive_project_invoice_flag,
5316 pt.scheduled_start_date, pt.scheduled_finish_date, pt.start_date,
5317 pt.wbs_level, pt.task_id, ppev.display_sequence
5318 FROM
5319 ( SELECT task_id, task_number, task_name, long_task_name, description,carrying_out_organization_id,
5320 work_type_id, service_type_code,
5321 chargeable_flag, billable_flag, receive_project_invoice_flag,
5322 scheduled_start_date, scheduled_finish_date, start_date,
5323 wbs_level
5324 FROM pa_tasks
5325 WHERE project_id = p_project_id
5326 START WITH task_id = p_task_id
5327 CONNECT BY PRIOR task_id = parent_task_id ) pt,
5328 pa_proj_element_versions ppev
5329 WHERE pt.task_id = ppev.proj_element_id
5330 ORDER BY ppev.display_sequence;
5331
5332 CURSOR cur_ref_info
5333 IS
5334 SELECT *
5335 FROM pa_tasks
5336 WHERE project_id = p_reference_project_id
5337 AND task_id = p_reference_task_id;
5338
5339 CURSOR cur_data_length(c_pa_schema_name VARCHAR2)
5340 IS
5341 SELECT column_name, data_length
5342 FROM user_synonyms syn, all_tab_columns col
5343 WHERE col.table_name = 'PA_TASKS'
5344 and col.owner = syn.table_owner
5345 and col.table_name = syn.table_name
5346 AND col.owner = c_pa_schema_name
5347 AND col.column_name IN ( 'TASK_NAME', 'LONG_TASK_NAME', 'TASK_NUMBER' );
5348
5349 --schema swap changes
5350 l_table_owner VARCHAR2(30);
5351 l_fnd_return_status BOOLEAN;
5352 l_fnd_status VARCHAR2(30);
5353 l_fnd_industry VARCHAR2(30);
5354 --schema swap changes
5355
5356 l_rec_cur_ref_info cur_ref_info%ROWTYPE;
5357
5358 l_parent_task_id NUMBER;
5359 l_top_task_id NUMBER;
5360 l_wbs_level NUMBER;
5361 l_option VARCHAR2(4);
5362 l_reference_task_id NUMBER;
5363 l_max_display NUMBER;
5364 l_prev_wbs_level NUMBER;
5365 l_task_id NUMBER;
5366 l_display_seq NUMBER;
5367 l_max_seq NUMBER;
5368 l_first_seq NUMBER;
5369
5370 l_estimated_start_date DATE;
5371 l_estimated_end_date DATE;
5372
5373 TYPE CurrTasks IS RECORD( task_id NUMBER(15), wbs_level NUMBER(15),
5374 display_sequence NUMBER(15), new_task_id NUMBER(15) );
5375 TYPE TaskTab IS TABLE OF CurrTasks INDEX BY BINARY_INTEGER;
5376
5377 l_TaskTab TaskTab;
5378 i NUMBER := 0;
5379 k NUMBER := 0;
5380 l_msg_count NUMBER;
5381
5382 l_task_number_len NUMBER;
5383 l_task_name_len NUMBER;
5384 l_long_task_name_len NUMBER;
5385 l_column_name VARCHAR2(30);
5386 l_data_length NUMBER;
5387
5388 BEGIN
5389
5390 IF p_commit = FND_API.G_TRUE
5391 THEN
5392 SAVEPOINT Copy;
5393 END IF;
5394 x_return_status := 'S';
5395
5396 --get the max data length allowed for task_number and task_name from data dictionary
5397 --This is to make sure that the task_name and task_number does not exceed after
5398 --appended with prefix.
5399
5400 --schema swap changes
5401 l_fnd_return_status := FND_INSTALLATION.GET_APP_INFO(
5402 application_short_name => 'PA',
5403 status => l_fnd_status,
5404 industry => l_fnd_industry,
5405 oracle_schema => l_table_owner);
5406 IF NOT l_fnd_return_status
5407 THEN
5408 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
5409 p_procedure_name => 'Copy_Entire_Project',
5410 p_error_text => SUBSTRB('FND_INSTALLATION.GET_APP_INFO api call failed:'||SQLERRM,1,240));
5411 RAISE FND_API.G_EXC_ERROR;
5412 END IF;
5413 --schema swap changes
5414
5415 OPEN cur_data_length(l_table_owner);
5416 LOOP
5417 FETCH cur_data_length INTO l_column_name, l_data_length;
5418 IF cur_data_length%FOUND
5419 THEN
5420 IF l_column_name = 'TASK_NUMBER'
5421 THEN
5422 l_task_number_len := l_data_length;
5423 ELSIF l_column_name = 'LONG_TASK_NAME'
5424 THEN
5425 l_long_task_name_len := l_data_length;
5426 ELSE
5427 l_task_name_len := l_data_length;
5428 END IF;
5429 ELSE
5430 Exit;
5431 END IF;
5432 END LOOP;
5433
5434 OPEN cur_ref_info;
5435 FETCH cur_ref_info INTO l_rec_cur_ref_info;
5436 CLOSE cur_ref_info;
5437
5438 l_option := p_peer_or_sub;
5439 l_reference_task_id := p_reference_task_id;
5440
5441 FOR cur_entire_task_rec IN cur_entire_task LOOP
5442
5443 IF cur_entire_task%ROWCOUNT > 1
5444 THEN
5445 --Find now the relationship between the next task in the cursor and the previously created task.
5446 IF cur_entire_task_rec.wbs_level = l_prev_wbs_level
5447 THEN
5448 l_reference_task_id := l_task_id;
5449 l_option := 'PEER';
5450 ELSIF cur_entire_task_rec.wbs_level > l_prev_wbs_level
5451 THEN
5452 l_reference_task_id := l_task_id;
5453 l_option := 'SUB';
5454 ELSE
5455 --Find the task above the heirarchy at the same level as that of the current task
5456 --from the matrix.
5457 --Assign a min value to max display sequence.
5458 l_max_display := 0;
5459 k := 1;
5460 LOOP
5461 --Getting the exact display sequence number. It is possible that there could be
5462 --more than one task at the same level above.
5463 IF l_TaskTab( k ).display_sequence > l_max_display AND
5464 l_TaskTab( k ).display_sequence < cur_entire_task_rec.display_sequence AND
5465 l_TaskTab( k ).wbs_level = cur_entire_task_rec.wbs_level
5466 THEN
5467 l_max_display := l_TaskTab( k ).display_sequence;
5468 l_reference_task_id := l_TaskTab( k ).new_task_id;
5469 END IF;
5470 IF k = i -- If there does not exists any record in the matrix.
5471 THEN
5472 Exit;
5473 ELSE
5474 k := k + 1;
5475 END IF;
5476 END LOOP;
5477 l_option := 'PEER';
5478 END IF;
5479 END IF;
5480
5481
5482 IF l_option = 'PEER' AND
5483 l_rec_cur_ref_info.wbs_level > 1 ---Not a Top level
5484 THEN
5485 --l_estimated_start_date := cur_entire_task_rec.estimated_start_date;
5486 --l_estimated_end_date := cur_entire_task_rec.estimated_end_date;
5487 l_estimated_start_date := cur_entire_task_rec.scheduled_start_date;
5488 l_estimated_end_date := cur_entire_task_rec.scheduled_finish_date;
5489 ELSE --TOP LEVEL PEER task or SUB task.
5490 l_estimated_start_date := cur_entire_task_rec.scheduled_start_date;
5491 l_estimated_end_date := cur_entire_task_rec.scheduled_finish_date;
5492 END IF;
5493
5494 --Write the basic info in the PL/SQL table.
5495 i := i + 1;
5496 l_TaskTab( i ).task_id := cur_entire_task_rec.task_id;
5497 l_TaskTab( i ).new_task_id := 0;
5498 l_TaskTab( i ).wbs_level := cur_entire_task_rec.wbs_level;
5499 l_TaskTab( i ).display_sequence := cur_entire_task_rec.display_sequence;
5500
5501 IF length( p_task_prefix||cur_entire_task_rec.task_number ) > l_task_number_len OR
5502 length( p_task_prefix||cur_entire_task_rec.task_name ) > l_task_name_len OR
5503 length( p_task_prefix||cur_entire_task_rec.long_task_name) > l_long_task_name_len
5504 THEN
5505 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5506 p_msg_name => 'PA_TASK_PREFIX_TOO_LARGE' );
5507 x_msg_data := 'PA_TASK_PREFIX_TOO_LARGE';
5508 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5509 RAISE FND_API.G_EXC_ERROR;
5510 END IF;
5511
5512 PA_TASKS_MAINT_PVT.CREATE_TASK
5513 (
5514 p_commit => p_commit
5515 ,p_validate_only => p_validate_only
5516 ,p_validation_level => p_validation_level
5517 ,p_calling_module => p_calling_module
5518 ,p_debug_mode => p_debug_mode
5519
5520 ,p_project_id => p_reference_project_id
5521 ,p_reference_task_id => l_reference_task_id
5522 ,p_peer_or_sub => l_option
5523 ,p_task_number => p_task_prefix||cur_entire_task_rec.task_number
5524 ,p_task_name => p_task_prefix||cur_entire_task_rec.task_name
5525 ,p_long_task_name => p_task_prefix||cur_entire_task_rec.long_task_name
5526 ,p_task_description => cur_entire_task_rec.description
5527 ,p_task_manager_person_id => null
5528 ,p_carrying_out_organization_id => cur_entire_task_rec.carrying_out_organization_id
5529 --,p_task_type_code => cur_entire_task_rec.task_type_code
5530 --,p_priority_code => cur_entire_task_rec.priority_code
5531 ,p_work_type_id => cur_entire_task_rec.work_type_id
5532 ,p_service_type_code => cur_entire_task_rec.service_type_code
5533 --,p_milestone_flag => cur_entire_task_rec.milestone_flag
5534 --,p_critical_flag => null
5535 ,p_chargeable_flag => cur_entire_task_rec.chargeable_flag
5536 ,p_billable_flag => cur_entire_task_rec.billable_flag
5537 ,p_receive_project_invoice_flag => cur_entire_task_rec.receive_project_invoice_flag
5538 ,p_scheduled_start_date => cur_entire_task_rec.scheduled_start_date
5539 ,p_scheduled_finish_date => cur_entire_task_rec.scheduled_finish_date
5540 ,p_estimated_start_date => l_estimated_start_date
5541 ,p_estimated_end_date => l_estimated_end_date
5542 ,p_actual_start_date => null
5543 ,p_actual_finish_date => null
5544 ,p_task_start_date => cur_entire_task_rec.start_date
5545 --,p_task_completion_date => cur_entire_task_rec.end_date
5546 ,p_baseline_start_date => null
5547 ,p_baseline_end_date => null
5548
5549 ,p_estimate_to_complete_work => null
5550 ,p_baseline_work => null
5551 -- ,p_scheduled_work => cur_entire_task_rec.scheduled_work
5552 ,p_actual_work_to_date => null
5553 ,p_work_unit => 'Hours'
5554
5555 ,p_task_id => l_task_id
5556 ,x_display_seq => l_display_seq
5557
5558 ,x_return_status => x_return_status
5559 ,x_msg_count => x_msg_count
5560 ,x_msg_data => x_msg_data );
5561
5562 l_prev_wbs_level := cur_entire_task_rec.wbs_level;
5563 l_TaskTab( i ).new_task_id := l_task_id;
5564
5565 IF cur_entire_task%ROWCOUNT = 1
5566 THEN
5567 --capture the first sequence created.
5568 l_first_seq := l_display_seq;
5569 END IF;
5570
5571
5572 l_msg_count := FND_MSG_PUB.count_msg;
5573
5574 IF l_msg_count > 0 THEN
5575 x_msg_count := l_msg_count;
5576 x_return_status := 'E';
5577 RAISE FND_API.G_EXC_ERROR;
5578 END IF;
5579
5580 END LOOP;
5581
5582 /*
5583 --Call Update statement to update display order
5584
5585 ************************************************************
5586 THIS FUNCTIONALITY IS MOVED IN PA_TASK_PUB1.COPY_TASK API.
5587 ************************************************************
5588
5589 BEGIN
5590 -- Need to get max number
5591 SELECT max(display_sequence)
5592 INTO l_max_seq
5593 FROM PA_TASKS
5594 WHERE project_id = p_reference_project_id;
5595
5596 UPDATE PA_TASKS
5597 SET display_sequence =
5598 PA_TASKS_MAINT_UTILS.REARRANGE_DISPLAY_SEQ(display_sequence, l_max_seq, i, 'INSERT', null),
5599 record_version_number = record_version_number + 1
5600 WHERE project_id = p_reference_project_id
5601 AND ( display_sequence > -( l_first_seq + 1 ) or display_sequence < 0 );
5602 EXCEPTION
5603 WHEN OTHERS THEN
5604 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_SEQ_NUM_ERR');
5605 RAISE FND_API.G_EXC_ERROR;
5606 END; */
5607
5608 EXCEPTION
5609 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5610 IF p_commit = FND_API.G_TRUE
5611 THEN
5612 ROLLBACK TO Copy;
5613 END IF;
5614 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5615 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
5616 p_procedure_name => 'Copy_Entire_Task',
5617 p_error_text => SUBSTRB(SQLERRM,1,240));
5618 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5619
5620 WHEN FND_API.G_EXC_ERROR THEN
5621 IF p_commit = FND_API.G_TRUE
5622 THEN
5623 ROLLBACK TO Copy;
5624 END IF;
5625 x_return_status := 'E';
5626
5627 WHEN OTHERS THEN
5628 IF p_commit = FND_API.G_TRUE
5629 THEN
5630 ROLLBACK TO Copy;
5631 END IF;
5632 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5633 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
5634 p_procedure_name => 'Copy_Entire_Task',
5635 p_error_text => SUBSTRB(SQLERRM,1,240));
5636 RAISE;
5637
5638 END Copy_Entire_Task;
5639
5640
5641 -- API name : Move_Task
5642 -- Type : Private Procedure
5643 -- Pre-reqs : None
5644 -- Return Value : N/A
5645 -- Prameters
5646 -- p_api_version IN NUMBER := 1.0
5647 -- p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
5648 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
5649 -- p_validate_only IN VARCHAR2 := FND_API.G_TRUE
5650 -- p_validation_level IN VARCHAR2 := 100
5651 -- p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
5652 -- p_debug_mode IN VARCHAR2 := 'N'
5653 -- p_reference_project_id IN NUMBER
5654 -- p_reference_task_id IN NUMBER
5655 -- p_project_id IN NUMBER
5656 -- p_task_id IN NUMBER
5657 -- p_peer_or_sub IN VARCHAR2
5658 -- p_record_version_number IN NUMBER
5659 -- x_return_status OUT VARCHAR2
5660 -- x_msg_count OUT NUMBER
5661 -- x_msg_data OUT VARCHAR2
5662 --
5663 -- History
5664 --
5665 -- 02-JUL-01 Majid Ansari -Created
5666 --
5667 --
5668
5669 PROCEDURE Move_Task(
5670 p_api_version IN NUMBER := 1.0
5671 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
5672 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
5673 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
5674 ,p_validation_level IN VARCHAR2 := 100
5675 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
5676 ,p_debug_mode IN VARCHAR2 := 'N'
5677 ,p_reference_project_id IN NUMBER
5678 ,p_reference_task_id IN NUMBER
5679 ,p_project_id IN NUMBER
5680 ,p_task_id IN NUMBER
5681 ,p_peer_or_sub IN VARCHAR2
5682 ,p_record_version_number IN NUMBER
5683 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5684 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5685 ,x_msg_data OUT NOCOPY VARCHAR2 ) AS --File.Sql.39 bug 4440895
5686
5687 CURSOR cur_tasks
5688 IS
5689 /* SELECT task_id, display_sequence, top_task_id, parent_task_id, wbs_level, record_version_number
5690 FROM pa_tasks
5691 WHERE project_id = p_project_id
5692 START WITH task_id = p_task_id
5693 CONNECT BY PRIOR task_id = parent_task_id
5694 ORDER BY display_sequence;*/
5695
5696 SELECT pt.task_id, ppev.display_sequence, pt.top_task_id, pt.parent_task_id, pt.wbs_level, pt.record_version_number
5697 FROM
5698 ( SELECT task_id, top_task_id, parent_task_id, wbs_level, record_version_number
5699 FROM pa_tasks
5700 WHERE project_id = p_project_id
5701 START WITH task_id = p_task_id
5702 CONNECT BY PRIOR task_id = parent_task_id ) pt, pa_proj_element_versions ppev
5703 WHERE pt.task_id = ppev.proj_element_id
5704 ORDER BY ppev.display_sequence;
5705
5706 CURSOR cur_ref_info
5707 IS
5708 /* SELECT *
5709 FROM pa_tasks
5710 WHERE project_id = p_reference_project_id
5711 START WITH task_id = p_reference_task_id
5712 CONNECT BY PRIOR task_id = parent_task_id
5713 ORDER BY display_sequence;*/
5714
5715 SELECT pt.top_task_id, pt.parent_task_id, pt.wbs_level, ppev.display_sequence
5716 FROM
5717 ( SELECT task_id, top_task_id, parent_task_id, wbs_level
5718 FROM pa_tasks
5719 WHERE project_id = p_reference_project_id
5720 START WITH task_id = p_reference_task_id
5721 CONNECT BY PRIOR task_id = parent_task_id ) pt, pa_proj_element_versions ppev
5722 WHERE pt.task_id = ppev.proj_element_id
5723 ORDER BY ppev.display_sequence;
5724 --Added cur_task_detail for bug 16088808
5725 CURSOR cur_task_detail
5726 IS
5727 SELECT pt.task_id, ppev.display_sequence, pt.top_task_id, pt.parent_task_id, pt.wbs_level, pt.record_version_number
5728 FROM
5729 ( SELECT task_id, top_task_id, parent_task_id, wbs_level, record_version_number
5730 FROM pa_tasks
5731 WHERE project_id = p_project_id and task_id = p_task_id ) pt, pa_proj_element_versions ppev
5732 WHERE pt.task_id = ppev.proj_element_id
5733 ORDER BY ppev.display_sequence;
5734
5735 l_rec_cur_ref_info cur_ref_info%ROWTYPE;
5736
5737 l_top_level_task_flag VARCHAR2(1) := 'N';
5738
5739 l_max_seq NUMBER;
5740 i NUMBER;
5741
5742 l_top_task_id NUMBER;
5743 l_parent_task_id NUMBER;
5744 l_wbs_level NUMBER;
5745 l_display_sequence NUMBER;
5746
5747 l_ref_top_task_id NUMBER;
5748 l_ref_parent_task_id NUMBER;
5749 l_ref_wbs_level NUMBER;
5750 l_ref_display_sequence NUMBER;
5751
5752 l_above_top_task_id NUMBER;
5753 l_above_parent_task_id NUMBER;
5754 l_above_wbs_level NUMBER;
5755 l_above_display_sequence NUMBER;
5756
5757 l_ref_child_tasks_num NUMBER := 0;
5758
5759 l_lowest_moving_wbs_level NUMBER;
5760 l_move_direction VARCHAR2(4);
5761 l_min_display_sequence NUMBER;
5762 l_max_display_sequence NUMBER;
5763 l_above_child_tasks_num NUMBER;
5764 l_reference_sequence NUMBER;
5765
5766 l_return_status VARCHAR2(1);
5767 l_error_msg_code VARCHAR2(250);
5768 l_msg_count NUMBER;
5769
5770 -- 23-JUL-2001 Added by HSIU
5771 l_err_code NUMBER := 0;
5772 l_err_stack VARCHAR2(630);
5773 l_err_stage VARCHAR2(80); -- VARCHAR2(80)
5774 cur_tasks_rec cur_tasks%ROWTYPE; -- added for bug 16088808
5775
5776 BEGIN
5777
5778 x_return_status:= FND_API.G_RET_STS_SUCCESS;
5779
5780 --dbms_output.put_line( 'In move task 0' );
5781
5782 --Ref project and task id Required check.
5783 PA_TASKS_MAINT_UTILS.REF_PRJ_TASK_ID_REQ_CHECK(
5784 p_reference_project_id => p_reference_project_id,
5785 p_reference_task_id => p_reference_task_id,
5786 x_return_status => l_return_status,
5787 x_error_msg_code => l_error_msg_code );
5788
5789 IF l_return_status = FND_API.G_RET_STS_ERROR
5790 THEN
5791 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5792 p_msg_name => l_error_msg_code);
5793 x_msg_data := l_error_msg_code;
5794 x_return_status := 'E';
5795 RAISE FND_API.G_EXC_ERROR;
5796 END IF;
5797
5798 --dbms_output.put_line( 'In move task 1' );
5799
5800 --project and task id Required check.
5801 PA_TASKS_MAINT_UTILS.SRC_PRJ_TASK_ID_REQ_CHECK(
5802 p_project_id => p_project_id,
5803 p_task_id => p_task_id,
5804 x_return_status => l_return_status,
5805 x_error_msg_code => l_error_msg_code );
5806
5807 IF l_return_status = FND_API.G_RET_STS_ERROR
5808 THEN
5809 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5810 p_msg_name => l_error_msg_code);
5811 x_msg_data := l_error_msg_code;
5812 x_return_status := 'E';
5813 RAISE FND_API.G_EXC_ERROR;
5814 END IF;
5815 --dbms_output.put_line( 'In move task 2' );
5816
5817
5818 IF p_reference_project_id <> p_project_id
5819 THEN
5820 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5821 p_msg_name => 'PA_TASK_MOV_NOT_ALLOWED' );
5822 x_msg_data := 'PA_TASK_MOV_NOT_ALLOWED';
5823 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5824 RAISE FND_API.G_EXC_ERROR;
5825 END IF;
5826
5827 --dbms_output.put_line( 'In move task 3' );
5828
5829
5830 FOR l_rec_cur_ref_info IN cur_ref_info LOOP
5831 IF cur_ref_info%ROWCOUNT = 1
5832 THEN
5833 --store attributes of the first ref task itself
5834 l_ref_top_task_id := l_rec_cur_ref_info.top_task_id;
5835 l_ref_parent_task_id := l_rec_cur_ref_info.parent_task_id;
5836 l_ref_wbs_level := l_rec_cur_ref_info.wbs_level;
5837 l_ref_display_sequence := l_rec_cur_ref_info.display_sequence;
5838
5839 --If only one record exists then both set of variables will hold the same value.
5840 l_above_top_task_id := l_rec_cur_ref_info.top_task_id;
5841 l_above_parent_task_id := l_rec_cur_ref_info.parent_task_id;
5842 l_above_wbs_level := l_rec_cur_ref_info.wbs_level;
5843 l_above_display_sequence := l_rec_cur_ref_info.display_sequence;
5844 ELSE
5845 --store attributes of the last child in the ref task heir.
5846 l_above_top_task_id := l_rec_cur_ref_info.top_task_id;
5847 l_above_parent_task_id := l_rec_cur_ref_info.parent_task_id;
5848 l_above_wbs_level := l_rec_cur_ref_info.wbs_level;
5849 l_above_display_sequence := l_rec_cur_ref_info.display_sequence;
5850 END IF;
5851 --no of children underneath the ref tasks
5852 l_above_child_tasks_num := l_above_child_tasks_num + 1;
5853 END LOOP;
5854
5855 --dbms_output.put_line( 'In move task 4' );
5856
5857
5858 IF l_ref_wbs_level = 1 AND
5859 p_peer_or_sub = 'PEER'
5860 THEN
5861 l_top_level_task_flag := 'Y';
5862 ELSE
5863 l_top_task_id := l_ref_top_task_id;
5864 IF p_peer_or_sub = 'PEER'
5865 THEN
5866 l_parent_task_id := l_ref_parent_task_id;
5867 ELSE
5868 -- 23-JUL-2001
5869 -- Added by HSIU--check if the reference task can have child tasks
5870 PA_TASK_UTILS.CHECK_CREATE_SUBTASK_OK(x_task_id => p_reference_task_id,
5871 x_err_code => l_err_code,
5872 x_err_stack => l_err_stack,
5873 x_err_stage => l_err_stage
5874 );
5875 IF (l_err_code <> 0) THEN
5876 PA_UTILS.ADD_MESSAGE('PA', substr(l_err_stage,1,30));
5877 END IF;
5878 -- HSIU changes ends here
5879
5880 l_parent_task_id := p_reference_task_id;
5881 END IF;
5882 END IF;
5883 i := 0;
5884
5885 --dbms_output.put_line( 'In move task 5' );
5886 -- added for bug 16088808
5887 --If user deferred the rollup, then open cur_task_detail cursor instead of cur_tasks.
5888 --System should update new parent task id only for selected task not for all children of selected task.
5889 IF (NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER,'N')='Y')
5890 THEN
5891 OPEN cur_task_detail;
5892 ELSE
5893 OPEN cur_tasks;
5894 END IF;
5895 --FOR cur_tasks_rec IN cur_tasks LOOP
5896 Loop
5897 IF (NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER,'N')='Y')
5898 THEN
5899 FETCH cur_task_detail INTO cur_tasks_rec;
5900 EXIT WHEN cur_task_detail%NOTFOUND;
5901 ELSE
5902 FETCH cur_tasks INTO cur_tasks_rec;
5903 EXIT WHEN cur_tasks%NOTFOUND;
5904 END IF;
5905 IF ((NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER,'N')='Y' and cur_task_detail%ROWCOUNT = 1) or (NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER,'N')='N' and cur_tasks%ROWCOUNT = 1))
5906 THEN
5907 l_lowest_moving_wbs_level := cur_tasks_rec.wbs_level;
5908
5909 --make the top task for p_task and its children as p_task
5910 IF l_top_level_task_flag = 'Y'
5911 THEN
5912 l_top_task_id := cur_tasks_rec.task_id;
5913 l_parent_task_id := null; --This is only for the first task in the moving tasks set.
5914 END IF;
5915
5916 --Set the move direction and boundaries for the sequence number update
5917 IF p_peer_or_sub = 'PEER'
5918 THEN
5919 l_reference_sequence := l_above_display_sequence;
5920 ELSE
5921 l_reference_sequence := l_ref_display_sequence;
5922 END IF;
5923 IF cur_tasks_rec.display_sequence < l_reference_sequence
5924 THEN
5925 l_move_direction := 'DOWN';
5926 l_min_display_sequence := cur_tasks_rec.display_sequence;
5927 IF p_peer_or_sub = 'PEER'
5928 THEN
5929 l_max_display_sequence := l_above_display_sequence ;
5930 ELSE
5931 l_max_display_sequence := l_ref_display_sequence ;
5932 END IF;
5933 ELSIF cur_tasks_rec.display_sequence > l_reference_sequence
5934 THEN
5935 l_move_direction := 'UP';
5936 IF p_peer_or_sub = 'PEER'
5937 THEN
5938 l_min_display_sequence := l_above_display_sequence;
5939 ELSE
5940 l_min_display_sequence := l_ref_display_sequence;
5941 END IF;
5942 l_max_display_sequence := cur_tasks_rec.display_sequence; --add the total tasks added
5943 ELSE
5944 --otherwise no change in the display sequence.
5945 null;
5946 END IF;
5947
5948 ELSE
5949 --Parent task id for all other except the first task remains same
5950 l_parent_task_id := cur_tasks_rec.parent_task_id;
5951 END IF;
5952
5953 i := i + 1; --counting no. of moving tasks
5954
5955 --initialize the wbs level of the moving tasks starting from 1
5956 l_wbs_level := cur_tasks_rec.wbs_level - l_lowest_moving_wbs_level + 1;
5957
5958 IF p_peer_or_sub = 'PEER'
5959 THEN
5960 --creating -ve sequence numbers.
5961 --moving after all child tasks of the ref task
5962 l_display_sequence := -( l_above_display_sequence + i ) ;
5963
5964 l_wbs_level := l_wbs_level + ( l_ref_wbs_level - 1 );
5965 ELSE
5966 l_wbs_level := l_wbs_level + l_ref_wbs_level ;
5967 --creating -ve sequence numbers.
5968 --moving immediately after ref task
5969 l_display_sequence := -( l_ref_display_sequence + i ) ;
5970 END IF;
5971
5972 --dbms_output.put_line( 'Before update task ' );
5973 PA_TASKS_MAINT_PVT.UPDATE_TASK
5974 (
5975 p_commit => p_commit
5976 ,p_validate_only => p_validate_only
5977 ,p_validation_level => p_validation_level
5978 ,p_calling_module => p_calling_module
5979 ,p_debug_mode => p_debug_mode
5980
5981 ,p_project_id => p_reference_project_id
5982 ,p_task_id => cur_tasks_rec.task_id
5983
5984 ,p_parent_task_id => l_parent_task_id
5985 ,p_top_task_id => l_top_task_id
5986 ,p_wbs_level => l_wbs_level
5987 ,p_display_sequence => l_display_sequence
5988
5989 ,p_record_version_number => cur_tasks_rec.record_version_number
5990 ,x_return_status => x_return_status
5991 ,x_msg_count => x_msg_count
5992 ,x_msg_data => x_msg_data );
5993
5994 l_msg_count := FND_MSG_PUB.count_msg;
5995
5996 IF l_msg_count > 0 THEN
5997 x_msg_count := l_msg_count;
5998 x_return_status := 'E';
5999 x_msg_data := x_msg_data;
6000 --dbms_output.put_line( 'x_msg_data in update task '||x_msg_data );
6001
6002 RAISE FND_API.G_EXC_ERROR;
6003 END IF;
6004
6005 END LOOP;
6006
6007 --dbms_output.put_line( 'In move task 6' );
6008
6009 -- update chargeable flag for reference task to no.
6010 IF (Pa_Task_Utils.check_child_Exists(NVL(p_reference_task_id,0)) = 1 ) THEN
6011 UPDATE Pa_tasks
6012 SET Chargeable_Flag = 'N',
6013 RECORD_VERSION_NUMBER = nvl(RECORD_VERSION_NUMBER,0) + 1,
6014 last_updated_by = FND_GLOBAL.USER_ID,
6015 last_update_login = FND_GLOBAL.USER_ID,
6016 last_update_date = sysdate
6017 WHERE TASK_ID = p_reference_task_id;
6018 END IF;
6019
6020 --dbms_output.put_line( 'In move task 7' );
6021
6022
6023 /*
6024 --Call Update statement to update display order
6025
6026 ************************************************************
6027 THIS FUNCTIONALITY IS MOVED IN PA_TASK_PUB1.COPY_TASK API.
6028 ************************************************************
6029
6030 BEGIN
6031 -- Need to get max number
6032 SELECT max(display_sequence)
6033 INTO l_max_seq
6034 FROM PA_TASKS
6035 WHERE project_id = p_reference_project_id;
6036
6037
6038 IF l_move_direction = 'UP'
6039 THEN
6040 l_max_display_sequence := l_max_display_sequence + i - 1; --( )
6041 l_max_seq := l_max_seq + i;
6042 END IF;
6043
6044 UPDATE PA_TASKS
6045 SET display_sequence =
6046 PA_TASKS_MAINT_UTILS.REARRANGE_DISPLAY_SEQ(display_sequence, l_max_seq, i, 'MOVE', l_move_direction ),
6047 record_version_number = record_version_number + 1
6048 WHERE project_id = p_reference_project_id
6049 AND ( ( display_sequence > l_min_display_sequence and
6050 display_sequence <= l_max_display_sequence ) or display_sequence < 0 );
6051 EXCEPTION
6052 WHEN OTHERS THEN
6053 PA_UTILS.ADD_MESSAGE('PA', 'PA_TASK_SEQ_NUM_ERR');
6054 RAISE FND_API.G_EXC_ERROR;
6055 END; */
6056
6057 EXCEPTION
6058 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6059 IF p_commit = FND_API.G_TRUE
6060 THEN
6061 ROLLBACK TO Move;
6062 END IF;
6063 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6064 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
6065 p_procedure_name => 'Move_Task',
6066 p_error_text => SUBSTRB(SQLERRM,1,240));
6067 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6068
6069 WHEN FND_API.G_EXC_ERROR THEN
6070 IF p_commit = FND_API.G_TRUE
6071 THEN
6072 ROLLBACK TO Move;
6073 END IF;
6074 x_return_status := 'E';
6075
6076 WHEN OTHERS THEN
6077 IF p_commit = FND_API.G_TRUE
6078 THEN
6079 ROLLBACK TO Move;
6080 END IF;
6081 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6082 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_TASKS_MAINT_PVT',
6083 p_procedure_name => 'Move_Task',
6084 p_error_text => SUBSTRB(SQLERRM,1,240));
6085 RAISE;
6086
6087 END Move_Task;
6088 --Begin add by rtarway for FP.M development
6089 -- Procedure : SET_UNSET_FINANCIAL_TASK
6090 -- Type : Public Procedure
6091 -- Purpose : This API will be called from set financial tasks page in financial tab
6092 -- : This Api is to set unset the financial_task_flag in pa_proj_element_versions table.
6093
6094 -- Note :
6095 -- :
6096 -- :
6097 -- Assumptions :
6098
6099 -- Parameters Type Required Description and Purpose
6100 -- --------------------------- ------ -------- --------------------------------------------------------
6101 -- p_task_version_id NUMBER YES Element Version Id.
6102 -- p_checked_flag NUMBER YES Flag indicating Y/N.
6103 -- p_project_id NUMBER YES Project ID
6104 PROCEDURE SET_UNSET_FINANCIAL_TASK
6105 (
6106 p_api_version IN NUMBER := 1.0
6107 , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
6108 , p_commit IN VARCHAR2 := FND_API.G_FALSE
6109 , p_validate_only IN VARCHAR2 := FND_API.G_FALSE
6110 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
6111 , p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
6112 , p_task_version_id IN NUMBER
6113 , p_project_id IN NUMBER
6114 , p_checked_flag IN VARCHAR2
6115 , p_debug_mode IN VARCHAR2 := 'N'
6116 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
6117 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
6118 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
6119 )
6120 IS
6121
6122 l_msg_count NUMBER := 0;
6123 l_data VARCHAR2(2000);
6124 l_msg_data VARCHAR2(2000);
6125 l_msg_index_out NUMBER;
6126 l_debug_mode VARCHAR2(1);
6127 l_task_id NUMBER;
6128 l_error_msg_code VARCHAR2(200);
6129
6130 l_error_code NUMBER;
6131
6132 l_debug_level2 CONSTANT NUMBER := 2;
6133 l_debug_level3 CONSTANT NUMBER := 3;
6134 l_debug_level4 CONSTANT NUMBER := 4;
6135 l_debug_level5 CONSTANT NUMBER := 5;
6136
6137 CURSOR c_get_task_id (l_task_version_id NUMBER, l_project_id NUMBER)
6138 IS
6139 SELECT
6140 proj_element_id
6141 FROM
6142 pa_proj_element_versions
6143 WHERE
6144 project_id = l_project_id
6145 AND
6146 element_version_id = l_task_version_id;
6147
6148 -- Bug 3735089 Added cursor
6149 CURSOR c_task_exists_in_pa_tasks(c_task_id NUMBER)
6150 IS
6151 --SELECT 'Y'
6152 SELECT task_number,task_name --task_number and task_name added for the Bug 14640666
6153 from pa_tasks
6154 WHERE task_id = c_task_id
6155 and project_id = p_project_id;
6156
6157 --Bug 3735089
6158 l_task_exists VARCHAR2(1);
6159 l_user_id NUMBER;
6160 l_login_id NUMBER;
6161 --added for the Bug 14640666
6162 --This cursor gets the immediate parent of the passed task version id from the pa_object_relationships
6163 CURSOR c_get_immediate_parent (l_object_id_to1 NUMBER)
6164 IS
6165 SELECT proj_element_id
6166 FROM pa_proj_element_versions ppev,
6167 pa_object_relationships por
6168 WHERE ppev.element_version_id=por.object_id_from1
6169 AND por.relationship_type ='S'
6170 AND por.relationship_subtype ='TASK_TO_TASK'
6171 AND por.object_id_to1 = l_object_id_to1;
6172 l_err_stack VARCHAR2(630);
6173 l_err_stage VARCHAR2(80);
6174 l_task_number pa_tasks.task_number%type;
6175 l_task_name pa_tasks.task_number%type;
6176 l_err_message fnd_new_messages.message_text%type;
6177 --added for the Bug 14640666
6178
6179
6180 BEGIN
6181 x_msg_count := 0;
6182 x_return_status := FND_API.G_RET_STS_SUCCESS;
6183
6184 --Bug 3735089 - instead of fnd_profile.value use fnd_profile.value_specific
6185 --l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
6186 l_user_id := fnd_global.user_id;
6187 l_login_id := fnd_global.login_id;
6188 l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id, l_login_id,275,null,null),'N');
6189
6190 --l_debug_mode := NVL(p_debug_mode,'N');
6191 IF l_debug_mode = 'Y' THEN
6192 PA_DEBUG.set_curr_function( p_function => 'SET_UNSET_FINANCIAL_TASK',
6193 p_debug_mode => l_debug_mode );
6194 END IF;
6195
6196 IF l_debug_mode = 'Y' THEN
6197 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PVT : SET_UNSET_FINANCIAL_TASK : Printing Input parameters';
6198 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6199 l_debug_level3);
6200
6201 Pa_Debug.WRITE(g_pkg_name,'p_task_version_id'||':'||p_task_version_id,
6202 l_debug_level3);
6203 Pa_Debug.WRITE(g_pkg_name,'p_checked_flag'||':'||p_checked_flag,
6204 l_debug_level3);
6205 Pa_Debug.WRITE(g_pkg_name,'p_project_id'||':'||p_project_id,
6206 l_debug_level3);
6207 END IF;
6208
6209 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
6210 FND_MSG_PUB.initialize;
6211 END IF;
6212
6213 IF (p_commit = FND_API.G_TRUE) THEN
6214 savepoint SET_UNSET_FINANCIAL_TASK_PVT;
6215 --savepoint SET_FIN_FLAG_WRAPPER_PUBLIC; Bug 3735089
6216 END IF;
6217
6218 IF l_debug_mode = 'Y' THEN
6219 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PVT : SET_UNSET_FINANCIAL_TASK : Validating Input parameters';
6220 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6221 l_debug_level3);
6222 END IF;
6223
6224 IF (
6225 ( p_task_version_id IS NULL ) OR
6226 ( p_checked_flag IS NULL ) OR
6227 ( p_project_id IS NULL)
6228 )
6229 THEN
6230 IF l_debug_mode = 'Y' THEN
6231 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PVT : SET_UNSET_FINANCIAL_TASK : Both p_task_version_id and p_checked_flag are null';
6232 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6233 l_debug_level3);
6234 END IF;
6235 RAISE Invalid_Arg_Exc_WP;
6236 END IF;
6237 --Get the task id for task_version_id
6238 IF (p_checked_flag ='N')
6239 THEN
6240 OPEN c_get_task_id ( p_task_version_id , p_project_id );
6241 FETCH c_get_task_id INTO l_task_id;
6242 CLOSE c_get_task_id ;
6243
6244 -- Bug 3735089 Added cursor call , we can add this additionally, currently not needed
6245 -- OPEN c_task_exists_in_pa_tasks(l_task_id);
6246 -- FETCH c_task_exists_in_pa_tasks INTO l_task_exists;
6247 -- CLOSE c_task_exists_in_pa_tasks ;
6248
6249 -- IF NVL(l_task_exists,'N') ='Y' THEN -- Bug 3735089
6250 --Check if the task has any transaction associated with it
6251 PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_HAS_TRANSACTION
6252 (
6253 p_task_id => l_task_id
6254 , p_project_id => p_project_id -- Added for Performance fix 4903460
6255 , x_return_status => x_return_status
6256 , x_msg_count => x_msg_count
6257 , x_msg_data => x_msg_data
6258 , x_error_msg_code => l_error_msg_code
6259 , x_error_code => l_error_code
6260 );
6261
6262 --l_error_code is > 50 in case of associated transaction and < 0 in case of SQL error
6263 IF (l_error_code <> 0) THEN
6264
6265
6266 IF l_debug_mode = 'Y' THEN
6267 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PVT : SET_UNSET_FINANCIAL_TASK :l_error_code :'||l_error_code||'l_error_msg_code :'||l_error_msg_code;
6268 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6269 l_debug_level3);
6270 END IF;
6271 PA_UTILS.ADD_MESSAGE(
6272 p_app_short_name => 'PA'
6273 , p_msg_name => substr(l_error_msg_code,1,30)--bug 3735089 used substr
6274 );
6275 RAISE FND_API.G_EXC_ERROR;
6276 END IF;
6277 -- END IF; --NVL(l_task_exists,'N') ='Y' THEN
6278 END IF;
6279 --added for the Bug 14640666
6280 IF (p_checked_flag ='Y') THEN
6281 l_task_id:=null;
6282 OPEN c_get_immediate_parent(p_task_version_id);
6283 FETCH c_get_immediate_parent INTO l_task_id;
6284 IF c_get_immediate_parent%found THEN -- check if the immediate parent is present
6285 OPEN c_task_exists_in_pa_tasks(l_task_id);
6286 FETCH c_task_exists_in_pa_tasks INTO l_task_number,l_task_name;
6287 IF c_task_exists_in_pa_tasks%found THEN -- if the task is present in pa_tasks table, then call pa_task_utils.check_create_subtask_ok
6288 pa_task_utils.check_create_subtask_ok(x_task_id => l_task_id
6289 , x_err_code => l_error_code
6290 , x_err_stage => l_err_stage
6291 , x_err_stack => l_err_stack);
6292 IF (l_error_code <> 0) THEN
6293 l_err_message := FND_MESSAGE.GET_STRING('PA',l_err_stage) ;
6294 PA_UTILS.ADD_MESSAGE (p_app_short_name => 'PA',
6295 p_msg_name => 'PA_PS_TASK_NAME_NUM_ERR',
6296 p_token1 => 'TASK_NAME',
6297 p_value1 => l_task_name,
6298 p_token2 => 'TASK_NUMBER',
6299 p_value2 => l_task_number,
6300 p_token3 => 'MESSAGE',
6301 p_value3 => l_err_message);
6302 RAISE FND_API.G_EXC_ERROR;
6303 END IF;
6304 END IF;
6305 CLOSE c_task_exists_in_pa_tasks;
6306 END IF;
6307 CLOSE c_get_immediate_parent;
6308 END IF; --p_checked_flag ='Y'
6309 --added for the Bug 14640666
6310 --Update the table with financial flag
6311 --Not using table handler as only one field needs to be updated.
6312
6313
6314 UPDATE
6315 PA_PROJ_ELEMENT_VERSIONS
6316 SET
6317 financial_task_flag = p_checked_flag
6318 WHERE
6319 element_version_id = p_task_version_id
6320 AND
6321 project_id = p_project_id;
6322
6323
6324 IF (p_commit = FND_API.G_TRUE) THEN
6325 COMMIT;
6326 END IF;
6327
6328 -- Bug 3735089 : using reset_curr_function too, just using set_curr_function may overflow it after several recursive calls
6329 -- and it gives ORA 06512 numeric or value error
6330 IF l_debug_mode = 'Y' THEN
6331 Pa_Debug.reset_curr_function;
6332 END IF;
6333
6334 EXCEPTION
6335
6336 WHEN FND_API.G_EXC_ERROR THEN
6337
6338 x_return_status := Fnd_Api.G_RET_STS_ERROR;
6339 l_msg_count := Fnd_Msg_Pub.count_msg;
6340
6341 IF p_commit = FND_API.G_TRUE THEN
6342 ROLLBACK TO SET_UNSET_FINANCIAL_TASK_PVT;
6343 --ROLLBACK TO SET_FIN_FLAG_WRAPPER_PUBLIC; Bug 3735089
6344 END IF;
6345 IF c_get_task_id%ISOPEN THEN
6346 CLOSE c_get_task_id;
6347 END IF;
6348 IF l_msg_count = 1 AND x_msg_data IS NULL
6349 THEN
6350 Pa_Interface_Utils_Pub.get_messages
6351 ( p_encoded => Fnd_Api.G_TRUE
6352 , p_msg_index => 1
6353 , p_msg_count => l_msg_count
6354 , p_msg_data => l_msg_data
6355 , p_data => l_data
6356 , p_msg_index_out => l_msg_index_out);
6357 x_msg_data := l_data;
6358 x_msg_count := l_msg_count;
6359 ELSE
6360 x_msg_count := l_msg_count;
6361 END IF;
6362
6363 IF l_debug_mode = 'Y' THEN
6364 Pa_Debug.reset_curr_function;
6365 END IF;
6366
6367 WHEN Invalid_Arg_Exc_WP THEN
6368
6369 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
6370 x_msg_count := 1;
6371 x_msg_data := 'PA_TASKS_MAINT_PVT : SET_UNSET_FINANCIAL_TASK : NULL PARAMETERS ARE PASSED OR CURSOR DIDNT RETURN ANY ROWS';
6372
6373 IF p_commit = FND_API.G_TRUE THEN
6374 ROLLBACK TO SET_UNSET_FINANCIAL_TASK_PVT;
6375 --ROLLBACK TO DELETE_MAPPING_PUBLIC; Bug 3735089
6376 END IF;
6377 IF c_get_task_id%ISOPEN THEN
6378 CLOSE c_get_task_id;
6379 END IF;
6380 Fnd_Msg_Pub.add_exc_msg
6381 ( p_pkg_name => 'PA_TASKS_MAINT_PVT'
6382 , p_procedure_name => 'SET_UNSET_FINANCIAL_TASK'
6383 , p_error_text => x_msg_data);
6384
6385 IF l_debug_mode = 'Y' THEN
6386 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
6387 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6388 l_debug_level5);
6389
6390 Pa_Debug.reset_curr_function;
6391 END IF;
6392 RAISE;
6393
6394 WHEN OTHERS THEN
6395
6396 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
6397 x_msg_count := 1;
6398 x_msg_data := substr(SQLERRM,1,120);-- Bug 3735089 Added substr
6399
6400 IF p_commit = FND_API.G_TRUE THEN
6401 ROLLBACK TO SET_UNSET_FINANCIAL_TASK_PVT;
6402 --ROLLBACK TO DELETE_MAPPING_PUBLIC; Bug 3735089
6403 END IF;
6404
6405 IF c_get_task_id%ISOPEN THEN
6406 CLOSE c_get_task_id;
6407 END IF;
6408
6409 Fnd_Msg_Pub.add_exc_msg
6410 ( p_pkg_name => 'PA_TASKS_MAINT_PVT'
6411 , p_procedure_name => 'SET_UNSET_FINANCIAL_TASK'
6412 , p_error_text => x_msg_data);
6413
6414 IF l_debug_mode = 'Y' THEN
6415 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
6416 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6417 l_debug_level5);
6418 Pa_Debug.reset_curr_function;
6419 END IF;
6420 RAISE;
6421 END SET_UNSET_FINANCIAL_TASK ;
6422
6423 -- Procedure : SYNC_UP_WP_TASKS_WITH_FIN
6424 -- Type : Private Procedure
6425 -- Purpose : This API will be called from SYNC_UP_WP_TASKS_WITH_FIN public
6426 -- : This API is to Sync up the financial tasks with pa_tasks table
6427 -- Note : This API can be called in two modes. One Singular and one All. In both the cases it will assume that
6428 -- : 1. In Singular case this API will expect the p_task_version_id and p_checked_flag to be passed.
6429 -- : 2. In All mode, it will expect the p_structre_version_id and p_syncup_all_tasks flag to be passed as
6430 -- : 'N'. In this mode this API will loop thru all the tasks in the passed structure, get each tasks
6431 -- financial_task_flag. If flag is Y in database, then check if the task is not present in
6432 -- pa_tasks. If not present in pa_tasks then create it there. Similarly remove from
6433 -- pa_tasks if flag is 'N'.
6434 -- Assumptions : The financial_task_flag is already set in the database.
6435
6436 -- Parameters Type Required Description and Purpose
6437 -- --------------------------- ------ -------- --------------------------------------------------------
6438 -- p_parent_task_version_id NUMBER NO Parent task id of the current task
6439 -- p_patask_record_version_number NUMBER NO
6440 -- p_project_id NUMBER Yes Project_id of the project being synced up.
6441 -- p_syncup_all_tasks VARCHAR2 NO Flag indicating Y/N whether to sync up all the tasks for the given structure version id.
6442 -- p_task_version_id NUMBER NO The single task's version id. This is applicable for singular case.
6443 -- 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.
6444 -- 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.
6445 -- 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
6446
6447 PROCEDURE SYNC_UP_WP_TASKS_WITH_FIN
6448 (
6449 p_api_version IN NUMBER := 1.0
6450 , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
6451 , p_commit IN VARCHAR2 := FND_API.G_FALSE
6452 , p_validate_only IN VARCHAR2 := FND_API.G_FALSE
6453 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
6454 , p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
6455 , p_debug_mode IN VARCHAR2 := 'N'
6456 , p_parent_task_version_id IN NUMBER := FND_API.G_MISS_NUM
6457 , p_patask_record_version_number IN NUMBER := FND_API.G_MISS_NUM
6458 , p_project_id IN NUMBER
6459 , p_syncup_all_tasks IN VARCHAR2 := 'N'
6460 , p_task_version_id IN NUMBER := FND_API.G_MISS_NUM
6461 , p_structure_version_id IN NUMBER := FND_API.G_MISS_NUM
6462 , p_checked_flag IN VARCHAR2 := FND_API.G_MISS_CHAR
6463 , p_mode IN VARCHAR2 := 'SINGLE'
6464 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
6465 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
6466 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
6467 )
6468 IS
6469 l_msg_count NUMBER := 0;
6470 l_data VARCHAR2(2000);
6471 l_msg_data VARCHAR2(2000);
6472 l_msg_index_out NUMBER;
6473 l_debug_mode VARCHAR2(1);
6474 l_task_id NUMBER ;
6475 l_parent_task_id NUMBER;
6476 l_task_name VARCHAR2(240);
6477 l_task_number VARCHAR2(100);
6478 --l_display_seq NUMBER;
6479 l_carrying_out_organization_id NUMBER;
6480 l_task_version_id NUMBER;
6481 l_patask_record_version_number NUMBER;
6482 l_debug_level2 CONSTANT NUMBER := 2;
6483 l_debug_level3 CONSTANT NUMBER := 3;
6484 l_debug_level4 CONSTANT NUMBER := 4;
6485 l_debug_level5 CONSTANT NUMBER := 5;
6486
6487 --This cursor will give the element id corresponding to a element version id
6488 CURSOR c_get_task_id (l_element_version_id NUMBER, l_project_id NUMBER)
6489 IS
6490 SELECT
6491 proj_element_id
6492 FROM
6493 pa_proj_element_versions
6494 WHERE
6495 element_version_id = l_element_version_id
6496 AND
6497 project_id = l_project_id;
6498 --This cursor will return name and number for a particular element
6499 CURSOR c_get_task_name_and_number (l_element_id NUMBER, l_project_id NUMBER)
6500 IS
6501 SELECT
6502 name, element_number
6503 FROM
6504 pa_proj_elements
6505 WHERE
6506 proj_element_id = l_element_id
6507 AND
6508 project_id = l_project_id;
6509
6510 --This cursor gets the immediate parent's task id for the passed task version id.
6511 CURSOR c_get_immediate_parent_task_id (l_object_id_to1 NUMBER, l_project_id NUMBER)
6512 IS
6513 SELECT
6514 elever.proj_element_id
6515 FROM
6516 pa_proj_element_versions elever
6517 , pa_object_relationships obRel
6518 WHERE
6519 obRel.relationship_type ='S'
6520 AND
6521 obRel.relationship_subtype ='TASK_TO_TASK'
6522 AND
6523 obRel.OBJECT_ID_TO1 = l_object_id_to1
6524 AND
6525 elever.element_version_id=obRel.OBJECT_ID_FROM1
6526 AND
6527 elever.project_id = l_project_id;
6528
6529 --This cursor returns name and number of a particular element, using element_version_id
6530 CURSOR c_get_task_name_number_frm_ver (l_element_version_id NUMBER, l_project_id NUMBER)
6531 IS
6532 SELECT
6533 elements.name
6534 , elements.element_number
6535
6536 FROM
6537 pa_proj_elements elements
6538 , pa_proj_element_versions elever
6539 WHERE
6540 elever.element_version_id = l_element_version_id
6541 AND
6542 elever.project_id = l_project_id
6543 AND
6544 elements.proj_element_id = elever.proj_element_id
6545 AND
6546 elements.project_id = elever.project_id;
6547
6548 --This curosr returns the record version number from pa_tasks for row containig passed task id.
6549 CURSOR c_get_pa_record_version_number (l_task_id NUMBER , l_project_id NUMBER)
6550 IS
6551 SELECT
6552 record_version_number
6553 FROM
6554 PA_TASKS
6555 WHERE
6556 task_id = l_task_id
6557 AND
6558 project_id = l_project_id;
6559
6560 CURSOR c_get_all_tasks_in_structure(l_structure_version_id NUMBER, l_project_id NUMBER)
6561 IS
6562 SELECT
6563 element_version_id
6564 ,financial_task_flag
6565 FROM
6566 pa_proj_element_versions
6567 WHERE
6568 parent_structure_version_id = l_structure_version_id
6569 AND
6570 object_type='PA_TASKS'
6571 AND
6572 project_id = l_project_id;
6573
6574 --Bug 3735089
6575 l_user_id NUMBER;
6576 l_login_id NUMBER;
6577
6578
6579 BEGIN
6580 x_msg_count := 0;
6581 x_return_status := FND_API.G_RET_STS_SUCCESS;
6582
6583 --Bug 3735089 - instead of fnd_profile.value use fnd_profile.value_specific
6584 --l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
6585 l_user_id := fnd_global.user_id;
6586 l_login_id := fnd_global.login_id;
6587 l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id, l_login_id,275,null,null),'N');
6588
6589 --l_debug_mode := NVL(p_debug_mode,'N');
6590 IF l_debug_mode = 'Y' THEN
6591 PA_DEBUG.set_curr_function( p_function => 'SYNC_UP_WP_TASKS_WITH_FIN',
6592 p_debug_mode => l_debug_mode );
6593 END IF;
6594
6595 IF l_debug_mode = 'Y' THEN
6596 Pa_Debug.g_err_stage:= 'PA_TASKS_MAINT_PVT : SYNC_UP_WP_TASKS_WITH_FIN : Printing Input parameters';
6597 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6598 l_debug_level3);
6599
6600 Pa_Debug.WRITE(g_pkg_name,'p_project_id '||':'||p_project_id ,
6601 l_debug_level3);
6602 Pa_Debug.WRITE(g_pkg_name,'p_syncup_all_tasks'||':'||p_syncup_all_tasks,
6603 l_debug_level3);
6604 Pa_Debug.WRITE(g_pkg_name,'p_task_version_id'||':'|| p_task_version_id ,
6605 l_debug_level3);
6606 Pa_Debug.WRITE(g_pkg_name,'p_structure_version_id'||':'|| p_structure_version_id,
6607 l_debug_level3);
6608 Pa_Debug.WRITE(g_pkg_name,'p_checked_flag '||':'||p_checked_flag ,
6609 l_debug_level3);
6610 Pa_Debug.WRITE(g_pkg_name,'p_mode'||':'||p_mode,
6611 l_debug_level3);
6612 Pa_Debug.WRITE(g_pkg_name,'p_parent_task_version_id'||':'||p_parent_task_version_id,
6613 l_debug_level3);
6614 END IF;
6615
6616 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
6617 FND_MSG_PUB.initialize;
6618 END IF;
6619
6620 IF (p_commit = FND_API.G_TRUE) THEN
6621 --savepoint SET_FIN_FLAG_WRAPPER_PUBLIC; Bug 3735089
6622 savepoint SYNC_UP_WP_TASKS_WITH_FIN_PVT;
6623 END IF;
6624 --get carrying_out_organization_id
6625 l_carrying_out_organization_id := PA_DELIVERABLE_UTILS.GET_CARRYING_OUT_ORG
6626 (
6627 p_project_id => p_project_id
6628 ,p_task_id => l_task_id
6629 );
6630 --If p_mode is single, and p_checked_flag is 'N', delete the task
6631 -- if p_mode is 'Y', and task is not in PA_TASKS, create the new task
6632 IF ( p_mode = 'SINGLE' )
6633 THEN
6634
6635 IF (p_checked_flag='N')
6636 THEN
6637
6638 OPEN c_get_task_id ( p_task_version_id , p_project_id );
6639 FETCH c_get_task_id INTO l_task_id;
6640 CLOSE c_get_task_id;
6641 IF (PA_PROJ_ELEMENTS_UTILS.CHECK_IS_FINANCIAL_TASK(l_task_id)='Y')
6642 THEN
6643
6644
6645 PA_TASKS_MAINT_PUB.DELETE_TASK
6646 (
6647 p_commit => p_commit
6648 , p_init_msg_list => FND_API.G_FALSE
6649 , p_calling_module => p_calling_module
6650 , p_debug_mode => l_debug_mode
6651 , p_project_id => p_project_id
6652 , p_task_id => l_task_id
6653 , p_record_version_number => p_patask_record_version_number
6654 , p_wbs_record_version_number => 1 --parameter not used anywhere in PA_TASKS_MAINT_PUB.DELETE_TASK,pass any dummy value
6655 , x_return_status => x_return_status
6656 , x_msg_count => x_msg_count
6657 , x_msg_data => x_msg_data
6658 );
6659
6660
6661 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
6662 THEN
6663 RAISE FND_API.G_EXC_ERROR;
6664 END IF;
6665 END IF;
6666
6667 ELSIF (p_checked_flag='Y')
6668 THEN
6669 OPEN c_get_task_id ( p_task_version_id , p_project_id );
6670 FETCH c_get_task_id INTO l_task_id;
6671 CLOSE c_get_task_id;
6672 --get carrying_out_organization_id
6673 l_carrying_out_organization_id := PA_DELIVERABLE_UTILS.GET_CARRYING_OUT_ORG
6674 (
6675 p_project_id => p_project_id
6676 ,p_task_id => l_task_id
6677 );
6678 IF (PA_PROJ_ELEMENTS_UTILS.CHECK_IS_FINANCIAL_TASK(l_task_id)='N')
6679 THEN
6680 --Get the task id for the parent_task_version_id
6681 OPEN c_get_task_id ( p_parent_task_version_id , p_project_id );
6682 FETCH c_get_task_id INTO l_parent_task_id;
6683 CLOSE c_get_task_id;
6684 --Get the task name from pa_proj_elements
6685 OPEN c_get_task_name_and_number ( l_task_id , p_project_id );
6686 FETCH c_get_task_name_and_number INTO l_task_name, l_task_number;
6687 CLOSE c_get_task_name_and_number ;
6688
6689 PA_TASKS_MAINT_PUB.CREATE_TASK
6690 (
6691 p_commit => p_commit
6692 ,p_calling_module => p_calling_module
6693 ,p_init_msg_list => FND_API.G_FALSE
6694 ,p_debug_mode => l_debug_mode
6695 ,p_project_id => p_project_id
6696 ,p_reference_task_id => l_parent_task_id
6697 ,p_peer_or_sub => 'SUB'
6698 ,p_task_number => l_task_number
6699 ,p_task_name => l_task_name
6700 ,p_task_id => l_task_id
6701 ,p_wbs_record_version_number => 1--parameter not used anywhere in PA_TASKS_MAINT_PUB.DELETE_TASK,pass any dummy value
6702 ,p_carrying_out_organization_id => l_carrying_out_organization_id
6703 --,x_display_seq => l_display_seq
6704 ,x_return_status => x_return_status
6705 ,x_msg_count => x_msg_count
6706 ,x_msg_data => x_msg_data
6707 );
6708 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
6709 THEN
6710 RAISE FND_API.G_EXC_ERROR;
6711 END IF;
6712
6713 END IF;
6714 END IF;
6715 --If p_mode is ALL, get all the tasks for the passed structure id
6716 -- For each task
6717 -- If p_mode is 'N' delete the task
6718 -- if p_mode is 'Y', and task is not in PA_TASKS, create the new task
6719 ELSIF ( p_mode = 'ALL' )
6720 THEN
6721 OPEN c_get_pa_record_version_number ( l_task_id , p_project_id);
6722 FETCH c_get_pa_record_version_number INTO l_patask_record_version_number;
6723 CLOSE c_get_pa_record_version_number;
6724
6725 FOR iCounter IN c_get_all_tasks_in_structure (p_structure_version_id , p_project_id) LOOP
6726
6727 --initialize all values to null here
6728 l_task_id := null;
6729 l_task_version_id := null;
6730 l_parent_task_id := null;
6731 l_task_name := null;
6732 l_task_number := null;
6733
6734 --FETCH c_get_all_tasks_in_structure INTO l_task_version_id;
6735 l_task_version_id := iCounter.element_version_id;
6736 --commented by hsiu: incorrect cursor
6737 -- l_task_version_id := cursor_rec.element_version_id;
6738 OPEN c_get_task_id ( l_task_version_id , p_project_id );
6739 FETCH c_get_task_id INTO l_task_id;
6740 CLOSE c_get_task_id;
6741 --Check_is_financial_task will return 'Y' when data is there is PA_TASKS
6742 IF (PA_PROJ_ELEMENTS_UTILS.CHECK_IS_FINANCIAL_TASK(l_task_id)='Y' AND iCounter.financial_task_flag='N' )
6743 THEN
6744 PA_TASKS_MAINT_PUB.DELETE_TASK
6745 (
6746 p_commit => p_commit
6747 , p_calling_module => p_calling_module
6748 , p_init_msg_list => FND_API.G_FALSE
6749 , p_debug_mode => l_debug_mode
6750 , p_project_id => p_project_id
6751 , p_task_id => l_task_id
6752 , p_record_version_number => l_patask_record_version_number
6753 --, p_called_from_api => p_called_from_api
6754 , p_wbs_record_version_number => 1 --parameter not used anywhere in PA_TASKS_MAINT_PUB.DELETE_TASK,pass any dummy value
6755 , x_return_status => x_return_status
6756 , x_msg_count => x_msg_count
6757 , x_msg_data => x_msg_data
6758 );
6759 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
6760 THEN
6761 RAISE FND_API.G_EXC_ERROR;
6762 END IF;
6763
6764 ELSIF (PA_PROJ_ELEMENTS_UTILS.CHECK_IS_FINANCIAL_TASK(l_task_id)='N' AND iCounter.financial_task_flag='Y')
6765 THEN
6766 --Get the task id for the parent_task_version_id
6767 OPEN c_get_immediate_parent_task_id ( l_task_version_id , p_project_id );
6768 FETCH c_get_immediate_parent_task_id INTO l_parent_task_id;
6769 CLOSE c_get_immediate_parent_task_id;
6770 --Get the task name from pa_proj_elements
6771 OPEN c_get_task_name_number_frm_ver ( l_task_version_id, p_project_id );
6772 FETCH c_get_task_name_number_frm_ver INTO l_task_name, l_task_number;
6773 CLOSE c_get_task_name_number_frm_ver ;
6774
6775
6776 PA_TASKS_MAINT_PUB.CREATE_TASK
6777 (
6778 p_commit => p_commit
6779 ,p_calling_module => p_calling_module
6780 ,p_init_msg_list => FND_API.G_FALSE
6781 ,p_validate_only => p_validate_only
6782 ,p_debug_mode => l_debug_mode
6783 ,p_project_id => p_project_id
6784 ,p_reference_task_id => l_parent_task_id
6785 ,p_peer_or_sub => 'SUB'
6786 ,p_task_number => l_task_number
6787 ,p_task_name => l_task_name
6788 ,p_task_id => l_task_id
6789 ,p_wbs_record_version_number => 1--parameter not used anywhere in PA_TASKS_MAINT_PUB.DELETE_TASK,pass any dummy value
6790 ,p_carrying_out_organization_id => l_carrying_out_organization_id
6791 --,x_display_seq => l_display_seq
6792 ,x_return_status =>x_return_status
6793 ,x_msg_count =>x_msg_count
6794 ,x_msg_data =>x_msg_data
6795 );
6796 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
6797 THEN
6798 RAISE FND_API.G_EXC_ERROR;
6799 END IF;
6800 END IF;
6801 END LOOP;
6802 END IF;
6803
6804 IF (p_commit = FND_API.G_TRUE) THEN
6805 COMMIT;
6806 END IF;
6807
6808 -- Bug 3735089 : using reset_curr_function too, just using set_curr_function may overflow it after several recursive calls
6809 -- and it gives ORA 06512 numeric or value error
6810 IF l_debug_mode = 'Y' THEN
6811 Pa_Debug.reset_curr_function;
6812 END IF;
6813
6814 EXCEPTION
6815
6816 WHEN FND_API.G_EXC_ERROR THEN
6817
6818 x_return_status := Fnd_Api.G_RET_STS_ERROR;
6819 l_msg_count := Fnd_Msg_Pub.count_msg;
6820
6821 IF p_commit = FND_API.G_TRUE THEN
6822 --ROLLBACK TO SET_FIN_FLAG_WRAPPER_PUBLIC; Bug 3735089
6823 ROLLBACK TO SYNC_UP_WP_TASKS_WITH_FIN_PVT;
6824 END IF;
6825
6826 IF c_get_task_id%ISOPEN THEN
6827 CLOSE c_get_task_id;
6828 END IF;
6829 IF c_get_task_name_and_number%ISOPEN THEN
6830 CLOSE c_get_task_name_and_number;
6831 END IF;
6832 IF c_get_immediate_parent_task_id%ISOPEN THEN
6833 CLOSE c_get_immediate_parent_task_id;
6834 END IF;
6835 IF c_get_task_name_number_frm_ver%ISOPEN THEN
6836 CLOSE c_get_task_name_number_frm_ver;
6837 END IF;
6838 IF c_get_pa_record_version_number%ISOPEN THEN
6839 CLOSE c_get_pa_record_version_number;
6840 END IF;
6841
6842 IF l_msg_count = 1 AND x_msg_data IS NULL
6843 THEN
6844 Pa_Interface_Utils_Pub.get_messages
6845 ( p_encoded => Fnd_Api.G_TRUE
6846 , p_msg_index => 1
6847 , p_msg_count => l_msg_count
6848 , p_msg_data => l_msg_data
6849 , p_data => l_data
6850 , p_msg_index_out => l_msg_index_out);
6851 x_msg_data := l_data;
6852 x_msg_count := l_msg_count;
6853 ELSE
6854 x_msg_count := l_msg_count;
6855 END IF;
6856
6857 IF l_debug_mode = 'Y' THEN
6858 Pa_Debug.reset_curr_function;
6859 END IF;
6860
6861 WHEN Invalid_Arg_Exc_WP THEN
6862
6863 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
6864 x_msg_count := 1;
6865 x_msg_data := 'PA_TASKS_MAINT_PVT : SYNC_UP_WP_TASKS_WITH_FIN : NULL PARAMETERS ARE PASSED OR CURSOR DIDNT RETURN ANY ROWS';
6866
6867 IF p_commit = FND_API.G_TRUE THEN
6868 --ROLLBACK TO DELETE_MAPPING_PUBLIC; Bug 3735089
6869 ROLLBACK TO SYNC_UP_WP_TASKS_WITH_FIN_PVT;
6870 END IF;
6871 IF c_get_task_id%ISOPEN THEN
6872 CLOSE c_get_task_id;
6873 END IF;
6874 IF c_get_task_name_and_number%ISOPEN THEN
6875 CLOSE c_get_task_name_and_number;
6876 END IF;
6877 IF c_get_immediate_parent_task_id%ISOPEN THEN
6878 CLOSE c_get_immediate_parent_task_id;
6879 END IF;
6880 IF c_get_task_name_number_frm_ver%ISOPEN THEN
6881 CLOSE c_get_task_name_number_frm_ver;
6882 END IF;
6883 IF c_get_pa_record_version_number%ISOPEN THEN
6884 CLOSE c_get_pa_record_version_number;
6885 END IF;
6886 Fnd_Msg_Pub.add_exc_msg
6887 ( p_pkg_name => 'PA_TASKS_MAINT_PVT'
6888 , p_procedure_name => 'SYNC_UP_WP_TASKS_WITH_FIN'
6889 , p_error_text => x_msg_data);
6890
6891 IF l_debug_mode = 'Y' THEN
6892 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
6893 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6894 l_debug_level5);
6895 Pa_Debug.reset_curr_function;
6896 END IF;
6897 RAISE;
6898
6899 WHEN OTHERS THEN
6900
6901 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
6902 x_msg_count := 1;
6903 x_msg_data := substr(SQLERRM,1,120);-- Bug 3735089 Added substr
6904 IF p_commit = FND_API.G_TRUE THEN
6905 --ROLLBACK TO DELETE_MAPPING_PUBLIC; Bug 3735089
6906 ROLLBACK TO SYNC_UP_WP_TASKS_WITH_FIN_PVT;
6907 END IF;
6908
6909 IF c_get_task_id%ISOPEN THEN
6910 CLOSE c_get_task_id;
6911 END IF;
6912 IF c_get_task_name_and_number%ISOPEN THEN
6913 CLOSE c_get_task_name_and_number;
6914 END IF;
6915 IF c_get_immediate_parent_task_id%ISOPEN THEN
6916 CLOSE c_get_immediate_parent_task_id;
6917 END IF;
6918 IF c_get_task_name_number_frm_ver%ISOPEN THEN
6919 CLOSE c_get_task_name_number_frm_ver;
6920 END IF;
6921 IF c_get_pa_record_version_number%ISOPEN THEN
6922 CLOSE c_get_pa_record_version_number;
6923 END IF;
6924 Fnd_Msg_Pub.add_exc_msg
6925 ( p_pkg_name => 'PA_TASKS_MAINT_PVT'
6926 , p_procedure_name => 'SYNC_UP_WP_TASKS_WITH_FIN'
6927 , p_error_text => x_msg_data);
6928
6929 IF l_debug_mode = 'Y' THEN
6930 Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
6931 Pa_Debug.WRITE(g_pkg_name,Pa_Debug.g_err_stage,
6932 l_debug_level5);
6933
6934 Pa_Debug.reset_curr_function;
6935 END IF;
6936 RAISE;
6937 END SYNC_UP_WP_TASKS_WITH_FIN ;
6938
6939 --End add by rtarway for FP.M development
6940
6941 end PA_TASKS_MAINT_PVT;