DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_TASK_TEMPLATES_PUB

Source


1 PACKAGE BODY jtf_task_templates_pub AS
2 /* $Header: jtfptkmb.pls 120.1 2005/07/02 00:59:31 appldev ship $ */
3     g_pkg_name    CONSTANT VARCHAR2(30) := 'JTF_TASK_TEMPLATES_PUB';
4 
5      PROCEDURE create_task (
6       p_api_version               IN       NUMBER,
7       p_init_msg_list             IN       VARCHAR2 DEFAULT fnd_api.g_false,
8       p_commit                    IN       VARCHAR2 DEFAULT fnd_api.g_false,
9       p_task_id                   IN       NUMBER DEFAULT NULL,
10       p_task_group_id             IN       NUMBER DEFAULT NULL,
11       p_task_group_name           IN       VARCHAR2 DEFAULT NULL,
12       p_task_name                 IN       VARCHAR2,
13       p_task_type_name            IN       VARCHAR2 DEFAULT NULL,
14       p_task_type_id              IN       NUMBER DEFAULT NULL,
15       p_description               IN       VARCHAR2 DEFAULT NULL,
16       p_task_status_name          IN       VARCHAR2 DEFAULT NULL,
17       p_task_status_id            IN       NUMBER DEFAULT NULL,
18       p_task_priority_name        IN       VARCHAR2 DEFAULT NULL,
19       p_task_priority_id          IN       NUMBER DEFAULT NULL,
20       p_duration                  IN       NUMBER DEFAULT NULL,
21       p_duration_uom              IN       VARCHAR2 DEFAULT NULL,
22       p_planned_effort            IN       NUMBER DEFAULT NULL,
23       p_planned_effort_uom        IN       VARCHAR2 DEFAULT NULL,
24       p_private_flag              IN       VARCHAR2 DEFAULT NULL,
25       p_publish_flag              IN       VARCHAR2 DEFAULT NULL,
26       p_restrict_closure_flag     IN       VARCHAR2 DEFAULT NULL,
27       p_multi_booked_flag         IN       VARCHAR2 DEFAULT NULL,
28       p_milestone_flag            IN       VARCHAR2 DEFAULT NULL,
29       p_holiday_flag              IN       VARCHAR2 DEFAULT NULL,
30       p_billable_flag             IN       VARCHAR2 DEFAULT NULL,
31       p_notification_flag         IN       VARCHAR2 DEFAULT NULL,
32       p_notification_period       IN       NUMBER DEFAULT NULL,
33       p_notification_period_uom   IN       VARCHAR2 DEFAULT NULL,
34       p_alarm_start               IN       NUMBER DEFAULT NULL,
35       p_alarm_start_uom           IN       VARCHAR2 DEFAULT NULL,
36       p_alarm_on                  IN       VARCHAR2 DEFAULT NULL,
37       p_alarm_count               IN       NUMBER DEFAULT NULL,
38       p_alarm_interval            IN       NUMBER DEFAULT NULL,
39       p_alarm_interval_uom        IN       VARCHAR2 DEFAULT NULL,
40       p_task_depends_tbl          IN       task_depends_tbl
41             DEFAULT g_miss_task_depends_tbl,
42       p_task_rsrc_req_tbl         IN       task_rsrc_req_tbl
43             DEFAULT g_miss_task_rsrc_req_tbl,
44       p_task_recur_rec            IN       task_recur_rec
45             DEFAULT g_miss_task_recur_rec,
46       x_return_status             OUT NOCOPY      VARCHAR2,
47       x_msg_count                 OUT NOCOPY      NUMBER,
48       x_msg_data                  OUT NOCOPY      VARCHAR2,
49       x_task_id                   OUT NOCOPY      NUMBER,
50         p_attribute1              IN       VARCHAR2 DEFAULT null ,
51         p_attribute2              IN       VARCHAR2 DEFAULT null ,
52         p_attribute3              IN       VARCHAR2 DEFAULT null ,
53         p_attribute4              IN       VARCHAR2 DEFAULT null ,
54         p_attribute5              IN       VARCHAR2 DEFAULT null ,
55         p_attribute6              IN       VARCHAR2 DEFAULT null ,
56         p_attribute7              IN       VARCHAR2 DEFAULT null ,
57         p_attribute8              IN       VARCHAR2 DEFAULT null ,
58         p_attribute9              IN       VARCHAR2 DEFAULT null ,
59         p_attribute10             IN       VARCHAR2 DEFAULT null ,
60         p_attribute11             IN       VARCHAR2 DEFAULT null ,
61         p_attribute12             IN       VARCHAR2 DEFAULT null ,
62         p_attribute13             IN       VARCHAR2 DEFAULT null ,
63         p_attribute14             IN       VARCHAR2 DEFAULT null ,
64         p_attribute15             IN       VARCHAR2 DEFAULT null ,
65         p_attribute_category      IN       VARCHAR2 DEFAULT null
66    )
67    IS
68       l_api_version   CONSTANT NUMBER                              := 1.0;
69       l_api_name      CONSTANT VARCHAR2(30)
70                := 'CREATE_TASK_TEMPLATES';
71 
72 
73    BEGIN
74       SAVEPOINT create_task_pub1;
75       x_return_status := fnd_api.g_ret_sts_success;
76 
77       IF NOT fnd_api.compatible_api_call (
78                 l_api_version,
79                 p_api_version,
80                 l_api_name,
81                 g_pkg_name
82              )
83       THEN
84          RAISE fnd_api.g_exc_unexpected_error;
85       END IF;
86 
87       IF fnd_api.to_boolean (p_init_msg_list)
88       THEN
89          fnd_msg_pub.initialize;
90       END IF;
91 
92       jtf_task_templates_pvt.create_task
93       (
94       p_api_version          => p_api_version,
95       p_init_msg_list        => p_init_msg_list,
96       p_commit               => p_commit,
97       p_task_id              => p_task_id,
98       p_task_name            => p_task_name,
99       p_task_group_id        => p_task_group_id,
100       p_task_type_id         => p_task_type_id,
101       p_description          => p_description,
102       p_task_status_id       => p_task_status_id,
103       p_task_priority_id	 => p_task_priority_id,
104       p_duration	    => p_duration,
105 	  p_duration_uom 	=> p_duration_uom,
106       p_planned_effort	=> p_planned_effort,
107 	  p_planned_effort_uom	    => p_planned_effort_uom,
108       p_private_flag 	=> p_private_flag,
109 	  p_publish_flag 	=> p_publish_flag,
110       p_restrict_closure_flag    => p_restrict_closure_flag,
111 	  p_multi_booked_flag	    => p_multi_booked_flag,
112       p_milestone_flag	=> p_milestone_flag,
113 	  p_holiday_flag 	=> p_holiday_flag,
114 	  p_billable_flag	=> p_billable_flag,
115       p_notification_flag	    => p_notification_flag,
116 	  p_notification_period	    => p_notification_period,
117 	  p_notification_period_uom  => p_notification_period_uom,
118       p_alarm_start		=> p_alarm_start,
119 	  p_alarm_start_uom	=> p_alarm_start_uom,
120 	  p_alarm_on	    => p_alarm_on,
121 	  p_alarm_count		=> p_alarm_count,
122       p_alarm_interval	=> p_alarm_interval,
123 	  p_alarm_interval_uom	    => p_alarm_interval_uom,
124       x_return_status	=> x_return_status,
125 	  x_msg_count		=> x_msg_count,
126 	  x_msg_data	    => x_msg_data,
127 	  x_task_id	        => x_task_id,
128       p_attribute1		=> p_attribute1,
129 	  p_attribute2		=> p_attribute2,
130 	  p_attribute3		=> p_attribute3,
131 	  p_attribute4		=> p_attribute4,
132 	  p_attribute5		=> p_attribute5,
133 	  p_attribute6		=> p_attribute6,
134 	  p_attribute7		=> p_attribute7,
135 	  p_attribute8		=> p_attribute8,
136 	  p_attribute9		=> p_attribute9,
137 	  p_attribute10		=> p_attribute10,
138 	  p_attribute11		=> p_attribute11,
139 	  p_attribute12		=> p_attribute12,
140 	  p_attribute13		=> p_attribute13,
141 	  p_attribute14		=> p_attribute14,
142 	  p_attribute15		=> p_attribute15,
143       p_attribute_category	=> p_attribute_category,
144       p_task_confirmation_status => 'N'
145 
146    );
147 
148      IF NOT (x_return_status = fnd_api.g_ret_sts_success)
149      THEN
150        x_return_status := fnd_api.g_ret_sts_unexp_error;
151      RAISE fnd_api.g_exc_unexpected_error;
152      END IF;
153 
154       IF fnd_api.to_boolean (p_commit)
155       THEN
156       COMMIT WORK;
157       END IF;
158 
159       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
160    EXCEPTION
161       WHEN fnd_api.g_exc_unexpected_error
162       THEN
163          ROLLBACK TO create_task_pub1;
164          x_return_status := fnd_api.g_ret_sts_unexp_error;
165          fnd_msg_pub.count_and_get (
166             p_count => x_msg_count,
167             p_data => x_msg_data
168          );
169       WHEN OTHERS
170       THEN
171          ROLLBACK TO create_task_pub1;
172          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
173          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
174          x_return_status := fnd_api.g_ret_sts_unexp_error;
175          fnd_msg_pub.count_and_get (
176             p_count => x_msg_count,
177             p_data => x_msg_data
178          );
179    END;
180 
181     -- Overloading for Simplex
182     PROCEDURE create_task (
183         p_api_version             IN       NUMBER,
184         p_init_msg_list           IN       VARCHAR2 DEFAULT fnd_api.g_false,
185         p_commit                  IN       VARCHAR2 DEFAULT fnd_api.g_false,
186         p_task_id                 IN       NUMBER DEFAULT NULL,
187         p_task_group_id           IN       NUMBER default null,
188         p_task_group_name         IN       VARCHAR2 DEFAULT NULL,
189         p_task_name               IN       VARCHAR2,
190         p_task_type_name          IN       VARCHAR2 DEFAULT NULL,
191         p_task_type_id            IN       NUMBER DEFAULT NULL,
192         p_description             IN       VARCHAR2 DEFAULT NULL,
193         p_task_status_name        IN       VARCHAR2 DEFAULT NULL,
194         p_task_status_id          IN       NUMBER DEFAULT NULL,
195         p_task_priority_name      IN       VARCHAR2 DEFAULT NULL,
196         p_task_priority_id        IN       NUMBER DEFAULT NULL,
197         p_duration                IN       NUMBER DEFAULT NULL,
198         p_duration_uom            IN       VARCHAR2 DEFAULT NULL,
199         p_planned_effort          IN       NUMBER DEFAULT NULL,
200         p_planned_effort_uom      IN       VARCHAR2 DEFAULT NULL,
201         p_private_flag            IN       VARCHAR2 DEFAULT NULL,
202         p_publish_flag            IN       VARCHAR2 DEFAULT NULL,
203         p_restrict_closure_flag   IN       VARCHAR2 DEFAULT NULL,
204         p_multi_booked_flag       IN       VARCHAR2 DEFAULT NULL,
205         p_milestone_flag          IN       VARCHAR2 DEFAULT NULL,
206         p_holiday_flag            IN       VARCHAR2 DEFAULT NULL,
207         p_billable_flag           IN       VARCHAR2 DEFAULT NULL,
208         p_notification_flag       IN       VARCHAR2 DEFAULT NULL,
209         p_notification_period     IN       NUMBER DEFAULT NULL,
210         p_notification_period_uom IN       VARCHAR2 DEFAULT NULL,
211         p_alarm_start             IN       NUMBER DEFAULT NULL,
212         p_alarm_start_uom         IN       VARCHAR2 DEFAULT NULL,
213         p_alarm_on                IN       VARCHAR2 DEFAULT NULL,
214         p_alarm_count             IN       NUMBER DEFAULT NULL,
215         p_alarm_interval          IN       NUMBER DEFAULT NULL,
216         p_alarm_interval_uom      IN       VARCHAR2 DEFAULT NULL,
217         p_task_depends_tbl        IN       task_depends_tbl DEFAULT g_miss_task_depends_tbl,
218         p_task_rsrc_req_tbl       IN       task_rsrc_req_tbl DEFAULT g_miss_task_rsrc_req_tbl,
219         p_task_recur_rec          IN       task_recur_rec DEFAULT g_miss_task_recur_rec,
220         x_return_status           OUT NOCOPY      VARCHAR2,
221         x_msg_count               OUT NOCOPY      NUMBER,
222         x_msg_data                OUT NOCOPY      VARCHAR2,
223         x_task_id                 OUT NOCOPY      NUMBER,
224         p_attribute1              IN       VARCHAR2 DEFAULT null ,
225         p_attribute2              IN       VARCHAR2 DEFAULT null ,
226         p_attribute3              IN       VARCHAR2 DEFAULT null ,
227         p_attribute4              IN       VARCHAR2 DEFAULT null ,
228         p_attribute5              IN       VARCHAR2 DEFAULT null ,
229         p_attribute6              IN       VARCHAR2 DEFAULT null ,
230         p_attribute7              IN       VARCHAR2 DEFAULT null ,
231         p_attribute8              IN       VARCHAR2 DEFAULT null ,
232         p_attribute9              IN       VARCHAR2 DEFAULT null ,
233         p_attribute10             IN       VARCHAR2 DEFAULT null ,
234         p_attribute11             IN       VARCHAR2 DEFAULT null ,
235         p_attribute12             IN       VARCHAR2 DEFAULT null ,
236         p_attribute13             IN       VARCHAR2 DEFAULT null ,
237         p_attribute14             IN       VARCHAR2 DEFAULT null ,
238         p_attribute15             IN       VARCHAR2 DEFAULT null ,
239         p_attribute_category      IN       VARCHAR2 DEFAULT null ,
240         p_task_confirmation_status IN      VARCHAR2
241     )
242     IS
243         l_api_version    CONSTANT NUMBER                                       := 1.0;
244         l_api_name       CONSTANT VARCHAR2(30)                                 := 'CREATE_TASK_TEMPLATES';
245         l_task_id                 jtf_tasks_b.task_id%TYPE;
246         l_task_number             jtf_tasks_b.task_number%TYPE;
247         l_task_name               jtf_tasks_tl.task_name%TYPE                  := p_task_name;
248         l_task_type_id            jtf_tasks_b.task_type_id%TYPE                := p_task_type_id;
249         l_task_priority_id        jtf_tasks_b.task_priority_id%TYPE            := p_task_priority_id;
250         l_task_status_id          jtf_tasks_b.task_status_id%TYPE              := p_task_status_id;
251         l_dependency_id           jtf_task_depends.dependency_id%TYPE;
252         l_recurrence_rule_id      jtf_task_recur_rules.recurrence_rule_id%TYPE;
253         l_task_rec                jtf_task_recurrences_pub.task_details_rec;
254         l_task_group_id           jtf_task_templates_b.task_group_id%TYPE;
255         l_description             jtf_task_templates_tl.description%TYPE       := p_description;
256         l_reccurence_generated    NUMBER;
257         l_type                    VARCHAR2(10);
258         current_record            INTEGER;
259         x                         CHAR;
260         l_task_confirmation_status jtf_task_templates_b.task_confirmation_status%TYPE;
261 
262         CURSOR c_task_templates
263         IS
264             SELECT 1
265               FROM jtf_task_templates_b
266              WHERE task_template_id = x_task_id;
267     BEGIN
268         SAVEPOINT create_task_pub;
269         x_return_status := fnd_api.g_ret_sts_success;
270 
271 
272         IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
273         THEN
274             RAISE fnd_api.g_exc_unexpected_error;
275         END IF;
276 
277         IF fnd_api.to_boolean (p_init_msg_list)
278         THEN
279             fnd_msg_pub.initialize;
280         END IF;
281 
282         -------
283         -------   Validate Task Type
284         -------
285         jtf_task_utl.validate_task_type (
286             p_task_type_id => p_task_type_id,
287             p_task_type_name => p_task_type_name,
288             x_return_status => x_return_status,
289             x_task_type_id => l_task_type_id
290         );
291 
292         IF l_task_type_id IS NULL
293         THEN
294             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TYPE');
295             fnd_msg_pub.add;
296             RAISE fnd_api.g_exc_unexpected_error;
297         END IF;
298 
299         -------
300         -------   Validate Task Status
301         -------
302         if l_task_type_id = '22' then
303            l_type := 'ESCALATION';
304         else
305            l_type := 'TASK';
306         end if;
307 
308         jtf_task_utl.validate_task_status (
309             p_task_status_id => p_task_status_id,
310             p_task_status_name => p_task_status_name,
311             p_validation_type => l_type,
312             x_return_status => x_return_status,
313             x_task_status_id => l_task_status_id
314         );
315 
316         IF l_task_status_id IS NULL
317         THEN
318             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_STATUS');
319             fnd_msg_pub.add;
320             RAISE fnd_api.g_exc_unexpected_error;
321         END IF;
322 
323 
324         -------
325         -------   Validate Task Priority
326         -------
327         jtf_task_utl.validate_task_priority (
328             p_task_priority_id => p_task_priority_id,
329             p_task_priority_name => p_task_priority_name,
330             x_return_status => x_return_status,
331             x_task_priority_id => l_task_priority_id
332         );
333 
334 
335         -------
336         -------   Validate Duration
337         -------
338         jtf_task_utl.validate_effort (
339             p_tag => 'Duration',
340             p_tag_uom => 'Duration UOM',
341             x_return_status => x_return_status,
342             p_effort => p_duration,
343             p_effort_uom => p_duration_uom
344         );
345 
346         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
347         THEN
348             x_return_status := fnd_api.g_ret_sts_unexp_error;
349             RAISE fnd_api.g_exc_unexpected_error;
350         END IF;
351 
352         -------
353         -------   Validate Planned Effort
354         -------
355         jtf_task_utl.validate_effort (
356         p_tag => 'Planned Effort',
357         p_tag_uom => 'Planned Effort Unit of Measure',
358         x_return_status => x_return_status,
359         p_effort => p_planned_effort,
360         p_effort_uom => p_planned_effort_uom);
361 
362         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
363         THEN
364             x_return_status := fnd_api.g_ret_sts_unexp_error;
365             RAISE fnd_api.g_exc_unexpected_error;
366         END IF;
367 
368         -------
369         -------   Call the private flag
370         -------
371         jtf_task_utl.validate_flag (x_return_status => x_return_status, p_flag_name => 'Private Flag', p_flag_value => p_private_flag);
372 
373         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
374         THEN
375             x_return_status := fnd_api.g_ret_sts_unexp_error;
376             RAISE fnd_api.g_exc_unexpected_error;
377         END IF;
378 
379 
380 
381         -------
382         -------   Call the publish flag
383         -------
384         jtf_task_utl.validate_flag (x_return_status => x_return_status, p_flag_name => 'Publish Flag', p_flag_value => p_publish_flag);
385 
386         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
387         THEN
388             x_return_status := fnd_api.g_ret_sts_unexp_error;
389             RAISE fnd_api.g_exc_unexpected_error;
390         END IF;
391 
392         -------
393         -------   Call the Restrict closure  flag
394         -------
395         jtf_task_utl.validate_flag (
396             p_api_name => l_api_name,
397             p_init_msg_list => fnd_api.g_false,
398             x_return_status => x_return_status,
399             p_flag_name => 'Restrict Closure Flag',
400             p_flag_value => p_restrict_closure_flag
401         );
402 
403         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
404         THEN
405             x_return_status := fnd_api.g_ret_sts_unexp_error;
406             RAISE fnd_api.g_exc_unexpected_error;
407         END IF;
408 
409         -------
410         -------   Call the Multi Booked flag
411         -------
412         jtf_task_utl.validate_flag (
413             p_api_name => l_api_name,
414             p_init_msg_list => fnd_api.g_false,
415             x_return_status => x_return_status,
416             p_flag_name => 'Multi Booked Flag',
417             p_flag_value => p_multi_booked_flag
418         );
419 
420         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
421         THEN
422             x_return_status := fnd_api.g_ret_sts_unexp_error;
423             RAISE fnd_api.g_exc_unexpected_error;
424         END IF;
425 
426         -------
427         -------   Call the milestone flag
428         -------
429         jtf_task_utl.validate_flag (
430             p_api_name => l_api_name,
431             p_init_msg_list => fnd_api.g_false,
432             x_return_status => x_return_status,
433             p_flag_name => 'Milestone Flag',
434             p_flag_value => p_milestone_flag
435         );
436 
437         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
438         THEN
439             x_return_status := fnd_api.g_ret_sts_unexp_error;
440             RAISE fnd_api.g_exc_unexpected_error;
441         END IF;
442 
443         -------
444         -------   Call the Holiday Flag
445         -------
446         jtf_task_utl.validate_flag (
447             p_api_name => l_api_name,
448             p_init_msg_list => fnd_api.g_false,
449             x_return_status => x_return_status,
450             p_flag_name => 'Holiday Flag',
451             p_flag_value => p_holiday_flag
452         );
453 
454         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
455         THEN
456             x_return_status := fnd_api.g_ret_sts_unexp_error;
457             RAISE fnd_api.g_exc_unexpected_error;
458         END IF;
459 
460         -------
461         -------   Call the Billable Flag
462         -------
463         jtf_task_utl.validate_flag (x_return_status => x_return_status, p_flag_name => 'Billable Flag', p_flag_value => p_billable_flag);
464 
465         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
466         THEN
467             x_return_status := fnd_api.g_ret_sts_unexp_error;
468             RAISE fnd_api.g_exc_unexpected_error;
469         END IF;
470 
471         -------
472         -------   Call the Validate Notification Parameters
473         -------
474         jtf_task_utl.validate_notification (
475             p_notification_flag => p_notification_flag,
476             p_notification_period => p_notification_period,
477             p_notification_period_uom => p_notification_period_uom,
478             x_return_status => x_return_status
479         );
480 
481         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
482         THEN
483             x_return_status := fnd_api.g_ret_sts_unexp_error;
484             RAISE fnd_api.g_exc_unexpected_error;
485         END IF;
486 
487 
488         -------
489         -------   Call the Validate Task Template Group
490         -------
491         jtf_task_utl.validate_task_template_group (
492                     p_task_template_group_id => p_task_group_id ,
493                     p_task_template_group_name => p_task_group_name,
494                     x_return_status => x_return_status ,
495                     x_task_template_group_id => l_task_group_id );
496 
497         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
498         THEN
499             x_return_status := fnd_api.g_ret_sts_unexp_error;
500             RAISE fnd_api.g_exc_unexpected_error;
501         END IF;
502 
503         if l_task_group_id is null then
504             fnd_message.set_name('JTF', 'JTF_TASK_MISSING_GROUP');
505             fnd_msg_pub.add ;
506             x_return_status := fnd_api.g_ret_sts_unexp_error;
507             RAISE fnd_api.g_exc_unexpected_error;
508         end if ;
509 
510 
511 
512         jtf_task_templates_pvt.create_task (
513             p_api_version => 1.0,
514             p_init_msg_list => fnd_api.g_false,
515             p_commit => fnd_api.g_false,
516             p_task_id => l_task_id,
517             p_task_name => l_task_name,
518             p_task_group_id => l_task_group_id,
519             p_task_type_id => l_task_type_id,
520             p_description => l_description,
521             p_task_status_id => l_task_status_id,
522             p_task_priority_id => l_task_priority_id,
523             p_duration => p_duration,
524             p_duration_uom => p_duration_uom,
525             p_planned_effort => p_planned_effort,
526             p_planned_effort_uom => p_planned_effort_uom,
527             p_private_flag => p_private_flag,
528             p_publish_flag => p_publish_flag,
529             p_restrict_closure_flag => p_restrict_closure_flag,
530             p_multi_booked_flag => p_multi_booked_flag,
531             p_milestone_flag => p_milestone_flag,
532             p_holiday_flag => p_holiday_flag,
533             p_billable_flag => p_billable_flag,
534             p_notification_flag => p_notification_flag,
535             p_notification_period => p_notification_period,
536             p_notification_period_uom => p_notification_period_uom,
537             p_alarm_start => p_alarm_start,
538             p_alarm_start_uom => p_alarm_start_uom,
539             p_alarm_on => p_alarm_on,
540             p_alarm_count => p_alarm_count,
541             p_alarm_interval => p_alarm_interval,
542             p_alarm_interval_uom => p_alarm_interval_uom,
543             x_return_status => x_return_status,
544             x_msg_count => x_msg_count,
545             x_msg_data => x_msg_data,
546             x_task_id => x_task_id,
547             p_attribute1 => p_attribute1 ,
548             p_attribute2 => p_attribute2 ,
549             p_attribute3 => p_attribute3 ,
550             p_attribute4 => p_attribute4 ,
551             p_attribute5 => p_attribute5 ,
552             p_attribute6 => p_attribute6 ,
553             p_attribute7 => p_attribute7 ,
554             p_attribute8 => p_attribute8 ,
555             p_attribute9 => p_attribute9 ,
556             p_attribute10 => p_attribute10 ,
557             p_attribute11 => p_attribute11 ,
558             p_attribute12 => p_attribute12 ,
559             p_attribute13 => p_attribute13 ,
560             p_attribute14 => p_attribute14 ,
561             p_attribute15 => p_attribute15,
562             p_attribute_category => p_attribute_category,
563             p_task_confirmation_status => l_task_confirmation_status
564         );
565 
566 
567 
568 
569 
570         OPEN c_task_templates;
571         FETCH c_task_templates INTO x;
572 
573         IF c_task_templates%NOTFOUND
574         THEN
575             fnd_message.set_name ('JTF', 'JTF_TASK_ERROR_CREATING_TEMP');
576             fnd_msg_pub.add;
577             x_return_status := fnd_api.g_ret_sts_unexp_error;
578             RAISE fnd_api.g_exc_unexpected_error;
579         END IF;
580 
581         -------
582         -------
583         -------   Create the dependencies
584         -------
585         -------
586 
587         IF p_task_depends_tbl.COUNT > 0
588         THEN
589 
590             current_record := p_task_depends_tbl.FIRST;
591 
592             FOR i IN 1 .. p_task_depends_tbl.COUNT
593             LOOP
594 
595                 jtf_task_dependency_pub.create_task_dependency (
596                     p_api_version => 1.0,
597                     p_init_msg_list => fnd_api.g_false,
598                     p_commit => fnd_api.g_false,
599                     p_validation_level => fnd_api.g_valid_level_full,
600                     p_task_id => x_task_id,
601                     p_dependent_on_task_id => p_task_depends_tbl (current_record).dependent_on_task_id,
602                     p_dependent_on_task_number => p_task_depends_tbl (current_record).dependent_on_task_number,
603                     p_dependency_type_code => p_task_depends_tbl (current_record).dependency_type_code,
604                     p_template_flag => jtf_task_utl.g_yes,
605                     p_adjustment_time => p_task_depends_tbl (current_record).adjustment_time,
606                     p_adjustment_time_uom => p_task_depends_tbl (current_record).adjustment_time_uom,
607                     p_validated_flag => p_task_depends_tbl (current_record).validated_flag,
608                     x_dependency_id => l_dependency_id,
609                     x_return_status => x_return_status,
610                     x_msg_count => x_msg_count,
611                     x_msg_data => x_msg_data
612                 );
613 
614 
615                 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
616                 THEN
617                     x_return_status := fnd_api.g_ret_sts_unexp_error;
618                     RAISE fnd_api.g_exc_unexpected_error;
619                 END IF;
620 
621                 current_record := p_task_depends_tbl.NEXT (current_record);
622             END LOOP;
623         END IF;
624 
625         -------
626         -------
627         -------   Create recurrences
628         -------
629         ------- Creatinf Recurrence rule
630 
631         IF (  p_task_recur_rec.occurs_which IS NOT NULL
632            OR p_task_recur_rec.day_of_week IS NOT NULL
633            OR p_task_recur_rec.date_of_month IS NOT NULL
634            OR p_task_recur_rec.occurs_month IS NOT NULL
635            OR p_task_recur_rec.occurs_uom IS NOT NULL
636            OR p_task_recur_rec.occurs_every IS NOT NULL
637            OR p_task_recur_rec.occurs_number IS NOT NULL
638            OR p_task_recur_rec.start_date_active IS NOT NULL
639            OR p_task_recur_rec.end_date_active IS NOT NULL)
640         THEN
641             jtf_task_recurrences_pub.create_task_recurrence (
642                 p_api_version => 1.0,
643                 p_init_msg_list => fnd_api.g_false,
644                 p_commit => fnd_api.g_false,
645                 p_task_id => x_task_id,
646                 p_occurs_which => p_task_recur_rec.occurs_which,
647                 p_template_flag => jtf_task_utl.g_yes,
648                 p_day_of_week => p_task_recur_rec.day_of_week,
649                 p_date_of_month => p_task_recur_rec.date_of_month,
650                 p_occurs_month => p_task_recur_rec.occurs_month,
651                 p_occurs_uom => p_task_recur_rec.occurs_uom,
652                 p_occurs_every => p_task_recur_rec.occurs_every,
653                 p_occurs_number => p_task_recur_rec.occurs_number,
654                 p_start_date_active => p_task_recur_rec.start_date_active,
655                 p_end_date_active => p_task_recur_rec.end_date_active,
656                 x_return_status => x_return_status,
657                 x_msg_count => x_msg_count,
658                 x_msg_data => x_msg_data,
659                 x_recurrence_rule_id => l_recurrence_rule_id,
660                 x_task_rec => l_task_rec,
661                 x_reccurences_generated => l_reccurence_generated
662             );
663 
664             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
665             THEN
666                 x_return_status := fnd_api.g_ret_sts_unexp_error;
667                 RAISE fnd_api.g_exc_unexpected_error;
668             END IF;
669         END IF;
670 
671 
672 
673         IF fnd_api.to_boolean (p_commit)
674         THEN
675             COMMIT WORK;
676         END IF;
677 
678         fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
679     EXCEPTION
680         WHEN fnd_api.g_exc_unexpected_error
681         THEN
682 
683 
684             ROLLBACK TO create_task_pub;
685             x_return_status := fnd_api.g_ret_sts_unexp_error;
686             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
687         WHEN OTHERS
688         THEN
689 
690 
691 
692             ROLLBACK TO create_task_pub;
693             x_return_status := fnd_api.g_ret_sts_unexp_error;
694             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
695     END;
696 
697    PROCEDURE lock_task (
698       p_api_version       IN       NUMBER,
699       p_init_msg_list     IN       VARCHAR2 DEFAULT fnd_api.g_false,
700       p_commit            IN       VARCHAR2 DEFAULT fnd_api.g_false,
701       p_task_id           IN       NUMBER,
702       p_object_version_number IN   NUMBER,
703       x_return_status     OUT NOCOPY      VARCHAR2,
704       x_msg_data          OUT NOCOPY      VARCHAR2,
705       x_msg_count         OUT NOCOPY      NUMBER
706    ) is
707         l_api_version    CONSTANT NUMBER                                 := 1.0;
708         l_api_name       CONSTANT VARCHAR2(30)                           := 'LOCK_TASK_TEMPLATES';
709 
710 
711         Resource_Locked exception ;
712 
713         PRAGMA EXCEPTION_INIT ( Resource_Locked , - 54 ) ;
714 
715    begin
716         SAVEPOINT lock_task_pub;
717 
718         x_return_status := fnd_api.g_ret_sts_success;
719 
720         IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
721         THEN
722             RAISE fnd_api.g_exc_unexpected_error;
723         END IF;
724 
725         IF fnd_api.to_boolean (p_init_msg_list)
726         THEN
727             fnd_msg_pub.initialize;
728         END IF;
729 
730         x_return_status := fnd_api.g_ret_sts_success;
731 
732         jtf_task_templates_pkg.lock_row(
733             x_task_template_id => p_task_id ,
734             x_object_version_number => p_object_version_number  );
735 
736 
737         fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
738 
739     EXCEPTION
740        WHEN Resource_Locked then
741             ROLLBACK TO lock_task_pub;
742             fnd_message.set_name ('JTF', 'JTF_TASK_RESOURCE_LOCKED');
743             fnd_message.set_token ('P_LOCKED_RESOURCE', 'Contacts');
744             x_return_status := fnd_api.g_ret_sts_unexp_error;
745             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
746 
747         WHEN fnd_api.g_exc_unexpected_error
748         THEN
749             ROLLBACK TO lock_task_pub;
750             x_return_status := fnd_api.g_ret_sts_unexp_error;
751             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
752         WHEN OTHERS
753         THEN
754             ROLLBACK TO lock_task_pub;
755             fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
756             fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
757             x_return_status := fnd_api.g_ret_sts_unexp_error;
758             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
759     END;
760 
761 
762 
763     PROCEDURE update_task (
764         p_api_version             IN       NUMBER,
765         p_init_msg_list           IN       VARCHAR2 DEFAULT fnd_api.g_false,
766         p_commit                  IN       VARCHAR2 DEFAULT fnd_api.g_false,
767         p_object_version_number   IN     OUT NOCOPY NUMBER ,
768         p_task_id                 IN       NUMBER DEFAULT fnd_api.g_miss_num,
769         p_task_number             IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
770         p_task_group_id           IN       NUMBER DEFAULT fnd_api.g_miss_num,
771         p_task_name               IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
772         p_task_type_name          IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
773         p_task_type_id            IN       NUMBER DEFAULT fnd_api.g_miss_num,
774         p_description             IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
775         p_task_status_name        IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
776         p_task_status_id          IN       NUMBER DEFAULT fnd_api.g_miss_num,
777         p_task_priority_name      IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
778         p_task_priority_id        IN       NUMBER DEFAULT fnd_api.g_miss_num,
779         p_duration                IN       NUMBER DEFAULT fnd_api.g_miss_num,
780         p_duration_uom            IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
781         p_planned_effort          IN       NUMBER DEFAULT fnd_api.g_miss_num,
782         p_planned_effort_uom      IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
783         p_private_flag            IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
784         p_publish_flag            IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
785         p_restrict_closure_flag   IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
786         p_multi_booked_flag       IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
787         p_milestone_flag          IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
788         p_holiday_flag            IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
789         p_billable_flag           IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
790         p_notification_flag       IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
791         p_notification_period     IN       NUMBER DEFAULT fnd_api.g_miss_num,
792         p_notification_period_uom IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
793         p_alarm_start             IN       NUMBER DEFAULT fnd_api.g_miss_num,
794         p_alarm_start_uom         IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
795         p_alarm_on                IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
796         p_alarm_count             IN       NUMBER DEFAULT fnd_api.g_miss_num,
797         p_alarm_interval          IN       NUMBER DEFAULT fnd_api.g_miss_num,
798         p_alarm_interval_uom      IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
799         x_return_status           OUT NOCOPY      VARCHAR2,
800         x_msg_count               OUT NOCOPY      NUMBER,
801         x_msg_data                OUT NOCOPY      VARCHAR2,
802         p_attribute1              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
803         p_attribute2              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
804         p_attribute3              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
805         p_attribute4              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
806         p_attribute5              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
807         p_attribute6              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
808         p_attribute7              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
809         p_attribute8              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
810         p_attribute9              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
811         p_attribute10             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
812         p_attribute11             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
813         p_attribute12             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
814         p_attribute13             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
815         p_attribute14             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
816         p_attribute15             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
817         p_attribute_category      IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
818         p_task_confirmation_status IN      VARCHAR2
819     ) is
820         l_api_version       CONSTANT NUMBER                                      := 1.0;
821         l_api_name          CONSTANT VARCHAR2(30)                                := 'UPDATE_TASK_TEMPLATE';
822         l_task_id                    jtf_task_templates_b.task_template_id%TYPE                    := p_task_id;
823         l_task_number                jtf_task_templates_b.task_number%TYPE                := p_task_number;
824         l_task_name                  jtf_task_templates_tl.task_name%TYPE                 := p_task_name;
825         l_task_type_name             jtf_task_types_tl.name%TYPE                 := p_task_type_name;
826         l_task_type_id               jtf_task_types_b.task_type_id%TYPE          := p_task_type_id;
827         l_task_status_name           jtf_task_statuses_tl.name%TYPE              := p_task_status_name;
828         l_task_status_id             jtf_task_statuses_b.task_status_id%TYPE     := p_task_status_id;
829         l_task_priority_name         jtf_task_priorities_tl.name%TYPE            := p_task_priority_name;
830         l_task_priority_id           jtf_task_priorities_b.task_priority_id%TYPE := p_task_priority_id;
831         l_duration                   jtf_task_templates_b.duration%TYPE;
832         l_duration_uom               jtf_task_templates_b.duration_uom%TYPE;
833         l_private_flag               jtf_task_templates_b.private_flag%TYPE;
834         l_publish_flag               jtf_task_templates_b.publish_flag%TYPE;
835         l_restrict_closure_flag      jtf_task_templates_b.restrict_closure_flag%TYPE;
836         l_multi_booked_flag          jtf_task_templates_b.multi_booked_flag%TYPE;
837         l_description                jtf_task_templates_tl.description%TYPE;
838         l_planned_effort             jtf_task_templates_b.planned_effort%TYPE;
839         l_planned_effort_uom         jtf_task_templates_b.planned_effort_uom%TYPE;
840         l_milestone_flag             jtf_task_templates_b.milestone_flag%TYPE;
841         l_holiday_flag               jtf_task_templates_b.holiday_flag%TYPE;
842         l_notification_flag          jtf_task_templates_b.notification_flag%TYPE;
843         l_notification_period        jtf_task_templates_b.notification_period%TYPE;
844         l_notification_period_uom    jtf_task_templates_b.notification_period_uom%TYPE;
845         l_billable_flag              jtf_task_templates_b.billable_flag%TYPE;
846         l_alarm_start                jtf_task_templates_b.alarm_start%TYPE;
847         l_alarm_start_uom            jtf_task_templates_b.alarm_start_uom%TYPE;
848         l_alarm_on                   jtf_task_templates_b.alarm_on%TYPE;
849         l_alarm_count                jtf_task_templates_b.alarm_count%TYPE;
850         l_alarm_interval             jtf_task_templates_b.alarm_interval%TYPE;
851         l_alarm_interval_uom         jtf_task_templates_b.alarm_interval_uom%TYPE;
852         l_type                       varchar2(10);
853         l_task_confirmation_status   jtf_task_templates_b.task_confirmation_status%TYPE;
854 
855 
856         CURSOR c_task_update (
857             l_task_id                 IN       NUMBER
858         )
859         IS
860             SELECT DECODE (p_task_id, fnd_api.g_miss_num, task_template_id, p_task_id) task_id,
861                    DECODE (p_task_number, fnd_api.g_miss_char, task_number, p_task_number) task_number,
862                    DECODE (p_task_name, fnd_api.g_miss_char, task_name, p_task_name) task_name,
863                    DECODE (p_task_type_id, fnd_api.g_miss_num, task_type_id, p_task_type_id) task_type_id,
864                    DECODE (p_description, fnd_api.g_miss_char, description, p_description) description,
865                    DECODE (p_task_status_id, fnd_api.g_miss_num, task_status_id, p_task_status_id) task_status_id,
866                    DECODE (p_task_priority_id, fnd_api.g_miss_num, task_priority_id, p_task_priority_id) task_priority_id,
867                    DECODE (p_duration, fnd_api.g_miss_num, duration, p_duration) duration,
868                    DECODE (p_duration_uom, fnd_api.g_miss_char, duration_uom, p_duration_uom) duration_uom,
869                    DECODE (p_planned_effort, fnd_api.g_miss_num, planned_effort, p_planned_effort) planned_effort,
870                    DECODE (p_planned_effort_uom, fnd_api.g_miss_char, planned_effort_uom, p_planned_effort_uom) planned_effort_uom,
871                    DECODE (p_private_flag, fnd_api.g_miss_char, private_flag, p_private_flag) private_flag,
872                    DECODE (p_publish_flag, fnd_api.g_miss_char, publish_flag, p_publish_flag) publish_flag,
873                    DECODE (p_restrict_closure_flag, fnd_api.g_miss_char, restrict_closure_flag, p_restrict_closure_flag) restrict_closure_flag,
874                    DECODE (p_multi_booked_flag, fnd_api.g_miss_char, multi_booked_flag, p_multi_booked_flag) multi_booked_flag,
875                    DECODE (p_milestone_flag, fnd_api.g_miss_char, milestone_flag, p_milestone_flag) milestone_flag,
876                    DECODE (p_holiday_flag, fnd_api.g_miss_char, holiday_flag, p_holiday_flag) holiday_flag,
877                    DECODE (p_billable_flag, fnd_api.g_miss_char, billable_flag, p_billable_flag) billable_flag,
878                    DECODE (p_notification_flag, fnd_api.g_miss_char, notification_flag, p_notification_flag) notification_flag,
879                    DECODE (p_notification_period, fnd_api.g_miss_num, notification_period, p_notification_period) notification_period,
880                    DECODE (p_notification_period_uom, fnd_api.g_miss_char, notification_period_uom, p_notification_period_uom) notification_period_uom,
881                    DECODE (p_alarm_start, fnd_api.g_miss_num, alarm_start, p_alarm_start) alarm_start,
882                    DECODE (p_alarm_start_uom, fnd_api.g_miss_char, alarm_start_uom, p_alarm_start_uom) alarm_start_uom,
883                    DECODE (p_alarm_on, fnd_api.g_miss_char, alarm_on, p_alarm_on) alarm_on,
884                    DECODE (p_alarm_count, fnd_api.g_miss_num, alarm_count, p_alarm_count) alarm_count,
885                    DECODE (p_alarm_interval, fnd_api.g_miss_num, alarm_interval, p_alarm_interval) alarm_interval,
886                    DECODE (p_alarm_interval_uom, fnd_api.g_miss_char, alarm_interval_uom, p_alarm_interval_uom) alarm_interval_uom,
887 decode( p_attribute1 , fnd_api.g_miss_char , attribute1 , p_attribute1 )  attribute1  ,
888 decode( p_attribute2 , fnd_api.g_miss_char , attribute2 , p_attribute2 )  attribute2  ,
889 decode( p_attribute3 , fnd_api.g_miss_char , attribute3 , p_attribute3 )  attribute3  ,
890 decode( p_attribute4 , fnd_api.g_miss_char , attribute4 , p_attribute4 )  attribute4  ,
891 decode( p_attribute5 , fnd_api.g_miss_char , attribute5 , p_attribute5 )  attribute5  ,
892 decode( p_attribute6 , fnd_api.g_miss_char , attribute6 , p_attribute6 )  attribute6  ,
893 decode( p_attribute7 , fnd_api.g_miss_char , attribute7 , p_attribute7 )  attribute7  ,
894 decode( p_attribute8 , fnd_api.g_miss_char , attribute8 , p_attribute8 )  attribute8  ,
895 decode( p_attribute9 , fnd_api.g_miss_char , attribute9 , p_attribute9 )  attribute9  ,
896 decode( p_attribute10 , fnd_api.g_miss_char , attribute10 , p_attribute10 )  attribute10  ,
897 decode( p_attribute11 , fnd_api.g_miss_char , attribute11 , p_attribute11 )  attribute11  ,
898 decode( p_attribute12 , fnd_api.g_miss_char , attribute12 , p_attribute12 )  attribute12  ,
899 decode( p_attribute13 , fnd_api.g_miss_char , attribute13 , p_attribute13 )  attribute13  ,
900 decode( p_attribute14 , fnd_api.g_miss_char , attribute14 , p_attribute14 )  attribute14  ,
901 decode( p_attribute15 , fnd_api.g_miss_char , attribute15 , p_attribute15 )  attribute15 ,
902 decode( p_attribute_category,fnd_api.g_miss_char,attribute_category,p_attribute_category) attribute_category,
903 decode( p_task_confirmation_status,jtf_task_utl.g_miss_char,task_confirmation_status,p_task_confirmation_status)
904 task_confirmation_status
905               FROM jtf_task_templates_vl
906              WHERE task_template_id = l_task_id;
907 
908         task_rec                     c_task_update%ROWTYPE;
909 
910     BEGIN
911 
912         SAVEPOINT update_task_pub;
913 
914         x_return_status := fnd_api.g_ret_sts_success;
915 
916         IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
917         THEN
918             RAISE fnd_api.g_exc_unexpected_error;
919         END IF;
920 
921         IF fnd_api.to_boolean (p_init_msg_list)
922         THEN
923             fnd_msg_pub.initialize;
924         END IF;
925 
926 
927 
928         -----
929         -----   Validate Tasks
930         -----
931         IF (   l_task_id = fnd_api.g_miss_num
932            AND l_task_number = fnd_api.g_miss_char)
933         THEN
934             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TEMP');
935             fnd_msg_pub.add;
936             x_return_status := fnd_api.g_ret_sts_unexp_error;
937             RAISE fnd_api.g_exc_unexpected_error;
938         ELSE
939             SELECT DECODE (l_task_id, fnd_api.g_miss_num, NULL, l_task_id)
940               INTO l_task_id
941               FROM dual;
942             SELECT DECODE (l_task_number, fnd_api.g_miss_char, NULL, l_task_number)
943               INTO l_task_number
944               FROM dual;
945             jtf_task_utl.validate_task_template (
946                 p_task_id => l_task_id,
947                 p_task_number => l_task_number,
948                 x_task_id => l_task_id,
949                 x_return_status => x_return_status
950             );
951 
952 
953 
954             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
955             THEN
956                 x_return_status := fnd_api.g_ret_sts_unexp_error;
957                 RAISE fnd_api.g_exc_unexpected_error;
958             END IF;
959 
960             IF l_task_id IS NULL
961             THEN
962                 fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TEMP');
963                 fnd_msg_pub.add;
964                 x_return_status := fnd_api.g_ret_sts_unexp_error;
965                 RAISE fnd_api.g_exc_unexpected_error;
966             END IF;
967         END IF;
968 
969 
970 
971         -----
972         -----     Task Name
973         -----
974         IF l_task_name IS NULL
975         THEN
976             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TEMP_NAME');
977             fnd_msg_pub.add;
978             x_return_status := fnd_api.g_ret_sts_unexp_error;
979             RAISE fnd_api.g_exc_unexpected_error;
980         END IF;
981 
982         -----
983         -----     Task Description
984         -----
985         OPEN c_task_update (l_task_id);
986         FETCH c_task_update INTO task_rec;
987 
988         IF c_task_update%NOTFOUND
989         THEN
990             fnd_message.set_name ('JTF', 'JTF_TASK_INVALID_TEMP');
991             fnd_msg_pub.add;
992             x_return_status := fnd_api.g_ret_sts_unexp_error;
993             RAISE fnd_api.g_exc_unexpected_error;
994         END IF;
995 
996 
997 
998 
999         -----
1000         -----     Task Type
1001         -----
1002         IF (   l_task_type_name = fnd_api.g_miss_char
1003            AND l_task_type_id = fnd_api.g_miss_num)
1004         THEN
1005             l_task_type_id := task_rec.task_type_id;
1006         ELSIF (   l_task_type_name = fnd_api.g_miss_char
1007               AND l_task_type_id <> fnd_api.g_miss_num)
1008         THEN
1009             jtf_task_utl.validate_task_type (
1010                 p_task_type_id => l_task_type_id,
1011                 p_task_type_name => NULL,
1012                 x_return_status => x_return_status,
1013                 x_task_type_id => l_task_type_id
1014             );
1015         ELSIF (   l_task_type_name <> fnd_api.g_miss_char
1016               AND l_task_type_id = fnd_api.g_miss_num)
1017         THEN
1018             jtf_task_utl.validate_task_type (
1019                 p_task_type_id => NULL,
1020                 p_task_type_name => l_task_type_name,
1021                 x_return_status => x_return_status,
1022                 x_task_type_id => l_task_type_id
1023             );
1024         ELSE
1025             jtf_task_utl.validate_task_type (
1026                 p_task_type_id => l_task_type_id,
1027                 p_task_type_name => l_task_type_name,
1028                 x_return_status => x_return_status,
1029                 x_task_type_id => l_task_type_id
1030             );
1031         END IF;
1032 
1033         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1034         THEN
1035             x_return_status := fnd_api.g_ret_sts_unexp_error;
1036             RAISE fnd_api.g_exc_unexpected_error;
1037         END IF;
1038 
1039         IF l_task_type_id IS NULL
1040         THEN
1041             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TYPE');
1042             fnd_msg_pub.add;
1043             RAISE fnd_api.g_exc_unexpected_error;
1044         END IF;
1045 
1046 
1047 
1048         -----
1049         -----   Task Status
1050         -----
1051         if l_task_type_id = '22' then
1052            l_type := 'ESCALATION';
1053         else
1054            l_type := 'TASK';
1055         end if;
1056 
1057         IF ( l_task_status_name = fnd_api.g_miss_char
1058            AND l_task_status_id = fnd_api.g_miss_num)
1059         THEN
1060             l_task_status_id := task_rec.task_status_id;
1061         ELSIF (   l_task_status_name = fnd_api.g_miss_char
1062               AND l_task_status_id <> fnd_api.g_miss_num)
1063         THEN
1064             jtf_task_utl.validate_task_status (
1065                 p_task_status_id => l_task_status_id,
1066                 p_task_status_name => NULL,
1067                 p_validation_type => l_type,
1068                 x_return_status => x_return_status,
1069                 x_task_status_id => l_task_status_id
1070             );
1071         ELSIF (   l_task_status_name <> fnd_api.g_miss_char
1072               AND l_task_status_id = fnd_api.g_miss_num)
1073         THEN
1074             jtf_task_utl.validate_task_status (
1075                 p_task_status_id => NULL,
1076                 p_task_status_name => l_task_status_name,
1077                 p_validation_type => l_type,
1078                 x_return_status => x_return_status,
1079                 x_task_status_id => l_task_status_id
1080             );
1081         ELSE
1082             jtf_task_utl.validate_task_status (
1083                 p_task_status_id => l_task_status_id,
1084                 p_task_status_name => l_task_status_name,
1085                 p_validation_type => l_type,
1086                 x_return_status => x_return_status,
1087                 x_task_status_id => l_task_status_id
1088             );
1089         END IF;
1090 
1091         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1092         THEN
1093             x_return_status := fnd_api.g_ret_sts_unexp_error;
1094             RAISE fnd_api.g_exc_unexpected_error;
1095         END IF;
1096 
1097         IF l_task_status_id IS NULL
1098         THEN
1099             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_STATUS');
1100             fnd_msg_pub.add;
1101             RAISE fnd_api.g_exc_unexpected_error;
1102         END IF;
1103 
1104 
1105 
1106         --------
1107         --------  Task Priority
1108         --------
1109         IF (   l_task_priority_name = fnd_api.g_miss_char
1110            AND l_task_priority_id = fnd_api.g_miss_num)
1111         THEN
1112             l_task_priority_id := task_rec.task_priority_id;
1113         ELSIF (   l_task_priority_name = fnd_api.g_miss_char
1114               AND l_task_priority_id <> fnd_api.g_miss_num)
1115         THEN
1116             jtf_task_utl.validate_task_priority (
1117                 p_task_priority_id => l_task_priority_id,
1118                 p_task_priority_name => NULL,
1119                 x_return_status => x_return_status,
1120                 x_task_priority_id => l_task_priority_id
1121             );
1122         ELSIF (   l_task_priority_name <> fnd_api.g_miss_char
1123               AND l_task_priority_id = fnd_api.g_miss_num)
1124         THEN
1125             jtf_task_utl.validate_task_priority (
1126                 p_task_priority_id => NULL,
1127                 p_task_priority_name => l_task_priority_name,
1128                 x_return_status => x_return_status,
1129                 x_task_priority_id => l_task_priority_id
1130             );
1131         ELSE
1132             jtf_task_utl.validate_task_priority (
1133                 p_task_priority_id => l_task_priority_id,
1134                 p_task_priority_name => l_task_priority_name,
1135                 x_return_status => x_return_status,
1136                 x_task_priority_id => l_task_priority_id
1137             );
1138         END IF;
1139 
1140         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1141         THEN
1142             x_return_status := fnd_api.g_ret_sts_unexp_error;
1143             RAISE fnd_api.g_exc_unexpected_error;
1144         END IF;
1145 
1146      ----------
1147     ----------  Validate duration
1148     ----------
1149         IF (  p_duration <> fnd_api.g_miss_num
1150            OR p_duration_uom <> fnd_api.g_miss_char
1151            OR p_duration IS NULL
1152            OR p_duration_uom IS NULL)
1153         THEN
1154             IF    (p_duration <> fnd_api.g_miss_num)
1155                OR (p_duration IS NULL)
1156             THEN
1157                 l_duration := p_duration;
1158             ELSE
1159                 l_duration := task_rec.duration;
1160             END IF;
1161 
1162             IF    p_duration_uom <> fnd_api.g_miss_char
1163                OR (p_duration_uom IS NULL)
1164             THEN
1165                 l_duration_uom := p_duration_uom;
1166             ELSE
1167                 l_duration_uom := task_rec.duration_uom;
1168             END IF;
1169 
1170             jtf_task_utl.validate_effort (
1171                 p_tag => 'Duration',
1172                 p_tag_uom => 'Duration UOM',
1173                 p_effort => l_duration,
1174                 p_effort_uom => l_duration_uom,
1175                 x_return_status => x_return_status
1176             );
1177 
1178             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1179             THEN
1180                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1181                 RAISE fnd_api.g_exc_unexpected_error;
1182             END IF;
1183         END IF;
1184 
1185     ----------
1186     ----------  Validate planned_effort
1187     ----------
1188 
1189         l_planned_effort := task_rec.planned_effort;
1190         l_planned_effort_uom := task_rec.planned_effort_uom ;
1191 
1192         IF (  p_planned_effort <> fnd_api.g_miss_num
1193            OR p_planned_effort_uom <> fnd_api.g_miss_char
1194            OR p_planned_effort IS NULL
1195            OR p_planned_effort_uom IS NULL)
1196         THEN
1197 /*            IF    (p_planned_effort <> fnd_api.g_miss_num)
1198                OR (p_planned_effort IS NULL)
1199             THEN
1200                 l_planned_effort := p_planned_effort;
1201             ELSE
1202                 l_planned_effort := task_rec.planned_effort;
1203             END IF;
1204 
1205             IF    p_planned_effort_uom <> fnd_api.g_miss_char
1206                OR (p_planned_effort_uom IS NULL)
1207             THEN
1208                 l_planned_effort_uom := p_planned_effort_uom;
1209             ELSE
1210                 l_planned_effort_uom := task_rec.planned_effort_uom;
1211             END IF;
1212 */
1213 
1214 
1215             jtf_task_utl.validate_effort (
1216                 p_tag => 'Planned Effort',
1217                 p_tag_uom => 'Planned Effort Unit of Measure',
1218                 p_effort => l_planned_effort,
1219                 p_effort_uom => l_planned_effort_uom,
1220                 x_return_status => x_return_status
1221             );
1222 
1223             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1224             THEN
1225                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1226                 RAISE fnd_api.g_exc_unexpected_error;
1227             END IF;
1228         END IF;
1229 
1230         IF p_private_flag <> fnd_api.g_miss_char
1231         THEN
1232             jtf_task_utl.validate_flag (p_flag_name => 'Private Flag', p_flag_value => p_private_flag, x_return_status => x_return_status);
1233 
1234             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1235             THEN
1236                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1237                 RAISE fnd_api.g_exc_unexpected_error;
1238             END IF;
1239 
1240             l_private_flag := p_private_flag;
1241         ELSE
1242             l_private_flag := task_rec.private_flag;
1243         END IF;
1244 
1245         -------
1246         ------- Validate publish flag
1247         -------
1248         IF    p_publish_flag <> fnd_api.g_miss_char
1249            OR p_publish_flag IS NULL
1250         THEN
1251             jtf_task_utl.validate_flag (p_flag_name => 'Publish Flag', p_flag_value => p_publish_flag, x_return_status => x_return_status);
1252 
1253             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1254             THEN
1255                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1256                 RAISE fnd_api.g_exc_unexpected_error;
1257             END IF;
1258 
1259             l_publish_flag := p_publish_flag;
1260         ELSE
1261             l_publish_flag := task_rec.publish_flag;
1262         END IF;
1263 
1264 
1265 
1266         -------
1267         ------- Validate restrict closure flag
1268         -------
1269         IF    p_restrict_closure_flag <> fnd_api.g_miss_char
1270            OR p_restrict_closure_flag IS NULL
1271         THEN
1272             jtf_task_utl.validate_flag (
1273                 p_flag_name => 'Restrict Closure Flag',
1274                 p_flag_value => p_restrict_closure_flag,
1275                 x_return_status => x_return_status
1276             );
1277 
1278             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1279             THEN
1280                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1281                 RAISE fnd_api.g_exc_unexpected_error;
1282             END IF;
1283 
1284             l_restrict_closure_flag := p_restrict_closure_flag;
1285         ELSE
1286             l_restrict_closure_flag := task_rec.restrict_closure_flag;
1287         END IF;
1288 
1289         -------
1290         ------- Validate multibooked flag
1291         -------
1292         IF    p_multi_booked_flag <> fnd_api.g_miss_char
1293            OR p_multi_booked_flag IS NULL
1294         THEN
1295             jtf_task_utl.validate_flag (p_flag_name => 'Multi Booked Flag', p_flag_value => p_multi_booked_flag, x_return_status => x_return_status);
1296 
1297             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1298             THEN
1299                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1300                 RAISE fnd_api.g_exc_unexpected_error;
1301             END IF;
1302 
1303             l_multi_booked_flag := p_multi_booked_flag;
1304         ELSE
1305             l_multi_booked_flag := task_rec.multi_booked_flag;
1306         END IF;
1307 
1308         -------
1309         ------- Validate milestone flag
1310         -------
1311         IF    p_milestone_flag <> fnd_api.g_miss_char
1312            OR p_milestone_flag IS NULL
1313         THEN
1314             jtf_task_utl.validate_flag (p_flag_name => 'Milestone Flag', p_flag_value => p_milestone_flag, x_return_status => x_return_status);
1315 
1316             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1317             THEN
1318                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1319                 RAISE fnd_api.g_exc_unexpected_error;
1320             END IF;
1321 
1322             l_milestone_flag := p_milestone_flag;
1323         ELSE
1324             l_milestone_flag := task_rec.milestone_flag;
1325         END IF;
1326 
1327         -------
1328         ------- Validate holiday flag
1329         -------
1330 
1331         IF    p_holiday_flag <> fnd_api.g_miss_char
1332            OR p_holiday_flag IS NULL
1333         THEN
1334             jtf_task_utl.validate_flag (p_flag_name => 'Holiday Flag', p_flag_value => p_holiday_flag, x_return_status => x_return_status);
1335 
1336             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1337             THEN
1338                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1339                 RAISE fnd_api.g_exc_unexpected_error;
1340             END IF;
1341 
1342             l_holiday_flag := p_holiday_flag;
1343         ELSE
1344             l_holiday_flag := task_rec.holiday_flag;
1345         END IF;
1346 
1347         -------
1348         ------- Validate billable flag
1349         -------
1350 
1351         IF p_billable_flag <> fnd_api.g_miss_char
1352         THEN
1353             jtf_task_utl.validate_flag (p_flag_name => 'Billable Flag', p_flag_value => p_billable_flag, x_return_status => x_return_status);
1354 
1355             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1356             THEN
1357                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1358                 RAISE fnd_api.g_exc_unexpected_error;
1359             END IF;
1360 
1361             l_billable_flag := p_billable_flag;
1362         ELSE
1363             l_billable_flag := task_rec.billable_flag;
1364         END IF;
1365 
1366     -----------
1367     -----------   Validate alarm
1368     -----------
1369 
1370         IF (  p_alarm_start <> fnd_api.g_miss_num
1371            OR p_alarm_start_uom <> fnd_api.g_miss_char
1372            OR p_alarm_on <> fnd_api.g_miss_char
1373            OR p_alarm_count <> fnd_api.g_miss_num
1374            OR p_alarm_interval <> fnd_api.g_miss_num
1375            OR p_alarm_interval_uom <> fnd_api.g_miss_char
1376            OR p_alarm_start IS NULL
1377            OR p_alarm_start_uom IS NULL
1378            OR p_alarm_on IS NULL
1379            OR p_alarm_count IS NULL
1380            OR p_alarm_interval IS NULL
1381            OR p_alarm_interval_uom IS NULL)
1382         THEN
1383             l_alarm_start := task_rec.alarm_start;
1384             l_alarm_start_uom := task_rec.alarm_start_uom;
1385             l_alarm_on := task_rec.alarm_on;
1386             l_alarm_interval := task_rec.alarm_interval;
1387             l_alarm_interval_uom := task_rec.alarm_interval_uom;
1388             l_alarm_count := task_rec.alarm_count;
1389             jtf_task_utl.validate_alarm (
1390                 p_alarm_start => l_alarm_start,
1391                 p_alarm_start_uom => l_alarm_start_uom,
1392                 p_alarm_on => l_alarm_on,
1393                 p_alarm_count => l_alarm_count,
1394                 p_alarm_interval => l_alarm_interval,
1395                 p_alarm_interval_uom => l_alarm_interval_uom,
1396                 x_return_status => x_return_status
1397             );
1398 
1399             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1400             THEN
1401                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1402                 RAISE fnd_api.g_exc_unexpected_error;
1403             END IF;
1404 
1405         ELSE
1406             l_alarm_start := task_rec.alarm_start;
1407             l_alarm_start_uom := task_rec.alarm_start_uom;
1408             l_alarm_on := task_rec.alarm_on;
1409             l_alarm_interval := task_rec.alarm_interval;
1410             l_alarm_interval_uom := task_rec.alarm_interval_uom;
1411             l_alarm_count := task_rec.alarm_count;
1412         END IF;
1413 
1414 
1415 
1416           -------
1417         ------- Validate Notification
1418         -------
1419         IF (  p_notification_period <> fnd_api.g_miss_num
1420            OR p_notification_period IS NULL
1421            OR p_notification_period_uom <> fnd_api.g_miss_char
1422            OR p_notification_period_uom IS NULL
1423            OR p_notification_flag <> fnd_api.g_miss_char
1424            OR p_notification_flag IS NULL)
1425         THEN
1426                    l_notification_flag := task_rec.notification_flag;
1427             l_notification_period := task_rec.notification_period;
1428             l_notification_period_uom := task_rec.notification_period_uom;
1429              jtf_task_utl.validate_notification (
1430                 p_notification_flag => l_notification_flag,
1431                 p_notification_period => l_notification_period,
1432                 p_notification_period_uom => l_notification_period_uom,
1433                 x_return_status => x_return_status
1434             );
1435 
1436 
1437             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1438             THEN
1439                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1440                 RAISE fnd_api.g_exc_unexpected_error;
1441             END IF;
1442 
1443 
1444         ELSE
1445             l_notification_flag := task_rec.notification_flag;
1446             l_notification_period := task_rec.notification_period;
1447             l_notification_period_uom := task_rec.notification_period_uom;
1448         END IF;
1449 
1450 
1451       jtf_task_templates_pvt.update_task (
1452             p_api_version => 1.0,
1453             p_init_msg_list => fnd_api.g_false,
1454             p_commit => fnd_api.g_false,
1455             p_object_version_number => p_object_version_number,
1456             p_task_id => l_task_id,
1457             p_task_name => l_task_name,
1458             p_task_type_id => l_task_type_id,
1459             p_description => task_rec.description,
1460             p_task_status_id => l_task_status_id,
1461             p_task_priority_id => l_task_priority_id,
1462             p_duration => l_duration,
1463             p_duration_uom => l_duration_uom,
1464             p_planned_effort => l_planned_effort,
1465             p_planned_effort_uom => l_planned_effort_uom,
1466             p_private_flag => l_private_flag,
1467             p_publish_flag => l_publish_flag,
1468             p_restrict_closure_flag => l_restrict_closure_flag,
1469             p_multi_booked_flag => l_multi_booked_flag,
1470             p_milestone_flag => l_milestone_flag,
1471             p_holiday_flag => l_holiday_flag,
1472             p_billable_flag => l_billable_flag,
1473             p_notification_flag => l_notification_flag,
1474             p_notification_period => l_notification_period,
1475             p_notification_period_uom => l_notification_period_uom,
1476             p_alarm_start => l_alarm_start,
1477             p_alarm_start_uom => l_alarm_start_uom,
1478             p_alarm_on => l_alarm_on,
1479             p_alarm_count => l_alarm_count,
1480             p_alarm_interval => l_alarm_interval,
1481             p_alarm_interval_uom => l_alarm_interval_uom,
1482             x_return_status => x_return_status,
1483             x_msg_count => x_msg_count,
1484             x_msg_data => x_msg_data,
1485             p_attribute1 => task_rec.attribute1 ,
1486             p_attribute2 => task_rec.attribute2 ,
1487             p_attribute3 => task_rec.attribute3 ,
1488             p_attribute4 => task_rec.attribute4 ,
1489             p_attribute5 => task_rec.attribute5 ,
1490             p_attribute6 => task_rec.attribute6 ,
1491             p_attribute7 => task_rec.attribute7 ,
1492             p_attribute8 => task_rec.attribute8 ,
1493             p_attribute9 => task_rec.attribute9 ,
1494             p_attribute10 => task_rec.attribute10 ,
1495             p_attribute11 => task_rec.attribute11 ,
1496             p_attribute12 => task_rec.attribute12 ,
1497             p_attribute13 => task_rec.attribute13 ,
1498             p_attribute14 => task_rec.attribute14 ,
1499             p_attribute15 => task_rec.attribute15 ,
1500             p_attribute_category => task_rec.attribute_category,
1501             p_task_confirmation_status => task_rec.task_confirmation_status
1502         );
1503     EXCEPTION
1504         WHEN fnd_api.g_exc_unexpected_error
1505         THEN
1506             ROLLBACK TO update_task_pub;
1507             x_return_status := fnd_api.g_ret_sts_unexp_error;
1508         WHEN NO_DATA_FOUND
1509         THEN
1510             ROLLBACK TO update_task_pub;
1511             x_return_status := fnd_api.g_ret_sts_unexp_error;
1512         WHEN OTHERS
1513         THEN
1514             fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
1515             fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
1516             ROLLBACK TO update_task_pub;
1517             x_return_status := fnd_api.g_ret_sts_unexp_error;
1518     END;
1519 
1520        PROCEDURE update_task (
1521         p_api_version             IN       NUMBER,
1522         p_init_msg_list           IN       VARCHAR2 DEFAULT fnd_api.g_false,
1523         p_commit                  IN       VARCHAR2 DEFAULT fnd_api.g_false,
1524         p_object_version_number   IN     OUT NOCOPY NUMBER ,
1525         p_task_id                 IN       NUMBER DEFAULT fnd_api.g_miss_num,
1526         p_task_number             IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1527         p_task_group_id           IN       NUMBER DEFAULT fnd_api.g_miss_num,
1528         p_task_name               IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1529         p_task_type_name          IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1530         p_task_type_id            IN       NUMBER DEFAULT fnd_api.g_miss_num,
1531         p_description             IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1532         p_task_status_name        IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1533         p_task_status_id          IN       NUMBER DEFAULT fnd_api.g_miss_num,
1534         p_task_priority_name      IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1535         p_task_priority_id        IN       NUMBER DEFAULT fnd_api.g_miss_num,
1536         p_duration                IN       NUMBER DEFAULT fnd_api.g_miss_num,
1537         p_duration_uom            IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1538         p_planned_effort          IN       NUMBER DEFAULT fnd_api.g_miss_num,
1539         p_planned_effort_uom      IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1540         p_private_flag            IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1541         p_publish_flag            IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1542         p_restrict_closure_flag   IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1543         p_multi_booked_flag       IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1544         p_milestone_flag          IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1545         p_holiday_flag            IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1546         p_billable_flag           IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1547         p_notification_flag       IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1548         p_notification_period     IN       NUMBER DEFAULT fnd_api.g_miss_num,
1549         p_notification_period_uom IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1550         p_alarm_start             IN       NUMBER DEFAULT fnd_api.g_miss_num,
1551         p_alarm_start_uom         IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1552         p_alarm_on                IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1553         p_alarm_count             IN       NUMBER DEFAULT fnd_api.g_miss_num,
1554         p_alarm_interval          IN       NUMBER DEFAULT fnd_api.g_miss_num,
1555         p_alarm_interval_uom      IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
1556         x_return_status           OUT NOCOPY      VARCHAR2,
1557         x_msg_count               OUT NOCOPY      NUMBER,
1558         x_msg_data                OUT NOCOPY      VARCHAR2,
1559         p_attribute1              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1560         p_attribute2              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1561         p_attribute3              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1562         p_attribute4              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1563         p_attribute5              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1564         p_attribute6              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1565         p_attribute7              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1566         p_attribute8              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1567         p_attribute9              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1568         p_attribute10             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1569         p_attribute11             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1570         p_attribute12             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1571         p_attribute13             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1572         p_attribute14             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1573         p_attribute15             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
1574         p_attribute_category      IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char
1575    )
1576    IS
1577         l_api_version    CONSTANT NUMBER                       := 1.0;
1578         l_api_name       CONSTANT VARCHAR2(30)                 := 'UPDATE_TASK';
1579    BEGIN
1580       SAVEPOINT update_task_pub1;
1581       x_return_status := fnd_api.g_ret_sts_success;
1582 
1583       IF NOT fnd_api.compatible_api_call (
1584                 l_api_version,
1585                 p_api_version,
1586                 l_api_name,
1587                 g_pkg_name
1588              )
1589       THEN
1590          RAISE fnd_api.g_exc_unexpected_error;
1591       END IF;
1592 
1593       IF fnd_api.to_boolean (p_init_msg_list)
1594       THEN
1595          fnd_msg_pub.initialize;
1596       END IF;
1597 
1598       jtf_task_templates_pub.update_task (
1599 	    p_api_version		=> p_api_version,
1600 	    p_init_msg_list		=>  p_init_msg_list,
1601 	    p_commit			=>  p_commit,
1602 	    p_object_version_number	=> p_object_version_number,
1603 	    p_task_id			=> p_task_id,
1604 	    p_task_number 		=> p_task_number,
1605         p_task_group_id		=> p_task_group_id,
1606         p_task_name 		=> p_task_name,
1607         p_task_type_name	=> p_task_type_name,
1608         p_task_type_id		=> p_task_type_id,
1609         p_description		=> p_description,
1610         p_task_status_name	=> p_task_status_name,
1611 	    p_task_status_id		=> p_task_status_id,
1612         p_task_priority_name	=> p_task_priority_name,
1613 	    p_task_priority_id		=> p_task_priority_id,
1614         p_duration			=> p_duration,
1615 	    p_duration_uom		=> p_duration_uom,
1616 	    p_planned_effort		=> p_planned_effort,
1617 	    p_planned_effort_uom	=> p_planned_effort_uom,
1618         p_private_flag		=> p_private_flag,
1619 	    p_publish_flag		=> p_publish_flag,
1620 	    p_restrict_closure_flag	=> p_restrict_closure_flag,
1621         p_multi_booked_flag 	=> p_multi_booked_flag,
1622 	    p_milestone_flag		=> p_milestone_flag,
1623 	    p_holiday_flag		=> p_holiday_flag,
1624 	    p_billable_flag		=> p_billable_flag,
1625 	    p_notification_flag 	=> p_notification_flag,
1626 	    p_notification_period	=> p_notification_period,
1627 	    p_notification_period_uom	=> p_notification_period_uom,
1628 	    p_alarm_start		=> p_alarm_start,
1629 	    p_alarm_start_uom		=> p_alarm_start_uom,
1630 	    p_alarm_on			=> p_alarm_on,
1631 	    p_alarm_count		=> p_alarm_count,
1632        --p_alarm_fired_count 	=> p_alarm_fired_count,
1633 	    p_alarm_interval		=> p_alarm_interval,
1634 	    p_alarm_interval_uom	=> p_alarm_interval_uom,
1635         x_return_status		=> x_return_status,
1636 	    x_msg_count 		=> x_msg_count,
1637 	    x_msg_data			=> x_msg_data,
1638 	    p_attribute1		=> p_attribute1,
1639 	    p_attribute2		=> p_attribute2,
1640 	    p_attribute3		=> p_attribute3,
1641 	    p_attribute4		=> p_attribute4,
1642 	    p_attribute5		=> p_attribute5,
1643 	    p_attribute6		=> p_attribute6,
1644 	    p_attribute7		=> p_attribute7,
1645 	    p_attribute8		=> p_attribute8,
1646 	    p_attribute9		=> p_attribute9,
1647 	    p_attribute10		=> p_attribute10,
1648 	    p_attribute11		=> p_attribute11,
1649 	    p_attribute12		=> p_attribute12,
1650 	    p_attribute13		=> p_attribute13,
1651 	    p_attribute14		=> p_attribute14,
1652 	    p_attribute15		=> p_attribute15,
1653 	    p_attribute_category	=> p_attribute_category,
1654         p_task_confirmation_status => 'N'
1655       );
1656 
1657      IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1658      THEN
1659        x_return_status := fnd_api.g_ret_sts_unexp_error;
1660      RAISE fnd_api.g_exc_unexpected_error;
1661      END IF;
1662 
1663      IF fnd_api.to_boolean (p_commit)
1664      THEN
1665      COMMIT WORK;
1666      END IF;
1667 
1668      fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
1669    EXCEPTION
1670       WHEN fnd_api.g_exc_unexpected_error
1671       THEN
1672          ROLLBACK TO update_task_pub1;
1673          x_return_status := fnd_api.g_ret_sts_unexp_error;
1674          fnd_msg_pub.count_and_get (
1675             p_count => x_msg_count,
1676             p_data => x_msg_data
1677          );
1678       WHEN OTHERS
1679       THEN
1680          ROLLBACK TO update_task_pub1;
1681          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
1682          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
1683          x_return_status := fnd_api.g_ret_sts_unexp_error;
1684          fnd_msg_pub.count_and_get (
1685             p_count => x_msg_count,
1686             p_data => x_msg_data
1687          );
1688    END;
1689 
1690     PROCEDURE delete_task (
1691         p_api_version             IN       NUMBER,
1692         p_init_msg_list           IN       VARCHAR2 DEFAULT fnd_api.g_false,
1693         p_commit                  IN       VARCHAR2 DEFAULT fnd_api.g_false,
1694       p_object_version_number   IN     NUMBER ,
1695 
1696         p_task_id                 IN       NUMBER DEFAULT NULL,
1697         p_task_number             IN       VARCHAR2 DEFAULT NULL,
1698         x_return_status           OUT NOCOPY      VARCHAR2,
1699         x_msg_count               OUT NOCOPY      NUMBER,
1700         x_msg_data                OUT NOCOPY      VARCHAR2
1701     )
1702     is
1703         l_api_version    CONSTANT NUMBER                       := 1.0;
1704         l_api_name       CONSTANT VARCHAR2(30)                 := 'DELETE_TASK';
1705         l_task_id                 jtf_tasks_b.task_id%TYPE     := p_task_id;
1706         l_task_number             jtf_tasks_b.task_number%TYPE := p_task_number;
1707 BEGIN
1708 
1709         SAVEPOINT delete_task_pub;
1710 
1711         x_return_status := fnd_api.g_ret_sts_success;
1712 
1713         IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
1714         THEN
1715             RAISE fnd_api.g_exc_unexpected_error;
1716         END IF;
1717 
1718         IF fnd_api.to_boolean (p_init_msg_list)
1719         THEN
1720             fnd_msg_pub.initialize;
1721         END IF;
1722 
1723         IF (   l_task_id IS NULL
1724            AND l_task_number IS NULL)
1725         THEN
1726             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TEMP');
1727             fnd_msg_pub.add;
1728             x_return_status := fnd_api.g_ret_sts_unexp_error;
1729             RAISE fnd_api.g_exc_unexpected_error;
1730         ELSE
1731             jtf_task_utl.validate_task_template (
1732                 p_task_id => l_task_id,
1733                 p_task_number => l_task_number,
1734                 x_task_id => l_task_id,
1735                 x_return_status => x_return_status
1736             );
1737 
1738             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1739             THEN
1740                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1741                 RAISE fnd_api.g_exc_unexpected_error;
1742             END IF;
1743 
1744             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1745             THEN
1746                 x_return_status := fnd_api.g_ret_sts_unexp_error;
1747                 RAISE fnd_api.g_exc_unexpected_error;
1748             END IF;
1749         END IF;
1750 
1751         jtf_task_templates_pvt.delete_task (
1752             p_api_version => 1.0,
1753             p_init_msg_list => fnd_api.g_false,
1754             p_commit => fnd_api.g_false,
1755             p_object_version_number => p_object_version_number,
1756             p_task_id => l_task_id,
1757             x_return_status => x_return_status,
1758             x_msg_count => x_msg_count,
1759             x_msg_data => x_msg_data
1760         );
1761 
1762         IF fnd_api.to_boolean (p_commit)
1763         THEN
1764             COMMIT WORK;
1765         END IF;
1766 
1767         fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
1768     EXCEPTION
1769         WHEN fnd_api.g_exc_unexpected_error
1770         THEN
1771             ROLLBACK TO delete_task_pub;
1772             x_return_status := fnd_api.g_ret_sts_unexp_error;
1773             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
1774         WHEN OTHERS
1775         THEN
1776             fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
1777             fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
1778             ROLLBACK TO delete_task_pub;
1779             x_return_status := fnd_api.g_ret_sts_unexp_error;
1780             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
1781     END;
1782 
1783 
1784 END;