DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_TASK_CONFIRMATION_PUB

Source


1 PACKAGE BODY JTF_TASK_CONFIRMATION_PUB  AS
2 /* $Header: jtfptcfb.pls 120.2.12020000.3 2012/10/08 06:55:54 kramini ship $ */
3   g_pkg_name         CONSTANT VARCHAR2(30) := 'JTF_TASK_CONFIRMATION_PUB';
4 
5   /*Procedure used internally*/
6   PROCEDURE SET_COUNTER_STATUS  (
7     p_api_version	  IN	   NUMBER,
8     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
9     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
10     x_return_status	  OUT NOCOPY	   VARCHAR2,
11     x_msg_count       OUT NOCOPY       NUMBER,
12     x_msg_data	      OUT NOCOPY       VARCHAR2,
13     p_object_version_number   IN OUT NOCOPY  NUMBER,
14     p_task_id	      IN       NUMBER,
15     p_task_confirmation_status	IN  VARCHAR2,
16 	p_task_confirmation_counter	IN  NUMBER
17   )
18   IS
19      l_api_version   CONSTANT NUMBER
20                      := 1.0;
21      l_api_name      CONSTANT VARCHAR2(30)
22                      := 'SET_COUNTER_STATUS';
23   BEGIN
24 	SAVEPOINT SET_COUNTER_STATUS_1;
25 	x_return_status := fnd_api.g_ret_sts_success;
26 
27 	IF fnd_api.to_boolean (p_init_msg_list)
28 	THEN
29 		fnd_msg_pub.initialize;
30 	END IF;
31 
32 	IF NOT fnd_api.compatible_api_call (
33 				l_api_version,
34 				p_api_version,
35 				l_api_name,
36 				g_pkg_name
37 			 )
38 	THEN
39 		RAISE fnd_api.g_exc_unexpected_error;
40 	END IF;
41 
42 	SET_COUNTER_STATUS(
43 	  p_api_version => p_api_version
44 	, p_init_msg_list => p_init_msg_list
45 	, p_commit => p_commit
46 	, x_return_status => x_return_status
47 	, x_msg_count => x_msg_count
48 	, x_msg_data => x_msg_data
49 	, p_object_version_number => p_object_version_number
50 	, p_task_id => p_task_id
51 	, p_task_confirmation_status => p_task_confirmation_status
52 	, p_task_confirmation_counter => p_task_confirmation_counter
53 	, p_skip_events =>  fnd_api.g_false
54 	);
55 
56 	IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
57       x_return_status  := fnd_api.g_ret_sts_unexp_error;
58       RAISE fnd_api.g_exc_unexpected_error;
59     END IF;
60 
61     IF fnd_api.to_boolean(p_commit) THEN
62       COMMIT WORK;
63     END IF;
64 
65     fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
66   EXCEPTION
67     WHEN fnd_api.g_exc_unexpected_error THEN
68       ROLLBACK TO SET_COUNTER_STATUS_1;
69       x_return_status  := fnd_api.g_ret_sts_unexp_error;
70       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
71     WHEN OTHERS THEN
72       ROLLBACK TO SET_COUNTER_STATUS_1;
73       fnd_message.set_name('JTF', 'JTF_TASK_UNKNOWN_ERROR');
74       fnd_message.set_token('P_TEXT', SQLCODE || SQLERRM);
75       fnd_msg_pub.ADD;
76       x_return_status  := fnd_api.g_ret_sts_unexp_error;
77       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
78 
79   END SET_COUNTER_STATUS;
80 
81   PROCEDURE RESET_COUNTER  (
82     p_api_version	  IN	   NUMBER,
83     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
84     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
85     x_return_status	  OUT NOCOPY	   VARCHAR2,
86     x_msg_count       OUT NOCOPY       NUMBER,
87     x_msg_data	      OUT NOCOPY       VARCHAR2,
88     p_object_version_number   IN OUT NOCOPY  NUMBER,
89     p_task_id	      IN       NUMBER
90   )
91   IS
92      l_api_version   CONSTANT NUMBER
93                      := 1.0;
94      l_api_name      CONSTANT VARCHAR2(30)
95                      := 'RESET_COUNTER';
96   BEGIN
97     SAVEPOINT RESET_COUNTER;
98     x_return_status := fnd_api.g_ret_sts_success;
99 
100     IF fnd_api.to_boolean (p_init_msg_list)
101     THEN
102       fnd_msg_pub.initialize;
103     END IF;
104 
105     IF NOT fnd_api.compatible_api_call (
106                 l_api_version,
107                 p_api_version,
108                 l_api_name,
109                 g_pkg_name
110            )
111     THEN
112       RAISE fnd_api.g_exc_unexpected_error;
113     END IF;
114 
115     SET_COUNTER_STATUS
116     (
117       p_api_version           => p_api_version,
118       p_init_msg_list         => p_init_msg_list,
119       p_commit	              => p_commit,
120       x_return_status         => x_return_status,
121       x_msg_count	      => x_msg_count,
122       x_msg_data	      => x_msg_data,
123       p_object_version_number =>  p_object_version_number,
124       p_task_id	              => p_task_id,
125       p_task_confirmation_status  =>  jtf_task_utl.g_miss_char,
126       p_task_confirmation_counter => 0
127     );
128 
129       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
130       THEN
131          RAISE fnd_api.g_exc_unexpected_error;
132       END IF;
133 
134       IF fnd_api.to_boolean (p_commit)
135       THEN
136          COMMIT WORK;
137       END IF;
138 
139       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
140    EXCEPTION
141       WHEN fnd_api.g_exc_unexpected_error
142       THEN
143          ROLLBACK TO RESET_COUNTER;
144          x_return_status := fnd_api.G_RET_STS_UNEXP_ERROR;
145          fnd_msg_pub.count_and_get (
146             p_count => x_msg_count,
147             p_data => x_msg_data
148          );
149       WHEN fnd_api.g_exc_error
150       THEN
151          ROLLBACK TO RESET_COUNTER;
152          x_return_status := fnd_api.G_RET_STS_ERROR;
153          fnd_msg_pub.count_and_get (
154             p_count => x_msg_count,
155             p_data => x_msg_data
156          );
157       WHEN OTHERS
158       THEN
159          ROLLBACK TO RESET_COUNTER;
160          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
161          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
162          fnd_msg_pub.add;
163          x_return_status := fnd_api.g_ret_sts_unexp_error;
164          fnd_msg_pub.count_and_get (
165             p_count => x_msg_count,
166             p_data => x_msg_data
167          );
168 
169   END RESET_COUNTER;
170 
171   FUNCTION get_conf_counter (p_task_id IN NUMBER)
172       RETURN NUMBER
173    IS
174       l_conf_counter	NUMBER;
175    BEGIN
176      SELECT nvl(task_confirmation_counter, 0)
177      INTO   l_conf_counter
178      FROM   jtf_tasks_b
179      WHERE  task_id = p_task_id;
180 
181    RETURN l_conf_counter;
182    EXCEPTION
183       WHEN OTHERS
184       THEN
185       RETURN NULL;
186    END;
187 
188   PROCEDURE INCREASE_COUNTER  (
189     p_api_version	  IN	   NUMBER,
190     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
191     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
192     x_return_status	  OUT NOCOPY	   VARCHAR2,
193     x_msg_count       OUT NOCOPY       NUMBER,
194     x_msg_data	      OUT NOCOPY       VARCHAR2,
195     p_object_version_number   IN OUT NOCOPY  NUMBER,
196     p_task_id	      IN       NUMBER
197   )
198   IS
199      l_api_version   CONSTANT NUMBER
200                      := 1.0;
201      l_api_name      CONSTANT VARCHAR2(30)
202                      := 'RESET_COUNTER';
203      l_conf_counter	NUMBER;
204      l_ovn          NUMBER := p_object_version_number;
205 
206   BEGIN
207       SAVEPOINT INCREASE_COUNTER;
208       x_return_status := fnd_api.g_ret_sts_success;
209 
210       IF fnd_api.to_boolean (p_init_msg_list)
211       THEN
212          fnd_msg_pub.initialize;
213       END IF;
214 
215       IF NOT fnd_api.compatible_api_call (
216                 l_api_version,
217                 p_api_version,
218                 l_api_name,
219                 g_pkg_name
220              )
221       THEN
222          RAISE fnd_api.g_exc_unexpected_error;
223       END IF;
224 
225     l_conf_counter := get_conf_counter (p_task_id);
226 
227     SET_COUNTER_STATUS
228     (
229       p_api_version	      => p_api_version,
230       p_init_msg_list         => p_init_msg_list,
231       p_commit	              => p_commit,
232       x_return_status         => x_return_status,
233       x_msg_count	      => x_msg_count,
234       x_msg_data	      => x_msg_data,
235       p_object_version_number =>  p_object_version_number,
236       p_task_id	              => p_task_id,
237       p_task_confirmation_status  => jtf_task_utl.g_miss_char,
238       p_task_confirmation_counter => nvl(l_conf_counter,0) + 1
239     );
240 
241       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
242       THEN
243          RAISE fnd_api.g_exc_unexpected_error;
244       END IF;
245 
246       IF fnd_api.to_boolean (p_commit)
247       THEN
248          COMMIT WORK;
249       END IF;
250 
251       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
252    EXCEPTION
253       WHEN fnd_api.g_exc_unexpected_error
254       THEN
255          ROLLBACK TO INCREASE_COUNTER;
256          x_return_status := fnd_api.g_ret_sts_unexp_error;
257          fnd_msg_pub.count_and_get (
258             p_count => x_msg_count,
259             p_data => x_msg_data
260          );
261       WHEN fnd_api.g_exc_error
262       THEN
263          ROLLBACK TO INCREASE_COUNTER;
264          x_return_status := fnd_api.G_RET_STS_ERROR;
265          fnd_msg_pub.count_and_get (
266             p_count => x_msg_count,
267             p_data => x_msg_data
268          );
269       WHEN OTHERS
270       THEN
271          ROLLBACK TO INCREASE_COUNTER;
272          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
273          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
274          fnd_msg_pub.add;
275          x_return_status := fnd_api.g_ret_sts_unexp_error;
276          fnd_msg_pub.count_and_get (
277             p_count => x_msg_count,
278             p_data => x_msg_data
279          );
280 
281   END INCREASE_COUNTER;
282 
283    PROCEDURE DECREASE_COUNTER  (
284     p_api_version	  IN	   NUMBER,
285     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
286     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
287     x_return_status	  OUT NOCOPY	   VARCHAR2,
288     x_msg_count       OUT NOCOPY       NUMBER,
289     x_msg_data	      OUT NOCOPY       VARCHAR2,
290     p_object_version_number   IN OUT NOCOPY  NUMBER,
291     p_task_id	      IN       NUMBER
292   )
293   IS
294      l_api_version   CONSTANT NUMBER
295                      := 1.0;
296      l_api_name      CONSTANT VARCHAR2(30)
297                      := 'DECREASE_COUNTER';
298 
299      l_conf_counter	NUMBER;
300 
301   BEGIN
302       SAVEPOINT DECREASE_COUNTER;
303       x_return_status := fnd_api.g_ret_sts_success;
304 
305       IF fnd_api.to_boolean (p_init_msg_list)
306       THEN
307          fnd_msg_pub.initialize;
308       END IF;
309 
310       IF NOT fnd_api.compatible_api_call (
311                 l_api_version,
312                 p_api_version,
313                 l_api_name,
314                 g_pkg_name
315              )
316       THEN
317          RAISE fnd_api.g_exc_unexpected_error;
318       END IF;
319 
320      l_conf_counter := get_conf_counter (p_task_id);
321 
322      SET_COUNTER_STATUS
323     (
324     p_api_version	      => p_api_version,
325 	p_init_msg_list       => p_init_msg_list,
326 	p_commit	          => p_commit,
327     x_return_status       => x_return_status,
328 	x_msg_count	          => x_msg_count,
329 	x_msg_data	          => x_msg_data,
330     p_object_version_number =>  p_object_version_number,
331     p_task_id	          => p_task_id,
332     p_task_confirmation_status	=>  jtf_task_utl.g_miss_char,
333 	p_task_confirmation_counter => nvl(l_conf_counter,0) - 1
334     );
335 
336       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
337       THEN
338          RAISE fnd_api.g_exc_unexpected_error;
339       END IF;
340 
341       IF fnd_api.to_boolean (p_commit)
342       THEN
343          COMMIT WORK;
344       END IF;
345 
346       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
347    EXCEPTION
348       WHEN fnd_api.g_exc_unexpected_error
349       THEN
350          ROLLBACK TO DECREASE_COUNTER;
351          x_return_status := fnd_api.g_ret_sts_unexp_error;
352          fnd_msg_pub.count_and_get (
353             p_count => x_msg_count,
354             p_data => x_msg_data
355          );
356       WHEN fnd_api.g_exc_error
357       THEN
358          ROLLBACK TO DECREASE_COUNTER;
359          x_return_status := fnd_api.G_RET_STS_ERROR;
360          fnd_msg_pub.count_and_get (
361             p_count => x_msg_count,
362             p_data => x_msg_data
363          );
364       WHEN OTHERS
365       THEN
366          ROLLBACK TO DECREASE_COUNTER;
367          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
368          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
369          fnd_msg_pub.add;
370          x_return_status := fnd_api.g_ret_sts_unexp_error;
371          fnd_msg_pub.count_and_get (
372             p_count => x_msg_count,
373             p_data => x_msg_data
374          );
375 
376   END DECREASE_COUNTER;
377 
378   PROCEDURE CHANGE_COUNTER_SIGN  (
379     p_api_version	  IN	   NUMBER,
380     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
381     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
382     x_return_status	  OUT NOCOPY	   VARCHAR2,
383     x_msg_count       OUT NOCOPY       NUMBER,
384     x_msg_data	      OUT NOCOPY       VARCHAR2,
385     p_object_version_number   IN OUT NOCOPY  NUMBER,
386     p_task_id	      IN       NUMBER
387   )
388   IS
389      l_api_version   CONSTANT NUMBER
390                      := 1.0;
391      l_api_name      CONSTANT VARCHAR2(30)
392                      := 'CHANGE_COUNTER_SIGN';
393 
394      l_conf_counter	NUMBER;
395 
396   BEGIN
397       SAVEPOINT CHANGE_COUNTER_SIGN;
398       x_return_status := fnd_api.g_ret_sts_success;
399 
400       IF fnd_api.to_boolean (p_init_msg_list)
401       THEN
402          fnd_msg_pub.initialize;
403       END IF;
404 
405       IF NOT fnd_api.compatible_api_call (
406                 l_api_version,
407                 p_api_version,
408                 l_api_name,
409                 g_pkg_name
410              )
411       THEN
412          RAISE fnd_api.g_exc_unexpected_error;
413       END IF;
414 
415      l_conf_counter := get_conf_counter (p_task_id);
416 
417      SET_COUNTER_STATUS
418     (
419     p_api_version	      => p_api_version,
420 	p_init_msg_list       => p_init_msg_list,
421 	p_commit	          => p_commit,
422     x_return_status       => x_return_status,
423 	x_msg_count	          => x_msg_count,
424 	x_msg_data	          => x_msg_data,
425     p_object_version_number =>  p_object_version_number,
426     p_task_id	          => p_task_id,
427     p_task_confirmation_status	=>  jtf_task_utl.g_miss_char,
428 	p_task_confirmation_counter => nvl(l_conf_counter,0)*(-1)
429     );
430 
431       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
432       THEN
433          RAISE fnd_api.g_exc_unexpected_error;
434       END IF;
435 
436       IF fnd_api.to_boolean (p_commit)
437       THEN
438          COMMIT WORK;
439       END IF;
440 
441       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
442    EXCEPTION
443       WHEN fnd_api.g_exc_unexpected_error
444       THEN
445          ROLLBACK TO CHANGE_COUNTER_SIGN;
446          x_return_status := fnd_api.g_ret_sts_unexp_error;
447          fnd_msg_pub.count_and_get (
448             p_count => x_msg_count,
449             p_data => x_msg_data
450          );
451      WHEN fnd_api.g_exc_error
452       THEN
453          ROLLBACK TO CHANGE_COUNTER_SIGN;
454          x_return_status := fnd_api.G_RET_STS_ERROR;
455          fnd_msg_pub.count_and_get (
456             p_count => x_msg_count,
457             p_data => x_msg_data
458          );
459      WHEN OTHERS
460       THEN
461          ROLLBACK TO CHANGE_COUNTER_SIGN;
462          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
463          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
464          fnd_msg_pub.add;
465          x_return_status := fnd_api.g_ret_sts_unexp_error;
466          fnd_msg_pub.count_and_get (
467             p_count => x_msg_count,
468             p_data => x_msg_data
469          );
470 
471   END CHANGE_COUNTER_SIGN;
472 
473   PROCEDURE RESET_CONFIRMATION_STATUS   (
474     p_api_version	  IN	   NUMBER,
475     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
476     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
477     x_return_status	  OUT NOCOPY	   VARCHAR2,
478     x_msg_count       OUT NOCOPY       NUMBER,
479     x_msg_data	      OUT NOCOPY       VARCHAR2,
480     p_object_version_number   IN OUT NOCOPY  NUMBER,
481     p_task_id	      IN       NUMBER
482   )
483   IS
484      l_api_version   CONSTANT NUMBER
485                      := 1.0;
486      l_api_name      CONSTANT VARCHAR2(30)
487                      := 'SET_CONFIRMATION_REQUIRED';
488   BEGIN
489       SAVEPOINT RESET_CONFIRMATION_STATUS_1;
490       x_return_status := fnd_api.g_ret_sts_success;
491 
492       IF fnd_api.to_boolean (p_init_msg_list)
493       THEN
494          fnd_msg_pub.initialize;
495       END IF;
496 
497       IF NOT fnd_api.compatible_api_call (
498                 l_api_version,
499                 p_api_version,
500                 l_api_name,
501                 g_pkg_name
502              )
503       THEN
504          RAISE fnd_api.g_exc_unexpected_error;
505       END IF;
506 
507 	  RESET_CONFIRMATION_STATUS(
508 		p_api_version	      => p_api_version
509 	  ,	p_init_msg_list       => p_init_msg_list
510 	  ,	p_commit	          => p_commit
511 	  , x_return_status       => x_return_status
512 	  ,	x_msg_count	          => x_msg_count
513 	  ,	x_msg_data	          => x_msg_data
514 	  , p_object_version_number =>  p_object_version_number
515 	  , p_task_id	          => p_task_id
516 	  , p_skip_events         => fnd_api.g_false
517     );
518 
519       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
520       THEN
521          RAISE fnd_api.g_exc_unexpected_error;
522       END IF;
523 
524       IF fnd_api.to_boolean (p_commit)
525       THEN
526          COMMIT WORK;
527       END IF;
528 
529       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
530    EXCEPTION
531       WHEN fnd_api.g_exc_unexpected_error
532       THEN
533          ROLLBACK TO RESET_CONFIRMATION_STATUS_1;
534          x_return_status := fnd_api.g_ret_sts_unexp_error;
535          fnd_msg_pub.count_and_get (
536             p_count => x_msg_count,
537             p_data => x_msg_data
538          );
539      WHEN fnd_api.g_exc_error
540       THEN
541          ROLLBACK TO RESET_CONFIRMATION_STATUS_1;
542          x_return_status := fnd_api.G_RET_STS_ERROR;
543          fnd_msg_pub.count_and_get (
544             p_count => x_msg_count,
545             p_data => x_msg_data
546          );
547      WHEN OTHERS
548       THEN
549          ROLLBACK TO RESET_CONFIRMATION_STATUS_1;
550          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
551          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
552          fnd_msg_pub.add;
553          x_return_status := fnd_api.g_ret_sts_unexp_error;
554          fnd_msg_pub.count_and_get (
555             p_count => x_msg_count,
556             p_data => x_msg_data
557          );
558 
559   END RESET_CONFIRMATION_STATUS;
560 
561   PROCEDURE SET_CONFIRMATION_REQUIRED   (
562     p_api_version	  IN	   NUMBER,
563     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
564     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
565     x_return_status	  OUT NOCOPY	   VARCHAR2,
566     x_msg_count       OUT NOCOPY       NUMBER,
567     x_msg_data	      OUT NOCOPY       VARCHAR2,
568     p_object_version_number   IN OUT NOCOPY  NUMBER,
569     p_task_id	      IN       NUMBER
570   )
571   IS
572      l_api_version   CONSTANT NUMBER
573                      := 1.0;
574      l_api_name      CONSTANT VARCHAR2(30)
575                      := 'SET_CONFIRMATION_REQUIRED';
576 
577   BEGIN
578       SAVEPOINT SET_CONFIRMATION_REQUIRED_1;
579       x_return_status := fnd_api.g_ret_sts_success;
580 
581       IF fnd_api.to_boolean (p_init_msg_list)
582       THEN
583          fnd_msg_pub.initialize;
584       END IF;
585 
586       IF NOT fnd_api.compatible_api_call (
587                 l_api_version,
588                 p_api_version,
589                 l_api_name,
590                 g_pkg_name
591              )
592       THEN
593          RAISE fnd_api.g_exc_unexpected_error;
594       END IF;
595 
596 	  SET_CONFIRMATION_REQUIRED(
597 		p_api_version	      => p_api_version
598 	  ,	p_init_msg_list       => p_init_msg_list
599 	  ,	p_commit	          => p_commit
600 	  , x_return_status       => x_return_status
601 	  ,	x_msg_count	          => x_msg_count
602 	  ,	x_msg_data	          => x_msg_data
603 	  , p_object_version_number =>  p_object_version_number
604 	  , p_task_id	          => p_task_id
605 	  , p_skip_events         => fnd_api.g_false
606     );
607 
608 
609       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
610       THEN
611          RAISE fnd_api.g_exc_unexpected_error;
612       END IF;
613 
614       IF fnd_api.to_boolean (p_commit)
615       THEN
616          COMMIT WORK;
617       END IF;
618 
619       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
620    EXCEPTION
621       WHEN fnd_api.g_exc_unexpected_error
622       THEN
623          ROLLBACK TO SET_CONFIRMATION_REQUIRED_1;
624          x_return_status := fnd_api.g_ret_sts_unexp_error;
625          fnd_msg_pub.count_and_get (
626             p_count => x_msg_count,
627             p_data => x_msg_data
628          );
629      WHEN fnd_api.g_exc_error
630       THEN
631          ROLLBACK TO SET_CONFIRMATION_REQUIRED_1;
632          x_return_status := fnd_api.G_RET_STS_ERROR;
633          fnd_msg_pub.count_and_get (
634             p_count => x_msg_count,
635             p_data => x_msg_data
636          );
637      WHEN OTHERS
638       THEN
639          ROLLBACK TO SET_CONFIRMATION_REQUIRED_1;
640          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
641          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
642          fnd_msg_pub.add;
643          x_return_status := fnd_api.g_ret_sts_unexp_error;
644          fnd_msg_pub.count_and_get (
645             p_count => x_msg_count,
646             p_data => x_msg_data
647          );
648 
649   END SET_CONFIRMATION_REQUIRED;
650 
651   PROCEDURE SET_CONFIRMATION_CONFIRMED   (
652     p_api_version	  IN	   NUMBER,
653     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
654     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
655     x_return_status	  OUT NOCOPY	   VARCHAR2,
656     x_msg_count       OUT NOCOPY       NUMBER,
657     x_msg_data	      OUT NOCOPY       VARCHAR2,
658     p_object_version_number   IN OUT NOCOPY  NUMBER,
659     p_task_id	      IN       NUMBER
660   )
661   IS
662      l_api_version   CONSTANT NUMBER
663                      := 1.0;
664      l_api_name      CONSTANT VARCHAR2(30)
665                      := 'SET_CONFIRMATION_CONFIRMED';
666 
667 
668 
669   BEGIN
670       SAVEPOINT SET_CONFIRMATION_CONFIRMED_1;
671       x_return_status := fnd_api.g_ret_sts_success;
672 
673       IF fnd_api.to_boolean (p_init_msg_list)
674       THEN
675          fnd_msg_pub.initialize;
676       END IF;
677 
678       IF NOT fnd_api.compatible_api_call (
679                 l_api_version,
680                 p_api_version,
681                 l_api_name,
682                 g_pkg_name
683              )
684       THEN
685          RAISE fnd_api.g_exc_unexpected_error;
686       END IF;
687 
688      SET_CONFIRMATION_CONFIRMED(
689 		p_api_version	      => p_api_version
690 	  ,	p_init_msg_list       => p_init_msg_list
691 	  ,	p_commit	          => p_commit
692 	  , x_return_status       => x_return_status
693 	  ,	x_msg_count	          => x_msg_count
694 	  ,	x_msg_data	          => x_msg_data
695 	  , p_object_version_number =>  p_object_version_number
696 	  , p_task_id	          => p_task_id
697 	  , p_skip_events         => fnd_api.g_false
698     );
699 
700       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
701       THEN
702          RAISE fnd_api.g_exc_unexpected_error;
703       END IF;
704 
705       IF fnd_api.to_boolean (p_commit)
706       THEN
707          COMMIT WORK;
708       END IF;
709 
710       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
711    EXCEPTION
712       WHEN fnd_api.g_exc_unexpected_error
713       THEN
714          ROLLBACK TO SET_CONFIRMATION_CONFIRMED_1;
715          x_return_status := fnd_api.g_ret_sts_unexp_error;
716          fnd_msg_pub.count_and_get (
717             p_count => x_msg_count,
718             p_data => x_msg_data
719          );
720       WHEN fnd_api.g_exc_error
721       THEN
722          ROLLBACK TO SET_CONFIRMATION_CONFIRMED_1;
723          x_return_status := fnd_api.G_RET_STS_ERROR;
724          fnd_msg_pub.count_and_get (
725             p_count => x_msg_count,
726             p_data => x_msg_data
727          );
728       WHEN OTHERS
729       THEN
730          ROLLBACK TO SET_CONFIRMATION_CONFIRMED_1;
731          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
732          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
733          fnd_msg_pub.add;
734          x_return_status := fnd_api.g_ret_sts_unexp_error;
735          fnd_msg_pub.count_and_get (
736             p_count => x_msg_count,
737             p_data => x_msg_data
738          );
739 
740   END SET_CONFIRMATION_CONFIRMED;
741 
742    /* new overloaded procedures to handle new skip_events flag */
743    /*Procedure used internally*/
744   PROCEDURE UpdateTaskConfirmation(
745      p_object_version_number   IN OUT NOCOPY  NUMBER,
746      p_task_id	      IN       NUMBER,
747      p_task_confirmation_status	IN  VARCHAR2,
748      p_task_confirmation_counter	IN  NUMBER
749    )
750   IS
751     CURSOR c_task IS
752       SELECT DECODE(
753                p_task_confirmation_status
754              , jtf_task_utl.g_miss_char, task_confirmation_status
755              , p_task_confirmation_status
756              ) task_confirmation_status
757            , DECODE(
758                p_task_confirmation_counter
759              , jtf_task_utl.g_miss_number, task_confirmation_counter
760              , p_task_confirmation_counter
761              ) task_confirmation_counter
762            FROM jtf_tasks_b
763        WHERE task_id = p_task_id;
764 
765    tasks                          c_task%ROWTYPE;
766 
767   BEGIN
768 
769     jtf_tasks_pkg.lock_row(x_task_id => p_task_id , x_object_version_number => p_object_version_number);
770 
771     OPEN c_task;
772       FETCH c_task INTO tasks;
773       IF c_task%NOTFOUND THEN
774         CLOSE c_task;
775         fnd_message.set_name('JTF', 'JTF_TASK_INVALID_TASK_ID');
776         fnd_message.set_token('P_TASK_ID', p_task_id);
777         fnd_msg_pub.ADD;
778         RAISE fnd_api.g_exc_unexpected_error;
779       END IF;
780       CLOSE c_task;
781 
782     IF NOT p_task_confirmation_status IN('N', 'C', 'R', fnd_api.g_miss_char) THEN
783       fnd_message.set_name('JTF', 'JTF_TASK_CONSTRUCT_ID');
784       fnd_message.set_token('%P_SHITF_CONSTRUCT_ID', 'task confirmation status');
785       fnd_msg_pub.ADD;
786       RAISE fnd_api.g_exc_unexpected_error;
787     END IF;
788 
789 
790     Update jtf_tasks_b set
791       task_confirmation_status = tasks.task_confirmation_status,
792       task_confirmation_counter = tasks.task_confirmation_counter
793     where task_id=p_task_id;
794 
795 
796     IF (SQL%NOTFOUND)  THEN
797       RAISE NO_DATA_FOUND;
798     END IF;
799 
800   END UpdateTaskConfirmation;
801 
802   /*Procedure used internally*/
803   PROCEDURE SET_COUNTER_STATUS  (
804     p_api_version	  IN	   NUMBER,
805     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
806     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
807     x_return_status	  OUT NOCOPY	   VARCHAR2,
808     x_msg_count       OUT NOCOPY       NUMBER,
809     x_msg_data	      OUT NOCOPY       VARCHAR2,
810     p_object_version_number   IN OUT NOCOPY  NUMBER,
811     p_task_id	      IN       NUMBER,
812     p_task_confirmation_status	IN  VARCHAR2,
813     p_task_confirmation_counter	IN  NUMBER,
814     p_skip_events    IN VARCHAR2
815   )
816   IS
817      l_api_version   CONSTANT NUMBER
818                      := 1.0;
819      l_api_name      CONSTANT VARCHAR2(30)
820                      := 'SET_COUNTER_STATUS';
821 
822     Cursor C_Task Is
823            Select * from jtf_tasks_vl
824                     Where task_id=p_task_id;
825 
826     l_task  C_Task%Rowtype;
827 
828   BEGIN
829       SAVEPOINT SET_COUNTER_STATUS;
830       x_return_status := fnd_api.g_ret_sts_success;
831 
832       IF fnd_api.to_boolean (p_init_msg_list)
833       THEN
834          fnd_msg_pub.initialize;
835       END IF;
836 
837       IF NOT fnd_api.compatible_api_call (
838                 l_api_version,
839                 p_api_version,
840                 l_api_name,
841                 g_pkg_name
842              )
843       THEN
844          RAISE fnd_api.g_exc_unexpected_error;
845       END IF;
846 
847       IF NOT fnd_api.to_boolean (p_skip_events)
848       THEN
849 
850         Open C_Task;
851           Fetch C_Task Into l_task;
852         Close C_Task;
853 
854         jtf_tasks_pvt.update_task (
855            p_api_version               => 1.0,
856            p_init_msg_list             => fnd_api.g_false,
857            p_commit                    => fnd_api.g_false,
858            p_object_version_number     => p_object_version_number,
859            p_task_id                   => p_task_id,
860            p_enable_workflow	       => jtf_task_utl.g_miss_char,
861            p_abort_workflow	       => jtf_task_utl.g_miss_char,
862            p_change_mode		       => jtf_task_utl.g_miss_char,
863            p_free_busy_type   	       => jtf_task_utl.g_miss_char,
864            p_task_confirmation_status	 =>  p_task_confirmation_status,
865            p_task_confirmation_counter =>  p_task_confirmation_counter,
866            p_task_split_flag           => jtf_task_utl.g_miss_char,
867            -- p_child_position           => NULL,
868            -- p_child_sequence_num       => NULL,
869            x_return_status             => x_return_status,
870            x_msg_count                 => x_msg_count,
871            x_msg_data                  => x_msg_data,
872            p_location_id               => l_task.location_id
873          );
874 
875         IF NOT (x_return_status = fnd_api.g_ret_sts_success)
876         THEN
877            RAISE fnd_api.g_exc_unexpected_error;
878         END IF;
879 
880       ELSE
881          UpdateTaskConfirmation(
882            p_object_version_number     =>  p_object_version_number,
883            p_task_id                   =>  p_task_id,
884            p_task_confirmation_status  =>  p_task_confirmation_status,
885            p_task_confirmation_counter =>  p_task_confirmation_counter
886           );
887 
888       END IF;
889 
890       IF fnd_api.to_boolean (p_commit)
891       THEN
892          COMMIT WORK;
893       END IF;
894 
895       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
896    EXCEPTION
897       WHEN fnd_api.g_exc_unexpected_error
898       THEN
899          ROLLBACK TO SET_COUNTER_STATUS;
900          x_return_status := fnd_api.g_ret_sts_unexp_error;
901          fnd_msg_pub.count_and_get (
902             p_count => x_msg_count,
903             p_data => x_msg_data
904          );
905      WHEN fnd_api.g_exc_error
906       THEN
907          ROLLBACK TO SET_COUNTER_STATUS;
908          x_return_status := fnd_api.G_RET_STS_ERROR;
909          fnd_msg_pub.count_and_get (
910             p_count => x_msg_count,
911             p_data => x_msg_data
912          );
913      WHEN OTHERS
914       THEN
915          ROLLBACK TO SET_COUNTER_STATUS;
916          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
917          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
918          fnd_msg_pub.add;
919          x_return_status := fnd_api.g_ret_sts_unexp_error;
920          fnd_msg_pub.count_and_get (
921             p_count => x_msg_count,
922             p_data => x_msg_data
923          );
924 
925   END SET_COUNTER_STATUS;
926 
927 
928   PROCEDURE RESET_CONFIRMATION_STATUS   (
929     p_api_version	  IN	   NUMBER,
930     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
931     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
932     x_return_status	  OUT NOCOPY	   VARCHAR2,
933     x_msg_count       OUT NOCOPY       NUMBER,
934     x_msg_data	      OUT NOCOPY       VARCHAR2,
935     p_object_version_number   IN OUT NOCOPY  NUMBER,
936     p_task_id	      IN       NUMBER,
937     p_skip_events    IN VARCHAR2
938   )
939   IS
940      l_api_version   CONSTANT NUMBER
941                      := 1.0;
942      l_api_name      CONSTANT VARCHAR2(30)
943                      := 'RESET_CONFIRMATION_STATUS';
944 
945   BEGIN
946       SAVEPOINT RESET_CONFIRMATION_STATUS;
947       x_return_status := fnd_api.g_ret_sts_success;
948 
949       IF fnd_api.to_boolean (p_init_msg_list)
950       THEN
951          fnd_msg_pub.initialize;
952       END IF;
953 
954       IF NOT fnd_api.compatible_api_call (
955                 l_api_version,
956                 p_api_version,
957                 l_api_name,
958                 g_pkg_name
959              )
960       THEN
961          RAISE fnd_api.g_exc_unexpected_error;
962       END IF;
963 
964      SET_COUNTER_STATUS
965     (
966     p_api_version	      => p_api_version,
967 	p_init_msg_list       => p_init_msg_list,
968 	p_commit	          => p_commit,
969     x_return_status       => x_return_status,
970 	x_msg_count	          => x_msg_count,
971 	x_msg_data	          => x_msg_data,
972     p_object_version_number =>  p_object_version_number,
973     p_task_id	          => p_task_id,
974     p_task_confirmation_status	=> 'N',
975 	p_task_confirmation_counter => 0 ,
976     p_skip_events               => p_skip_events
977     );
978 
979       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
980       THEN
981          RAISE fnd_api.g_exc_unexpected_error;
982       END IF;
983 
984       IF fnd_api.to_boolean (p_commit)
985       THEN
986          COMMIT WORK;
987       END IF;
988 
989       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
990    EXCEPTION
991       WHEN fnd_api.g_exc_unexpected_error
992       THEN
993          ROLLBACK TO RESET_CONFIRMATION_STATUS;
994          x_return_status := fnd_api.g_ret_sts_unexp_error;
995          fnd_msg_pub.count_and_get (
996             p_count => x_msg_count,
997             p_data => x_msg_data
998          );
999      WHEN fnd_api.g_exc_error
1000       THEN
1001          ROLLBACK TO RESET_CONFIRMATION_STATUS;
1002          x_return_status := fnd_api.G_RET_STS_ERROR;
1003          fnd_msg_pub.count_and_get (
1004             p_count => x_msg_count,
1005             p_data => x_msg_data
1006          );
1007      WHEN OTHERS
1008       THEN
1009          ROLLBACK TO RESET_CONFIRMATION_STATUS;
1010          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
1011          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
1012          fnd_msg_pub.add;
1013          x_return_status := fnd_api.g_ret_sts_unexp_error;
1014          fnd_msg_pub.count_and_get (
1015             p_count => x_msg_count,
1016             p_data => x_msg_data
1017          );
1018 
1019   END RESET_CONFIRMATION_STATUS;
1020 
1021   PROCEDURE SET_CONFIRMATION_REQUIRED   (
1022     p_api_version	  IN	   NUMBER,
1023     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
1024     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
1025     x_return_status	  OUT NOCOPY	   VARCHAR2,
1026     x_msg_count       OUT NOCOPY       NUMBER,
1027     x_msg_data	      OUT NOCOPY       VARCHAR2,
1028     p_object_version_number   IN OUT NOCOPY  NUMBER,
1029     p_task_id	      IN       NUMBER,
1030     p_skip_events    IN VARCHAR2
1031   )
1032   IS
1033      l_api_version   CONSTANT NUMBER
1034                      := 1.0;
1035      l_api_name      CONSTANT VARCHAR2(30)
1036                      := 'SET_CONFIRMATION_REQUIRED';
1037 
1038    BEGIN
1039       SAVEPOINT SET_CONFIRMATION_REQUIRED;
1040       x_return_status := fnd_api.g_ret_sts_success;
1041 
1042       IF fnd_api.to_boolean (p_init_msg_list)
1043       THEN
1044          fnd_msg_pub.initialize;
1045       END IF;
1046 
1047       IF NOT fnd_api.compatible_api_call (
1048                 l_api_version,
1049                 p_api_version,
1050                 l_api_name,
1051                 g_pkg_name
1052              )
1053       THEN
1054          RAISE fnd_api.g_exc_unexpected_error;
1055       END IF;
1056 
1057     SET_COUNTER_STATUS
1058     (
1059     p_api_version	      => p_api_version,
1060 	p_init_msg_list       => p_init_msg_list,
1061 	p_commit	          => p_commit,
1062     x_return_status       => x_return_status,
1063 	x_msg_count	          => x_msg_count,
1064 	x_msg_data	          => x_msg_data,
1065     p_object_version_number =>  p_object_version_number,
1066     p_task_id	          => p_task_id,
1067     p_task_confirmation_status	=> 'R',
1068 	p_task_confirmation_counter => jtf_task_utl.g_miss_number,
1069     p_skip_events             => p_skip_events
1070     );
1071 
1072 
1073       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1074       THEN
1075          RAISE fnd_api.g_exc_unexpected_error;
1076       END IF;
1077 
1078       IF fnd_api.to_boolean (p_commit)
1079       THEN
1080          COMMIT WORK;
1081       END IF;
1082 
1083       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
1084    EXCEPTION
1085       WHEN fnd_api.g_exc_unexpected_error
1086       THEN
1087          ROLLBACK TO SET_CONFIRMATION_REQUIRED;
1088          x_return_status := fnd_api.g_ret_sts_unexp_error;
1089          fnd_msg_pub.count_and_get (
1090             p_count => x_msg_count,
1091             p_data => x_msg_data
1092          );
1093      WHEN fnd_api.g_exc_error
1094       THEN
1095          ROLLBACK TO SET_CONFIRMATION_REQUIRED;
1096          x_return_status := fnd_api.G_RET_STS_ERROR;
1097          fnd_msg_pub.count_and_get (
1098             p_count => x_msg_count,
1099             p_data => x_msg_data
1100          );
1101      WHEN OTHERS
1102       THEN
1103          ROLLBACK TO SET_CONFIRMATION_REQUIRED;
1104          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
1105          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
1106          fnd_msg_pub.add;
1107          x_return_status := fnd_api.g_ret_sts_unexp_error;
1108          fnd_msg_pub.count_and_get (
1109             p_count => x_msg_count,
1110             p_data => x_msg_data
1111          );
1112 
1113   END SET_CONFIRMATION_REQUIRED;
1114 
1115   PROCEDURE SET_CONFIRMATION_CONFIRMED   (
1116     p_api_version	  IN	   NUMBER,
1117     p_init_msg_list	  IN	   VARCHAR2 DEFAULT fnd_api.g_false,
1118     p_commit	      IN       VARCHAR2 DEFAULT fnd_api.g_false,
1119     x_return_status	  OUT NOCOPY	   VARCHAR2,
1120     x_msg_count       OUT NOCOPY       NUMBER,
1121     x_msg_data	      OUT NOCOPY       VARCHAR2,
1122     p_object_version_number   IN OUT NOCOPY  NUMBER,
1123     p_task_id	      IN       NUMBER,
1124     p_skip_events    IN VARCHAR2
1125   )
1126   IS
1127      l_api_version   CONSTANT NUMBER
1128                      := 1.0;
1129      l_api_name      CONSTANT VARCHAR2(30)
1130                      := 'SET_CONFIRMATION_CONFIRMED';
1131 
1132     l_conf_counter	NUMBER;
1133 
1134 
1135   BEGIN
1136       SAVEPOINT SET_CONFIRMATION_CONFIRMED;
1137       x_return_status := fnd_api.g_ret_sts_success;
1138 
1139       IF fnd_api.to_boolean (p_init_msg_list)
1140       THEN
1141          fnd_msg_pub.initialize;
1142       END IF;
1143 
1144       IF NOT fnd_api.compatible_api_call (
1145                 l_api_version,
1146                 p_api_version,
1147                 l_api_name,
1148                 g_pkg_name
1149              )
1150       THEN
1151          RAISE fnd_api.g_exc_unexpected_error;
1152       END IF;
1153 
1154      l_conf_counter := get_conf_counter (p_task_id);
1155 
1156      SET_COUNTER_STATUS
1157     (
1158       p_api_version	          => p_api_version,
1159       p_init_msg_list             => p_init_msg_list,
1160       p_commit	                  => p_commit,
1161       x_return_status             => x_return_status,
1162       x_msg_count	          => x_msg_count,
1163       x_msg_data	          => x_msg_data,
1164       p_object_version_number     =>  p_object_version_number,
1165       p_task_id	                  => p_task_id,
1166       p_task_confirmation_status  => 'C',
1167       p_task_confirmation_counter => nvl(l_conf_counter,0),
1168       p_skip_events               => p_skip_events
1169     );
1170 
1171       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
1172       THEN
1173          RAISE fnd_api.g_exc_unexpected_error;
1174       END IF;
1175 
1176       IF fnd_api.to_boolean (p_commit)
1177       THEN
1178          COMMIT WORK;
1179       END IF;
1180 
1181       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
1182    EXCEPTION
1183       WHEN fnd_api.g_exc_unexpected_error
1184       THEN
1185          ROLLBACK TO SET_CONFIRMATION_CONFIRMED;
1186          x_return_status := fnd_api.g_ret_sts_unexp_error;
1187          fnd_msg_pub.count_and_get (
1188             p_count => x_msg_count,
1189             p_data => x_msg_data
1190          );
1191       WHEN fnd_api.g_exc_error
1192       THEN
1193          ROLLBACK TO SET_CONFIRMATION_CONFIRMED;
1194          x_return_status := fnd_api.G_RET_STS_ERROR;
1195          fnd_msg_pub.count_and_get (
1196             p_count => x_msg_count,
1197             p_data => x_msg_data
1198          );
1199       WHEN OTHERS
1200       THEN
1201          ROLLBACK TO SET_CONFIRMATION_CONFIRMED;
1202          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
1203          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
1204          fnd_msg_pub.add;
1205          x_return_status := fnd_api.g_ret_sts_unexp_error;
1206          fnd_msg_pub.count_and_get (
1207             p_count => x_msg_count,
1208             p_data => x_msg_data
1209          );
1210 
1211   END SET_CONFIRMATION_CONFIRMED;
1212 
1213 
1214 END;