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