DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_TASKS_MAINT_PUB

Source


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