DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_TASK_TYPE_PUB

Source


1 PACKAGE BODY PA_TASK_TYPE_PUB AS
2 /*$Header: PATTPUBB.pls 120.3 2006/01/09 05:38:43 vkadimes noship $*/
3 
4 g_module_name   VARCHAR2(100) := 'PA_TASK_TYPE_PUB';  --Bug 3279978 FPM Enhancement
5 
6 l_task_type_not_unique  EXCEPTION;
7 l_task_type_invalid_dates EXCEPTION;
8 l_prog_entry_enable_error EXCEPTION;
9 l_prog_entry_req_error EXCEPTION;
10 l_wq_enable_error  EXCEPTION;
11 l_remain_effort_enable_error EXCEPTION;
12 l_percent_comp_enable_error EXCEPTION;
13 l_delete_task_type_error EXCEPTION;
14 l_del_upg_task_type_error EXCEPTION;
15 l_upd_upg_task_type_error EXCEPTION;
16 l_pagelayout_name_invalid EXCEPTION;
17 PA_DLV_INV_PARAM_EXC EXCEPTION; --Bug 3279978 FP M Development
18 l_invalid_lead_day_exc EXCEPTION;
19 l_delete_delv_type_error EXCEPTION; -- Added for bug 4775641
20 
21 PROCEDURE create_task_type
22  (p_task_type                     IN    pa_task_types.task_type%TYPE
23  ,p_start_date_active             IN    pa_task_types.start_date_active%TYPE
24  ,p_end_date_active               IN    pa_task_types.end_date_active%TYPE          := NULL
25  ,p_description                   IN    pa_task_types.description%TYPE              := NULL
26  ,p_task_type_class_code          IN    pa_task_types.task_type_class_code%TYPE
27  ,p_initial_status_code           IN    pa_task_types.initial_status_code%TYPE      := NULL
28  ,p_prog_entry_enable_flag        IN    pa_task_types.prog_entry_enable_flag%TYPE   := NULL
29  ,p_prog_entry_req_flag           IN    pa_task_types.prog_entry_req_flag%TYPE      := NULL
30  ,p_initial_progress_status_code  IN    pa_task_types.initial_progress_status_code%TYPE  := NULL
31  ,p_task_prog_entry_page_id       IN    pa_task_types.task_progress_entry_page_id%TYPE   := NULL
32  ,p_task_prog_entry_page_name     IN    pa_page_layouts.page_name%TYPE               := NULL
33  ,p_wq_enable_flag                IN    pa_task_types.wq_enable_flag%TYPE            := NULL
34  ,p_work_item_code                IN    pa_task_types.work_item_code%TYPE            := NULL
35  ,p_uom_code                      IN    pa_task_types.uom_code%TYPE                  := NULL
36  ,p_actual_wq_entry_code          IN    pa_task_types.actual_wq_entry_code%TYPE      := NULL
37  ,p_percent_comp_enable_flag      IN    pa_task_types.percent_comp_enable_flag%TYPE  := NULL
38  ,p_base_percent_comp_deriv_code  IN    pa_task_types.base_percent_comp_deriv_code%TYPE  := NULL
39  ,p_task_weighting_deriv_code     IN    pa_task_types.task_weighting_deriv_code%TYPE     := NULL
40  ,p_remain_effort_enable_flag     IN    pa_task_types.remain_effort_enable_flag%TYPE     := NULL
41  ,p_attribute_category     IN    pa_task_types.attribute_category%TYPE       := NULL
42  ,p_attribute1             IN    pa_task_types.attribute1%TYPE               := NULL
43  ,p_attribute2             IN    pa_task_types.attribute2%TYPE               := NULL
44  ,p_attribute3             IN    pa_task_types.attribute3%TYPE               := NULL
45  ,p_attribute4             IN    pa_task_types.attribute4%TYPE               := NULL
46  ,p_attribute5             IN    pa_task_types.attribute5%TYPE               := NULL
47  ,p_attribute6             IN    pa_task_types.attribute6%TYPE               := NULL
48  ,p_attribute7             IN    pa_task_types.attribute7%TYPE               := NULL
49  ,p_attribute8             IN    pa_task_types.attribute8%TYPE               := NULL
50  ,p_attribute9             IN    pa_task_types.attribute9%TYPE               := NULL
51  ,p_attribute10            IN    pa_task_types.attribute10%TYPE              := NULL
52  ,p_attribute11            IN    pa_task_types.attribute11%TYPE              := NULL
53  ,p_attribute12            IN    pa_task_types.attribute12%TYPE              := NULL
54  ,p_attribute13            IN    pa_task_types.attribute13%TYPE              := NULL
55  ,p_attribute14            IN    pa_task_types.attribute14%TYPE              := NULL
56  ,p_attribute15            IN    pa_task_types.attribute15%TYPE              := NULL
57  ,p_api_version            IN    NUMBER                                       := 1.0
58  ,p_init_msg_list          IN    VARCHAR2                                     := FND_API.G_TRUE
59  ,p_commit                 IN    VARCHAR2                                     := FND_API.G_FALSE
60  ,p_validate_only          IN    VARCHAR2                                     := FND_API.G_TRUE
61  ,p_object_type            IN    pa_task_types.object_type%TYPE              := 'PA_TASKS'   -- 3279978 : Added Object Type and Progress Rollup Method
62  ,p_wf_item_type           IN    pa_task_types.wf_item_type%TYPE           :=NULL
63  ,p_wf_process             IN    pa_task_types.wf_process%TYPE             :=NULL
64  ,p_wf_lead_days           IN    pa_task_types.wf_start_lead_days%TYPE     :=NULL
65 
66  ,x_task_type_id          OUT    NOCOPY NUMBER --File.Sql.39 bug 4440895
67  ,x_return_status         OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
68  ,x_msg_count             OUT    NOCOPY NUMBER --File.Sql.39 bug 4440895
69  ,x_msg_data              OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
70 )
71 IS
72 
73  l_msg_index_out   NUMBER;
74  --Bug: 4537865
75  l_new_msg_data    VARCHAR2(2000);
76  --Bug: 4537865
77  l_error_message_code VARCHAR2(100);
78  l_task_prog_entry_page_id pa_page_layouts.page_id%TYPE;
79  l_task_weighting_deriv_code pa_task_types.task_weighting_deriv_code%TYPE;
80  l_task_type_class_code pa_task_types.task_type_class_code%TYPE;
81 
82 BEGIN
83 
84   -- Initialize the Error Stack
85   PA_DEBUG.init_err_stack('PA_task_type_PUB.Create_Task_Type');
86 
87   -- Initialize the return status to success
88   x_return_status := FND_API.G_RET_STS_SUCCESS;
89 
90   --Clear the global PL/SQL message table
91   IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
92     FND_MSG_PUB.initialize;
93   END IF;
94 
95   -- Issue API savepoint if the transaction is to be committed
96   IF p_commit  = FND_API.G_TRUE THEN
97     SAVEPOINT CREATE_TASK_TYPE_PUB;
98   END IF;
99 
100   --Log Message
101   PA_DEBUG.write_log (x_module      => 'pa.plsql.PA_TASK_TYPES_PUB.Create_Task_Type.begin'
102                      ,x_msg         => 'Beginning of Create_Task_Type pub'
103                      ,x_log_level   => 5);
104 
105 
106   -- Check whether task_type is unique
107   IF PA_TASK_TYPE_UTILS.is_task_type_unique(p_task_type => p_task_type) = 'N' THEN
108     RAISE l_task_type_not_unique;
109   END IF;
110 
111   -- Validate From/To dates
112   IF p_end_date_active IS NOT NULL AND TRUNC(p_start_date_active) > TRUNC(p_end_date_active) THEN
113     RAISE l_task_type_invalid_dates;
114   END IF;
115 
116   -- Name/ID validation for task progress entry page layout
117   l_task_prog_entry_page_id := p_task_prog_entry_page_id;
118   PA_PAGE_LAYOUT_UTILS.check_pagelayout_name_or_id(
119      p_pagelayout_name => p_task_prog_entry_page_name,
120      p_pagetype_code   => 'AI',
121      p_check_id_flag   => 'Y',
122      x_pagelayout_id   => l_task_prog_entry_page_id,
123      x_return_status   => x_return_status,
124      x_error_message_code => l_error_message_code);
125   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
126     RAISE l_pagelayout_name_invalid;
127   END IF;
128 
129   -- Validate progress attributes.
130   PA_TASK_TYPE_UTILS.validate_progress_attributes(
131            p_prog_entry_enable_flag        => p_prog_entry_enable_flag
132           ,p_prog_entry_req_flag           => p_prog_entry_req_flag
133           ,p_initial_progress_status_code  => p_initial_progress_status_code
134           ,p_task_prog_entry_page_id       => l_task_prog_entry_page_id
135           ,p_wq_enable_flag                => p_wq_enable_flag
136           ,p_work_item_code                => p_work_item_code
137           ,p_uom_code                      => p_uom_code
138           ,p_actual_wq_entry_code          => p_actual_wq_entry_code
139           ,p_percent_comp_enable_flag      => p_percent_comp_enable_flag
140           ,p_base_percent_comp_deriv_code  => p_base_percent_comp_deriv_code
141           ,p_task_weighting_deriv_code     => p_task_weighting_deriv_code
142           ,p_remain_effort_enable_flag     => p_remain_effort_enable_flag
143           ,x_return_status          =>   x_return_status
144           ,x_msg_count              =>   x_msg_count
145           ,x_msg_data               =>   x_msg_data);
146 
147   -- Default task_weighting_deriv_code to 'MANUAL' for all task types.
148   IF p_task_weighting_deriv_code IS NULL THEN
149     l_task_weighting_deriv_code := 'MANUAL';
150   END IF;
151 
152   -- Default task_type_class_code to 'MANUAL' for all task types.
153   IF p_task_type_class_code IS NULL THEN
154     l_task_type_class_code := 'GENERAL';
155   END IF;
156 
157   -- FP M : 3491609 : Project Execution Workflow Changes
158   If nvl(p_wf_lead_days,0)<0 then
159      Raise l_invalid_lead_day_exc ;
160   end if ;
161 
162   IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
163     --Log Message
164     PA_DEBUG.write_log (x_module      => 'pa.plsql.PA_TASK_TYPES_PUB.Create_Task_Type.begin'
165                      ,x_msg         => 'calling create_Task_Type pvt'
166                      ,x_log_level   => 5);
167 
168         PA_TASK_TYPE_PVT.create_Task_Type
169           (p_task_type                     => p_task_type
170           ,p_start_date_active             => p_start_date_active
171           ,p_end_date_active               => p_end_date_active
172           ,p_description                   => p_description
173           ,p_task_type_class_code          => l_task_type_class_code
174           ,p_initial_status_code           => p_initial_status_code
175           ,p_prog_entry_enable_flag        => p_prog_entry_enable_flag
176           ,p_prog_entry_req_flag           => p_prog_entry_req_flag
177           ,p_initial_progress_status_code  => p_initial_progress_status_code
178           ,p_task_prog_entry_page_id       => l_task_prog_entry_page_id
179           ,p_wq_enable_flag                => p_wq_enable_flag
180           ,p_work_item_code                => p_work_item_code
181           ,p_uom_code                      => p_uom_code
182           ,p_actual_wq_entry_code          => p_actual_wq_entry_code
183           ,p_percent_comp_enable_flag      => p_percent_comp_enable_flag
184           ,p_base_percent_comp_deriv_code  => p_base_percent_comp_deriv_code
185           ,p_task_weighting_deriv_code     => l_task_weighting_deriv_code
186           ,p_remain_effort_enable_flag     => p_remain_effort_enable_flag
187           ,p_attribute_category     =>   p_attribute_category
188           ,p_attribute1             =>   p_attribute1
189           ,p_attribute2             =>   p_attribute2
190           ,p_attribute3             =>   p_attribute3
191           ,p_attribute4             =>   p_attribute4
192           ,p_attribute5             =>   p_attribute5
193           ,p_attribute6             =>   p_attribute6
194           ,p_attribute7             =>   p_attribute7
195           ,p_attribute8             =>   p_attribute8
196           ,p_attribute9             =>   p_attribute9
197           ,p_attribute10            =>   p_attribute10
198           ,p_attribute11            =>   p_attribute11
199           ,p_attribute12            =>   p_attribute12
200           ,p_attribute13            =>   p_attribute13
201           ,p_attribute14            =>   p_attribute14
202           ,p_attribute15            =>   p_attribute15
203           ,p_object_type            =>   p_object_type                  -- 3279978 : Added Object Type and Progress Rollup Method
204           ,p_wf_item_type           =>   p_wf_item_type
205           ,p_wf_process             =>   p_wf_process
206           ,p_wf_lead_days           =>   p_wf_lead_days
207           ,x_task_type_id           =>   x_task_type_id
208           ,x_return_status          =>   x_return_status
209           ,x_msg_count              =>   x_msg_count
210           ,x_msg_data               =>   x_msg_data);
211   END IF;
212 
213   x_msg_count :=  FND_MSG_PUB.Count_Msg;
214   IF x_msg_count = 1 THEN
215     pa_interface_utils_pub.get_messages ( p_encoded       => FND_API.G_TRUE
216                                          ,p_msg_index     => 1
217                                          ,p_data          => x_msg_data
218                                          ,p_msg_index_out => l_msg_index_out
219                                         );
220   END IF;
221 
222   -- Reset the error stack when returning to the calling program
223   PA_DEBUG.Reset_Err_Stack;
224   -- If any errors exist then set the x_return_status to 'E'
225 
226   IF x_msg_count > 0  THEN
227         x_return_status := FND_API.G_RET_STS_ERROR;
228   END IF;
229 
230   -- Commit if the flag is set and there is no error
231   IF p_commit = FND_API.G_TRUE AND x_msg_count = 0 THEN
232     COMMIT;
233   END IF;
234 
235   EXCEPTION
236     WHEN l_task_type_not_unique THEN
237       PA_UTILS.add_message('PA','PA_TASK_TYPE_NOT_UNIQUE');
238 		  x_return_status := FND_API.G_RET_STS_ERROR;
239 		  x_msg_data := 'PA_TASK_TYPE_NOT_UNIQUE';
240 		  x_msg_count := FND_MSG_PUB.Count_Msg;
241 		  IF x_msg_count = 1 THEN
242 				pa_interface_utils_pub.get_messages
243 					(p_encoded        => FND_API.G_TRUE,
244 					p_msg_index      => 1,
245 					p_msg_count      => x_msg_count,
246 					p_msg_data       => x_msg_data,
247 				      --p_data           => x_msg_data,		--Bug: 4537865
248 					p_data	         => l_new_msg_data,	--Bug: 4537865
249 					p_msg_index_out  => l_msg_index_out );
250 		--Bug: 4537865
251 		x_msg_data := l_new_msg_data;
252 		--Bug: 4537865
253 		  END IF;
254     WHEN l_task_type_invalid_dates THEN
255       PA_UTILS.add_message('PA','PA_TT_INVALID_DATES');
256 		  x_return_status := FND_API.G_RET_STS_ERROR;
257 		  x_msg_data := 'PA_TT_INVALID_DATES';
258 		  x_msg_count := FND_MSG_PUB.Count_Msg;
259 		  IF x_msg_count = 1 THEN
260 				pa_interface_utils_pub.get_messages
261 					(p_encoded        => FND_API.G_TRUE,
262 					p_msg_index      => 1,
263 					p_msg_count      => x_msg_count,
264 					p_msg_data       => x_msg_data,
265 				      --p_data           => x_msg_data,		--Bug: 4537865
266 					p_data		 => l_new_msg_data,	--Bug: 4537865
267 					p_msg_index_out  => l_msg_index_out );
268 		--Bug: 4537865
269 		x_msg_data := l_new_msg_data;
270 		--Bug: 4537865
271 		  END IF;
272     WHEN l_pagelayout_name_invalid THEN
273       PA_UTILS.add_message('PA',l_error_message_code);
274 		  x_return_status := FND_API.G_RET_STS_ERROR;
275 		  x_msg_data := l_error_message_code;
276 		  x_msg_count := FND_MSG_PUB.Count_Msg;
277 		  IF x_msg_count = 1 THEN
278 				pa_interface_utils_pub.get_messages
279 					(p_encoded        => FND_API.G_TRUE,
280 					p_msg_index      => 1,
281 					p_msg_count      => x_msg_count,
282 					p_msg_data       => x_msg_data,
283 				      --p_data           => x_msg_data,		--Bug: 4537865
284 					p_data		 => l_new_msg_data,	--Bug: 4537865
285 					p_msg_index_out  => l_msg_index_out );
286 		--Bug: 4537865
287 		x_msg_data := l_new_msg_data;
288 		--Bug: 4537865
289 		  END IF;
290     WHEN l_invalid_lead_day_exc THEN
291       PA_UTILS.add_message('PA','PA_INVALID_LEAD_DAYS');
292 		  x_return_status := FND_API.G_RET_STS_ERROR;
293 		  x_msg_data := l_error_message_code;
294 		  x_msg_count := FND_MSG_PUB.Count_Msg;
295 		  IF x_msg_count = 1 THEN
296 				pa_interface_utils_pub.get_messages
297 					(p_encoded        => FND_API.G_TRUE,
298 					p_msg_index      => 1,
299 					p_msg_count      => x_msg_count,
300 					p_msg_data       => x_msg_data,
301 				      --p_data           => x_msg_data,		--Bug: 4537865
302 					p_data		 => l_new_msg_data,	--Bug: 4537865
303 					p_msg_index_out  => l_msg_index_out );
304 		--Bug: 4537865
305 		x_msg_data := l_new_msg_data;
306 		--Bug: 4537865
307 		  END IF;
308     WHEN OTHERS THEN
309         IF p_commit = FND_API.G_TRUE THEN
310           ROLLBACK TO CREATE_TASK_TYPE_PUB;
311         END IF;
312 
313        -- Set the excetption Message and the stack
314        FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_TYPES_PUB.Create_Task_Type'
315                                 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
316        --
317        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
318        RAISE;
319 
320 END Create_Task_Type;
321 
322 
323 PROCEDURE Update_Task_Type
324 ( p_task_type_id                  IN    pa_task_types.task_type_id%TYPE
325  ,p_task_type                     IN    pa_task_types.task_type%TYPE
326  ,p_start_date_active             IN    pa_task_types.start_date_active%TYPE
327  ,p_end_date_active               IN    pa_task_types.end_date_active%TYPE          := NULL
328  ,p_description                   IN    pa_task_types.description%TYPE              := NULL
329  ,p_task_type_class_code          IN    pa_task_types.task_type_class_code%TYPE
330  ,p_initial_status_code           IN    pa_task_types.initial_status_code%TYPE      := NULL
331  ,p_prog_entry_enable_flag        IN    pa_task_types.prog_entry_enable_flag%TYPE   := NULL
332  ,p_prog_entry_req_flag           IN    pa_task_types.prog_entry_req_flag%TYPE      := NULL
333  ,p_initial_progress_status_code  IN    pa_task_types.initial_progress_status_code%TYPE  := NULL
334  ,p_task_prog_entry_page_id       IN    pa_task_types.task_progress_entry_page_id%TYPE   := NULL
335  ,p_task_prog_entry_page_name     IN    pa_page_layouts.page_name%TYPE              := NULL
336  ,p_wq_enable_flag                IN    pa_task_types.wq_enable_flag%TYPE           := NULL
337  ,p_work_item_code                IN    pa_task_types.work_item_code%TYPE           := NULL
338  ,p_uom_code                      IN    pa_task_types.uom_code%TYPE                 := NULL
339  ,p_actual_wq_entry_code          IN    pa_task_types.actual_wq_entry_code%TYPE     := NULL
340  ,p_percent_comp_enable_flag      IN    pa_task_types.percent_comp_enable_flag%TYPE := NULL
341  ,p_base_percent_comp_deriv_code  IN    pa_task_types.base_percent_comp_deriv_code%TYPE  := NULL
342  ,p_task_weighting_deriv_code     IN    pa_task_types.task_weighting_deriv_code%TYPE     := NULL
343  ,p_remain_effort_enable_flag     IN    pa_task_types.remain_effort_enable_flag%TYPE     := NULL
344  ,p_attribute_category     IN    pa_task_types.attribute_category%TYPE       := NULL
345  ,p_attribute1             IN    pa_task_types.attribute1%TYPE               := NULL
346  ,p_attribute2             IN    pa_task_types.attribute2%TYPE               := NULL
347  ,p_attribute3             IN    pa_task_types.attribute3%TYPE               := NULL
348  ,p_attribute4             IN    pa_task_types.attribute4%TYPE               := NULL
349  ,p_attribute5             IN    pa_task_types.attribute5%TYPE               := NULL
350  ,p_attribute6             IN    pa_task_types.attribute6%TYPE               := NULL
351  ,p_attribute7             IN    pa_task_types.attribute7%TYPE               := NULL
352  ,p_attribute8             IN    pa_task_types.attribute8%TYPE               := NULL
353  ,p_attribute9             IN    pa_task_types.attribute9%TYPE               := NULL
354  ,p_attribute10            IN    pa_task_types.attribute10%TYPE              := NULL
355  ,p_attribute11            IN    pa_task_types.attribute11%TYPE              := NULL
356  ,p_attribute12            IN    pa_task_types.attribute12%TYPE              := NULL
357  ,p_attribute13            IN    pa_task_types.attribute13%TYPE              := NULL
358  ,p_attribute14            IN    pa_task_types.attribute14%TYPE              := NULL
359  ,p_attribute15            IN    pa_task_types.attribute15%TYPE              := NULL
360  ,p_object_type            IN    pa_task_types.object_type%TYPE              := 'PA_TASKS'          -- 3279978 : Added Object Type and Progress Rollup Method
361  ,p_api_version            IN    NUMBER                                      := 1.0
362  ,p_init_msg_list          IN    VARCHAR2                                    := FND_API.G_TRUE
363  ,p_commit                 IN    VARCHAR2                                    := FND_API.G_FALSE
364  ,p_validate_only          IN    VARCHAR2                                    := FND_API.G_TRUE
365  ,p_wf_item_type           IN    pa_task_types.wf_item_type%TYPE           :=NULL
366  ,p_wf_process             IN    pa_task_types.wf_process%TYPE             :=NULL
367  ,p_wf_lead_days           IN    pa_task_types.wf_start_lead_days%TYPE     :=NULL
368  ,x_return_status         OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
369  ,x_msg_count             OUT    NOCOPY NUMBER --File.Sql.39 bug 4440895
370  ,x_msg_data              OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
371 )
372 
373 IS
374 
375  l_msg_index_out          NUMBER;
376  --Bug: 4537865
377  l_new_msg_data	 	  VARCHAR2(2000);
378  --Bug: 4537865
379  l_error_message_code VARCHAR2(100);
380  l_task_prog_entry_page_id pa_page_layouts.page_id%TYPE;
381  l_task_weighting_deriv_code pa_task_types.task_weighting_deriv_code%TYPE;
382  l_is_task_type_used   VARCHAR2(1);
383  l_task_type_class_code pa_task_types.task_type_class_code%TYPE;
384 
385  CURSOR c1 IS
386    SELECT prog_entry_enable_flag, prog_entry_req_flag, wq_enable_flag, remain_effort_enable_flag, percent_comp_enable_flag, end_date_active
387    FROM pa_task_types
388    WHERE task_type_id = p_task_type_id;
389 
390  v_c1 c1%ROWTYPE;
391 
392 BEGIN
393 
394   -- Initialize the Error Stack
395   PA_DEBUG.init_err_stack('PA_TASK_TYPES_PUB.Update_Task_Type');
396 
397   -- Initialize the return status to success
398   x_return_status := FND_API.G_RET_STS_SUCCESS;
399 
400   --Clear the global PL/SQL message table
401   IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
402     FND_MSG_PUB.initialize;
403   END IF;
404 
405   -- Issue API savepoint if the transaction is to be committed
406   IF p_commit  = FND_API.G_TRUE THEN
407     SAVEPOINT UPDATE_TASK_TYPE_PUB;
408   END IF;
409 
410   --Log Message
411   PA_DEBUG.write_log (x_module      => 'pa.plsql.PA_TASK_TYPES_PUB.Update_Task_Type.begin'
412                      ,x_msg         => 'Beginning of Update_Task_Type pub'
413                      ,x_log_level   => 5);
414 
415 
416   OPEN c1;
417   FETCH c1 INTO v_c1;
418   CLOSE c1;
419 
420   -- Check whether task_type is unique
421   IF PA_TASK_TYPE_UTILS.is_task_type_unique(p_task_type => p_task_type,
422                                             p_task_type_id => p_task_type_id) = 'N' THEN
423     RAISE l_task_type_not_unique;
424   END IF;
425 
426   -- Validate From/To dates
427   IF p_end_date_active IS NOT NULL AND TRUNC(p_start_date_active) > TRUNC(p_end_date_active) THEN
428     RAISE l_task_type_invalid_dates;
429   END IF;
430 
431   -- Updating the end_date_active of the Upgraded Task Type is not allowed.
432   -- The seeded end_date_actived is NULL.
433   IF p_task_type_id = 1 AND p_end_date_active IS NOT NULL THEN
434 
435     RAISE l_upd_upg_task_type_error;
436   END IF;
437 
438   -- Name/ID validation for task progress entry page layout
439   l_task_prog_entry_page_id := p_task_prog_entry_page_id;
440   PA_PAGE_LAYOUT_UTILS.check_pagelayout_name_or_id(
441      p_pagelayout_name => p_task_prog_entry_page_name,
442      p_pagetype_code   => 'AI',
443      p_check_id_flag   => 'Y',
444      x_pagelayout_id   => l_task_prog_entry_page_id,
445      x_return_status   => x_return_status,
446      x_error_message_code => l_error_message_code);
447   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
448     RAISE l_pagelayout_name_invalid;
449   END IF;
450 
451   -- Validate progress attributes.
452   PA_TASK_TYPE_UTILS.validate_progress_attributes(
453            p_prog_entry_enable_flag        => p_prog_entry_enable_flag
454           ,p_prog_entry_req_flag           => p_prog_entry_req_flag
455           ,p_initial_progress_status_code  => p_initial_progress_status_code
456           ,p_task_prog_entry_page_id       => l_task_prog_entry_page_id
457           ,p_wq_enable_flag                => p_wq_enable_flag
458           ,p_work_item_code                => p_work_item_code
459           ,p_uom_code                      => p_uom_code
460           ,p_actual_wq_entry_code          => p_actual_wq_entry_code
461           ,p_percent_comp_enable_flag      => p_percent_comp_enable_flag
462           ,p_base_percent_comp_deriv_code  => p_base_percent_comp_deriv_code
463           ,p_task_weighting_deriv_code     => p_task_weighting_deriv_code
464           ,p_remain_effort_enable_flag     => p_remain_effort_enable_flag
465           ,x_return_status          =>   x_return_status
466           ,x_msg_count              =>   x_msg_count
467           ,x_msg_data               =>   x_msg_data);
468 
469   -- Default task_type_class_code to 'MANUAL' for all task types.
470   IF p_task_type_class_code IS NULL THEN
471     l_task_type_class_code := 'GENERAL';
472   END IF;
473 
474   -- Check the five control flags
475   IF PA_PROJ_ELEMENTS_UTILS.is_task_type_used(p_task_type_id) = 'Y' THEN
476 
477     IF (v_c1.prog_entry_enable_flag = 'Y' AND p_prog_entry_enable_flag = 'N') THEN
478       RAISE l_prog_entry_enable_error;
479     END IF;
480     IF (v_c1.prog_entry_req_flag = 'N' AND p_prog_entry_req_flag = 'Y') THEN
481       RAISE l_prog_entry_req_error;
482     END IF;
483     IF (v_c1.wq_enable_flag = 'Y' AND p_wq_enable_flag = 'N') THEN
484       RAISE l_wq_enable_error;
485     END IF;
486     IF (v_c1.remain_effort_enable_flag = 'Y' AND p_remain_effort_enable_flag = 'N') THEN
487       RAISE l_remain_effort_enable_error;
488     END IF;
489     IF (v_c1.percent_comp_enable_flag = 'Y' AND p_percent_comp_enable_flag = 'N') THEN
490       RAISE l_percent_comp_enable_error;
491     END IF;
492 
493   END IF;
494 
495   -- Default task_weighting_deriv_code to 'MANUAL' for all task types.
496   IF p_task_weighting_deriv_code IS NULL THEN
497     l_task_weighting_deriv_code := 'MANUAL';
498   END IF;
499 
500   -- FP M : 3491609 : Project Execution Workflow Changes
501   If nvl(p_wf_lead_days,0)<0 then
502      Raise l_invalid_lead_day_exc ;
503   end if ;
504 
505   IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
506     --Log Message
507     PA_DEBUG.write_log (x_module      => 'pa.plsql.PA_TASK_TYPES_PUB.Update_Task_Type.begin'
508                      ,x_msg         => 'calling Update_Task_Type pvt'
509                      ,x_log_level   => 5);
510 
511     PA_TASK_TYPE_PVT.Update_Task_Type
512           (p_task_type_id                  => p_task_type_id
513           ,p_task_type                     => p_task_type
514           ,p_start_date_active             => p_start_date_active
515           ,p_end_date_active               => p_end_date_active
516           ,p_description                   => p_description
517           ,p_task_type_class_code          => l_task_type_class_code
518           ,p_initial_status_code           => p_initial_status_code
519           ,p_prog_entry_enable_flag        => p_prog_entry_enable_flag
520           ,p_prog_entry_req_flag           => p_prog_entry_req_flag
521           ,p_initial_progress_status_code  => p_initial_progress_status_code
522           ,p_task_prog_entry_page_id       => l_task_prog_entry_page_id
523           ,p_wq_enable_flag                => p_wq_enable_flag
524           ,p_work_item_code                => p_work_item_code
525           ,p_uom_code                      => p_uom_code
526           ,p_actual_wq_entry_code          => p_actual_wq_entry_code
527           ,p_percent_comp_enable_flag      => p_percent_comp_enable_flag
528           ,p_base_percent_comp_deriv_code  => p_base_percent_comp_deriv_code
529           ,p_task_weighting_deriv_code     => l_task_weighting_deriv_code
530           ,p_remain_effort_enable_flag     => p_remain_effort_enable_flag
531           ,p_attribute_category     =>   p_attribute_category
532           ,p_attribute1             =>   p_attribute1
533           ,p_attribute2             =>   p_attribute2
534           ,p_attribute3             =>   p_attribute3
535           ,p_attribute4             =>   p_attribute4
536           ,p_attribute5             =>   p_attribute5
537           ,p_attribute6             =>   p_attribute6
538           ,p_attribute7             =>   p_attribute7
539           ,p_attribute8             =>   p_attribute8
540           ,p_attribute9             =>   p_attribute9
541           ,p_attribute10            =>   p_attribute10
542           ,p_attribute11            =>   p_attribute11
543           ,p_attribute12            =>   p_attribute12
544           ,p_attribute13            =>   p_attribute13
545           ,p_attribute14            =>   p_attribute14
546           ,p_attribute15            =>   p_attribute15
547           ,p_object_type            =>   p_object_type          -- 3279978 : Added Object Type and Progress Rollup Method
548           ,p_wf_item_type           =>   p_wf_item_type
549           ,p_wf_process             =>   p_wf_process
550           ,p_wf_lead_days           =>   p_wf_lead_days
551           ,x_return_status          =>   x_return_status
552           ,x_msg_count              =>   x_msg_count
553           ,x_msg_data               =>   x_msg_data);
554   END IF;
555 
556   x_msg_count :=  FND_MSG_PUB.Count_Msg;
557   IF x_msg_count = 1 THEN
558     pa_interface_utils_pub.get_messages ( p_encoded       => FND_API.G_TRUE
559                                          ,p_msg_index     => 1
560                                          ,p_data          => x_msg_data
561                                          ,p_msg_index_out => l_msg_index_out
562                                         );
563   END IF;
564 
565   -- Reset the error stack when returning to the calling program
566   PA_DEBUG.Reset_Err_Stack;
567   -- If any errors exist then set the x_return_status to 'E'
568 
569   IF x_msg_count > 0  THEN
570         x_return_status := FND_API.G_RET_STS_ERROR;
571   END IF;
572 
573   -- Commit if the flag is set and there is no error
574   IF p_commit = FND_API.G_TRUE AND x_msg_count = 0 THEN
575     COMMIT;
576   END IF;
577 
578   EXCEPTION
579     WHEN l_task_type_not_unique THEN
580       PA_UTILS.add_message('PA','PA_TASK_TYPE_NOT_UNIQUE');
581 		  x_return_status := FND_API.G_RET_STS_ERROR;
582 		  x_msg_data := 'PA_TASK_TYPE_NOT_UNIQUE';
583 		  x_msg_count := FND_MSG_PUB.Count_Msg;
584 		  IF x_msg_count = 1 THEN
585 				pa_interface_utils_pub.get_messages
586 					(p_encoded        => FND_API.G_TRUE,
587 					p_msg_index      => 1,
588 					p_msg_count      => x_msg_count,
589 					p_msg_data       => x_msg_data,
590 				      --p_data           => x_msg_data,		* Bug: 4537865
591 					p_data		 => l_new_msg_data,	--Bug: 4537865
592 					p_msg_index_out  => l_msg_index_out );
593 		--Bug: 4537865
594 		x_msg_data := l_new_msg_data;
595 		--Bug: 4537865
596 		  END IF;
597     WHEN l_task_type_invalid_dates THEN
598       PA_UTILS.add_message('PA','PA_TT_INVALID_DATES');
599 		  x_return_status := FND_API.G_RET_STS_ERROR;
600 		  x_msg_data := 'PA_TT_INVALID_DATES';
601 		  x_msg_count := FND_MSG_PUB.Count_Msg;
602 		  IF x_msg_count = 1 THEN
603 				pa_interface_utils_pub.get_messages
604 					(p_encoded        => FND_API.G_TRUE,
605 					p_msg_index      => 1,
606 					p_msg_count      => x_msg_count,
607 					p_msg_data       => x_msg_data,
608 				      --p_data           => x_msg_data,		--Bug: 4537865
609 					p_data		 => l_new_msg_data,	--Bug: 4537865
610 					p_msg_index_out  => l_msg_index_out );
611 		--Bug: 4537865
612 		x_msg_data := l_new_msg_data;
613 		--Bug: 4537865
614 		  END IF;
615     WHEN l_upd_upg_task_type_error THEN
616       PA_UTILS.add_message('PA','PA_UPD_UPG_TASK_TYPE_ERROR');
617 		  x_return_status := FND_API.G_RET_STS_ERROR;
618 		  x_msg_data := 'PA_UPD_UPG_TASK_TYPE_ERROR';
619 		  x_msg_count := FND_MSG_PUB.Count_Msg;
620 		  IF x_msg_count = 1 THEN
621 				pa_interface_utils_pub.get_messages
622 					(p_encoded        => FND_API.G_TRUE,
623 					p_msg_index      => 1,
624 					p_msg_count      => x_msg_count,
625 					p_msg_data       => x_msg_data,
626 				      --p_data           => x_msg_data,		--Bug: 4537865
627 					p_data		 => l_new_msg_data,	--Bug: 4537865
628 					p_msg_index_out  => l_msg_index_out );
629 		--Bug: 4537865
630 		x_msg_data := l_new_msg_data;
631 		--Bug: 4537865
632 		  END IF;
633     WHEN l_pagelayout_name_invalid THEN
634       PA_UTILS.add_message('PA',l_error_message_code);
635 		  x_return_status := FND_API.G_RET_STS_ERROR;
636 		  x_msg_data := l_error_message_code;
637 		  x_msg_count := FND_MSG_PUB.Count_Msg;
638 		  IF x_msg_count = 1 THEN
639 				pa_interface_utils_pub.get_messages
640 					(p_encoded        => FND_API.G_TRUE,
641 					p_msg_index      => 1,
642 					p_msg_count      => x_msg_count,
643 					p_msg_data       => x_msg_data,
644 				      --p_data           => x_msg_data,		--Bug: 4537865
645 					p_data		 => l_new_msg_data,	--Bug: 4537865
646 					p_msg_index_out  => l_msg_index_out );
647 		--Bug: 4537865
648 		x_msg_data := l_new_msg_data;
649 		--Bug: 4537865
650 		  END IF;
651     WHEN l_prog_entry_enable_error THEN
652       PA_UTILS.add_message('PA','PA_PROG_ENTRY_ENABLE_ERROR');
653 		  x_return_status := FND_API.G_RET_STS_ERROR;
654 		  x_msg_data := 'PA_PROG_ENTRY_ENABLE_FLAG_ERROR';
655 		  x_msg_count := FND_MSG_PUB.Count_Msg;
656 		  IF x_msg_count = 1 THEN
657 				pa_interface_utils_pub.get_messages
658 					(p_encoded        => FND_API.G_TRUE,
659 					p_msg_index      => 1,
660 					p_msg_count      => x_msg_count,
661 					p_msg_data       => x_msg_data,
662 				      --p_data           => x_msg_data,		--Bug: 4537865
663 					p_data		 => l_new_msg_data,	--Bug: 4537865
664 					p_msg_index_out  => l_msg_index_out );
665 		--Bug: 4537865
666 		x_msg_data := l_new_msg_data;
667 		--Bug: 4537865
668 		  END IF;
669     WHEN l_prog_entry_req_error THEN
670       PA_UTILS.add_message('PA','PA_PROG_ENTRY_REQ_ERROR');
671 		  x_return_status := FND_API.G_RET_STS_ERROR;
672 		  x_msg_data := 'PA_TASK_TYPE_NOT_UNIQUE';
673 		  x_msg_count := FND_MSG_PUB.Count_Msg;
674 		  IF x_msg_count = 1 THEN
675 				pa_interface_utils_pub.get_messages
676 					(p_encoded        => FND_API.G_TRUE,
677 					p_msg_index      => 1,
678 					p_msg_count      => x_msg_count,
679 					p_msg_data       => x_msg_data,
680 				      --p_data           => x_msg_data,		--Bug: 4537865
681 					p_data		 => l_new_msg_data,	--Bug: 4537865
682 					p_msg_index_out  => l_msg_index_out );
683 		--Bug: 4537865
684 		x_msg_data := l_new_msg_data;
685 		--Bug: 4537865
686 		  END IF;
687     WHEN l_wq_enable_error THEN
688       PA_UTILS.add_message('PA','PA_WQ_ENABLE_ERROR');
689 		  x_return_status := FND_API.G_RET_STS_ERROR;
690 		  x_msg_data := 'PA_WQ_ENABLE_ERROR';
691 		  x_msg_count := FND_MSG_PUB.Count_Msg;
692 		  IF x_msg_count = 1 THEN
693 				pa_interface_utils_pub.get_messages
694 					(p_encoded        => FND_API.G_TRUE,
695 					p_msg_index      => 1,
696 					p_msg_count      => x_msg_count,
697 					p_msg_data       => x_msg_data,
698 				      --p_data           => x_msg_data,		--Bug: 4537865
699 					p_data 		 => l_new_msg_data,	--Bug: 4537865
700 					p_msg_index_out  => l_msg_index_out );
701 		--Bug: 4537865
702 		x_msg_data := l_new_msg_data;
703 		--Bug: 4537865
704 		  END IF;
705     WHEN l_remain_effort_enable_error THEN
706       PA_UTILS.add_message('PA','PA_REMAIN_EFFORT_ENABLE_ERROR');
707 		  x_return_status := FND_API.G_RET_STS_ERROR;
708 		  x_msg_data := 'PA_REMAIN_EFFORT_ENABLE_ERROR';
709 		  x_msg_count := FND_MSG_PUB.Count_Msg;
710 		  IF x_msg_count = 1 THEN
711 				pa_interface_utils_pub.get_messages
712 					(p_encoded        => FND_API.G_TRUE,
713 					p_msg_index      => 1,
714 					p_msg_count      => x_msg_count,
715 					p_msg_data       => x_msg_data,
716 				      --p_data           => x_msg_data,		--Bug: 4537865
717 					p_data		 => l_new_msg_data,	--Bug: 4537865
718 					p_msg_index_out  => l_msg_index_out );
719 		--Bug: 4537865
720 		x_msg_data := l_new_msg_data;
721 		--Bug: 4537865
722 		  END IF;
723     WHEN l_percent_comp_enable_error THEN
724       PA_UTILS.add_message('PA','PA_PERCENT_COMP_ENABLE_ERROR');
725 		  x_return_status := FND_API.G_RET_STS_ERROR;
726 		  x_msg_data := 'PA_PERCENT_COMP_ENABLE_ERROR';
727 		  x_msg_count := FND_MSG_PUB.Count_Msg;
728 		  IF x_msg_count = 1 THEN
729 				pa_interface_utils_pub.get_messages
730 					(p_encoded        => FND_API.G_TRUE,
731 					p_msg_index      => 1,
732 					p_msg_count      => x_msg_count,
733 					p_msg_data       => x_msg_data,
734 				      --p_data           => x_msg_data,		--Bug: 4537865
735 					p_data		 => l_new_msg_data,	--Bug: 4537865
736 					p_msg_index_out  => l_msg_index_out );
737 		--Bug: 4537865
738 		x_msg_data := l_new_msg_data;
739 		--Bug: 4537865
740 		  END IF;
741     WHEN l_invalid_lead_day_exc THEN
742       PA_UTILS.add_message('PA','PA_INVALID_LEAD_DAYS');
743 		  x_return_status := FND_API.G_RET_STS_ERROR;
744 		  x_msg_data := l_error_message_code;
745 		  x_msg_count := FND_MSG_PUB.Count_Msg;
746 		  IF x_msg_count = 1 THEN
747 				pa_interface_utils_pub.get_messages
748 					(p_encoded        => FND_API.G_TRUE,
749 					p_msg_index      => 1,
750 					p_msg_count      => x_msg_count,
751 					p_msg_data       => x_msg_data,
752 				      --p_data           => x_msg_data,		--Bug: 4537865
753 					p_data		 => l_new_msg_data,	--Bug: 4537865
754 					p_msg_index_out  => l_msg_index_out );
755 		--Bug: 4537865
756 		x_msg_data := l_new_msg_data;
757 		--Bug: 4537865
758 		  END IF;
759     WHEN OTHERS THEN
760         IF p_commit = FND_API.G_TRUE THEN
761           ROLLBACK TO UPDATE_TASK_TYPE_PUB;
762         END IF;
763        -- Set the excetption Message and the stack
764        FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_TYPES_PUB.Update_Task_Type'
765                                 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
766        --
767        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
768        RAISE;
769 
770 END Update_Task_Type;
771 
772 
773 PROCEDURE Delete_Task_Type
774  (p_Task_Type_id           IN    pa_task_types.Task_Type_id%TYPE           := NULL
775  ,p_api_version            IN    NUMBER                                    := 1.0
776  ,p_init_msg_list          IN    VARCHAR2                                  := FND_API.G_TRUE
777  ,p_commit                 IN    VARCHAR2                                  := FND_API.G_FALSE
778  ,p_validate_only          IN    VARCHAR2                                  := FND_API.G_TRUE
779  ,x_return_status         OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
780  ,x_msg_count             OUT    NOCOPY NUMBER --File.Sql.39 bug 4440895
781  ,x_msg_data              OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
782 )
783 IS
784 
785  l_msg_index_out          NUMBER;
786  --Bug: 4537865
787  l_new_msg_data		  VARCHAR2(2000);
788  --Bug: 4537865
789 
790 BEGIN
791 
792   -- Initialize the Error Stack
793   PA_DEBUG.init_err_stack('PA_task_types_PUB.Delete_Task_Type');
794 
795   -- Initialize the return status to success
796   x_return_status := FND_API.G_RET_STS_SUCCESS;
797 
798   --Clear the global PL/SQL message table
799   IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
800     FND_MSG_PUB.initialize;
801   END IF;
802 
803   -- Issue API savepoint if the transaction is to be committed
804   IF p_commit  = FND_API.G_TRUE THEN
805     SAVEPOINT DELETE_TASK_TYPE_PUB;
806   END IF;
807 
808   --Log Message
809   PA_DEBUG.write_log (x_module      => 'pa.plsql.PA_task_types_PUB.Delete_Task_Type.begin'
810                      ,x_msg         => 'Beginning of Delete_Task_Type pub'
811                      ,x_log_level   => 5);
812 
813   --Log Message
814   PA_DEBUG.write_log (x_module      => 'pa.plsql.PA_TASK_TYPES_PUB.Delete_Task_Type.begin'
815                      ,x_msg         => 'calling Delete_Task_Type pvt'
816                      ,x_log_level   => 5);
817 
818   -- Check whether the task type is the seeded task type.
819   IF p_task_type_id = 1 THEN
820     RAISE l_del_upg_task_type_error;
821   END IF;
822 
823   -- Check the task type has been used by any task.
824   IF PA_PROJ_ELEMENTS_UTILS.is_task_type_used(p_task_type_id) = 'Y' THEN
825     RAISE l_delete_task_type_error;
826   END IF;
827 
828   IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
829     PA_TASK_TYPE_PVT.Delete_Task_Type
830           (p_task_type_id           =>   p_task_type_id
831           ,x_return_status          =>   x_return_status
832           ,x_msg_count              =>   x_msg_count
833           ,x_msg_data               =>   x_msg_data);
834   END IF;
835 
836   x_msg_count :=  FND_MSG_PUB.Count_Msg;
837   IF x_msg_count = 1 THEN
838     pa_interface_utils_pub.get_messages ( p_encoded       => FND_API.G_TRUE
839                                          ,p_msg_index     => 1
840                                          ,p_data          => x_msg_data
841                                          ,p_msg_index_out => l_msg_index_out
842                                         );
843   END IF;
844 
845   -- Reset the error stack when returning to the calling program
846   PA_DEBUG.Reset_Err_Stack;
847   -- If any errors exist then set the x_return_status to 'E'
848 
849   IF x_msg_count > 0  THEN
850         x_return_status := FND_API.G_RET_STS_ERROR;
851   END IF;
852 
853   -- Commit if the flag is set and there is no error
854   IF p_commit = FND_API.G_TRUE AND x_msg_count = 0 THEN
855     COMMIT;
856   END IF;
857 
858   EXCEPTION
859     WHEN l_del_upg_task_type_error THEN
860       PA_UTILS.add_message('PA','PA_DEL_UPG_TASK_TYPE_ERROR');
861 		  x_return_status := FND_API.G_RET_STS_ERROR;
862 		  x_msg_data := 'PA_DELETE_TASK_TYPE_ERROR';
863 		  x_msg_count := FND_MSG_PUB.Count_Msg;
864 		  IF x_msg_count = 1 THEN
865 				pa_interface_utils_pub.get_messages
866 					(p_encoded        => FND_API.G_TRUE,
867 					p_msg_index      => 1,
868 					p_msg_count      => x_msg_count,
869 					p_msg_data       => x_msg_data,
870 				      --p_data           => x_msg_data,		--Bug: 4537865
871 					p_data		 => l_new_msg_data,	--Bug: 4537865
872 					p_msg_index_out  => l_msg_index_out );
873 		--Bug: 4537865
874 		x_msg_data := l_new_msg_data;
875 		--Bug: 4537865
876 		  END IF;
877     WHEN l_delete_task_type_error THEN
878       PA_UTILS.add_message('PA','PA_DELETE_TASK_TYPE_ERROR');
879 		  x_return_status := FND_API.G_RET_STS_ERROR;
880 		  x_msg_data := 'PA_DELETE_TASK_TYPE_ERROR';
881 		  x_msg_count := FND_MSG_PUB.Count_Msg;
882 		  IF x_msg_count = 1 THEN
883 				pa_interface_utils_pub.get_messages
884 					(p_encoded        => FND_API.G_TRUE,
885 					p_msg_index      => 1,
886 					p_msg_count      => x_msg_count,
887 					p_msg_data       => x_msg_data,
888 				      --p_data           => x_msg_data,		--Bug: 4537865
889 					p_data		 => l_new_msg_data,	--Bug: 4537865
890 					p_msg_index_out  => l_msg_index_out );
891 		--Bug: 4537865
892 		x_msg_data := l_new_msg_data;
893 		--Bug: 4537865
894 		  END IF;
895     WHEN OTHERS THEN
896         IF p_commit = FND_API.G_TRUE THEN
897           ROLLBACK TO Delete_TASK_TYPE_PUB;
898         END IF;
899 
900        -- Set the exception Message and the stack
901        FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_TYPES_PUB.Delete_Task_Type'
902                                 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
903        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
904        RAISE;
905 
906  END Delete_Task_Type;
907 
908 --Bug # 3279978 FP M Development
909 -- Procedure            : CREATE_DELIVERABLE_TYPE
910 -- Type                 : Public Procedure
911 -- Purpose              : This is the public API used to create the deliverable type .
912 -- Note                 : This API is called by the CR_UP_DELIVERABLE_TYPE Public API
913 --                        if the value of its parameter p_insert_or_update is "INSERT"
914 --                        This API places call to the private API CREATE_DELIVERABLE_TYPE
915 --                        where business validations are done and call to table handler is placed.
916 --Assumptions           : None
917 -- List of parameters other than standard IN and OUT parameters
918 -- Parameters                            Type                                      Null?       Default Value     Description and Purpose
919 -- ---------------------------         --------                                    ------     ---------------   ----------------------------
920 --P_deliverable_type_name	      PA_TASK_TYPES.TASK_TYPE%TYPE		   N			        Deliverable Type Name
921 --P_prog_entry_enable_flag            PA_TASK_TYPES.PROG_ENTRY_ENABLE_FLAG%TYPE	   Y		'N'	        Progress Entry Flag
922 --P_initial_deliverable_status_code   PA_TASK_TYPES.INITIAL_STATUS_CODE%TYPE       Y	        'DLVR_NOT_STARTED'Initial Deliverable Status
923 --P_enable_deliverable_actions        PA_TASK_TYPES.ENABLE_DLVR_ACTIONS%TYPE       Y		'N'		 Enable Deliverable Action
924 --P_effective_from		      PA_TASK_TYPES.START_DATE_ACTIVE%TYPE	   N				 Effective from date
925 --p_effective_to	              PA_TASK_TYPES. END_DATE_ACTIVE %TYPE         Y		NULL		 Effective to date
926 --P_description			      PA_TASK_TYPES.DESCRIPTION%TYPE		   Y		NULL		 Description
927 --P_deliverable_type_id		      PA_TASK_TYPES.TASK_TYPE_ID%TPE		   Y		NULL
928 
929 
930  --28-Dec-2003      avaithia  Created
931 
932  PROCEDURE CREATE_DELIVERABLE_TYPE
933 (p_api_version                     IN   NUMBER                                      := 1.0
934 ,p_init_msg_list                   IN   VARCHAR2                                    := FND_API.G_TRUE
935 ,p_commit                          IN   VARCHAR2                                    := FND_API.G_FALSE
936 ,p_validate_only                   IN   VARCHAR2                                    := FND_API.G_TRUE
937 ,p_validation_level                IN   NUMBER                                      := FND_API.G_VALID_LEVEL_FULL
938 ,p_calling_module                  IN   VARCHAR2                                    := 'SELF_SERVICE'
939 ,p_debug_mode                      IN   VARCHAR2                                    := 'N'
940 ,p_max_msg_count                   IN   NUMBER                                      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
941 ,p_deliverable_type_name           IN   PA_TASK_TYPES.TASK_TYPE%TYPE
942 ,p_prog_entry_enable_flag          IN   PA_TASK_TYPES.PROG_ENTRY_ENABLE_FLAG%TYPE   := 'N'
943 ,p_initial_deliverable_status      IN   PA_TASK_TYPES.INITIAL_STATUS_CODE%TYPE      := 'DLVR_NOT_STARTED'
944 ,p_deliverable_type_class          IN   PA_TASK_TYPES.TASK_TYPE_CLASS_CODE%TYPE     := 'ITEM'
945 ,p_enable_dlvr_actions_flag        IN   PA_TASK_TYPES.ENABLE_DLVR_ACTIONS_FLAG%TYPE := 'N'
946 ,p_effective_from                  IN   PA_TASK_TYPES.START_DATE_ACTIVE%TYPE
947 ,p_effective_to                    IN   PA_TASK_TYPES. END_DATE_ACTIVE %TYPE        := NULL
948 ,p_description                     IN   PA_TASK_TYPES.DESCRIPTION%TYPE              := NULL
949 ,p_deliverable_type_id             IN   PA_TASK_TYPES.TASK_TYPE_ID%TYPE             := NULL
950 ,p_record_version_number           IN   PA_TASK_TYPES.RECORD_VERSION_NUMBER%TYPE    := 1
951 ,x_return_status                  OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
952 ,x_msg_count                      OUT  NOCOPY NUMBER --File.Sql.39 bug 4440895
953 ,x_msg_data                       OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
954 )
955 IS
956 
957 l_msg_count                        NUMBER := 0;
958 l_data                             VARCHAR2(2000);
959 l_msg_data                         VARCHAR2(2000);
960 l_msg_index_out                    NUMBER;
961 l_debug_mode                       VARCHAR2(1);
962 
963 l_debug_level2                     CONSTANT NUMBER := 2;
964 l_debug_level3                     CONSTANT NUMBER := 3;
965 l_debug_level4                     CONSTANT NUMBER := 4;
966 l_debug_level5                     CONSTANT NUMBER := 5;
967 
968 BEGIN
969 
970      x_msg_count := 0;
971      x_return_status := FND_API.G_RET_STS_SUCCESS;
972      l_debug_mode  := p_debug_mode;
973 
974      IF l_debug_mode = 'Y'
975      THEN
976           PA_DEBUG.set_curr_function( p_function   => 'CREATE_DELIVERABLE_TYPE',
977                                       p_debug_mode => l_debug_mode );
978      END IF;
979 
980      IF l_debug_mode = 'Y'
981      THEN
982           PA_DEBUG.g_err_stage:= 'CREATE_DELIVERABLE_TYPE : Printing Input parameters';
983           PA_DEBUG.WRITE(g_module_name,Pa_Debug.g_err_stage,
984                                      l_debug_level3);
985 
986           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_name'||':'||p_deliverable_type_name,
987                                      l_debug_level3);
988           PA_DEBUG.WRITE(g_module_name,'p_prog_entry_enable_flag'||':'||p_prog_entry_enable_flag,
989                                      l_debug_level3);
990           PA_DEBUG.WRITE(g_module_name,'p_initial_deliverable_status'||':'||p_initial_deliverable_status,
991                                      l_debug_level3);
992           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_class'||':'||p_deliverable_type_class,
993                                      l_debug_level3);
994           PA_DEBUG.WRITE(g_module_name,'p_enable_dlvr_actions_flag'||':'||p_enable_dlvr_actions_flag,
995                                      l_debug_level3);
996           PA_DEBUG.WRITE(g_module_name,'p_effective_from'||':'||p_effective_from,
997                                      l_debug_level3);
998           PA_DEBUG.WRITE(g_module_name,'p_effective_to'||':'||p_effective_to,
999                                      l_debug_level3);
1000           PA_DEBUG.WRITE(g_module_name,'p_description'||':'||p_description,
1001                                      l_debug_level3);
1002           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_id'||':'||p_deliverable_type_id,
1003                                      l_debug_level3);
1004           PA_DEBUG.WRITE(g_module_name,'p_record_version_number'||':'||p_record_version_number,
1005                                      l_debug_level3);
1006      END IF;
1007 
1008      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE))
1009      THEN
1010           FND_MSG_PUB.initialize;
1011      END IF;
1012 
1013      IF (p_commit = FND_API.G_TRUE)
1014      THEN
1015           savepoint CREATE_DELIVERABLE_TYPE_PUB;
1016      END IF;
1017 
1018      IF l_debug_mode = 'Y'
1019      THEN
1020           Pa_Debug.g_err_stage:= 'Validating Input parameters';
1021           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1022                                      l_debug_level3);
1023      END IF;
1024 
1025      --Check whether p_deliverable_type_name or effective start date is null
1026      --If it is null,then raise Invalid parameter exception
1027      IF (p_deliverable_type_name IS NULL) OR (p_effective_from IS NULL)
1028      THEN
1029           RAISE PA_DLV_INV_PARAM_EXC;
1030      END IF;
1031 
1032      --Place a call to PA_TASK_TYPE_PVT.CREATE_DELIVERABLE_TYPE
1033      IF l_debug_mode = 'Y'
1034      THEN
1035           Pa_Debug.g_err_stage:= 'Calling PA_TASK_TYPE_PVT.CREATE_DELIVERABLE_TYPE';
1036           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1037                                      l_debug_level3);
1038      END IF;
1039 
1040       PA_TASK_TYPE_PVT.CREATE_DELIVERABLE_TYPE
1041      (p_api_version                =>   p_api_version
1042      ,p_init_msg_list              =>   FND_API.G_FALSE
1043      ,p_commit                     =>   p_commit
1044      ,p_validate_only              =>   p_validate_only
1045      ,p_validation_level           =>   p_validation_level
1046      ,p_calling_module             =>   p_calling_module
1047      ,p_debug_mode                 =>   l_debug_mode
1048      ,p_max_msg_count              =>   p_max_msg_count
1049      ,p_deliverable_type_name      =>   p_deliverable_type_name
1050      ,p_prog_entry_enable_flag     =>   p_prog_entry_enable_flag
1051      ,p_initial_deliverable_status =>   p_initial_deliverable_status
1052      ,p_deliverable_type_class     =>   p_deliverable_type_class
1053      ,p_enable_dlvr_actions_flag   =>   p_enable_dlvr_actions_flag
1054      ,p_effective_from             =>   p_effective_from
1055      ,p_effective_to               =>   p_effective_to
1056      ,p_description                =>   p_description
1057      ,p_deliverable_type_id        =>   p_deliverable_type_id
1058      ,p_record_version_number      =>   p_record_version_number
1059      ,x_return_status              =>   x_return_status
1060      ,x_msg_count                  =>   x_msg_count
1061      ,x_msg_data                   =>   x_msg_data
1062      );
1063 
1064      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
1065      THEN
1066           RAISE FND_API.G_EXC_ERROR;
1067      END IF;
1068 
1069      IF (p_commit = FND_API.G_TRUE)
1070      THEN
1071           COMMIT;
1072      END IF;
1073 
1074      IF l_debug_mode = 'Y'
1075      THEN
1076           Pa_Debug.g_err_stage:= 'Successful Commit Done(In PATTPUBB.pls Create DlvType)!';
1077           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1078                                      l_debug_level3);
1079      END IF;
1080 
1081 
1082 EXCEPTION
1083 
1084 WHEN FND_API.G_EXC_ERROR THEN
1085 
1086      x_return_status := Fnd_Api.G_RET_STS_ERROR;
1087      l_msg_count := Fnd_Msg_Pub.count_msg;
1088 
1089      IF p_commit = FND_API.G_TRUE
1090      THEN
1091           ROLLBACK TO CREATE_DELIVERABLE_TYPE_PUB;
1092      END IF;
1093 
1094      IF l_msg_count = 1 AND x_msg_data IS NULL
1095      THEN
1096           Pa_Interface_Utils_Pub.get_messages
1097           ( p_encoded        => Fnd_Api.G_TRUE
1098           , p_msg_index      => 1
1099           , p_msg_count      => l_msg_count
1100           , p_msg_data       => l_msg_data
1101           , p_data           => l_data
1102           , p_msg_index_out  => l_msg_index_out);
1103           x_msg_data := l_data;
1104           x_msg_count := l_msg_count;
1105      ELSE
1106           x_msg_count := l_msg_count;
1107      END IF;
1108 
1109      IF l_debug_mode = 'Y'
1110      THEN
1111           Pa_Debug.reset_curr_function;
1112      END IF;
1113 
1114 WHEN PA_DLV_INV_PARAM_EXC THEN
1115 
1116      x_return_status := Fnd_Api.G_RET_STS_ERROR;
1117      x_msg_count     := 1;
1118      x_msg_data      := 'PA_INV_PARAM_PASSED';
1119 
1120      IF p_commit = FND_API.G_TRUE
1121      THEN
1122           ROLLBACK TO CREATE_DELIVERABLE_TYPE_PUB;
1123      END IF;
1124 
1125      Fnd_Msg_Pub.add_exc_msg
1126      ( p_pkg_name        => 'PA_TASK_TYPE_PUB'
1127      , p_procedure_name  => 'CREATE_DELIVERABLE_TYPE'
1128      , p_error_text      => x_msg_data);
1129 
1130      IF l_debug_mode = 'Y'
1131      THEN
1132           Pa_Debug.g_err_stage:= 'Error'||x_msg_data;
1133           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1134                               l_debug_level5);
1135           Pa_Debug.reset_curr_function;
1136      END IF;
1137      RAISE;
1138 
1139 WHEN OTHERS THEN
1140 
1141      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1142      x_msg_count     := 1;
1143      x_msg_data      := SQLERRM;
1144 
1145      IF p_commit = FND_API.G_TRUE
1146      THEN
1147           ROLLBACK TO CREATE_DELIVERABLE_TYPE_PUB;
1148      END IF;
1149 
1150 
1151      Fnd_Msg_Pub.add_exc_msg
1152      ( p_pkg_name        => 'PA_TASK_TYPE_PUB'
1153      , p_procedure_name  => 'CREATE_DELIVERABLE_TYPE'
1154      , p_error_text      => x_msg_data);
1155 
1156      IF l_debug_mode = 'Y'
1157      THEN
1158           Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
1159           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1160                               l_debug_level5);
1161           Pa_Debug.reset_curr_function;
1162      END IF;
1163      RAISE;
1164 END CREATE_DELIVERABLE_TYPE ;
1165 
1166 --Bug # 3279978 FP M  Development
1167 -- Procedure            : UPDATE_DELIVERABLE_TYPE
1168 -- Type                 : Public Procedure
1169 -- Purpose              : This is the public API used to update the deliverable type .
1170 -- Note                 : 1)This API is called by the CR_UP_DELIVERABLE_TYPE Public API
1171 --                        if the value of its parameter p_insert_or_update is "UPDATE"
1172 
1173 --                        2)It performs standard locking for API and
1174 --
1175 --                        3)This API places call to the private API UPDATE_DELIVERABLE_TYPE
1176 --                        where business validations and call to table handler is placed.
1177 -- Assumptions           : None
1178 
1179 -- List of parameters other than standard IN and OUT parameters
1180 -- Parameters                            Type                                      Null?       Default Value     Description and Purpose
1181 -- ---------------------------         --------                                    ------     ---------------   ----------------------------
1182 --P_deliverable_type_name	      PA_TASK_TYPES.TASK_TYPE%TYPE		   N			        Deliverable Type Name
1183 --P_prog_entry_enable_flag            PA_TASK_TYPES.PROG_ENTRY_ENABLE_FLAG%TYPE	   Y		'N'	        Progress Entry Flag
1184 --P_initial_deliverable_status_code   PA_TASK_TYPES.INITIAL_STATUS_CODE%TYPE       Y	        'DLVR_NOT_STARTED'Initial Deliverable Status
1185 --P_enable_deliverable_actions        PA_TASK_TYPES.ENABLE_DLVR_ACTIONS%TYPE       Y		'N'		 Enable Deliverable Action
1186 --P_effective_from		      PA_TASK_TYPES.START_DATE_ACTIVE%TYPE	   N				 Effective from date
1187 --p_effective_to	              PA_TASK_TYPES. END_DATE_ACTIVE %TYPE         Y		NULL		 Effective to date
1188 --P_description			      PA_TASK_TYPES.DESCRIPTION%TYPE		   Y		NULL		 Description
1189 --P_deliverable_type_id		      PA_TASK_TYPES.TASK_TYPE_ID%TPE		   N
1190  --28-Dec-2003      avaithia       Created
1191 PROCEDURE UPDATE_DELIVERABLE_TYPE
1192 (p_api_version                     IN   NUMBER                                      := 1.0
1193 ,p_init_msg_list                   IN   VARCHAR2                                    := FND_API.G_TRUE
1194 ,p_commit                          IN   VARCHAR2                                    := FND_API.G_FALSE
1195 ,p_validate_only                   IN   VARCHAR2                                    := FND_API.G_TRUE
1196 ,p_validation_level                IN   NUMBER                                      := FND_API.G_VALID_LEVEL_FULL
1197 ,p_calling_module                  IN   VARCHAR2                                    := 'SELF_SERVICE'
1198 ,p_debug_mode                      IN   VARCHAR2                                    := 'N'
1199 ,p_max_msg_count                   IN   NUMBER                                      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1200 ,p_deliverable_type_name           IN   PA_TASK_TYPES.TASK_TYPE%TYPE
1201 ,p_prog_entry_enable_flag          IN   PA_TASK_TYPES.PROG_ENTRY_ENABLE_FLAG%TYPE   := 'N'
1202 ,p_initial_deliverable_status      IN   PA_TASK_TYPES.INITIAL_STATUS_CODE%TYPE      := 'DLVR_NOT_STARTED'
1203 ,p_deliverable_type_class          IN   PA_TASK_TYPES.TASK_TYPE_CLASS_CODE%TYPE     := 'ITEM'
1204 ,p_enable_dlvr_actions_flag        IN   PA_TASK_TYPES.ENABLE_DLVR_ACTIONS_FLAG%TYPE := 'N'
1205 ,p_effective_from                  IN   PA_TASK_TYPES.START_DATE_ACTIVE%TYPE
1206 ,p_effective_to                    IN   PA_TASK_TYPES. END_DATE_ACTIVE %TYPE        := NULL
1207 ,p_description                     IN   PA_TASK_TYPES.DESCRIPTION%TYPE              := NULL
1208 ,p_deliverable_type_id             IN   PA_TASK_TYPES.TASK_TYPE_ID%TYPE
1209 ,p_record_version_number           IN   PA_TASK_TYPES.RECORD_VERSION_NUMBER%TYPE
1210 ,x_return_status                   OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1211 ,x_msg_count                       OUT    NOCOPY NUMBER --File.Sql.39 bug 4440895
1212 ,x_msg_data                        OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1213 )
1214 IS
1215 
1216 l_msg_count                        NUMBER := 0;
1217 l_data                             VARCHAR2(2000);
1218 l_msg_data                         VARCHAR2(2000);
1219 l_msg_index_out                    NUMBER;
1220 l_debug_mode                       VARCHAR2(1);
1221 
1222 l_dummy                            VARCHAR2(1);
1223 
1224 l_debug_level2                     CONSTANT NUMBER := 2;
1225 l_debug_level3                     CONSTANT NUMBER := 3;
1226 l_debug_level4                     CONSTANT NUMBER := 4;
1227 l_debug_level5                     CONSTANT NUMBER := 5;
1228 
1229 BEGIN
1230 
1231      x_msg_count := 0;
1232      x_return_status := FND_API.G_RET_STS_SUCCESS;
1233      l_debug_mode  := p_debug_mode;
1234 
1235      IF l_debug_mode = 'Y'
1236      THEN
1237           PA_DEBUG.set_curr_function( p_function   => 'UPDATE_DELIVERABLE_TYPE',
1238                                       p_debug_mode => l_debug_mode );
1239      END IF;
1240 
1241      IF l_debug_mode = 'Y'
1242      THEN
1243           PA_DEBUG.g_err_stage:= 'UPDATE_DELIVERABLE_TYPE : Printing Input parameters';
1244           PA_DEBUG.WRITE(g_module_name,Pa_Debug.g_err_stage,
1245                                      l_debug_level3);
1246 
1247           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_name'||':'||p_deliverable_type_name,
1248                                      l_debug_level3);
1249           PA_DEBUG.WRITE(g_module_name,'p_prog_entry_enable_flag'||':'||p_prog_entry_enable_flag,
1250                                      l_debug_level3);
1251           PA_DEBUG.WRITE(g_module_name,'p_initial_deliverable_status'||':'||p_initial_deliverable_status,
1252                                      l_debug_level3);
1253           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_class'||':'||p_deliverable_type_class,
1254                                      l_debug_level3);
1255           PA_DEBUG.WRITE(g_module_name,'p_enable_dlvr_actions_flag'||':'||p_enable_dlvr_actions_flag,
1256                                      l_debug_level3);
1257           PA_DEBUG.WRITE(g_module_name,'p_effective_from'||':'||p_effective_from,
1258                                      l_debug_level3);
1259           PA_DEBUG.WRITE(g_module_name,'p_effective_to'||':'||p_effective_to,
1260                                      l_debug_level3);
1261           PA_DEBUG.WRITE(g_module_name,'p_description'||':'||p_description,
1262                                      l_debug_level3);
1263           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_id'||':'||p_deliverable_type_id,
1264                                      l_debug_level3);
1265           PA_DEBUG.WRITE(g_module_name,'rec_ver_num is '||p_record_version_number,l_debug_level3);
1266      END IF;
1267 
1268      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE))
1269      THEN
1270           FND_MSG_PUB.initialize;
1271      END IF;
1272 
1273      IF (p_commit = FND_API.G_TRUE)
1274      THEN
1275           savepoint UPDATE_DELIVERABLE_TYPE_PUB;
1276      END IF;
1277 
1278      IF l_debug_mode = 'Y'
1279      THEN
1280           Pa_Debug.g_err_stage:= 'Validating Input parameters';
1281           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1282                                      l_debug_level3);
1283      END IF;
1284 
1285      --Check whether any of  p_deliverable_type_id or p_record_version_number or name or startdate is null
1286      --If it is null,then raise Invalid parameter exception
1287      IF (p_deliverable_type_id IS NULL) OR (p_record_version_number IS NULL)
1288          OR (p_deliverable_type_name IS NULL) OR (p_effective_from IS NULL)
1289      THEN
1290           RAISE PA_DLV_INV_PARAM_EXC;
1291      END IF;
1292 
1293      --Perform the standard Locking
1294 
1295      BEGIN
1296           select 'x' into l_dummy
1297           FROM   PA_TASK_TYPES
1298           WHERE TASK_TYPE_ID = p_deliverable_type_id
1299           AND OBJECT_TYPE = 'PA_DLVR_TYPES'
1300           AND record_version_number = p_record_version_number
1301           for UPDATE of record_version_number NOWAIT;
1302 
1303           EXCEPTION
1304 
1305           WHEN TIMEOUT_ON_RESOURCE THEN
1306                x_return_status := Fnd_Api.G_RET_STS_ERROR;
1307                x_msg_count     := 1;
1308                x_msg_data      :='PA_XC_ROW_ALREADY_LOCKED';
1309 
1310                IF p_commit = FND_API.G_TRUE THEN
1311                     ROLLBACK TO UPDATE_DELIVERABLE_TYPE_PUB;
1312                END IF;
1313 
1314                PA_UTILS.Add_Message ( p_app_short_name => 'PA'
1315                                     ,p_msg_name => 'PA_XC_ROW_ALREADY_LOCKED');
1316 
1317                IF l_debug_mode = 'Y'
1318                THEN
1319                     Pa_Debug.g_err_stage:= ' Error'||x_msg_data;
1320                     Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1321                               l_debug_level5);
1322                     Pa_Debug.reset_curr_function;
1323                END IF;
1324                RAISE;
1325 
1326 
1327           WHEN NO_DATA_FOUND THEN
1328                x_return_status := Fnd_Api.G_RET_STS_ERROR;
1329                x_msg_count     := 1;
1330                x_msg_data      :='PA_XC_RECORD_CHANGED';
1331 
1332                IF p_commit = FND_API.G_TRUE
1333                THEN
1334                     ROLLBACK TO UPDATE_DELIVERABLE_TYPE_PUB;
1335                END IF;
1336 
1337                PA_UTILS.Add_Message ( p_app_short_name => 'PA'
1338                                     ,p_msg_name => 'PA_XC_RECORD_CHANGED');
1339 
1340                IF l_debug_mode = 'Y'
1341                THEN
1342                     Pa_Debug.g_err_stage:= ' Error'||x_msg_data;
1343                     Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1344                               l_debug_level5);
1345                     Pa_Debug.reset_curr_function;
1346                END IF;
1347                RAISE;
1348 
1349           WHEN OTHERS THEN
1350                IF SQLCODE = -54 then
1351                     x_return_status := Fnd_Api.G_RET_STS_ERROR;
1352                     x_msg_count     := 1;
1353                     x_msg_data      :='PA_XC_ROW_ALREADY_LOCKED';
1354 
1355                     IF p_commit = FND_API.G_TRUE
1356                     THEN
1357                          ROLLBACK TO UPDATE_DELIVERABLE_TYPE_PUB;
1358                     END IF;
1359 
1360                     PA_UTILS.Add_Message ( p_app_short_name => 'PA'
1361                                          ,p_msg_name => 'PA_XC_ROW_ALREADY_LOCKED');
1362 
1363                     IF l_debug_mode = 'Y'
1364                     THEN
1365                          Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
1366                          Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1367                                    l_debug_level5);
1368                          Pa_Debug.reset_curr_function;
1369                     END IF;
1370 
1371                ELSE
1372                     RAISE;
1373                END IF;
1374      END;
1375 
1376      --Before placing call to Private API check in case if the message stack is populated;
1377      --If Yes,then set the return status to Error
1378 
1379      l_msg_count := FND_MSG_PUB.count_msg;
1380 
1381      IF l_msg_count > 0
1382      THEN
1383           x_msg_count :=l_msg_count;
1384           x_return_status := FND_API.G_RET_STS_ERROR;
1385      END IF;
1386 
1387      --Before placing call to the API check for the return status
1388      --If it is Error,then raise it.
1389 
1390      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
1391      THEN
1392           RAISE FND_API.G_EXC_ERROR;
1393      END IF;
1394      --Place a call to PA_TASK_TYPE_PVT.UPDATE_DELIVERABLE_TYPE
1395      IF l_debug_mode = 'Y'
1396      THEN
1397           Pa_Debug.g_err_stage:= 'Calling PA_TASK_TYPE_PVT.UPDATE_DELIVERABLE_TYPE';
1398           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1399                                              l_debug_level3);
1400      END IF;
1401 
1402      PA_TASK_TYPE_PVT.UPDATE_DELIVERABLE_TYPE
1403      (p_api_version                =>   p_api_version
1404      ,p_init_msg_list              =>   FND_API.G_FALSE
1405      ,p_commit                     =>   p_commit
1406      ,p_validate_only              =>   p_validate_only
1407      ,p_validation_level           =>   p_validation_level
1408      ,p_calling_module             =>   p_calling_module
1409      ,p_debug_mode                 =>   l_debug_mode
1410      ,p_max_msg_count              =>   p_max_msg_count
1411      ,p_deliverable_type_name      =>   p_deliverable_type_name
1412      ,p_prog_entry_enable_flag     =>   p_prog_entry_enable_flag
1413      ,p_initial_deliverable_status =>   p_initial_deliverable_status
1414      ,p_deliverable_type_class     =>   p_deliverable_type_class
1415      ,p_enable_dlvr_actions_flag   =>   p_enable_dlvr_actions_flag
1416      ,p_effective_from             =>   p_effective_from
1417      ,p_effective_to               =>   p_effective_to
1418      ,p_description                =>   p_description
1419      ,p_deliverable_type_id        =>   p_deliverable_type_id
1420      ,p_record_version_number      =>   p_record_version_number
1421      ,x_return_status              =>   x_return_status
1422      ,x_msg_count                  =>   x_msg_count
1423      ,x_msg_data                   =>   x_msg_data
1424      );
1425      IF l_debug_mode = 'Y'
1426      THEN
1427           Pa_Debug.g_err_stage:= 'After Calling PA_TASK_TYPE_PVT.UPDATE_DELIVERABLE_TYPE';
1428           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1429                                      l_debug_level3);
1430      END IF;
1431 
1432      --After returning from the API check for the return status
1433 
1434      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
1435      THEN
1436           RAISE FND_API.G_EXC_ERROR;
1437      END IF;
1438 
1439      IF (p_commit = FND_API.G_TRUE)
1440      THEN
1441           COMMIT;
1442      END IF;
1443 
1444      IF l_debug_mode = 'Y'
1445      THEN
1446           Pa_Debug.g_err_stage:= 'Successful Commit Done(In PATTPUBB.pls UPDATE DlvType)!';
1447           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1448                                              l_debug_level3);
1449      END IF;
1450 
1451 
1452      EXCEPTION
1453 
1454      WHEN FND_API.G_EXC_ERROR THEN
1455 
1456           x_return_status := Fnd_Api.G_RET_STS_ERROR;
1457           l_msg_count := Fnd_Msg_Pub.count_msg;
1458 
1459           IF p_commit = FND_API.G_TRUE THEN
1460                ROLLBACK TO UPDATE_DELIVERABLE_TYPE_PUB;
1461           END IF;
1462 
1463           IF l_msg_count = 1 AND x_msg_data IS NULL
1464            THEN
1465                Pa_Interface_Utils_Pub.get_messages
1466                ( p_encoded        => Fnd_Api.G_TRUE
1467                , p_msg_index      => 1
1468                , p_msg_count      => l_msg_count
1469                , p_msg_data       => l_msg_data
1470                , p_data           => l_data
1471                , p_msg_index_out  => l_msg_index_out);
1472                x_msg_data := l_data;
1473                x_msg_count := l_msg_count;
1474           ELSE
1475                x_msg_count := l_msg_count;
1476           END IF;
1477           IF l_debug_mode = 'Y' THEN
1478                Pa_Debug.reset_curr_function;
1479           END IF;
1480 
1481      WHEN PA_DLV_INV_PARAM_EXC THEN
1482 
1483           x_return_status := Fnd_Api.G_RET_STS_ERROR;
1484           x_msg_count     := 1;
1485           x_msg_data      := 'PA_INV_PARAM_PASSED';
1486 
1487           IF p_commit = FND_API.G_TRUE
1488           THEN
1489                ROLLBACK TO UPDATE_DELIVERABLE_TYPE_PUB;
1490           END IF;
1491 
1492           Fnd_Msg_Pub.add_exc_msg
1493           ( p_pkg_name        => 'PA_TASK_TYPE_PUB'
1494           , p_procedure_name  => 'UPDATE_DELIVERABLE_TYPE'
1495           , p_error_text      => x_msg_data);
1496 
1497           IF l_debug_mode = 'Y'
1498           THEN
1499                Pa_Debug.g_err_stage:= 'Error'||x_msg_data;
1500                Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1501                                                   l_debug_level5);
1502                Pa_Debug.reset_curr_function;
1503           END IF;
1504           RAISE;
1505 
1506      WHEN OTHERS THEN
1507 
1508           x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1509           x_msg_count     := 1;
1510           x_msg_data      := SQLERRM;
1511 
1512           IF p_commit = FND_API.G_TRUE
1513           THEN
1514                ROLLBACK TO UPDATE_DELIVERABLE_TYPE_PUB;
1515           END IF;
1516 
1517 
1518           Fnd_Msg_Pub.add_exc_msg
1519           ( p_pkg_name        => 'PA_TASK_TYPE_PUB'
1520           , p_procedure_name  => 'UPDATE_DELIVERABLE_TYPE'
1521           , p_error_text      => x_msg_data);
1522 
1523           IF l_debug_mode = 'Y'
1524           THEN
1525                Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
1526                Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1527                                                   l_debug_level5);
1528                Pa_Debug.reset_curr_function;
1529           END IF;
1530           RAISE;
1531 END UPDATE_DELIVERABLE_TYPE ;
1532 
1533 --Bug # 3279978 FP M Development
1534 
1535 -- Procedure            : DELETE_DELIVERABLE_TYPE
1536 -- Type                 : Public Procedure
1537 -- Purpose              : This is the public API used to delete the deliverable type.
1538 -- Note                 : This API places call to the private API DELETE_DELIVERABLE_TYPE
1539 --                        in which business logic validations are done and call to table handler is placed
1540 -- List of parameters other than standard IN and OUT parameters
1541 -- Parameters                            Type                                      Null?        Description and Purpose
1542 -- ---------------------------         -------------------------------            --------  -----------------------------------
1543 --P_deliverable_type_id		        PA_TASK_TYPES.TASK_TYPE_ID%TYPE		     N  	Deliverable Type Id
1544 --p_record_version_number            PA_TASK_TYPES.RECORD_VERSION_NUMBER%TYPE     N          Record Version Number
1545 
1546  --This API is called by SS pages
1547  --28-Dec-2003      avaithia       Created
1548 
1549 PROCEDURE DELETE_DELIVERABLE_TYPE
1550 (p_api_version                     IN   NUMBER                                      := 1.0
1551 ,p_init_msg_list                   IN   VARCHAR2                                    := FND_API.G_TRUE
1552 ,p_commit                          IN   VARCHAR2                                    := FND_API.G_FALSE
1553 ,p_validate_only                   IN   VARCHAR2                                    := FND_API.G_TRUE
1554 ,p_validation_level                IN   NUMBER                                      := FND_API.G_VALID_LEVEL_FULL
1555 ,p_calling_module                  IN   VARCHAR2                                    := 'SELF_SERVICE'
1556 ,p_debug_mode                      IN   VARCHAR2                                    := 'N'
1557 ,p_max_msg_count                   IN   NUMBER                                      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1558 ,p_deliverable_type_id             IN   PA_TASK_TYPES.TASK_TYPE_ID%TYPE
1559 ,p_record_version_number           IN   PA_TASK_TYPES.RECORD_VERSION_NUMBER%TYPE
1560 ,x_return_status                   OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1561 ,x_msg_count                       OUT    NOCOPY NUMBER --File.Sql.39 bug 4440895
1562 ,x_msg_data                        OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1563 )
1564 IS
1565 
1566 l_msg_count                        NUMBER := 0;
1567 l_data                             VARCHAR2(2000);
1568 l_msg_data                         VARCHAR2(2000);
1569 l_msg_index_out                    NUMBER;
1570 l_debug_mode                       VARCHAR2(1);
1571 
1572 l_debug_level2                     CONSTANT NUMBER := 2;
1573 l_debug_level3                     CONSTANT NUMBER := 3;
1574 l_debug_level4                     CONSTANT NUMBER := 4;
1575 l_debug_level5                     CONSTANT NUMBER := 5;
1576 
1577 BEGIN
1578 
1579      x_msg_count := 0;
1580      x_return_status := FND_API.G_RET_STS_SUCCESS;
1581      l_debug_mode  := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
1582 
1583      IF l_debug_mode = 'Y'
1584      THEN
1585           PA_DEBUG.set_curr_function( p_function   => 'DELETE_DELIVERABLE_TYPE',
1586                                       p_debug_mode => l_debug_mode );
1587      END IF;
1588 
1589      IF l_debug_mode = 'Y'
1590      THEN
1591           PA_DEBUG.g_err_stage:= 'DELETE_DELIVERABLE_TYPE : Printing Input parameters';
1592           PA_DEBUG.WRITE(g_module_name,Pa_Debug.g_err_stage,
1593                                              l_debug_level3);
1594           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_id'||':'||p_deliverable_type_id,
1595                                              l_debug_level3);
1596           PA_DEBUG.WRITE(g_module_name,'p_record_version_number'||':'||p_record_version_number,
1597                                              l_debug_level3);
1598      END IF;
1599 
1600      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE))
1601      THEN
1602           FND_MSG_PUB.initialize;
1603      END IF;
1604 
1605      IF (p_commit = FND_API.G_TRUE)
1606      THEN
1607           savepoint DELETE_DELIVERABLE_TYPE_PUB;
1608      END IF;
1609 
1610      IF l_debug_mode = 'Y'
1611      THEN
1612           Pa_Debug.g_err_stage:= 'Validating Input parameters';
1613           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1614                                      l_debug_level3);
1615      END IF;
1616 
1617      --Check whether p_deliverable_type_id  or p_record_version_number is null
1618      --If it is null,then raise Invalid parameter exception
1619      IF (p_deliverable_type_id IS NULL)  OR (p_record_version_number IS NULL)
1620      THEN
1621           RAISE PA_DLV_INV_PARAM_EXC;
1622      END IF;
1623 
1624 	 /* Added for bug 4775641*/
1625      -- Check the deliverable type has been used by any deliverable.
1626      IF PA_DELIVERABLE_UTILS.IS_DLV_TYPE_IN_USE(p_deliverable_type_id) = 'Y' THEN
1627 	  RAISE l_delete_delv_type_error;
1628      END IF;
1629      /* End for bug 4775641*/
1630 
1631      --Place a call to PA_TASK_TYPE_PVT.DELETE_DELIVERABLE_TYPE
1632      IF l_debug_mode = 'Y'
1633      THEN
1634           Pa_Debug.g_err_stage:= 'Calling PA_TASK_TYPE_PVT.DELETE_DELIVERABLE_TYPE';
1635           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1636                                      l_debug_level3);
1637      END IF;
1638      PA_TASK_TYPE_PVT.DELETE_DELIVERABLE_TYPE
1639      (p_api_version                =>   p_api_version
1640      ,p_init_msg_list              =>   FND_API.G_FALSE
1641      ,p_commit                     =>   p_commit
1642      ,p_validate_only              =>   p_validate_only
1643      ,p_validation_level           =>   p_validation_level
1644      ,p_calling_module             =>   p_calling_module
1645      ,p_debug_mode                 =>   l_debug_mode
1646      ,p_max_msg_count              =>   p_max_msg_count
1647      ,p_deliverable_type_id        =>   p_deliverable_type_id
1648      ,p_record_version_number      =>   p_record_version_number
1649      ,x_return_status              =>   x_return_status
1650      ,x_msg_count                  =>   x_msg_count
1651      ,x_msg_data                   =>   x_msg_data
1652      );
1653      IF l_debug_mode = 'Y'
1654      THEN
1655           Pa_Debug.g_err_stage:= 'After coming from PA_TASK_TYPE_PVT.DELETE_DELIVERABLE_TYPE';
1656           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1657                                      l_debug_level3);
1658      END IF;
1659      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
1660      THEN
1661           RAISE FND_API.G_EXC_ERROR;
1662      END IF;
1663 
1664      IF (p_commit = FND_API.G_TRUE)
1665      THEN
1666           COMMIT;
1667      END IF;
1668 
1669      IF l_debug_mode = 'Y'
1670      THEN
1671           Pa_Debug.g_err_stage:= 'Successful Commit Done(In PATTPUBB.pls Deleted the DlvType)!';
1672           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1673                                      l_debug_level3);
1674      END IF;
1675 
1676 
1677 EXCEPTION
1678 
1679 WHEN l_delete_delv_type_error THEN      -- Added for bug 4775641
1680 	PA_UTILS.add_message('PA','PA_DELETE_DELIV_TYPE_ERROR');
1681 	  x_return_status := FND_API.G_RET_STS_ERROR;
1682 	  x_msg_data := 'PA_DELETE_DELIV_TYPE_ERROR';
1683 	  x_msg_count := FND_MSG_PUB.Count_Msg;
1684 	  IF x_msg_count = 1 THEN
1685 			pa_interface_utils_pub.get_messages
1686 				(p_encoded        => FND_API.G_TRUE,
1687 				p_msg_index      => 1,
1688 				p_msg_count      => x_msg_count,
1689 				p_msg_data       => x_msg_data,
1690 				p_data           => x_msg_data,
1691 				p_msg_index_out  => l_msg_index_out );
1692 	  END IF;
1693 
1694 WHEN FND_API.G_EXC_ERROR THEN
1695 
1696      x_return_status := Fnd_Api.G_RET_STS_ERROR;
1697      l_msg_count := Fnd_Msg_Pub.count_msg;
1698 
1699      IF p_commit = FND_API.G_TRUE
1700      THEN
1701           ROLLBACK TO DELETE_DELIVERABLE_TYPE_PUB;
1702      END IF;
1703 
1704      IF l_msg_count = 1 AND x_msg_data IS NULL
1705      THEN
1706           Pa_Interface_Utils_Pub.get_messages
1707           ( p_encoded        => Fnd_Api.G_TRUE
1708           , p_msg_index      => 1
1709           , p_msg_count      => l_msg_count
1710           , p_msg_data       => l_msg_data
1711           , p_data           => l_data
1712           , p_msg_index_out  => l_msg_index_out);
1713           x_msg_data := l_data;
1714           x_msg_count := l_msg_count;
1715      ELSE
1716           x_msg_count := l_msg_count;
1717      END IF;
1718 
1719      IF l_debug_mode = 'Y'
1720      THEN
1721           Pa_Debug.reset_curr_function;
1722      END IF;
1723 
1724 WHEN PA_DLV_INV_PARAM_EXC THEN
1725 
1726      x_return_status := Fnd_Api.G_RET_STS_ERROR;
1727      x_msg_count     := 1;
1728      x_msg_data      := 'PA_INV_PARAM_PASSED';
1729 
1730      IF p_commit = FND_API.G_TRUE
1731      THEN
1732           ROLLBACK TO DELETE_DELIVERABLE_TYPE_PUB;
1733      END IF;
1734 
1735      Fnd_Msg_Pub.add_exc_msg
1736      ( p_pkg_name        => 'PA_TASK_TYPE_PUB'
1737       , p_procedure_name  => 'DELETE_DELIVERABLE_TYPE'
1738       , p_error_text      => x_msg_data);
1739 
1740      IF l_debug_mode = 'Y'
1741      THEN
1742           Pa_Debug.g_err_stage:= 'Error'||x_msg_data;
1743           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1744                               l_debug_level5);
1745           Pa_Debug.reset_curr_function;
1746      END IF;
1747      RAISE;
1748 
1749 WHEN OTHERS THEN
1750 
1751      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1752      x_msg_count     := 1;
1753      x_msg_data      := SQLERRM;
1754 
1755      IF p_commit = FND_API.G_TRUE
1756      THEN
1757           ROLLBACK TO DELETE_DELIVERABLE_TYPE_PUB;
1758      END IF;
1759 
1760 
1761      Fnd_Msg_Pub.add_exc_msg
1762      ( p_pkg_name        => 'PA_TASK_TYPE_PUB'
1763       , p_procedure_name  => 'DELETE_DELIVERABLE_TYPE'
1764       , p_error_text      => x_msg_data);
1765 
1766      IF l_debug_mode = 'Y'
1767      THEN
1768           Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
1769           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1770                               l_debug_level5);
1771           Pa_Debug.reset_curr_function;
1772      END IF;
1773      RAISE;
1774 END DELETE_DELIVERABLE_TYPE ;
1775 
1776 --Bug # 3279978 FP M Development
1777 -- Procedure            : CR_UP_DELIVERABLE_TYPE
1778 -- Type                 : Public Procedure
1779 -- Purpose              : This is the public API that will be called from SS pages.
1780 -- Note                 : Based on the parameter p_insert_or_update mode
1781 --                        it will either call CREATE or UPDATE deliverable API.
1782 -- Assumptions          : None
1783 -- List of parameters other than standard IN and OUT parameters
1784 -- Parameters                        Type                                      Null?       Default Value           Description and Purpose
1785 -- ---------------------------       -------                                 --------    --------------------     ---------------------------
1786 --P_deliverable_type_name           PA_TASK_TYPES.TASK_TYPE%TYPE	           N		                 Deliverable Type Name
1787 --P_prog_entry_enable_flag          PA_TASK_TYPES.PROG_ENTRY_ENABLE_FLAG%TYPE      Y	     'N'		 Progress Entrable Flag
1788 --P_initial_deliverable_status_code PA_TASK_TYPES.INITIAL_STATUS_CODE%TYPE	   Y	     'DLVR_NOT_STARTED'  Initial Deliverable Status
1789 --P_enable_deliverable_actions	    PA_TASK_TYPES.ENABLE_DLVR_ACTIONS%TYPE	   Y	      'N'	         Enable Deliverable Action
1790 --P_effective_from		    PA_TASK_TYPES.START_DATE_ACTIVE%TYPE           N		                 Effective from date
1791 --p_effective_to		    PA_TASK_TYPES. END_DATE_ACTIVE %TYPE           Y	      NULL               Effective to date
1792 --P_description			    PA_TASK_TYPES.DESCRIPTION%TYPE		   Y          NULL               Description
1793 --P_deliverable_type_id		    PA_TASK_TYPES.TASK_TYPE_ID%TPE		   Y	      NULL
1794 --P_insert_or_update                 VARCHAR2                                     N         'INSERT'             Insert/Update
1795 
1796 --28-Dec-2003      avaithia  Created
1797 
1798  PROCEDURE CR_UP_DELIVERABLE_TYPE
1799 (p_api_version                     IN   NUMBER                                      := 1.0
1800 ,p_init_msg_list                   IN   VARCHAR2                                    := FND_API.G_TRUE
1801 ,p_commit                          IN   VARCHAR2                                    := FND_API.G_FALSE
1802 ,p_validate_only                   IN   VARCHAR2                                    := FND_API.G_TRUE
1803 ,p_validation_level                IN   NUMBER                                      := FND_API.G_VALID_LEVEL_FULL
1804 ,p_calling_module                  IN   VARCHAR2                                    := 'SELF_SERVICE'
1805 ,p_debug_mode                      IN   VARCHAR2                                    := 'N'
1806 ,p_max_msg_count                   IN   NUMBER                                      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1807 ,p_deliverable_type_name           IN   PA_TASK_TYPES.TASK_TYPE%TYPE
1808 ,p_prog_entry_enable_flag          IN   PA_TASK_TYPES.PROG_ENTRY_ENABLE_FLAG%TYPE   := 'N'
1809 ,p_initial_deliverable_status      IN   PA_TASK_TYPES.INITIAL_STATUS_CODE%TYPE      := 'DLVR_NOT_STARTED'
1810 ,p_deliverable_type_class          IN   PA_TASK_TYPES.TASK_TYPE_CLASS_CODE%TYPE     := 'ITEM'
1811 ,p_enable_dlvr_actions_flag        IN   PA_TASK_TYPES.ENABLE_DLVR_ACTIONS_FLAG%TYPE := 'N'
1812 ,p_effective_from                  IN   PA_TASK_TYPES.START_DATE_ACTIVE%TYPE
1813 ,p_effective_to                    IN   PA_TASK_TYPES. END_DATE_ACTIVE %TYPE        := NULL
1814 ,p_description                     IN   PA_TASK_TYPES.DESCRIPTION%TYPE              := NULL
1815 ,p_deliverable_type_id             IN   PA_TASK_TYPES.TASK_TYPE_ID%TYPE             := NULL
1816 ,p_insert_or_update                IN   VARCHAR2                                    := 'INSERT'
1817 ,p_record_version_number           IN   PA_TASK_TYPES.RECORD_VERSION_NUMBER%TYPE    := 1
1818 ,x_return_status                   OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1819 ,x_msg_count                       OUT    NOCOPY NUMBER --File.Sql.39 bug 4440895
1820 ,x_msg_data                        OUT    NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1821 )
1822 IS
1823 
1824 l_msg_count                        NUMBER := 0;
1825 l_data                             VARCHAR2(2000);
1826 l_msg_data                         VARCHAR2(2000);
1827 l_msg_index_out                    NUMBER;
1828 l_debug_mode                       VARCHAR2(1);
1829 
1830 l_debug_level2                     CONSTANT NUMBER := 2;
1831 l_debug_level3                     CONSTANT NUMBER := 3;
1832 l_debug_level4                     CONSTANT NUMBER := 4;
1833 l_debug_level5                     CONSTANT NUMBER := 5;
1834 
1835 BEGIN
1836 
1837      x_msg_count := 0;
1838      x_return_status := FND_API.G_RET_STS_SUCCESS;
1839      l_debug_mode  := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
1840 
1841      IF l_debug_mode = 'Y' THEN
1842           PA_DEBUG.set_curr_function( p_function   => 'CR_UP_DELIVERABLE_TYPE',
1843                                       p_debug_mode => l_debug_mode );
1844      END IF;
1845 
1846      IF (p_commit = FND_API.G_TRUE)
1847      THEN
1848           savepoint CR_UP_DELIVERABLE_TYPE;
1849      END IF;
1850 
1851      IF l_debug_mode = 'Y'
1852      THEN
1853           PA_DEBUG.g_err_stage:= 'CR_UP_DELIVERABLE_TYPE : Printing Input parameters';
1854           PA_DEBUG.WRITE(g_module_name,Pa_Debug.g_err_stage,
1855                                      l_debug_level3);
1856 
1857           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_name'||':'||p_deliverable_type_name,
1858                                      l_debug_level3);
1859           PA_DEBUG.WRITE(g_module_name,'p_prog_entry_enable_flag'||':'||p_prog_entry_enable_flag,
1860                                      l_debug_level3);
1861           PA_DEBUG.WRITE(g_module_name,'p_initial_deliverable_status'||':'||p_initial_deliverable_status,
1862                                      l_debug_level3);
1863           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_class'||':'||p_deliverable_type_class,
1864                                      l_debug_level3);
1865           PA_DEBUG.WRITE(g_module_name,'p_enable_dlvr_actions_flag'||':'||p_enable_dlvr_actions_flag,
1866                                      l_debug_level3);
1867           PA_DEBUG.WRITE(g_module_name,'p_effective_from'||':'||p_effective_from,
1868                                      l_debug_level3);
1869           PA_DEBUG.WRITE(g_module_name,'p_effective_to'||':'||p_effective_to,
1870                                      l_debug_level3);
1871           PA_DEBUG.WRITE(g_module_name,'p_description'||':'||p_description,
1872                                      l_debug_level3);
1873           PA_DEBUG.WRITE(g_module_name,'p_deliverable_type_id'||':'||p_deliverable_type_id,
1874                                      l_debug_level3);
1875           PA_DEBUG.WRITE(g_module_name,'p_insert_or_update'||':'||p_insert_or_update,
1876                                      l_debug_level3);
1877           PA_DEBUG.WRITE(g_module_name,'p_record_version_number'||':'||p_record_version_number,
1878                                      l_debug_level3);
1879 
1880      END IF;
1881 
1882      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE))
1883      THEN
1884           FND_MSG_PUB.initialize;
1885      END IF;
1886 
1887      IF (p_commit = FND_API.G_TRUE)
1888      THEN
1889           savepoint CR_UP_DELIVERABLE_TYPE;
1890      END IF;
1891 
1892      IF l_debug_mode = 'Y'
1893      THEN
1894           Pa_Debug.g_err_stage:= 'Validating Input parameters';
1895           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1896                                         l_debug_level3);
1897      END IF;
1898 
1899      --Check whether the Deliverable Type Name /Start date IS NULL
1900      --If Yes,then throw Invalid Param Error
1901 
1902      IF (p_deliverable_type_name IS NULL) OR (p_effective_from IS NULL)
1903      THEN
1904           RAISE PA_DLV_INV_PARAM_EXC;
1905      END IF;
1906 
1907      IF l_debug_mode = 'Y'
1908      THEN
1909           Pa_Debug.g_err_stage:= 'Calling insert/update';
1910           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
1911                                         l_debug_level3);
1912      END IF;
1913 
1914      IF (p_insert_or_update = 'INSERT')
1915      THEN
1916           PA_TASK_TYPE_PUB.CREATE_DELIVERABLE_TYPE
1917           (p_api_version                =>   p_api_version
1918           ,p_init_msg_list              =>   FND_API.G_FALSE
1919           ,p_commit                     =>   p_commit
1920           ,p_validate_only              =>   p_validate_only
1921           ,p_validation_level           =>   p_validation_level
1922           ,p_calling_module             =>   p_calling_module
1923           ,p_debug_mode                 =>   l_debug_mode
1924           ,p_max_msg_count              =>   p_max_msg_count
1925           ,p_deliverable_type_name      =>   p_deliverable_type_name
1926           ,p_prog_entry_enable_flag     =>   p_prog_entry_enable_flag
1927           ,p_initial_deliverable_status =>   p_initial_deliverable_status
1928           ,p_deliverable_type_class     =>   p_deliverable_type_class
1929           ,p_enable_dlvr_actions_flag   =>   p_enable_dlvr_actions_flag
1930           ,p_effective_from             =>   p_effective_from
1931           ,p_effective_to               =>   p_effective_to
1932           ,p_description                =>   p_description
1933           ,p_deliverable_type_id        =>   p_deliverable_type_id
1934           ,p_record_version_number      =>   p_record_version_number
1935           ,x_return_status              =>   x_return_status
1936           ,x_msg_count                  =>   x_msg_count
1937           ,x_msg_data                   =>   x_msg_data
1938           );
1939      ELSE
1940           PA_TASK_TYPE_PUB.UPDATE_DELIVERABLE_TYPE
1941           (p_api_version                =>   p_api_version
1942           ,p_init_msg_list              =>   FND_API.G_FALSE
1943           ,p_commit                     =>   p_commit
1944           ,p_validate_only              =>   p_validate_only
1945           ,p_validation_level           =>   p_validation_level
1946           ,p_calling_module             =>   p_calling_module
1947           ,p_debug_mode                 =>   l_debug_mode
1948           ,p_max_msg_count              =>   p_max_msg_count
1949           ,p_deliverable_type_name      =>   p_deliverable_type_name
1950           ,p_prog_entry_enable_flag     =>   p_prog_entry_enable_flag
1951           ,p_initial_deliverable_status =>   p_initial_deliverable_status
1952           ,p_deliverable_type_class     =>   p_deliverable_type_class
1953           ,p_enable_dlvr_actions_flag   =>   p_enable_dlvr_actions_flag
1954           ,p_effective_from             =>   p_effective_from
1955           ,p_effective_to               =>   p_effective_to
1956           ,p_description                =>   p_description
1957           ,p_deliverable_type_id        =>   p_deliverable_type_id
1958           ,p_record_version_number      =>   p_record_version_number
1959           ,x_return_status              =>   x_return_status
1960           ,x_msg_count                  =>   x_msg_count
1961           ,x_msg_data                   =>   x_msg_data
1962           );
1963      END IF;
1964 
1965      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
1966      THEN
1967           RAISE FND_API.G_EXC_ERROR;
1968      END IF;
1969 
1970 EXCEPTION
1971 WHEN FND_API.G_EXC_ERROR THEN
1972 
1973      x_return_status := Fnd_Api.G_RET_STS_ERROR;
1974      l_msg_count := Fnd_Msg_Pub.count_msg;
1975 
1976      IF p_commit = FND_API.G_TRUE
1977      THEN
1978         ROLLBACK TO CR_UP_DELIVERABLE_TYPE;
1979      END IF;
1980 
1981      IF l_msg_count = 1 AND x_msg_data IS NULL
1982      THEN
1983           Pa_Interface_Utils_Pub.get_messages
1984           ( p_encoded        => Fnd_Api.G_TRUE
1985           , p_msg_index      => 1
1986           , p_msg_count      => l_msg_count
1987           , p_msg_data       => l_msg_data
1988           , p_data           => l_data
1989           , p_msg_index_out  => l_msg_index_out);
1990           x_msg_data := l_data;
1991           x_msg_count := l_msg_count;
1992      ELSE
1993           x_msg_count := l_msg_count;
1994      END IF;
1995 
1996      IF l_debug_mode = 'Y'
1997      THEN
1998           Pa_Debug.reset_curr_function;
1999      END IF;
2000 
2001 WHEN PA_DLV_INV_PARAM_EXC THEN
2002 
2003      x_return_status := Fnd_Api.G_RET_STS_ERROR;
2004      x_msg_count     := 1;
2005      x_msg_data      := 'PA_INV_PARAM_PASSED';
2006 
2007      IF p_commit = FND_API.G_TRUE
2008      THEN
2009           ROLLBACK TO CR_UP_DELIVERABLE_TYPE;
2010      END IF;
2011 
2012      Fnd_Msg_Pub.add_exc_msg
2013      ( p_pkg_name        => 'PA_TASK_TYPE_PUB'
2014       , p_procedure_name  => 'CR_UP_DELIVERABLE_TYPE'
2015       , p_error_text      => x_msg_data);
2016 
2017      IF l_debug_mode = 'Y'
2018      THEN
2019           Pa_Debug.g_err_stage:= 'Error'||x_msg_data;
2020           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
2021                               l_debug_level5);
2022           Pa_Debug.reset_curr_function;
2023      END IF;
2024      RAISE;
2025 
2026 WHEN OTHERS THEN
2027 
2028      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
2029      x_msg_count     := 1;
2030      x_msg_data      := SQLERRM;
2031 
2032      IF p_commit = FND_API.G_TRUE
2033      THEN
2034           ROLLBACK TO CR_UP_DELIVERABLE_TYPE;
2035      END IF;
2036 
2037 
2038      Fnd_Msg_Pub.add_exc_msg
2039      ( p_pkg_name        => 'PA_TASK_TYPE_PUB'
2040      , p_procedure_name  => 'CR_UP_DELIVERABLE_TYPE'
2041      , p_error_text      => x_msg_data);
2042 
2043      IF l_debug_mode = 'Y'
2044      THEN
2045           Pa_Debug.g_err_stage:= 'Unexpected Error'||x_msg_data;
2046           Pa_Debug.WRITE(g_module_name,Pa_Debug.g_err_stage,
2047                                         l_debug_level5);
2048           Pa_Debug.reset_curr_function;
2049      END IF;
2050      RAISE;
2051 END CR_UP_DELIVERABLE_TYPE ;
2052 
2053 END PA_TASK_TYPE_PUB;