DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_TASK_DEPENDENCY_PUB

Source


1 PACKAGE BODY jtf_task_dependency_pub AS
2 /* $Header: jtfptkeb.pls 120.1 2005/07/02 00:58:52 appldev ship $ */
3     g_pkg_name    CONSTANT VARCHAR2(30) := 'JTF_TASK_DEPENDENCY_PUB';
4 
5     PROCEDURE create_task_dependency (
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_validation_level        IN       VARCHAR2 DEFAULT fnd_api.g_valid_level_full,
10         p_task_id                 IN       NUMBER DEFAULT NULL,
11         p_task_number             IN       VARCHAR2 DEFAULT NULL,
12         p_dependent_on_task_id    IN       NUMBER DEFAULT NULL,
13         p_dependent_on_task_number IN      VARCHAR2 DEFAULT NULL,
14         p_dependency_type_code    IN       VARCHAR2,
15         p_template_flag           IN       VARCHAR2 DEFAULT jtf_task_utl.g_no,
16         p_adjustment_time         IN       NUMBER DEFAULT NULL,
17         p_adjustment_time_uom     IN       VARCHAR2 DEFAULT NULL,
18         p_validated_flag          IN       VARCHAR2 DEFAULT jtf_task_utl.g_no,
19         x_dependency_id           OUT NOCOPY      NUMBER,
20         x_return_status           OUT NOCOPY      VARCHAR2,
21         x_msg_count               OUT NOCOPY      NUMBER,
22         x_msg_data                OUT NOCOPY      VARCHAR2,
23         p_attribute1              IN       VARCHAR2 DEFAULT null ,
24         p_attribute2              IN       VARCHAR2 DEFAULT null ,
25         p_attribute3              IN       VARCHAR2 DEFAULT null ,
26         p_attribute4              IN       VARCHAR2 DEFAULT null ,
27         p_attribute5              IN       VARCHAR2 DEFAULT null ,
28         p_attribute6              IN       VARCHAR2 DEFAULT null ,
29         p_attribute7              IN       VARCHAR2 DEFAULT null ,
30         p_attribute8              IN       VARCHAR2 DEFAULT null ,
31         p_attribute9              IN       VARCHAR2 DEFAULT null ,
32         p_attribute10             IN       VARCHAR2 DEFAULT null ,
33         p_attribute11             IN       VARCHAR2 DEFAULT null ,
34         p_attribute12             IN       VARCHAR2 DEFAULT null ,
35         p_attribute13             IN       VARCHAR2 DEFAULT null ,
36         p_attribute14             IN       VARCHAR2 DEFAULT null ,
37         p_attribute15             IN       VARCHAR2 DEFAULT null ,
38         p_attribute_category      IN       VARCHAR2 DEFAULT null
39     )
40     IS
41         l_api_version        CONSTANT NUMBER                                     := 1.0;
42         l_api_name           CONSTANT VARCHAR2(30)                               := 'CREATE_TASK_DEPENDENCY';
43         l_task_id                     jtf_tasks_b.task_id%TYPE                   := p_task_id;
44         l_task_number                 jtf_tasks_b.task_id%TYPE                   := p_task_number;
45         l_dependent_on_task_id        jtf_tasks_b.task_id%TYPE                   := p_dependent_on_task_id;
46         l_dependent_on_task_number    jtf_tasks_b.task_id%TYPE                   := p_dependent_on_task_number;
47         l_template_flag               jtf_task_depends.template_flag%TYPE        := p_template_flag;
48         l_dependency_type_code        jtf_task_depends.dependency_type_code%TYPE := p_dependency_type_code;
49         l_adjustment_time             jtf_task_depends.adjustment_time%TYPE      := p_adjustment_time;
50         l_adjustment_time_uom         jtf_task_depends.adjustment_time_uom%TYPE  := p_adjustment_time_uom;
51         x                             CHAR;
52     BEGIN
53         SAVEPOINT create_task_dependency_pub;
54         x_return_status := fnd_api.g_ret_sts_success;
55 
56         IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
57         THEN
58             RAISE fnd_api.g_exc_unexpected_error;
59         END IF;
60 
61         IF fnd_api.to_boolean (p_init_msg_list)
62         THEN
63             fnd_msg_pub.initialize;
64         END IF;
65 
66         --- Validate if the template flag is in the following fnd_api.g_true , fnd_api.g_false , NULL
67         jtf_task_utl.validate_flag (
68             p_api_name => l_api_name,
69             p_init_msg_list => fnd_api.g_false,
70             x_return_status => x_return_status,
71             p_flag_name => 'Template Flag',
72             p_flag_value => l_template_flag
73         );
74 
75         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
76         THEN
77             x_return_status := fnd_api.g_ret_sts_unexp_error;
78             RAISE fnd_api.g_exc_unexpected_error;
79         END IF;
80 
81 
82 
83         ---- The dependecy is between the tasks
84         ---- if the template flag is null, it assumes the dependency is between the tasks.
85         IF jtf_task_utl.to_boolean (l_template_flag)
86         THEN
87             jtf_task_utl.validate_task_template (
88                 x_return_status => x_return_status,
89                 p_task_id => l_task_id,
90                 p_task_number => l_task_number,
91                 x_task_id => l_task_id
92             );
93 
94             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
95             THEN
96                 x_return_status := fnd_api.g_ret_sts_unexp_error;
97                 RAISE fnd_api.g_exc_unexpected_error;
98             END IF;
99 
100             IF l_task_id IS NULL
101             THEN
102                 x_return_status := fnd_api.g_ret_sts_unexp_error;
103                 fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TEMP');
104                 fnd_message.set_token ('P_TASK_TEMPLATE_ID', l_task_id);
105                 fnd_msg_pub.add;
106                 RAISE fnd_api.g_exc_unexpected_error;
107             END IF;
108 
109             jtf_task_utl.validate_task_template (
110                 x_return_status => x_return_status,
111                 p_task_id => l_dependent_on_task_id,
112                 p_task_number => l_dependent_on_task_number,
113                 x_task_id => l_dependent_on_task_id
114             );
115 
116             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
117             THEN
118                 x_return_status := fnd_api.g_ret_sts_unexp_error;
119                 RAISE fnd_api.g_exc_unexpected_error;
120             END IF;
121 
122             IF l_dependent_on_task_id IS NULL
123             THEN
124                 x_return_status := fnd_api.g_ret_sts_unexp_error;
125                 fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TEMP');
126                 fnd_message.set_token ('P_TASK_TEMPLATE_ID', l_task_id);
127                 RAISE fnd_api.g_exc_unexpected_error;
128             END IF;
129         ELSE
130             jtf_task_utl.validate_task (
131                 x_return_status => x_return_status,
132                 p_task_id => l_task_id,
133                 p_task_number => l_task_number,
134                 x_task_id => l_task_id
135             );
136 
137             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
138             THEN
139                 x_return_status := fnd_api.g_ret_sts_unexp_error;
140                 RAISE fnd_api.g_exc_unexpected_error;
141             END IF;
142 
143             IF l_task_id IS NULL
144             THEN
145                 x_return_status := fnd_api.g_ret_sts_unexp_error;
146                 fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TASK');
147                 fnd_message.set_token ('P_TASK_TEMPLATE_ID', l_task_id);
148                 fnd_msg_pub.add;
149                 RAISE fnd_api.g_exc_unexpected_error;
150             END IF;
151 
152 
153             jtf_task_utl.validate_task (
154                 x_return_status => x_return_status,
155                 p_task_id => l_dependent_on_task_id,
156                 p_task_number => l_dependent_on_task_number,
157                 x_task_id => l_dependent_on_task_id
158             );
159 
160             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
161             THEN
162                 x_return_status := fnd_api.g_ret_sts_unexp_error;
163                 RAISE fnd_api.g_exc_unexpected_error;
164             END IF;
165 
166             IF l_dependent_on_task_id IS NULL
167             THEN
168                 x_return_status := fnd_api.g_ret_sts_unexp_error;
169                 fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TASK');
170                 fnd_message.set_token ('P_TASK_TEMPLATE_ID', l_task_id);
171                 RAISE fnd_api.g_exc_unexpected_error;
172             END IF;
173 
174         END IF;
175 
176         IF NOT jtf_task_utl.validate_dependency_code (l_dependency_type_code)
177         THEN
178             x_return_status := fnd_api.g_ret_sts_unexp_error;
179             RAISE fnd_api.g_exc_unexpected_error;
180         END IF;
181 
182         jtf_task_utl.validate_effort (x_return_status => x_return_status, p_effort => l_adjustment_time, p_effort_uom => l_adjustment_time_uom);
183 
184         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
185         THEN
186             x_return_status := fnd_api.g_ret_sts_unexp_error;
187             RAISE fnd_api.g_exc_unexpected_error;
188         END IF;
189 
190 
191 
192         jtf_task_dependency_pvt.create_task_dependency (
193             p_api_version => 1.0,
194             p_init_msg_list => fnd_api.g_false,
195             p_commit => fnd_api.g_false,
196             p_task_id => l_task_id,
197             p_dependent_on_task_id => l_dependent_on_task_id,
198             p_dependency_type_code => l_dependency_type_code,
199             p_template_flag => l_template_flag,
200             p_adjustment_time => l_adjustment_time,
201             p_adjustment_time_uom => l_adjustment_time_uom,
202             p_validated_flag => p_validated_flag,
203             x_dependency_id => x_dependency_id,
204             x_return_status => x_return_status,
205             x_msg_data => x_msg_data,
206             x_msg_count => x_msg_count,
207             p_attribute1 => p_attribute1 ,
208             p_attribute2 => p_attribute2 ,
209             p_attribute3 => p_attribute3 ,
210             p_attribute4 => p_attribute4 ,
211             p_attribute5 => p_attribute5 ,
212             p_attribute6 => p_attribute6 ,
213             p_attribute7 => p_attribute7 ,
214             p_attribute8 => p_attribute8 ,
215             p_attribute9 => p_attribute9 ,
216             p_attribute10 => p_attribute10 ,
217             p_attribute11 => p_attribute11 ,
218             p_attribute12 => p_attribute12 ,
219             p_attribute13 => p_attribute13 ,
220             p_attribute14 => p_attribute14 ,
221             p_attribute15 => p_attribute15,
222             p_attribute_category => p_attribute_category
223         );
224 
225         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
226         THEN
227             x_return_status := fnd_api.g_ret_sts_unexp_error;
228             RAISE fnd_api.g_exc_unexpected_error;
229         END IF;
230 
231         IF fnd_api.to_boolean (p_commit)
232         THEN
233             COMMIT WORK;
234         END IF;
235 
236         fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
237     EXCEPTION
238         WHEN fnd_api.g_exc_unexpected_error
239         THEN
240             ROLLBACK TO create_task_dependency_pub;
241             x_return_status := fnd_api.g_ret_sts_unexp_error;
242             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
243         WHEN OTHERS
244         THEN
245             ROLLBACK TO create_task_dependency_pub;
246             fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
247             fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
248             x_return_status := fnd_api.g_ret_sts_unexp_error;
249             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
250     END;
251 
252 /**********************************************************************************************************
253 ***********************************************************************************************************
254 ***********************************************************************************************************
255 ***********************************************************************************************************
256 ***********************************************************************************************************/
257    PROCEDURE lock_task_dependency (
258       p_api_version       IN       NUMBER,
259       p_init_msg_list     IN       VARCHAR2 DEFAULT fnd_api.g_false,
260       p_commit            IN       VARCHAR2 DEFAULT fnd_api.g_false,
261       p_dependency_id   IN       NUMBER,
262       p_object_version_number IN   NUMBER,
263       x_return_status     OUT NOCOPY      VARCHAR2,
264       x_msg_data          OUT NOCOPY      VARCHAR2,
265       x_msg_count         OUT NOCOPY      NUMBER
266    ) is
267         l_api_version    CONSTANT NUMBER                                 := 1.0;
268         l_api_name       CONSTANT VARCHAR2(30)                           := 'LOCK_TASK_DEPENDENCY';
269         l_task_contact_id         jtf_task_contacts.task_contact_id%TYPE;
270 
271         Resource_Locked exception ;
272 
273         PRAGMA EXCEPTION_INIT ( Resource_Locked , - 54 ) ;
274 
275    begin
276         SAVEPOINT lock_task_depends_pub;
277 
278         x_return_status := fnd_api.g_ret_sts_success;
279 
280         IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
281         THEN
282             RAISE fnd_api.g_exc_unexpected_error;
283         END IF;
284 
285         IF fnd_api.to_boolean (p_init_msg_list)
286         THEN
287             fnd_msg_pub.initialize;
288         END IF;
289 
290         x_return_status := fnd_api.g_ret_sts_success;
291 
292         jtf_task_depends_pkg.lock_row(
293             x_dependency_id => p_dependency_id ,
294             x_object_version_number => p_object_version_number  );
295 
296 
297         fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
298 
299     EXCEPTION
300        WHEN Resource_Locked then
301             ROLLBACK TO lock_task_depends_pub;
302             fnd_message.set_name ('JTF', 'JTF_TASK_RESOURCE_LOCKED');
303             fnd_message.set_token ('P_LOCKED_RESOURCE', 'Contacts');
304             x_return_status := fnd_api.g_ret_sts_unexp_error;
305             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
306 
307         WHEN fnd_api.g_exc_unexpected_error
308         THEN
309             ROLLBACK TO lock_task_depends_pub;
310             x_return_status := fnd_api.g_ret_sts_unexp_error;
311             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
312         WHEN OTHERS
313         THEN
314             ROLLBACK TO lock_task_depends_pub;
315             fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
316             fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
317             x_return_status := fnd_api.g_ret_sts_unexp_error;
318             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
319     END;
320 /**********************************************************************************************************
321 ***********************************************************************************************************
322 ***********************************************************************************************************
323 ***********************************************************************************************************
324 ***********************************************************************************************************/
325     PROCEDURE update_task_dependency (
326         p_api_version             IN       NUMBER,
327         p_init_msg_list           IN       VARCHAR2 DEFAULT fnd_api.g_false,
328         p_commit                  IN       VARCHAR2 DEFAULT fnd_api.g_false,
329         p_object_version_number   in  out nocopy  number ,
330         p_dependency_id           IN       NUMBER,
331         p_task_id                 IN       NUMBER DEFAULT fnd_api.g_miss_num,
332         p_dependent_on_task_id    IN       NUMBER DEFAULT fnd_api.g_miss_num,
333         p_dependent_on_task_number IN      VARCHAR2 DEFAULT fnd_api.g_miss_char,
337         p_validated_flag          IN       VARCHAR2 DEFAULT jtf_task_utl.g_no,
334         p_dependency_type_code    IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
335         p_adjustment_time         IN       NUMBER DEFAULT fnd_api.g_miss_num,
336         p_adjustment_time_uom     IN       VARCHAR2 DEFAULT fnd_api.g_miss_char,
338         x_return_status           OUT NOCOPY      VARCHAR2,
339         x_msg_count               OUT NOCOPY      NUMBER,
340         x_msg_data                OUT NOCOPY      VARCHAR2,
341         p_attribute1              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
342         p_attribute2              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
343         p_attribute3              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
344         p_attribute4              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
345         p_attribute5              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
346         p_attribute6              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
347         p_attribute7              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
348         p_attribute8              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
349         p_attribute9              IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
350         p_attribute10             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
351         p_attribute11             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
352         p_attribute12             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
353         p_attribute13             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
354         p_attribute14             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
355         p_attribute15             IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char,
356         p_attribute_category      IN       VARCHAR2 DEFAULT jtf_task_utl.g_miss_char
357     )
358     IS
359         l_api_version        CONSTANT NUMBER                                     := 1.0;
360         l_api_name           CONSTANT VARCHAR2(30)                               := 'UPDATE_TASK_DEPENDENCY';
361         l_dependency_id               jtf_task_depends.dependency_id%TYPE        := p_dependency_id;
362         l_task_id                     jtf_tasks_b.task_id%TYPE;
363         l_dependent_on_task_id        jtf_tasks_b.task_id%TYPE                   := p_dependent_on_task_id;
364         l_dependent_on_task_number    jtf_tasks_b.task_number%TYPE               := p_dependent_on_task_number;
365         l_dependency_type_code        jtf_task_depends.dependency_type_code%TYPE := p_dependency_type_code;
366         l_adjustment_time             jtf_task_depends.adjustment_time%TYPE      := p_adjustment_time;
367         l_adjustment_time_uom         jtf_task_depends.adjustment_time_uom%TYPE  := p_adjustment_time_uom;
368         l_template_flag               jtf_task_depends.template_flag%TYPE;
369         x                             CHAR;
370 
371         CURSOR c_jtf_task_depends
372         IS
373             SELECT
374                    DECODE (p_task_id, fnd_api.g_miss_num, task_id, p_task_id) task_id,
375                    DECODE (p_dependent_on_task_id, fnd_api.g_miss_num, dependent_on_task_id, p_dependent_on_task_id) dependent_on_task_id,
376                    DECODE (p_dependency_type_code, fnd_api.g_miss_char, dependency_type_code, p_dependency_type_code) dependency_type_code,
377                    template_flag,
378                    DECODE (p_adjustment_time, fnd_api.g_miss_num, adjustment_time, p_adjustment_time) adjustment_time,
379                    DECODE (p_adjustment_time_uom, fnd_api.g_miss_char, adjustment_time_uom, p_adjustment_time_uom) adjustment_time_uom,
380 decode( p_attribute1 , fnd_api.g_miss_char , attribute1 , p_attribute1 )  attribute1  ,
381 decode( p_attribute2 , fnd_api.g_miss_char , attribute2 , p_attribute2 )  attribute2  ,
382 decode( p_attribute3 , fnd_api.g_miss_char , attribute3 , p_attribute3 )  attribute3  ,
383 decode( p_attribute4 , fnd_api.g_miss_char , attribute4 , p_attribute4 )  attribute4  ,
384 decode( p_attribute5 , fnd_api.g_miss_char , attribute5 , p_attribute5 )  attribute5  ,
385 decode( p_attribute6 , fnd_api.g_miss_char , attribute6 , p_attribute6 )  attribute6  ,
386 decode( p_attribute7 , fnd_api.g_miss_char , attribute7 , p_attribute7 )  attribute7  ,
387 decode( p_attribute8 , fnd_api.g_miss_char , attribute8 , p_attribute8 )  attribute8  ,
388 decode( p_attribute9 , fnd_api.g_miss_char , attribute9 , p_attribute9 )  attribute9  ,
389 decode( p_attribute10 , fnd_api.g_miss_char , attribute10 , p_attribute10 )  attribute10  ,
390 decode( p_attribute11 , fnd_api.g_miss_char , attribute11 , p_attribute11 )  attribute11  ,
391 decode( p_attribute12 , fnd_api.g_miss_char , attribute12 , p_attribute12 )  attribute12  ,
392 decode( p_attribute13 , fnd_api.g_miss_char , attribute13 , p_attribute13 )  attribute13  ,
393 decode( p_attribute14 , fnd_api.g_miss_char , attribute14 , p_attribute14 )  attribute14  ,
394 decode( p_attribute15 , fnd_api.g_miss_char , attribute15 , p_attribute15 )  attribute15 ,
395 decode( p_attribute_category,fnd_api.g_miss_char,attribute_category,p_attribute_category) attribute_category
396               FROM jtf_task_depends
397              WHERE dependency_id = p_dependency_id;
398 
399         task_depends                  c_jtf_task_depends%ROWTYPE;
400     BEGIN
401 
402         SAVEPOINT update_task_dependency_pub;
403         x_return_status := fnd_api.g_ret_sts_success;
404 
405         IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
406         THEN
407             RAISE fnd_api.g_exc_unexpected_error;
408         END IF;
409 
410         IF fnd_api.to_boolean (p_init_msg_list)
411         THEN
412             fnd_msg_pub.initialize;
416         IF (l_dependency_id IS NULL)
413         END IF;
414 
415         -- check if the dependency is invalid or null.
417         THEN
418             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_DEPENDENCY_ID');
419             fnd_msg_pub.add;
420             x_return_status := fnd_api.g_ret_sts_unexp_error;
421             RAISE fnd_api.g_exc_unexpected_error;
422         END IF;
423 
424         OPEN c_jtf_task_depends;
425         FETCH c_jtf_task_depends INTO task_depends;
426 
427         IF c_jtf_task_depends%NOTFOUND
428         THEN
429             fnd_message.set_name ('JTF', 'JTF_TASK_INVALID_DEPENDS_ID');
430             fnd_message.set_token ('P_DEPENDENCY_ID', p_dependency_id);
431             fnd_msg_pub.add;
432             x_return_status := fnd_api.g_ret_sts_unexp_error;
433             RAISE fnd_api.g_exc_unexpected_error;
434         END IF;
435 
436         --- if template_flag is NOT input, then assign it the value from the table.
437         l_template_flag := task_depends.template_flag;
438         l_task_id := task_depends.task_id;
439 
440         --------------------
441         --------------------
442         IF NOT (   p_dependent_on_task_id = fnd_api.g_miss_num
443                AND p_dependent_on_task_number = fnd_api.g_miss_char)
444         THEN
445             SELECT DECODE (p_dependent_on_task_id, fnd_api.g_miss_num, NULL, p_dependent_on_task_id)
446               INTO l_dependent_on_task_id
447               FROM dual;
448             SELECT DECODE (p_dependent_on_task_number, fnd_api.g_miss_char, NULL, p_dependent_on_task_number)
449               INTO l_dependent_on_task_number
450               FROM dual;
451 
452             IF NOT (l_template_flag = fnd_api.g_true)
453             THEN
454                 ---- Here the task id is assigned null, if the task id is NOT input,
455                 ---  because then task number could be input.
456 
457                 --- This means task id is being updated.
458                 jtf_task_utl.validate_task (
459                     x_return_status => x_return_status,
460                     p_task_id => l_dependent_on_task_id,
461                     p_task_number => l_dependent_on_task_number,
462                     x_task_id => l_dependent_on_task_id
463                 );
464             ELSE
465                 jtf_task_utl.validate_task_template (
466                     x_return_status => x_return_status,
467                     p_task_id => l_dependent_on_task_id,
468                     p_task_number => l_dependent_on_task_number,
469                     x_task_id => l_dependent_on_task_id
470                 );
471             END IF;
472 
473             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
474             THEN
475                 x_return_status := fnd_api.g_ret_sts_unexp_error;
476                 RAISE fnd_api.g_exc_unexpected_error;
477             END IF;
478 
479             IF l_dependent_on_task_id IS NULL
480             THEN
481                 x_return_status := fnd_api.g_ret_sts_unexp_error;
482                 fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_TASK');
483                 fnd_msg_pub.add;
484                 RAISE fnd_api.g_exc_unexpected_error;
485             END IF;
486         ELSE
487             l_dependent_on_task_id := task_depends.dependent_on_task_id;
488         END IF;
489 
490         -------------------
491         -------------------
492         IF l_dependency_type_code = fnd_api.g_miss_char
493         THEN
494             --- if the dependency type code is supplied then
495             --- check if it exists
496             l_dependency_type_code := task_depends.dependency_type_code;
497         ELSE
498             IF NOT jtf_task_utl.validate_dependency_code (l_dependency_type_code)
499             THEN
500                 x_return_status := fnd_api.g_ret_sts_unexp_error;
501                 RAISE fnd_api.g_exc_unexpected_error;
502             END IF;
503         END IF;
504 
505         jtf_task_dependency_pvt.update_task_dependency (
506             p_api_version => 1.0,
507             p_init_msg_list => fnd_api.g_false,
508             p_commit => fnd_api.g_false,
509             p_object_version_number => p_object_version_number,
510             p_dependency_id => p_dependency_id,
511             p_task_id => l_task_id,
512             p_dependent_on_task_id => l_dependent_on_task_id,
513             p_dependency_type_code => l_dependency_type_code,
514             p_adjustment_time => l_adjustment_time,
515             p_adjustment_time_uom => l_adjustment_time_uom,
516             p_validated_flag => p_validated_flag,
517             x_return_status => x_return_status,
518             x_msg_data => x_msg_data,
519             x_msg_count => x_msg_count,
520             p_attribute1 => task_depends.attribute1 ,
521             p_attribute2 => task_depends.attribute2 ,
522             p_attribute3 => task_depends.attribute3 ,
523             p_attribute4 => task_depends.attribute4 ,
524             p_attribute5 => task_depends.attribute5 ,
525             p_attribute6 => task_depends.attribute6 ,
526             p_attribute7 => task_depends.attribute7 ,
527             p_attribute8 => task_depends.attribute8 ,
528             p_attribute9 => task_depends.attribute9 ,
529             p_attribute10 => task_depends.attribute10 ,
530             p_attribute11 => task_depends.attribute11 ,
534             p_attribute15 => task_depends.attribute15 ,
531             p_attribute12 => task_depends.attribute12 ,
532             p_attribute13 => task_depends.attribute13 ,
533             p_attribute14 => task_depends.attribute14 ,
535             p_attribute_category => task_depends.attribute_category
536         );
537 
538         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
539         THEN
540             x_return_status := fnd_api.g_ret_sts_unexp_error;
541             RAISE fnd_api.g_exc_unexpected_error;
542         END IF;
543 
544         IF fnd_api.to_boolean (p_commit)
545         THEN
546             COMMIT WORK;
547         END IF;
548 
549         IF c_jtf_task_depends%ISOPEN
550         THEN
551             CLOSE c_jtf_task_depends;
552         END IF;
553 
554         fnd_msg_pub.count_and_get (
555         p_count => x_msg_count,
556         p_data => x_msg_data);
557     EXCEPTION
558         WHEN fnd_api.g_exc_unexpected_error
559         THEN
560             ROLLBACK TO update_task_dependency_pub;
561 
562             IF c_jtf_task_depends%ISOPEN
563             THEN
564                 CLOSE c_jtf_task_depends;
565             END IF;
566 
567             x_return_status := fnd_api.g_ret_sts_unexp_error;
568             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
569         WHEN OTHERS
570         THEN
571             IF c_jtf_task_depends%ISOPEN
572             THEN
573                 CLOSE c_jtf_task_depends;
574             END IF;
575 
576             ROLLBACK TO update_task_dependency_pub;
577             fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
578             fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
579             x_return_status := fnd_api.g_ret_sts_unexp_error;
580             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
581     END;
582 
583     PROCEDURE delete_task_dependency (
584         p_api_version             IN       NUMBER,
585         p_init_msg_list           IN       VARCHAR2 DEFAULT fnd_api.g_false,
586         p_commit                  IN       VARCHAR2 DEFAULT fnd_api.g_false,
587         p_object_version_number   in  number ,
588         p_dependency_id           IN       NUMBER,
589         x_return_status           OUT NOCOPY      VARCHAR2,
590         x_msg_count               OUT NOCOPY      NUMBER,
591         x_msg_data                OUT NOCOPY      VARCHAR2
592     )
593     IS
594         l_api_version    CONSTANT NUMBER                              := 1.0;
595         l_api_name       CONSTANT VARCHAR2(30)                        := 'DELETE_TASK_DEPENDENCY';
596         l_return_status           VARCHAR2(1)                         := fnd_api.g_ret_sts_success;
597         l_msg_data                VARCHAR2(2000);
598         l_msg_count               NUMBER;
599         l_dependency_id           jtf_task_depends.dependency_id%TYPE := p_dependency_id;
600 
601         CURSOR c_jtf_task_depends
602         IS
603             SELECT 1
604               FROM jtf_task_depends
605              WHERE dependency_id = l_dependency_id;
606 
607         x                         CHAR;
608     BEGIN
609 
610         SAVEPOINT delete_task_dependency_pub;
611         x_return_status := fnd_api.g_ret_sts_success;
612 
613         IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
614         THEN
615             RAISE fnd_api.g_exc_unexpected_error;
616         END IF;
617 
618         IF fnd_api.to_boolean (p_init_msg_list)
619         THEN
620             fnd_msg_pub.initialize;
621         END IF;
622 
623 
624 
625         ---- if the dependency is null, then it is an error
626         IF (l_dependency_id IS NULL)
627         THEN
628 
629             fnd_message.set_name ('JTF', 'JTF_TASK_MISSING_DEPENDS');
630             fnd_msg_pub.add;
631             x_return_status := fnd_api.g_ret_sts_unexp_error;
632             RAISE fnd_api.g_exc_unexpected_error;
633         END IF;
634 
635         ---- if the dependency is NOT valid, then it is an error
636         OPEN c_jtf_task_depends;
637         FETCH c_jtf_task_depends INTO x;
638 
639         IF c_jtf_task_depends%NOTFOUND
640         THEN
641             fnd_message.set_name ('JTF', 'JTF_TASK_INVALID_DEPENDS_ID');
642             fnd_message.set_token('P_DEPENDENCY_ID',P_DEPENDENCY_ID);
643             fnd_msg_pub.add;
644             x_return_status := fnd_api.g_ret_sts_unexp_error;
645             RAISE fnd_api.g_exc_unexpected_error;
646         ELSE
647             jtf_task_dependency_pvt.delete_task_dependency (
648                 p_api_version => l_api_version,
649                 p_init_msg_list => fnd_api.g_false,
650                 p_commit => fnd_api.g_false,
651                 p_object_version_number => p_object_version_number,
652                 p_dependency_id => l_dependency_id,
653                 x_return_status => l_return_status,
654                 x_msg_count => l_msg_count,
655                 x_msg_data => l_msg_data
656             );
657 
658         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
659         THEN
660             x_return_status := fnd_api.g_ret_sts_unexp_error;
661             RAISE fnd_api.g_exc_unexpected_error;
662         END IF;
663 
664         END IF;
665 
666         IF c_jtf_task_depends%ISOPEN
667         THEN
668             CLOSE c_jtf_task_depends;
669         END IF;
670 
671         IF fnd_api.to_boolean (p_commit)
672         THEN
673             COMMIT WORK;
674         END IF;
675 
676         fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
677     EXCEPTION
678         WHEN fnd_api.g_exc_error
679         THEN
680 
681 
682             ROLLBACK TO delete_task_dependency_pub;
683 
684             IF c_jtf_task_depends%ISOPEN
685             THEN
686                 CLOSE c_jtf_task_depends;
687             END IF;
688 
689             x_return_status := fnd_api.g_ret_sts_error;
690             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
691         WHEN fnd_api.g_exc_unexpected_error
692         THEN
693 
694 
695             ROLLBACK TO delete_task_dependency_pub;
696 
697             IF c_jtf_task_depends%ISOPEN
698             THEN
699                 CLOSE c_jtf_task_depends;
700             END IF;
701 
702             x_return_status := fnd_api.g_ret_sts_unexp_error;
703             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
704         WHEN OTHERS
705         THEN
706 
707             ROLLBACK TO delete_task_dependency_pub;
708 
709             IF c_jtf_task_depends%ISOPEN
710             THEN
711                 CLOSE c_jtf_task_depends;
712             END IF;
713 
714             fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
715             fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
716             x_return_status := fnd_api.g_ret_sts_unexp_error;
717             fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
718     END;   -- Delete Task dependency
719 END;