DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_DRA_PVT

Source


1 PACKAGE BODY OKL_DRA_PVT AS
2 /* $Header: OKLSDRAB.pls 120.3 2007/05/03 18:22:29 cklee noship $ */
3   ---------------------------------------------------------------------------
4   -- PROCEDURE load_error_tbl
5   ---------------------------------------------------------------------------
6 
7   PROCEDURE load_error_tbl (
8     px_error_rec                   IN OUT NOCOPY  OKL_API.ERROR_REC_TYPE,
9     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
10     j                              INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
11     last_msg_idx                   INTEGER := FND_MSG_PUB.COUNT_MSG;
12     l_msg_idx                      INTEGER := FND_MSG_PUB.G_NEXT;
13 
14   BEGIN
15 
16     -- FND_MSG_PUB has a small error in it.  If we call FND_MSG_PUB.COUNT_AND_GET before
17 
18     -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
19 
20     -- message stack gets set to 1.  This makes sense until we call FND_MSG_PUB.GET which
21 
22     -- automatically increments the index by 1, (making it 2), however, when the GET function
23 
24     -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
25 
26     -- message 2.  To circumvent this problem, check the amount of messages and compensate.
27 
28     -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
29 
30     -- will only update the index variable when 1 and only 1 message is on the stack.
31 
32     IF (last_msg_idx = 1) THEN
33 
34       l_msg_idx := FND_MSG_PUB.G_FIRST;
35 
36     END IF;
37 
38     LOOP
39 
40       fnd_msg_pub.get(
41 
42             p_msg_index     => l_msg_idx,
43 
44             p_encoded       => fnd_api.g_false,
45 
46             p_data          => px_error_rec.msg_data,
47 
48             p_msg_index_out => px_error_rec.msg_count);
49 
50       px_error_tbl(j) := px_error_rec;
51 
52       j := j + 1;
53 
54     EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
55 
56     END LOOP;
57 
58   END load_error_tbl;
59 
60   ---------------------------------------------------------------------------
61 
62   -- FUNCTION find_highest_exception
63 
64   ---------------------------------------------------------------------------
65 
66   -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
67 
68   -- in a OKL_API.ERROR_TBL_TYPE, and returns it.
69 
70   FUNCTION find_highest_exception(
71 
72     p_error_tbl                    IN OKL_API.ERROR_TBL_TYPE
73 
74   ) RETURN VARCHAR2 IS
75 
76     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
77 
78     i                              INTEGER := 1;
79 
80   BEGIN
81 
82     IF (p_error_tbl.COUNT > 0) THEN
83 
84       i := p_error_tbl.FIRST;
85 
86       LOOP
87 
88         IF (p_error_tbl(i).error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
89 
90           IF (l_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
91 
92             l_return_status := p_error_tbl(i).error_type;
93 
94           END IF;
95 
96         END IF;
97 
98         EXIT WHEN (i = p_error_tbl.LAST);
99 
100         i := p_error_tbl.NEXT(i);
101 
102       END LOOP;
103 
104     END IF;
105 
106     RETURN(l_return_status);
107 
108   END find_highest_exception;
109 
110   ---------------------------------------------------------------------------
111 
112   -- FUNCTION get_seq_id
113 
114   ---------------------------------------------------------------------------
115 
116   FUNCTION get_seq_id RETURN NUMBER IS
117 
118     l_pk_value NUMBER;
119 
120 --start:|           May 3, 2007 cklee -- fixed sequence issue                        |                                                                 |
121 --    CURSOR c_pk_csr IS SELECT okl_disb_rules_all_b_s.NEXTVAL FROM DUAL;
122     CURSOR c_pk_csr IS SELECT okl_disb_rules_s.NEXTVAL FROM DUAL;
123 --end:|           May 3, 2007 cklee -- fixed sequence issue                        |                                                                 |
124 
125   BEGIN
126 
127   /* Fetch the pk value from the sequence */
128 
129     OPEN c_pk_csr;
130 
131     FETCH c_pk_csr INTO l_pk_value;
132 
133     CLOSE c_pk_csr;
134 
135     RETURN l_pk_value;
136 
137   END get_seq_id;
138 
139 
140 
141   ---------------------------------------------------------------------------
142 
143   -- PROCEDURE qc
144 
145   ---------------------------------------------------------------------------
146 
147   PROCEDURE qc IS
148 
149   BEGIN
150 
151     null;
152 
153   END qc;
154 
155 
156 
157   ---------------------------------------------------------------------------
158 
159   -- PROCEDURE change_version
160 
161   ---------------------------------------------------------------------------
162 
163   PROCEDURE change_version IS
164 
165   BEGIN
166 
167     null;
168 
169   END change_version;
170 
171 
172 
173   ---------------------------------------------------------------------------
174 
175   -- PROCEDURE api_copy
176 
177   ---------------------------------------------------------------------------
178 
179   PROCEDURE api_copy IS
180 
181   BEGIN
182 
183     null;
184 
185   END api_copy;
186 
187 
188 
189   ---------------------------------------------------------------------------
190 
191   -- PROCEDURE add_language
192 
193   ---------------------------------------------------------------------------
194 
195   PROCEDURE add_language IS
196 
197   BEGIN
198 
199     DELETE FROM OKL_DISB_RULES_TL T
200 
201      WHERE NOT EXISTS (
202 
203         SELECT NULL
204 
205           FROM OKL_DISB_RULES_B B
206 
207          WHERE B.DISB_RULE_ID =T.DISB_RULE_ID
208 
209         );
210 
211 
212 
213     UPDATE OKL_DISB_RULES_TL T SET(
214 
215         DESCRIPTION) = (SELECT
216 
217                                   B.DESCRIPTION
218 
219                                 FROM OKL_DISB_RULES_TL B
220 
221                                WHERE B.DISB_RULE_ID = T.DISB_RULE_ID
222 
223                                  AND B.LANGUAGE = T.SOURCE_LANG)
224 
225       WHERE ( T.DISB_RULE_ID,
226 
227               T.LANGUAGE)
228 
229           IN (SELECT
230 
231                   SUBT.DISB_RULE_ID,
232 
233                   SUBT.LANGUAGE
234 
235                 FROM OKL_DISB_RULES_TL SUBB, OKL_DISB_RULES_TL SUBT
236 
237                WHERE SUBB.DISB_RULE_ID = SUBT.DISB_RULE_ID
238 
239                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
240 
241                  AND (SUBB.DESCRIPTION <> SUBT.DESCRIPTION
242 
243                       OR (SUBB.DESCRIPTION IS NULL AND SUBT.DESCRIPTION IS NOT NULL)
244 
245               ));
246 
247 
248 
249     INSERT INTO OKL_DISB_RULES_TL (
250 
251         DISB_RULE_ID,
252 
253         LANGUAGE,
254 
255         SOURCE_LANG,
256 
257         SFWT_FLAG,
258 
259         DESCRIPTION,
260 
261         CREATED_BY,
262 
263         CREATION_DATE,
264 
265         LAST_UPDATED_BY,
266 
267         LAST_UPDATE_DATE,
268 
269         LAST_UPDATE_LOGIN)
270 
271       SELECT
272 
273             B.DISB_RULE_ID,
274 
275             L.LANGUAGE_CODE,
276 
277             B.SOURCE_LANG,
278 
279             B.SFWT_FLAG,
280 
281             B.DESCRIPTION,
282 
283             B.CREATED_BY,
284 
285             B.CREATION_DATE,
286 
287             B.LAST_UPDATED_BY,
288 
289             B.LAST_UPDATE_DATE,
290 
291             B.LAST_UPDATE_LOGIN
292 
293         FROM OKL_DISB_RULES_TL B, FND_LANGUAGES L
294 
295        WHERE L.INSTALLED_FLAG IN ('I', 'B')
296 
297          AND B.LANGUAGE = USERENV('LANG')
298 
299          AND NOT EXISTS (
300 
301                     SELECT NULL
302 
303                       FROM OKL_DISB_RULES_TL T
304 
305                      WHERE T.DISB_RULE_ID = B.DISB_RULE_ID
306 
307                        AND T.LANGUAGE = L.LANGUAGE_CODE
308 
309                     );
310 
311   END add_language;
312 
313 
314 
315   ---------------------------------------------------------------------------
316 
317   -- FUNCTION get_rec for: OKL_DISB_RULES_V
318 
319   ---------------------------------------------------------------------------
320 
321   FUNCTION get_rec (
322 
323     p_drav_rec                     IN drav_rec_type,
324 
325     x_no_data_found                OUT NOCOPY BOOLEAN
326 
327   ) RETURN drav_rec_type IS
328 
329     CURSOR okl_drav_pk_csr (p_disb_rule_id IN NUMBER) IS
330 
331     SELECT
332             DISB_RULE_ID,
333             OBJECT_VERSION_NUMBER,
334             SFWT_FLAG,
335             RULE_NAME,
336             ORG_ID,
337             START_DATE,
338             END_DATE,
339             FEE_OPTION,
340             FEE_BASIS,
341             FEE_AMOUNT,
342             FEE_PERCENT,
343             CONSOLIDATE_BY_DUE_DATE,
344             FREQUENCY,
345             DAY_OF_MONTH,
346             SCHEDULED_MONTH,
347             CONSOLIDATE_STRM_TYPE,
348             DESCRIPTION,
349             ATTRIBUTE_CATEGORY,
350             ATTRIBUTE1,
351             ATTRIBUTE2,
352             ATTRIBUTE3,
353             ATTRIBUTE4,
354             ATTRIBUTE5,
355             ATTRIBUTE6,
356             ATTRIBUTE7,
357             ATTRIBUTE8,
358             ATTRIBUTE9,
359             ATTRIBUTE10,
360             ATTRIBUTE11,
361             ATTRIBUTE12,
362             ATTRIBUTE13,
363             ATTRIBUTE14,
364             ATTRIBUTE15,
365             CREATED_BY,
366             CREATION_DATE,
367             LAST_UPDATED_BY,
368             LAST_UPDATE_DATE,
369             LAST_UPDATE_LOGIN
370       FROM Okl_Disb_Rules_V
371      WHERE okl_disb_rules_v.disb_rule_id = p_disb_rule_id;
372 
373     l_okl_drav_pk                  okl_drav_pk_csr%ROWTYPE;
374     l_drav_rec                     drav_rec_type;
375 
376   BEGIN
377 
378     x_no_data_found := TRUE;
379 
380     -- Get current database values
381 
382     OPEN okl_drav_pk_csr (p_drav_rec.disb_rule_id);
383 
384     FETCH okl_drav_pk_csr INTO
385 
386               l_drav_rec.disb_rule_id,
387 
388               l_drav_rec.object_version_number,
389 
390               l_drav_rec.sfwt_flag,
391 
392               l_drav_rec.rule_name,
393 
394               l_drav_rec.org_id,
395 
396               l_drav_rec.start_date,
397 
398               l_drav_rec.end_date,
399 
400               l_drav_rec.fee_option,
401 
402               l_drav_rec.fee_basis,
403 
404               l_drav_rec.fee_amount,
405 
406               l_drav_rec.fee_percent,
407 
408               l_drav_rec.consolidate_by_due_date,
409 
410               l_drav_rec.frequency,
411 
412               l_drav_rec.day_of_month,
413 
414               l_drav_rec.scheduled_month,
415 
416               l_drav_rec.consolidate_strm_type,
417 
418               l_drav_rec.description,
419 
420               l_drav_rec.attribute_category,
421 
422               l_drav_rec.attribute1,
423 
424               l_drav_rec.attribute2,
425 
426               l_drav_rec.attribute3,
427 
428               l_drav_rec.attribute4,
429 
430               l_drav_rec.attribute5,
431 
432               l_drav_rec.attribute6,
433 
434               l_drav_rec.attribute7,
435 
436               l_drav_rec.attribute8,
437 
438               l_drav_rec.attribute9,
439 
440               l_drav_rec.attribute10,
441 
442               l_drav_rec.attribute11,
443 
444               l_drav_rec.attribute12,
445 
446               l_drav_rec.attribute13,
447 
448               l_drav_rec.attribute14,
449 
450               l_drav_rec.attribute15,
451 
452               l_drav_rec.created_by,
453 
454               l_drav_rec.creation_date,
455 
456               l_drav_rec.last_updated_by,
457 
458               l_drav_rec.last_update_date,
459 
460               l_drav_rec.last_update_login;
461 
462     x_no_data_found := okl_drav_pk_csr%NOTFOUND;
463 
464     CLOSE okl_drav_pk_csr;
465 
466     RETURN(l_drav_rec);
467 
468   END get_rec;
469 
470 
471 
472   ------------------------------------------------------------------
473 
474   -- This version of get_rec sets error messages if no data found --
475 
476   ------------------------------------------------------------------
477 
478   FUNCTION get_rec (
479 
480     p_drav_rec                     IN drav_rec_type,
481 
482     x_return_status                OUT NOCOPY VARCHAR2
483 
484   ) RETURN drav_rec_type IS
485 
486     l_drav_rec                     drav_rec_type;
487 
488     l_row_notfound                 BOOLEAN := TRUE;
489 
490   BEGIN
491 
492     x_return_status := OKL_API.G_RET_STS_SUCCESS;
493 
494     l_drav_rec := get_rec(p_drav_rec, l_row_notfound);
495 
496     IF (l_row_notfound) THEN
497 
498       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'DISB_RULE_ID');
499 
500       x_return_status := OKL_API.G_RET_STS_ERROR;
501 
502     END IF;
503 
504     RETURN(l_drav_rec);
505 
506   END get_rec;
507 
508   -----------------------------------------------------------
509 
510   -- So we don't have to pass an "l_row_notfound" variable --
511 
512   -----------------------------------------------------------
513 
514   FUNCTION get_rec (
515 
516     p_drav_rec                     IN drav_rec_type
517 
518   ) RETURN drav_rec_type IS
519 
520     l_row_not_found                BOOLEAN := TRUE;
521 
522   BEGIN
523 
524     RETURN(get_rec(p_drav_rec, l_row_not_found));
525 
526   END get_rec;
527 
528   ---------------------------------------------------------------------------
529 
530   -- FUNCTION get_rec for: OKL_DISB_RULES_TL
531 
532   ---------------------------------------------------------------------------
533 
534   FUNCTION get_rec (
535 
536     p_okl_disb_rules_tl_rec        IN okl_disb_rules_tl_rec_type,
537 
538     x_no_data_found                OUT NOCOPY BOOLEAN
539 
540   ) RETURN okl_disb_rules_tl_rec_type IS
541 
542     CURSOR okl_drt_pk_csr (p_disb_rule_id IN NUMBER,
543 
544                            p_language     IN VARCHAR2) IS
545 
546     SELECT
547 
548             DISB_RULE_ID,
549 
550             LANGUAGE,
551 
552             SOURCE_LANG,
553 
554             SFWT_FLAG,
555 
556             DESCRIPTION,
557 
558             CREATED_BY,
559 
560             CREATION_DATE,
561 
562             LAST_UPDATED_BY,
563 
564             LAST_UPDATE_DATE,
565 
566             LAST_UPDATE_LOGIN
567 
568       FROM Okl_Disb_Rules_Tl
569 
570      WHERE okl_disb_rules_tl.disb_rule_id = p_disb_rule_id
571 
572        AND okl_disb_rules_tl.language = p_language;
573 
574     l_okl_drt_pk                   okl_drt_pk_csr%ROWTYPE;
575 
576     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type;
577 
578   BEGIN
579 
580     x_no_data_found := TRUE;
581 
582     -- Get current database values
583 
584     OPEN okl_drt_pk_csr (p_okl_disb_rules_tl_rec.disb_rule_id,
585 
586                          p_okl_disb_rules_tl_rec.language);
587 
588     FETCH okl_drt_pk_csr INTO
589 
590               l_okl_disb_rules_tl_rec.disb_rule_id,
591 
592               l_okl_disb_rules_tl_rec.language,
593 
594               l_okl_disb_rules_tl_rec.source_lang,
595 
596               l_okl_disb_rules_tl_rec.sfwt_flag,
597 
598               l_okl_disb_rules_tl_rec.description,
599 
600               l_okl_disb_rules_tl_rec.created_by,
601 
602               l_okl_disb_rules_tl_rec.creation_date,
603 
604               l_okl_disb_rules_tl_rec.last_updated_by,
605 
606               l_okl_disb_rules_tl_rec.last_update_date,
607 
608               l_okl_disb_rules_tl_rec.last_update_login;
609 
610     x_no_data_found := okl_drt_pk_csr%NOTFOUND;
611 
612     CLOSE okl_drt_pk_csr;
613 
614     RETURN(l_okl_disb_rules_tl_rec);
615 
616   END get_rec;
617 
618 
619 
620   ------------------------------------------------------------------
621 
622   -- This version of get_rec sets error messages if no data found --
623 
624   ------------------------------------------------------------------
625 
626   FUNCTION get_rec (
627 
628     p_okl_disb_rules_tl_rec        IN okl_disb_rules_tl_rec_type,
629 
630     x_return_status                OUT NOCOPY VARCHAR2
631 
632   ) RETURN okl_disb_rules_tl_rec_type IS
633 
634     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type;
635 
636     l_row_notfound                 BOOLEAN := TRUE;
637 
638   BEGIN
639 
640     x_return_status := OKL_API.G_RET_STS_SUCCESS;
641 
642     l_okl_disb_rules_tl_rec := get_rec(p_okl_disb_rules_tl_rec, l_row_notfound);
643 
644     IF (l_row_notfound) THEN
645 
646       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'DISB_RULE_ID');
647 
648       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'LANGUAGE');
649 
650       x_return_status := OKL_API.G_RET_STS_ERROR;
651 
652     END IF;
653 
654     RETURN(l_okl_disb_rules_tl_rec);
655 
656   END get_rec;
657 
658   -----------------------------------------------------------
659 
660   -- So we don't have to pass an "l_row_notfound" variable --
661 
662   -----------------------------------------------------------
663 
664   FUNCTION get_rec (
665 
666     p_okl_disb_rules_tl_rec        IN okl_disb_rules_tl_rec_type
667 
668   ) RETURN okl_disb_rules_tl_rec_type IS
669 
670     l_row_not_found                BOOLEAN := TRUE;
671 
672   BEGIN
673 
674     RETURN(get_rec(p_okl_disb_rules_tl_rec, l_row_not_found));
675 
676   END get_rec;
677 
678   ---------------------------------------------------------------------------
679 
680   -- FUNCTION get_rec for: OKL_DISB_RULES_B
681 
682   ---------------------------------------------------------------------------
683 
684   FUNCTION get_rec (
685 
686     p_dra_rec                      IN dra_rec_type,
687 
688     x_no_data_found                OUT NOCOPY BOOLEAN
689 
690   ) RETURN dra_rec_type IS
691 
692     CURSOR okl_dra_pk_csr (p_disb_rule_id IN NUMBER) IS
693 
694     SELECT
695 
696             DISB_RULE_ID,
697 
698             OBJECT_VERSION_NUMBER,
699 
700             RULE_NAME,
701 
702             ORG_ID,
703 
704             START_DATE,
705 
706             END_DATE,
707 
708             FEE_OPTION,
709 
710             FEE_BASIS,
711 
712             FEE_AMOUNT,
713 
714             FEE_PERCENT,
715 
716             CONSOLIDATE_BY_DUE_DATE,
717 
718             FREQUENCY,
719 
720             DAY_OF_MONTH,
721 
722             SCHEDULED_MONTH,
723 
724             CONSOLIDATE_STRM_TYPE,
725 
726             ATTRIBUTE_CATEGORY,
727 
728             ATTRIBUTE1,
729 
730             ATTRIBUTE2,
731 
732             ATTRIBUTE3,
733 
734             ATTRIBUTE4,
735 
736             ATTRIBUTE5,
737 
738             ATTRIBUTE6,
739 
740             ATTRIBUTE7,
741 
742             ATTRIBUTE8,
743 
744             ATTRIBUTE9,
745 
746             ATTRIBUTE10,
747 
748             ATTRIBUTE11,
749 
750             ATTRIBUTE12,
751 
752             ATTRIBUTE13,
753 
754             ATTRIBUTE14,
755 
756             ATTRIBUTE15,
757 
758             CREATED_BY,
759 
760             CREATION_DATE,
761 
762             LAST_UPDATED_BY,
763 
764             LAST_UPDATE_DATE,
765 
766             LAST_UPDATE_LOGIN
767 
768       FROM Okl_Disb_Rules_B
769 
770      WHERE okl_disb_rules_b.disb_rule_id = p_disb_rule_id;
771 
772     l_okl_dra_pk                   okl_dra_pk_csr%ROWTYPE;
773 
774     l_dra_rec                      dra_rec_type;
775 
776   BEGIN
777 
778     x_no_data_found := TRUE;
779 
780     -- Get current database values
781 
782     OPEN okl_dra_pk_csr (p_dra_rec.disb_rule_id);
783 
784     FETCH okl_dra_pk_csr INTO
785 
786               l_dra_rec.disb_rule_id,
787 
788               l_dra_rec.object_version_number,
789 
790               l_dra_rec.rule_name,
791 
792               l_dra_rec.org_id,
793 
794               l_dra_rec.start_date,
795 
796               l_dra_rec.end_date,
797 
798               l_dra_rec.fee_option,
799 
800               l_dra_rec.fee_basis,
801 
802               l_dra_rec.fee_amount,
803 
804               l_dra_rec.fee_percent,
805 
806               l_dra_rec.consolidate_by_due_date,
807 
808               l_dra_rec.frequency,
809 
810               l_dra_rec.day_of_month,
811 
812               l_dra_rec.scheduled_month,
813 
814               l_dra_rec.consolidate_strm_type,
815 
816               l_dra_rec.attribute_category,
817 
818               l_dra_rec.attribute1,
819 
820               l_dra_rec.attribute2,
821 
822               l_dra_rec.attribute3,
823 
824               l_dra_rec.attribute4,
825 
826               l_dra_rec.attribute5,
827 
828               l_dra_rec.attribute6,
829 
830               l_dra_rec.attribute7,
831 
832               l_dra_rec.attribute8,
833 
834               l_dra_rec.attribute9,
835 
836               l_dra_rec.attribute10,
837 
838               l_dra_rec.attribute11,
839 
840               l_dra_rec.attribute12,
841 
842               l_dra_rec.attribute13,
843 
844               l_dra_rec.attribute14,
845 
846               l_dra_rec.attribute15,
847 
848               l_dra_rec.created_by,
849 
850               l_dra_rec.creation_date,
851 
852               l_dra_rec.last_updated_by,
853 
854               l_dra_rec.last_update_date,
855 
856               l_dra_rec.last_update_login;
857 
858     x_no_data_found := okl_dra_pk_csr%NOTFOUND;
859 
860     CLOSE okl_dra_pk_csr;
861 
862     RETURN(l_dra_rec);
863 
864   END get_rec;
865 
866 
867 
868   ------------------------------------------------------------------
869 
870   -- This version of get_rec sets error messages if no data found --
871 
872   ------------------------------------------------------------------
873 
874   FUNCTION get_rec (
875 
876     p_dra_rec                      IN dra_rec_type,
877 
878     x_return_status                OUT NOCOPY VARCHAR2
879 
880   ) RETURN dra_rec_type IS
881 
882     l_dra_rec                      dra_rec_type;
883 
884     l_row_notfound                 BOOLEAN := TRUE;
885 
886   BEGIN
887 
888     x_return_status := OKL_API.G_RET_STS_SUCCESS;
889 
890     l_dra_rec := get_rec(p_dra_rec, l_row_notfound);
891 
892     IF (l_row_notfound) THEN
893 
894       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'DISB_RULE_ID');
895 
896       x_return_status := OKL_API.G_RET_STS_ERROR;
897 
898     END IF;
899 
900     RETURN(l_dra_rec);
901 
902   END get_rec;
903 
904   -----------------------------------------------------------
905 
906   -- So we don't have to pass an "l_row_notfound" variable --
907 
908   -----------------------------------------------------------
909 
910   FUNCTION get_rec (
911 
912     p_dra_rec                      IN dra_rec_type
913 
914   ) RETURN dra_rec_type IS
915 
916     l_row_not_found                BOOLEAN := TRUE;
917 
918   BEGIN
919 
920     RETURN(get_rec(p_dra_rec, l_row_not_found));
921 
922   END get_rec;
923 
924   ---------------------------------------------------------------------------
925 
926   -- FUNCTION null_out_defaults for: OKL_DISB_RULES_V
927 
928   ---------------------------------------------------------------------------
929 
930   FUNCTION null_out_defaults (
931 
932     p_drav_rec   IN drav_rec_type
933 
934   ) RETURN drav_rec_type IS
935 
936     l_drav_rec                     drav_rec_type := p_drav_rec;
937 
938   BEGIN
939 
940     IF (l_drav_rec.disb_rule_id = OKL_API.G_MISS_NUM ) THEN
941 
942       l_drav_rec.disb_rule_id := NULL;
943 
944     END IF;
945 
946     IF (l_drav_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
947 
948       l_drav_rec.object_version_number := NULL;
949 
950     END IF;
951 
952     IF (l_drav_rec.sfwt_flag = OKL_API.G_MISS_CHAR ) THEN
953 
954       l_drav_rec.sfwt_flag := NULL;
955 
956     END IF;
957 
958     IF (l_drav_rec.rule_name = OKL_API.G_MISS_CHAR ) THEN
959 
960       l_drav_rec.rule_name := NULL;
961 
962     END IF;
963 
964     IF (l_drav_rec.org_id = OKL_API.G_MISS_NUM ) THEN
965 
966       l_drav_rec.org_id := NULL;
967 
968     END IF;
969 
970     IF (l_drav_rec.start_date = OKL_API.G_MISS_DATE ) THEN
971 
972       l_drav_rec.start_date := NULL;
973 
974     END IF;
975 
976     IF (l_drav_rec.end_date = OKL_API.G_MISS_DATE ) THEN
977 
978       l_drav_rec.end_date := NULL;
979 
980     END IF;
981 
982     IF (l_drav_rec.fee_option = OKL_API.G_MISS_CHAR ) THEN
983 
984       l_drav_rec.fee_option := NULL;
985 
986     END IF;
987 
988     IF (l_drav_rec.fee_basis = OKL_API.G_MISS_CHAR ) THEN
989 
990       l_drav_rec.fee_basis := NULL;
991 
992     END IF;
993 
994     IF (l_drav_rec.fee_amount = OKL_API.G_MISS_NUM ) THEN
995 
996       l_drav_rec.fee_amount := NULL;
997 
998     END IF;
999 
1000     IF (l_drav_rec.fee_percent = OKL_API.G_MISS_NUM ) THEN
1001 
1002       l_drav_rec.fee_percent := NULL;
1003 
1004     END IF;
1005 
1006     IF (l_drav_rec.consolidate_by_due_date = OKL_API.G_MISS_CHAR ) THEN
1007 
1008       l_drav_rec.consolidate_by_due_date := NULL;
1009 
1010     END IF;
1011 
1012     IF (l_drav_rec.frequency = OKL_API.G_MISS_CHAR ) THEN
1013 
1014       l_drav_rec.frequency := NULL;
1015 
1016     END IF;
1017 
1018     IF (l_drav_rec.day_of_month = OKL_API.G_MISS_NUM ) THEN
1019 
1020       l_drav_rec.day_of_month := NULL;
1021 
1022     END IF;
1023 
1024     IF (l_drav_rec.scheduled_month = OKL_API.G_MISS_CHAR ) THEN
1025 
1026       l_drav_rec.scheduled_month := NULL;
1027 
1028     END IF;
1029 
1030     IF (l_drav_rec.consolidate_strm_type = OKL_API.G_MISS_CHAR ) THEN
1031 
1032       l_drav_rec.consolidate_strm_type := NULL;
1033 
1034     END IF;
1035 
1036     IF (l_drav_rec.description = OKL_API.G_MISS_CHAR ) THEN
1037 
1038       l_drav_rec.description := NULL;
1039 
1040     END IF;
1041 
1042     IF (l_drav_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
1043 
1044       l_drav_rec.attribute_category := NULL;
1045 
1046     END IF;
1047 
1048     IF (l_drav_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
1049 
1050       l_drav_rec.attribute1 := NULL;
1051 
1052     END IF;
1053 
1054     IF (l_drav_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
1055 
1056       l_drav_rec.attribute2 := NULL;
1057 
1058     END IF;
1059 
1060     IF (l_drav_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
1061 
1062       l_drav_rec.attribute3 := NULL;
1063 
1064     END IF;
1065 
1066     IF (l_drav_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
1067 
1068       l_drav_rec.attribute4 := NULL;
1069 
1070     END IF;
1071 
1072     IF (l_drav_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
1073 
1074       l_drav_rec.attribute5 := NULL;
1075 
1076     END IF;
1077 
1078     IF (l_drav_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
1079 
1080       l_drav_rec.attribute6 := NULL;
1081 
1082     END IF;
1083 
1084     IF (l_drav_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
1085 
1086       l_drav_rec.attribute7 := NULL;
1087 
1088     END IF;
1089 
1090     IF (l_drav_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
1091 
1092       l_drav_rec.attribute8 := NULL;
1093 
1094     END IF;
1095 
1096     IF (l_drav_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
1097 
1098       l_drav_rec.attribute9 := NULL;
1099 
1100     END IF;
1101 
1102     IF (l_drav_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
1103 
1104       l_drav_rec.attribute10 := NULL;
1105 
1106     END IF;
1107 
1108     IF (l_drav_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
1109 
1110       l_drav_rec.attribute11 := NULL;
1111 
1112     END IF;
1113 
1114     IF (l_drav_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
1115 
1116       l_drav_rec.attribute12 := NULL;
1117 
1118     END IF;
1119 
1120     IF (l_drav_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
1121 
1122       l_drav_rec.attribute13 := NULL;
1123 
1124     END IF;
1125 
1126     IF (l_drav_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
1127 
1128       l_drav_rec.attribute14 := NULL;
1129 
1130     END IF;
1131 
1132     IF (l_drav_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
1133 
1134       l_drav_rec.attribute15 := NULL;
1135 
1136     END IF;
1137 
1138     IF (l_drav_rec.created_by = OKL_API.G_MISS_NUM ) THEN
1139 
1140       l_drav_rec.created_by := NULL;
1141 
1142     END IF;
1143 
1144     IF (l_drav_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
1145 
1146       l_drav_rec.creation_date := NULL;
1147 
1148     END IF;
1149 
1150     IF (l_drav_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
1151 
1152       l_drav_rec.last_updated_by := NULL;
1153 
1154     END IF;
1155 
1156     IF (l_drav_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
1157 
1158       l_drav_rec.last_update_date := NULL;
1159 
1160     END IF;
1161 
1162     IF (l_drav_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
1163 
1164       l_drav_rec.last_update_login := NULL;
1165 
1166     END IF;
1167 
1168     RETURN(l_drav_rec);
1169 
1170   END null_out_defaults;
1171 
1172   -------------------------------------------
1173 
1174   -- Validate_Attributes for: DISB_RULE_ID --
1175 
1176   -------------------------------------------
1177 
1178   PROCEDURE validate_disb_rule_id(
1179 
1180     x_return_status                OUT NOCOPY VARCHAR2,
1181 
1182     p_disb_rule_id                 IN NUMBER) IS
1183 
1184   BEGIN
1185 
1186     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1187 
1188     IF (p_disb_rule_id IS NULL) THEN
1189 
1190       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'disb_rule_id');
1191 
1192       x_return_status := OKL_API.G_RET_STS_ERROR;
1193 
1194       RAISE G_EXCEPTION_HALT_VALIDATION;
1195 
1196     END IF;
1197 
1198   EXCEPTION
1199 
1200     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1201 
1202       null;
1203 
1204     WHEN OTHERS THEN
1205 
1206       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1207 
1208                           ,p_msg_name     => G_UNEXPECTED_ERROR
1209 
1210                           ,p_token1       => G_SQLCODE_TOKEN
1211 
1212                           ,p_token1_value => SQLCODE
1213 
1214                           ,p_token2       => G_SQLERRM_TOKEN
1215 
1216                           ,p_token2_value => SQLERRM);
1217 
1218       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1219 
1220   END validate_disb_rule_id;
1221 
1222   ----------------------------------------------------
1223 
1224   -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
1225 
1226   ----------------------------------------------------
1227 
1228   PROCEDURE validate_object_version_number(
1229 
1230     x_return_status                OUT NOCOPY VARCHAR2,
1231 
1232     p_object_version_number        IN NUMBER) IS
1233 
1234   BEGIN
1235 
1236     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1237 
1238     IF (p_object_version_number IS NULL) THEN
1239 
1240       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
1241 
1242       x_return_status := OKL_API.G_RET_STS_ERROR;
1243 
1244       RAISE G_EXCEPTION_HALT_VALIDATION;
1245 
1246     END IF;
1247 
1248   EXCEPTION
1249 
1250     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1251 
1252       null;
1253 
1254     WHEN OTHERS THEN
1255 
1256       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1257 
1258                           ,p_msg_name     => G_UNEXPECTED_ERROR
1259 
1260                           ,p_token1       => G_SQLCODE_TOKEN
1261 
1262                           ,p_token1_value => SQLCODE
1263 
1264                           ,p_token2       => G_SQLERRM_TOKEN
1265 
1266                           ,p_token2_value => SQLERRM);
1267 
1268       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1269 
1270   END validate_object_version_number;
1271 
1272   ----------------------------------------
1273 
1274   -- Validate_Attributes for: SFWT_FLAG --
1275 
1276   ----------------------------------------
1277 
1278   PROCEDURE validate_sfwt_flag(
1279 
1280     x_return_status                OUT NOCOPY VARCHAR2,
1281 
1282     p_sfwt_flag                    IN VARCHAR2) IS
1283 
1284   BEGIN
1285 
1286     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1287 
1288     IF (p_sfwt_flag IS NULL) THEN
1289 
1290       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'sfwt_flag');
1291 
1292       x_return_status := OKL_API.G_RET_STS_ERROR;
1293 
1294       RAISE G_EXCEPTION_HALT_VALIDATION;
1295 
1296     END IF;
1297 
1298   EXCEPTION
1299 
1300     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1301 
1302       null;
1303 
1304     WHEN OTHERS THEN
1305 
1306       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1307 
1308                           ,p_msg_name     => G_UNEXPECTED_ERROR
1309 
1310                           ,p_token1       => G_SQLCODE_TOKEN
1311 
1312                           ,p_token1_value => SQLCODE
1313 
1314                           ,p_token2       => G_SQLERRM_TOKEN
1315 
1316                           ,p_token2_value => SQLERRM);
1317 
1318       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1319 
1320   END validate_sfwt_flag;
1321 
1322   ----------------------------------------
1323 
1324   -- Validate_Attributes for: RULE_NAME --
1325 
1326   ----------------------------------------
1327 
1328   PROCEDURE validate_rule_name(
1329 
1330     x_return_status                OUT NOCOPY VARCHAR2,
1331 
1332     p_rule_name                    IN VARCHAR2) IS
1333 
1334   BEGIN
1335 
1336     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1337 
1338     IF (p_rule_name IS NULL) THEN
1339 
1340       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'rule_name');
1341 
1342       x_return_status := OKL_API.G_RET_STS_ERROR;
1343 
1344       RAISE G_EXCEPTION_HALT_VALIDATION;
1345 
1346     END IF;
1347 
1348   EXCEPTION
1349 
1350     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1351 
1352       null;
1353 
1354     WHEN OTHERS THEN
1355 
1356       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1357 
1358                           ,p_msg_name     => G_UNEXPECTED_ERROR
1359 
1360                           ,p_token1       => G_SQLCODE_TOKEN
1361 
1362                           ,p_token1_value => SQLCODE
1363 
1364                           ,p_token2       => G_SQLERRM_TOKEN
1365 
1366                           ,p_token2_value => SQLERRM);
1367 
1368       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1369 
1370   END validate_rule_name;
1371 
1372   -------------------------------------
1373 
1374   -- Validate_Attributes for: ORG_ID --
1375 
1376   -------------------------------------
1377 
1378   PROCEDURE validate_org_id(
1379 
1380     x_return_status                OUT NOCOPY VARCHAR2,
1381 
1382     p_org_id                       IN NUMBER) IS
1383 
1384   BEGIN
1385 
1386     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1387 
1388     IF (p_org_id IS NULL) THEN
1389 
1390       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'org_id');
1391 
1392       x_return_status := OKL_API.G_RET_STS_ERROR;
1393 
1394       RAISE G_EXCEPTION_HALT_VALIDATION;
1395 
1396     END IF;
1397 
1398   EXCEPTION
1399 
1400     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1401 
1402       null;
1403 
1404     WHEN OTHERS THEN
1405 
1406       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1407 
1408                           ,p_msg_name     => G_UNEXPECTED_ERROR
1409 
1410                           ,p_token1       => G_SQLCODE_TOKEN
1411 
1412                           ,p_token1_value => SQLCODE
1413 
1414                           ,p_token2       => G_SQLERRM_TOKEN
1415 
1416                           ,p_token2_value => SQLERRM);
1417 
1418       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1419 
1420   END validate_org_id;
1421 
1422   -----------------------------------------
1423 
1424   -- Validate_Attributes for: START_DATE --
1425 
1426   -----------------------------------------
1427 
1428   PROCEDURE validate_start_date(
1429 
1430     x_return_status                OUT NOCOPY VARCHAR2,
1431 
1432     p_start_date                   IN DATE) IS
1433 
1434   BEGIN
1435 
1436     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1437 
1438     IF (p_start_date IS NULL) THEN
1439 
1440       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'start_date');
1441 
1442       x_return_status := OKL_API.G_RET_STS_ERROR;
1443 
1444       RAISE G_EXCEPTION_HALT_VALIDATION;
1445 
1446     END IF;
1447 
1448   EXCEPTION
1449 
1450     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1451 
1452       null;
1453 
1454     WHEN OTHERS THEN
1455 
1456       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1457 
1458                           ,p_msg_name     => G_UNEXPECTED_ERROR
1459 
1460                           ,p_token1       => G_SQLCODE_TOKEN
1461 
1462                           ,p_token1_value => SQLCODE
1463 
1464                           ,p_token2       => G_SQLERRM_TOKEN
1465 
1466                           ,p_token2_value => SQLERRM);
1467 
1468       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1469 
1470   END validate_start_date;
1471 
1472   ---------------------------------------------------------------------------
1473 
1474   -- FUNCTION Validate_Attributes
1475 
1476   ---------------------------------------------------------------------------
1477 
1478   ----------------------------------------------
1479 
1480   -- Validate_Attributes for:OKL_DISB_RULES_V --
1481 
1482   ----------------------------------------------
1483 
1484   FUNCTION Validate_Attributes (
1485 
1486     p_drav_rec                     IN drav_rec_type
1487 
1488   ) RETURN VARCHAR2 IS
1489 
1490     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1491 
1492     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1493 
1494   BEGIN
1495 
1496     -----------------------------
1497 
1498     -- Column Level Validation --
1499 
1500     -----------------------------
1501 
1502     -- ***
1503 
1504     -- disb_rule_id
1505 
1506     -- ***
1507 
1508     validate_disb_rule_id(x_return_status, p_drav_rec.disb_rule_id);
1509 
1510     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1511 
1512       l_return_status := x_return_status;
1513 
1514       RAISE G_EXCEPTION_HALT_VALIDATION;
1515 
1516     END IF;
1517 
1518 
1519 
1520     -- ***
1521 
1522     -- object_version_number
1523 
1524     -- ***
1525 
1526     validate_object_version_number(x_return_status, p_drav_rec.object_version_number);
1527 
1528     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1529 
1530       l_return_status := x_return_status;
1531 
1532       RAISE G_EXCEPTION_HALT_VALIDATION;
1533 
1534     END IF;
1535 
1536 
1537 
1538     -- ***
1539 
1540     -- sfwt_flag
1541 
1542     -- ***
1543 
1544    /* validate_sfwt_flag(x_return_status, p_drav_rec.sfwt_flag);
1545 
1546     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1547 
1548       l_return_status := x_return_status;
1549 
1550       RAISE G_EXCEPTION_HALT_VALIDATION;
1551 
1552     END IF;*/
1553 
1554 
1555 
1556     -- ***
1557 
1558     -- rule_name
1559 
1560     -- ***
1561 
1562     validate_rule_name(x_return_status, p_drav_rec.rule_name);
1563 
1564     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1565 
1566       l_return_status := x_return_status;
1567 
1568       RAISE G_EXCEPTION_HALT_VALIDATION;
1569 
1570     END IF;
1571 
1572 
1573 
1574     -- ***
1575 
1576     -- org_id
1577 
1578     -- ***
1579 
1580     validate_org_id(x_return_status, p_drav_rec.org_id);
1581 
1582     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1583 
1584       l_return_status := x_return_status;
1585 
1586       RAISE G_EXCEPTION_HALT_VALIDATION;
1587 
1588     END IF;
1589 
1590 
1591 
1592     -- ***
1593 
1594     -- start_date
1595 
1596     -- ***
1597 
1598     validate_start_date(x_return_status, p_drav_rec.start_date);
1599 
1600     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1601 
1602       l_return_status := x_return_status;
1603 
1604       RAISE G_EXCEPTION_HALT_VALIDATION;
1605 
1606     END IF;
1607 
1608 
1609 
1610     RETURN(l_return_status);
1611 
1612   EXCEPTION
1613 
1614     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1615 
1616       RETURN(l_return_status);
1617 
1618     WHEN OTHERS THEN
1619 
1620       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1621 
1622                           ,p_msg_name     => G_UNEXPECTED_ERROR
1623 
1624                           ,p_token1       => G_SQLCODE_TOKEN
1625 
1626                           ,p_token1_value => SQLCODE
1627 
1628                           ,p_token2       => G_SQLERRM_TOKEN
1629 
1630                           ,p_token2_value => SQLERRM);
1631 
1632       l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1633 
1634       RETURN(l_return_status);
1635 
1636   END Validate_Attributes;
1637 
1638   ---------------------------------------------------------------------------
1639 
1640   -- PROCEDURE Validate_Record
1641 
1642   ---------------------------------------------------------------------------
1643 
1644   ------------------------------------------
1645 
1646   -- Validate Record for:OKL_DISB_RULES_V --
1647 
1648   ------------------------------------------
1649 
1650   FUNCTION Validate_Record (
1651 
1652     p_drav_rec IN drav_rec_type,
1653 
1654     p_db_drav_rec IN drav_rec_type
1655 
1656   ) RETURN VARCHAR2 IS
1657 
1658     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1659 
1660   BEGIN
1661 
1662     RETURN (l_return_status);
1663 
1664   END Validate_Record;
1665 
1666   FUNCTION Validate_Record (
1667 
1668     p_drav_rec IN drav_rec_type
1669 
1670   ) RETURN VARCHAR2 IS
1671 
1672     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1673 
1674     l_db_drav_rec                  drav_rec_type := get_rec(p_drav_rec);
1675 
1676   BEGIN
1677 
1678     l_return_status := Validate_Record(p_drav_rec => p_drav_rec,
1679 
1680                                        p_db_drav_rec => l_db_drav_rec);
1681 
1682     RETURN (l_return_status);
1683 
1684   END Validate_Record;
1685 
1686 
1687 
1688   ---------------------------------------------------------------------------
1689 
1690   -- PROCEDURE Migrate
1691 
1692   ---------------------------------------------------------------------------
1693 
1694   PROCEDURE migrate (
1695 
1696     p_from IN drav_rec_type,
1697 
1698     p_to   IN OUT NOCOPY okl_disb_rules_tl_rec_type
1699 
1700   ) IS
1701 
1702   BEGIN
1703 
1704     p_to.disb_rule_id := p_from.disb_rule_id;
1705 
1706     p_to.sfwt_flag := p_from.sfwt_flag;
1707 
1708     p_to.description := p_from.description;
1709 
1710     p_to.created_by := p_from.created_by;
1711 
1712     p_to.creation_date := p_from.creation_date;
1713 
1714     p_to.last_updated_by := p_from.last_updated_by;
1715 
1716     p_to.last_update_date := p_from.last_update_date;
1717 
1718     p_to.last_update_login := p_from.last_update_login;
1719 
1720   END migrate;
1721 
1722   PROCEDURE migrate (
1723 
1724     p_from IN okl_disb_rules_tl_rec_type,
1725 
1726     p_to   IN OUT NOCOPY drav_rec_type
1727 
1728   ) IS
1729 
1730   BEGIN
1731 
1732     p_to.disb_rule_id := p_from.disb_rule_id;
1733 
1734     p_to.sfwt_flag := p_from.sfwt_flag;
1735 
1736     p_to.description := p_from.description;
1737 
1738     p_to.created_by := p_from.created_by;
1739 
1740     p_to.creation_date := p_from.creation_date;
1741 
1742     p_to.last_updated_by := p_from.last_updated_by;
1743 
1744     p_to.last_update_date := p_from.last_update_date;
1745 
1746     p_to.last_update_login := p_from.last_update_login;
1747 
1748   END migrate;
1749 
1750   PROCEDURE migrate (
1751 
1752     p_from IN drav_rec_type,
1753 
1754     p_to   IN OUT NOCOPY dra_rec_type
1755 
1756   ) IS
1757 
1758   BEGIN
1759 
1760     p_to.disb_rule_id := p_from.disb_rule_id;
1761 
1762     --g_debug_proc('Migrate  disb_rule_id' || p_to.disb_rule_id);
1763 
1764     p_to.object_version_number := p_from.object_version_number;
1765 
1766     p_to.rule_name := p_from.rule_name;
1767 
1768     p_to.org_id := p_from.org_id;
1769 
1770     p_to.start_date := p_from.start_date;
1771 
1772     p_to.end_date := p_from.end_date;
1773 
1774     p_to.fee_option := p_from.fee_option;
1775 
1776     p_to.fee_basis := p_from.fee_basis;
1777 
1778     p_to.fee_amount := p_from.fee_amount;
1779 
1780     p_to.fee_percent := p_from.fee_percent;
1781 
1782     p_to.consolidate_by_due_date := p_from.consolidate_by_due_date;
1783 
1784     p_to.frequency := p_from.frequency;
1785 
1786     p_to.day_of_month := p_from.day_of_month;
1787 
1788     p_to.scheduled_month := p_from.scheduled_month;
1789 
1790     ----g_debug_proc('Migrate  p_from' || p_to.scheduled_month);
1791     ----g_debug_proc('Migrate  p_to' || p_to.scheduled_month);
1792 
1793 
1794     p_to.consolidate_strm_type := p_from.consolidate_strm_type;
1795 
1796     p_to.attribute_category := p_from.attribute_category;
1797 
1798     p_to.attribute1 := p_from.attribute1;
1799 
1800     p_to.attribute2 := p_from.attribute2;
1801 
1802     p_to.attribute3 := p_from.attribute3;
1803 
1804     p_to.attribute4 := p_from.attribute4;
1805 
1806     p_to.attribute5 := p_from.attribute5;
1807 
1808     p_to.attribute6 := p_from.attribute6;
1809 
1810     p_to.attribute7 := p_from.attribute7;
1811 
1812     p_to.attribute8 := p_from.attribute8;
1813 
1814     p_to.attribute9 := p_from.attribute9;
1815 
1816     p_to.attribute10 := p_from.attribute10;
1817 
1818     p_to.attribute11 := p_from.attribute11;
1819 
1820     p_to.attribute12 := p_from.attribute12;
1821 
1822     p_to.attribute13 := p_from.attribute13;
1823 
1824     p_to.attribute14 := p_from.attribute14;
1825 
1826     p_to.attribute15 := p_from.attribute15;
1827 
1828     p_to.created_by := p_from.created_by;
1829 
1830     p_to.creation_date := p_from.creation_date;
1831 
1832     p_to.last_updated_by := p_from.last_updated_by;
1833 
1834     p_to.last_update_date := p_from.last_update_date;
1835 
1836     p_to.last_update_login := p_from.last_update_login;
1837 
1838   END migrate;
1839 
1840   PROCEDURE migrate (
1841 
1842     p_from IN dra_rec_type,
1843 
1844     p_to   IN OUT NOCOPY drav_rec_type
1845 
1846   ) IS
1847 
1848   BEGIN
1849 
1850     p_to.disb_rule_id := p_from.disb_rule_id;
1851 
1852     p_to.object_version_number := p_from.object_version_number;
1853 
1854     p_to.rule_name := p_from.rule_name;
1855 
1856     p_to.org_id := p_from.org_id;
1857 
1858     p_to.start_date := p_from.start_date;
1859 
1860     p_to.end_date := p_from.end_date;
1861 
1862     p_to.fee_option := p_from.fee_option;
1863 
1864     p_to.fee_basis := p_from.fee_basis;
1865 
1866     p_to.fee_amount := p_from.fee_amount;
1867 
1868     p_to.fee_percent := p_from.fee_percent;
1869 
1870     p_to.consolidate_by_due_date := p_from.consolidate_by_due_date;
1871 
1872     p_to.frequency := p_from.frequency;
1873 
1874     p_to.day_of_month := p_from.day_of_month;
1875 
1876     p_to.scheduled_month := p_from.scheduled_month;
1877 
1878     p_to.consolidate_strm_type := p_from.consolidate_strm_type;
1879 
1880     p_to.attribute_category := p_from.attribute_category;
1881 
1882     p_to.attribute1 := p_from.attribute1;
1883 
1884     p_to.attribute2 := p_from.attribute2;
1885 
1886     p_to.attribute3 := p_from.attribute3;
1887 
1888     p_to.attribute4 := p_from.attribute4;
1889 
1890     p_to.attribute5 := p_from.attribute5;
1891 
1892     p_to.attribute6 := p_from.attribute6;
1893 
1894     p_to.attribute7 := p_from.attribute7;
1895 
1896     p_to.attribute8 := p_from.attribute8;
1897 
1898     p_to.attribute9 := p_from.attribute9;
1899 
1900     p_to.attribute10 := p_from.attribute10;
1901 
1902     p_to.attribute11 := p_from.attribute11;
1903 
1904     p_to.attribute12 := p_from.attribute12;
1905 
1906     p_to.attribute13 := p_from.attribute13;
1907 
1908     p_to.attribute14 := p_from.attribute14;
1909 
1910     p_to.attribute15 := p_from.attribute15;
1911 
1912     p_to.created_by := p_from.created_by;
1913 
1914     p_to.creation_date := p_from.creation_date;
1915 
1916     p_to.last_updated_by := p_from.last_updated_by;
1917 
1918     p_to.last_update_date := p_from.last_update_date;
1919 
1920     p_to.last_update_login := p_from.last_update_login;
1921 
1922   END migrate;
1923 
1924   ---------------------------------------------------------------------------
1925 
1926   -- PROCEDURE validate_row
1927 
1928   ---------------------------------------------------------------------------
1929 
1930   ---------------------------------------
1931 
1932   -- validate_row for:OKL_DISB_RULES_V --
1933 
1934   ---------------------------------------
1935 
1936   PROCEDURE validate_row(
1937 
1938     p_api_version                  IN NUMBER,
1939 
1940     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1941 
1942     x_return_status                OUT NOCOPY VARCHAR2,
1943 
1944     x_msg_count                    OUT NOCOPY NUMBER,
1945 
1946     x_msg_data                     OUT NOCOPY VARCHAR2,
1947 
1948     p_drav_rec                     IN drav_rec_type) IS
1949 
1950 
1951 
1952     l_api_version                  CONSTANT NUMBER := 1;
1953 
1954     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1955 
1956     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1957 
1958     l_drav_rec                     drav_rec_type := p_drav_rec;
1959 
1960     l_dra_rec                      dra_rec_type;
1961 
1962     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type;
1963 
1964   BEGIN
1965 
1966     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1967 
1968                                               G_PKG_NAME,
1969 
1970                                               p_init_msg_list,
1971 
1972                                               l_api_version,
1973 
1974                                               p_api_version,
1975 
1976                                               '_PVT',
1977 
1978                                               x_return_status);
1979 
1980     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1981 
1982       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1983 
1984     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1985 
1986       RAISE OKL_API.G_EXCEPTION_ERROR;
1987 
1988     END IF;
1989 
1990     --- Validate all non-missing attributes (Item Level Validation)
1991 
1992     l_return_status := Validate_Attributes(l_drav_rec);
1993 
1994     --- If any errors happen abort API
1995 
1996     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1997 
1998       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1999 
2000     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2001 
2002       RAISE OKL_API.G_EXCEPTION_ERROR;
2003 
2004     END IF;
2005 
2006     l_return_status := Validate_Record(l_drav_rec);
2007 
2008     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2009 
2010       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2011 
2012     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2013 
2014       RAISE OKL_API.G_EXCEPTION_ERROR;
2015 
2016     END IF;
2017 
2018     x_return_status := l_return_status;
2019 
2020   EXCEPTION
2021 
2022     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2023 
2024       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2025 
2026       (
2027 
2028         l_api_name,
2029 
2030         G_PKG_NAME,
2031 
2032         'OKL_API.G_RET_STS_ERROR',
2033 
2034         x_msg_count,
2035 
2036         x_msg_data,
2037 
2038         '_PVT'
2039 
2040       );
2041 
2042     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2043 
2044       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2045 
2046       (
2047 
2048         l_api_name,
2049 
2050         G_PKG_NAME,
2051 
2052         'OKL_API.G_RET_STS_UNEXP_ERROR',
2053 
2054         x_msg_count,
2055 
2056         x_msg_data,
2057 
2058         '_PVT'
2059 
2060       );
2061 
2062     WHEN OTHERS THEN
2063 
2064       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2065 
2066       (
2067 
2068         l_api_name,
2069 
2070         G_PKG_NAME,
2071 
2072         'OTHERS',
2073 
2074         x_msg_count,
2075 
2076         x_msg_data,
2077 
2078         '_PVT'
2079 
2080       );
2081 
2082   END validate_row;
2083 
2084   --------------------------------------------------
2085 
2086   -- PL/SQL TBL validate_row for:OKL_DISB_RULES_V --
2087 
2088   --------------------------------------------------
2089 
2090   PROCEDURE validate_row(
2091 
2092     p_api_version                  IN NUMBER,
2093 
2094     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2095 
2096     x_return_status                OUT NOCOPY VARCHAR2,
2097 
2098     x_msg_count                    OUT NOCOPY NUMBER,
2099 
2100     x_msg_data                     OUT NOCOPY VARCHAR2,
2101 
2102     p_drav_tbl                     IN drav_tbl_type,
2103 
2104     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2105 
2106 
2107 
2108     l_api_version                  CONSTANT NUMBER := 1;
2109 
2110     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
2111 
2112     i                              NUMBER := 0;
2113 
2114   BEGIN
2115 
2116     OKL_API.init_msg_list(p_init_msg_list);
2117 
2118     -- Make sure PL/SQL table has records in it before passing
2119 
2120     IF (p_drav_tbl.COUNT > 0) THEN
2121 
2122       i := p_drav_tbl.FIRST;
2123 
2124       LOOP
2125 
2126         DECLARE
2127 
2128           l_error_rec         OKL_API.ERROR_REC_TYPE;
2129 
2130         BEGIN
2131 
2132           l_error_rec.api_name := l_api_name;
2133 
2134           l_error_rec.api_package := G_PKG_NAME;
2135 
2136           l_error_rec.idx := i;
2137 
2138           validate_row (
2139 
2140             p_api_version                  => p_api_version,
2141 
2142             p_init_msg_list                => OKL_API.G_FALSE,
2143 
2144             x_return_status                => l_error_rec.error_type,
2145 
2146             x_msg_count                    => l_error_rec.msg_count,
2147 
2148             x_msg_data                     => l_error_rec.msg_data,
2149 
2150             p_drav_rec                     => p_drav_tbl(i));
2151 
2152           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2153 
2154             l_error_rec.sqlcode := SQLCODE;
2155 
2156             load_error_tbl(l_error_rec, px_error_tbl);
2157 
2158           ELSE
2159 
2160             x_msg_count := l_error_rec.msg_count;
2161 
2162             x_msg_data := l_error_rec.msg_data;
2163 
2164           END IF;
2165 
2166         EXCEPTION
2167 
2168           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2169 
2170             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2171 
2172             l_error_rec.sqlcode := SQLCODE;
2173 
2174             load_error_tbl(l_error_rec, px_error_tbl);
2175 
2176           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2177 
2178             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2179 
2180             l_error_rec.sqlcode := SQLCODE;
2181 
2182             load_error_tbl(l_error_rec, px_error_tbl);
2183 
2184           WHEN OTHERS THEN
2185 
2186             l_error_rec.error_type := 'OTHERS';
2187 
2188             l_error_rec.sqlcode := SQLCODE;
2189 
2190             load_error_tbl(l_error_rec, px_error_tbl);
2191 
2192         END;
2193 
2194         EXIT WHEN (i = p_drav_tbl.LAST);
2195 
2196         i := p_drav_tbl.NEXT(i);
2197 
2198       END LOOP;
2199 
2200     END IF;
2201 
2202     -- Loop through the error_tbl to find the error with the highest severity
2203 
2204     -- and return it.
2205 
2206     x_return_status := find_highest_exception(px_error_tbl);
2207 
2208     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2209 
2210   EXCEPTION
2211 
2212     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2213 
2214       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2215 
2216       (
2217 
2218         l_api_name,
2219 
2220         G_PKG_NAME,
2221 
2222         'OKL_API.G_RET_STS_ERROR',
2223 
2224         x_msg_count,
2225 
2226         x_msg_data,
2227 
2228         '_PVT'
2229 
2230       );
2231 
2232     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2233 
2234       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2235 
2236       (
2237 
2238         l_api_name,
2239 
2240         G_PKG_NAME,
2241 
2242         'OKL_API.G_RET_STS_UNEXP_ERROR',
2243 
2244         x_msg_count,
2245 
2246         x_msg_data,
2247 
2248         '_PVT'
2249 
2250       );
2251 
2252     WHEN OTHERS THEN
2253 
2254       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2255 
2256       (
2257 
2258         l_api_name,
2259 
2260         G_PKG_NAME,
2261 
2262         'OTHERS',
2263 
2264         x_msg_count,
2265 
2266         x_msg_data,
2267 
2268         '_PVT'
2269 
2270       );
2271 
2272   END validate_row;
2273 
2274 
2275 
2276   --------------------------------------------------
2277 
2278   -- PL/SQL TBL validate_row for:OKL_DISB_RULES_V --
2279 
2280   --------------------------------------------------
2281 
2282   PROCEDURE validate_row(
2283 
2284     p_api_version                  IN NUMBER,
2285 
2286     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2287 
2288     x_return_status                OUT NOCOPY VARCHAR2,
2289 
2290     x_msg_count                    OUT NOCOPY NUMBER,
2291 
2292     x_msg_data                     OUT NOCOPY VARCHAR2,
2293 
2294     p_drav_tbl                     IN drav_tbl_type) IS
2295 
2296 
2297 
2298     l_api_version                  CONSTANT NUMBER := 1;
2299 
2300     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
2301 
2302     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2303 
2304     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2305 
2306   BEGIN
2307 
2308     OKL_API.init_msg_list(p_init_msg_list);
2309 
2310     -- Make sure PL/SQL table has records in it before passing
2311 
2312     IF (p_drav_tbl.COUNT > 0) THEN
2313 
2314       validate_row (
2315 
2316         p_api_version                  => p_api_version,
2317 
2318         p_init_msg_list                => OKL_API.G_FALSE,
2319 
2320         x_return_status                => x_return_status,
2321 
2322         x_msg_count                    => x_msg_count,
2323 
2324         x_msg_data                     => x_msg_data,
2325 
2326         p_drav_tbl                     => p_drav_tbl,
2327 
2328         px_error_tbl                   => l_error_tbl);
2329 
2330     END IF;
2331 
2332     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2333 
2334   EXCEPTION
2335 
2336     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2337 
2338       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2339 
2340       (
2341 
2342         l_api_name,
2343 
2344         G_PKG_NAME,
2345 
2346         'OKL_API.G_RET_STS_ERROR',
2347 
2348         x_msg_count,
2349 
2350         x_msg_data,
2351 
2352         '_PVT'
2353 
2354       );
2355 
2356     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2357 
2358       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2359 
2360       (
2361 
2362         l_api_name,
2363 
2364         G_PKG_NAME,
2365 
2366         'OKL_API.G_RET_STS_UNEXP_ERROR',
2367 
2368         x_msg_count,
2369 
2370         x_msg_data,
2371 
2372         '_PVT'
2373 
2374       );
2375 
2376     WHEN OTHERS THEN
2377 
2378       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2379 
2380       (
2381 
2382         l_api_name,
2383 
2384         G_PKG_NAME,
2385 
2386         'OTHERS',
2387 
2388         x_msg_count,
2389 
2390         x_msg_data,
2391 
2392         '_PVT'
2393 
2394       );
2395 
2396   END validate_row;
2397 
2398 
2399 
2400   ---------------------------------------------------------------------------
2401 
2402   -- PROCEDURE insert_row
2403 
2404   ---------------------------------------------------------------------------
2405 
2406   -------------------------------------
2407 
2408   -- insert_row for:OKL_DISB_RULES_B --
2409 
2410   -------------------------------------
2411 
2412   PROCEDURE insert_row(
2413 
2414     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2415     x_return_status                OUT NOCOPY VARCHAR2,
2416     x_msg_count                    OUT NOCOPY NUMBER,
2417     x_msg_data                     OUT NOCOPY VARCHAR2,
2418     p_dra_rec                      IN dra_rec_type,
2419     x_dra_rec                      OUT NOCOPY dra_rec_type) IS
2420 
2421 
2422 
2423     l_api_version                  CONSTANT NUMBER := 1;
2424     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
2425     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2426     l_dra_rec                      dra_rec_type := p_dra_rec;
2427     l_def_dra_rec                  dra_rec_type;
2428 
2429     -----------------------------------------
2430 
2431     -- Set_Attributes for:OKL_DISB_RULES_B --
2432 
2433     -----------------------------------------
2434 
2435     FUNCTION Set_Attributes (
2436       p_dra_rec IN dra_rec_type,
2437       x_dra_rec OUT NOCOPY dra_rec_type
2438 
2439     ) RETURN VARCHAR2 IS
2440 
2441       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2442 
2443     BEGIN
2444       x_dra_rec := p_dra_rec;
2445       RETURN(l_return_status);
2446     END Set_Attributes;
2447 
2448   BEGIN
2449 
2450     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2451                                               p_init_msg_list,
2452                                               '_PVT',
2453                                               x_return_status);
2454 
2455     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2456       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2457     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2458       RAISE OKL_API.G_EXCEPTION_ERROR;
2459     END IF;
2460 
2461     --- Setting item atributes
2462 
2463     l_return_status := Set_Attributes(
2464       l_dra_rec,                         -- IN
2465       l_def_dra_rec);                    -- OUT
2466 
2467     --- If any errors happen abort API
2468 
2469     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2470       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2471     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2472       RAISE OKL_API.G_EXCEPTION_ERROR;
2473     END IF;
2474 
2475     INSERT INTO OKL_DISB_RULES_B(
2476       disb_rule_id,
2477       object_version_number,
2478       rule_name,
2479       org_id,
2480 
2481       start_date,
2482 
2483       end_date,
2484 
2485       fee_option,
2486 
2487       fee_basis,
2488 
2489       fee_amount,
2490 
2491       fee_percent,
2492 
2493       consolidate_by_due_date,
2494 
2495       frequency,
2496 
2497       day_of_month,
2498 
2499       scheduled_month,
2500 
2501       consolidate_strm_type,
2502 
2503       attribute_category,
2504 
2505       attribute1,
2506 
2507       attribute2,
2508 
2509       attribute3,
2510 
2511       attribute4,
2512 
2513       attribute5,
2514 
2515       attribute6,
2516 
2517       attribute7,
2518 
2519       attribute8,
2520 
2521       attribute9,
2522 
2523       attribute10,
2524 
2525       attribute11,
2526 
2527       attribute12,
2528 
2529       attribute13,
2530 
2531       attribute14,
2532 
2533       attribute15,
2534 
2535       created_by,
2536 
2537       creation_date,
2538 
2539       last_updated_by,
2540 
2541       last_update_date,
2542 
2543       last_update_login)
2544 
2545     VALUES (
2546 
2547       l_def_dra_rec.disb_rule_id,
2548 
2549       l_def_dra_rec.object_version_number,
2550 
2551       l_def_dra_rec.rule_name,
2552 
2553       l_def_dra_rec.org_id,
2554 
2555       l_def_dra_rec.start_date,
2556 
2557       l_def_dra_rec.end_date,
2558 
2559       l_def_dra_rec.fee_option,
2560 
2561       l_def_dra_rec.fee_basis,
2562 
2563       l_def_dra_rec.fee_amount,
2564 
2565       l_def_dra_rec.fee_percent,
2566 
2567       l_def_dra_rec.consolidate_by_due_date,
2568 
2569       l_def_dra_rec.frequency,
2570 
2571       l_def_dra_rec.day_of_month,
2572 
2573       l_def_dra_rec.scheduled_month,
2574 
2575       l_def_dra_rec.consolidate_strm_type,
2576 
2577       l_def_dra_rec.attribute_category,
2578 
2579       l_def_dra_rec.attribute1,
2580 
2581       l_def_dra_rec.attribute2,
2582 
2583       l_def_dra_rec.attribute3,
2584 
2585       l_def_dra_rec.attribute4,
2586 
2587       l_def_dra_rec.attribute5,
2588 
2589       l_def_dra_rec.attribute6,
2590 
2591       l_def_dra_rec.attribute7,
2592 
2593       l_def_dra_rec.attribute8,
2594 
2595       l_def_dra_rec.attribute9,
2596 
2597       l_def_dra_rec.attribute10,
2598 
2599       l_def_dra_rec.attribute11,
2600 
2601       l_def_dra_rec.attribute12,
2602 
2603       l_def_dra_rec.attribute13,
2604 
2605       l_def_dra_rec.attribute14,
2606 
2607       l_def_dra_rec.attribute15,
2608 
2609       l_def_dra_rec.created_by,
2610 
2611       l_def_dra_rec.creation_date,
2612 
2613       l_def_dra_rec.last_updated_by,
2614 
2615       l_def_dra_rec.last_update_date,
2616 
2617       l_def_dra_rec.last_update_login);
2618 
2619     -- Set OUT values
2620 
2621     x_dra_rec := l_dra_rec;
2622 
2623     x_return_status := l_return_status;
2624 
2625     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2626 
2627   EXCEPTION
2628 
2629     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2630 
2631       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2632 
2633       (
2634 
2635         l_api_name,
2636 
2637         G_PKG_NAME,
2638 
2639         'OKL_API.G_RET_STS_ERROR',
2640 
2641         x_msg_count,
2642 
2643         x_msg_data,
2644 
2645         '_PVT'
2646 
2647       );
2648 
2649     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2650 
2651       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2652 
2653       (
2654 
2655         l_api_name,
2656 
2657         G_PKG_NAME,
2658 
2659         'OKL_API.G_RET_STS_UNEXP_ERROR',
2660 
2661         x_msg_count,
2662 
2663         x_msg_data,
2664 
2665         '_PVT'
2666 
2667       );
2668 
2669     WHEN OTHERS THEN
2670 
2671       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2672 
2673       (
2674 
2675         l_api_name,
2676 
2677         G_PKG_NAME,
2678 
2679         'OTHERS',
2680 
2681         x_msg_count,
2682 
2683         x_msg_data,
2684 
2685         '_PVT'
2686 
2687       );
2688 
2689   END insert_row;
2690 
2691   --------------------------------------
2692 
2693   -- insert_row for:OKL_DISB_RULES_TL --
2694 
2695   --------------------------------------
2696 
2697   PROCEDURE insert_row(
2698 
2699     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2700 
2701     x_return_status                OUT NOCOPY VARCHAR2,
2702 
2703     x_msg_count                    OUT NOCOPY NUMBER,
2704 
2705     x_msg_data                     OUT NOCOPY VARCHAR2,
2706 
2707     p_okl_disb_rules_tl_rec        IN okl_disb_rules_tl_rec_type,
2708 
2709     x_okl_disb_rules_tl_rec        OUT NOCOPY okl_disb_rules_tl_rec_type) IS
2710 
2711 
2712 
2713     l_api_version                  CONSTANT NUMBER := 1;
2714 
2715     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
2716 
2717     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2718 
2719     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type := p_okl_disb_rules_tl_rec;
2720 
2721     l_def_okl_disb_rules_tl_rec    okl_disb_rules_tl_rec_type;
2722 
2723     CURSOR get_languages IS
2724 
2725       SELECT *
2726 
2727         FROM FND_LANGUAGES
2728 
2729        WHERE INSTALLED_FLAG IN ('I', 'B');
2730 
2731     ------------------------------------------
2732 
2733     -- Set_Attributes for:OKL_DISB_RULES_TL --
2734 
2735     ------------------------------------------
2736 
2737     FUNCTION Set_Attributes (
2738 
2739       p_okl_disb_rules_tl_rec IN okl_disb_rules_tl_rec_type,
2740 
2741       x_okl_disb_rules_tl_rec OUT NOCOPY okl_disb_rules_tl_rec_type
2742 
2743     ) RETURN VARCHAR2 IS
2744 
2745       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2746 
2747     BEGIN
2748 
2749       x_okl_disb_rules_tl_rec := p_okl_disb_rules_tl_rec;
2750 
2751       x_okl_disb_rules_tl_rec.LANGUAGE := USERENV('LANG');
2752 
2753       x_okl_disb_rules_tl_rec.SOURCE_LANG := USERENV('LANG');
2754 
2755       RETURN(l_return_status);
2756 
2757     END Set_Attributes;
2758 
2759   BEGIN
2760 
2761     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2762 
2763                                               p_init_msg_list,
2764 
2765                                               '_PVT',
2766 
2767                                               x_return_status);
2768 
2769     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2770 
2771       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2772 
2773     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2774 
2775       RAISE OKL_API.G_EXCEPTION_ERROR;
2776 
2777     END IF;
2778 
2779     --- Setting item attributes
2780 
2781     l_return_status := Set_Attributes(
2782 
2783       p_okl_disb_rules_tl_rec,           -- IN
2784 
2785       l_okl_disb_rules_tl_rec);          -- OUT
2786 
2787     --- If any errors happen abort API
2788 
2789     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2790 
2791       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2792 
2793     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2794 
2795       RAISE OKL_API.G_EXCEPTION_ERROR;
2796 
2797     END IF;
2798 
2799     FOR l_lang_rec IN get_languages LOOP
2800 
2801       l_okl_disb_rules_tl_rec.language := l_lang_rec.language_code;
2802 
2803       INSERT INTO OKL_DISB_RULES_TL(
2804 
2805         disb_rule_id,
2806 
2807         language,
2808 
2809         source_lang,
2810 
2811         sfwt_flag,
2812 
2813         description,
2814 
2815         created_by,
2816 
2817         creation_date,
2818 
2819         last_updated_by,
2820 
2821         last_update_date,
2822 
2823         last_update_login)
2824 
2825       VALUES (
2826 
2827         l_okl_disb_rules_tl_rec.disb_rule_id,
2828 
2829         l_okl_disb_rules_tl_rec.language,
2830 
2831         l_okl_disb_rules_tl_rec.source_lang,
2832 
2833         l_okl_disb_rules_tl_rec.sfwt_flag,
2834 
2835         l_okl_disb_rules_tl_rec.description,
2836 
2837         l_okl_disb_rules_tl_rec.created_by,
2838 
2839         l_okl_disb_rules_tl_rec.creation_date,
2840 
2841         l_okl_disb_rules_tl_rec.last_updated_by,
2842 
2843         l_okl_disb_rules_tl_rec.last_update_date,
2844 
2845         l_okl_disb_rules_tl_rec.last_update_login);
2846 
2847     END LOOP;
2848 
2849     -- Set OUT values
2850 
2851     x_okl_disb_rules_tl_rec := l_okl_disb_rules_tl_rec;
2852 
2853     x_return_status := l_return_status;
2854 
2855     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2856 
2857   EXCEPTION
2858 
2859     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2860 
2861       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2862 
2863       (
2864 
2865         l_api_name,
2866 
2867         G_PKG_NAME,
2868 
2869         'OKL_API.G_RET_STS_ERROR',
2870 
2871         x_msg_count,
2872 
2873         x_msg_data,
2874 
2875         '_PVT'
2876 
2877       );
2878 
2879     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2880 
2881       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2882 
2883       (
2884 
2885         l_api_name,
2886 
2887         G_PKG_NAME,
2888 
2889         'OKL_API.G_RET_STS_UNEXP_ERROR',
2890 
2891         x_msg_count,
2892 
2893         x_msg_data,
2894 
2895         '_PVT'
2896 
2897       );
2898 
2899     WHEN OTHERS THEN
2900 
2901       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2902 
2903       (
2904 
2905         l_api_name,
2906 
2907         G_PKG_NAME,
2908 
2909         'OTHERS',
2910 
2911         x_msg_count,
2912 
2913         x_msg_data,
2914 
2915         '_PVT'
2916 
2917       );
2918 
2919   END insert_row;
2920 
2921   --------------------------------------
2922 
2923   -- insert_row for :OKL_DISB_RULES_B --
2924 
2925   --------------------------------------
2926 
2927   PROCEDURE insert_row(
2928 
2929     p_api_version                  IN NUMBER,
2930 
2931     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2932 
2933     x_return_status                OUT NOCOPY VARCHAR2,
2934 
2935     x_msg_count                    OUT NOCOPY NUMBER,
2936 
2937     x_msg_data                     OUT NOCOPY VARCHAR2,
2938 
2939     p_drav_rec                     IN drav_rec_type,
2940 
2941     x_drav_rec                     OUT NOCOPY drav_rec_type) IS
2942 
2943 
2944 
2945     l_api_version                  CONSTANT NUMBER := 1;
2946 
2947     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
2948 
2949     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2950 
2951     l_drav_rec                     drav_rec_type := p_drav_rec;
2952 
2953     l_def_drav_rec                 drav_rec_type;
2954 
2955     l_dra_rec                      dra_rec_type;
2956 
2957     lx_dra_rec                     dra_rec_type;
2958 
2959     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type;
2960 
2961     lx_okl_disb_rules_tl_rec       okl_disb_rules_tl_rec_type;
2962 
2963     -------------------------------
2964 
2965     -- FUNCTION fill_who_columns --
2966 
2967     -------------------------------
2968 
2969     FUNCTION fill_who_columns (
2970 
2971       p_drav_rec IN drav_rec_type
2972 
2973     ) RETURN drav_rec_type IS
2974 
2975       l_drav_rec drav_rec_type := p_drav_rec;
2976 
2977     BEGIN
2978 
2979       l_drav_rec.CREATION_DATE := SYSDATE;
2980 
2981       l_drav_rec.CREATED_BY := FND_GLOBAL.USER_ID;
2982 
2983       l_drav_rec.LAST_UPDATE_DATE := l_drav_rec.CREATION_DATE;
2984 
2985       l_drav_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2986 
2987       l_drav_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2988 
2989       RETURN(l_drav_rec);
2990 
2991     END fill_who_columns;
2992 
2993     -----------------------------------------
2994 
2995     -- Set_Attributes for:OKL_DISB_RULES_B --
2996 
2997     -----------------------------------------
2998 
2999     FUNCTION Set_Attributes (
3000 
3001       p_drav_rec IN drav_rec_type,
3002 
3003       x_drav_rec OUT NOCOPY drav_rec_type
3004 
3005     ) RETURN VARCHAR2 IS
3006 
3007       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3008 
3009     BEGIN
3010 
3011       x_drav_rec := p_drav_rec;
3012 
3013       x_drav_rec.OBJECT_VERSION_NUMBER := 1;
3014 
3015       x_drav_rec.SFWT_FLAG := 'N';
3016 
3017       RETURN(l_return_status);
3018 
3019     END Set_Attributes;
3020 
3021   BEGIN
3022 
3023     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3024 
3025                                               G_PKG_NAME,
3026 
3027                                               p_init_msg_list,
3028 
3029                                               l_api_version,
3030 
3031                                               p_api_version,
3032 
3033                                               '_PVT',
3034 
3035                                               x_return_status);
3036 
3037     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3038 
3039       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3040 
3041     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3042 
3043       RAISE OKL_API.G_EXCEPTION_ERROR;
3044 
3045     END IF;
3046 
3047     l_drav_rec := null_out_defaults(p_drav_rec);
3048 
3049     -- Set primary key value
3050 
3051     l_drav_rec.DISB_RULE_ID := get_seq_id;
3052 
3053     -- Setting item attributes
3054 
3055     l_return_Status := Set_Attributes(
3056 
3057       l_drav_rec,                        -- IN
3058 
3059       l_def_drav_rec);                   -- OUT
3060 
3061     --- If any errors happen abort API
3062 
3063     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3064 
3065       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3066 
3067     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3068 
3069       RAISE OKL_API.G_EXCEPTION_ERROR;
3070 
3071     END IF;
3072 
3073     l_def_drav_rec := fill_who_columns(l_def_drav_rec);
3074 
3075     --- Validate all non-missing attributes (Item Level Validation)
3076 
3077     l_return_status := Validate_Attributes(l_def_drav_rec);
3078 
3079     --- If any errors happen abort API
3080 
3081     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3082 
3083       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3084 
3085     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3086 
3087       RAISE OKL_API.G_EXCEPTION_ERROR;
3088 
3089     END IF;
3090 
3091     l_return_status := Validate_Record(l_def_drav_rec);
3092 
3093     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3094 
3095       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3096 
3097     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3098 
3099       RAISE OKL_API.G_EXCEPTION_ERROR;
3100 
3101     END IF;
3102 
3103     -----------------------------------------
3104 
3105     -- Move VIEW record to "Child" records --
3106 
3107     -----------------------------------------
3108 
3109     migrate(l_def_drav_rec, l_dra_rec);
3110 
3111     migrate(l_def_drav_rec, l_okl_disb_rules_tl_rec);
3112 
3113     --g_debug_proc('DRA INSERT  l_def_drav_rec' || l_def_drav_rec.disb_rule_id);
3114     --g_debug_proc('DRA INSERT  l_dra_rec' || l_dra_rec.disb_rule_id);
3115     --g_debug_proc('DRA INSERT  l_okl_disb_rules_tl_rec' || l_okl_disb_rules_tl_rec.disb_rule_id);
3116 
3117 
3118     -----------------------------------------------
3119 
3120     -- Call the INSERT_ROW for each child record --
3121 
3122     -----------------------------------------------
3123 
3124     insert_row(
3125 
3126       p_init_msg_list,
3127 
3128       l_return_status,
3129 
3130       x_msg_count,
3131 
3132       x_msg_data,
3133 
3134       l_dra_rec,
3135 
3136       lx_dra_rec
3137 
3138     );
3139 
3140     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3141 
3142       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3143 
3144     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3145 
3146       RAISE OKL_API.G_EXCEPTION_ERROR;
3147 
3148     END IF;
3149 
3150     migrate(lx_dra_rec, l_def_drav_rec);
3151 
3152     insert_row(
3153 
3154       p_init_msg_list,
3155 
3156       l_return_status,
3157 
3158       x_msg_count,
3159 
3160       x_msg_data,
3161 
3162       l_okl_disb_rules_tl_rec,
3163 
3164       lx_okl_disb_rules_tl_rec
3165 
3166     );
3167 
3168     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3169 
3170       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3171 
3172     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3173 
3174       RAISE OKL_API.G_EXCEPTION_ERROR;
3175 
3176     END IF;
3177 
3178     migrate(lx_okl_disb_rules_tl_rec, l_def_drav_rec);
3179 
3180     -- Set OUT values
3181 
3182     x_drav_rec := l_def_drav_rec;
3183 
3184     x_return_status := l_return_status;
3185 
3186     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3187 
3188   EXCEPTION
3189 
3190     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3191 
3192       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3193 
3194       (
3195 
3196         l_api_name,
3197 
3198         G_PKG_NAME,
3199 
3200         'OKL_API.G_RET_STS_ERROR',
3201 
3202         x_msg_count,
3203 
3204         x_msg_data,
3205 
3206         '_PVT'
3207 
3208       );
3209 
3210     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3211 
3212       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3213 
3214       (
3215 
3216         l_api_name,
3217 
3218         G_PKG_NAME,
3219 
3220         'OKL_API.G_RET_STS_UNEXP_ERROR',
3221 
3222         x_msg_count,
3223 
3224         x_msg_data,
3225 
3226         '_PVT'
3227 
3228       );
3229 
3230     WHEN OTHERS THEN
3231 
3232       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3233 
3234       (
3235 
3236         l_api_name,
3237 
3238         G_PKG_NAME,
3239 
3240         'OTHERS',
3241 
3242         x_msg_count,
3243 
3244         x_msg_data,
3245 
3246         '_PVT'
3247 
3248       );
3249 
3250   END insert_row;
3251 
3252   ----------------------------------------
3253 
3254   -- PL/SQL TBL insert_row for:DRAV_TBL --
3255 
3256   ----------------------------------------
3257 
3258   PROCEDURE insert_row(
3259 
3260     p_api_version                  IN NUMBER,
3261 
3262     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3263 
3264     x_return_status                OUT NOCOPY VARCHAR2,
3265 
3266     x_msg_count                    OUT NOCOPY NUMBER,
3267 
3268     x_msg_data                     OUT NOCOPY VARCHAR2,
3269 
3270     p_drav_tbl                     IN drav_tbl_type,
3271 
3272     x_drav_tbl                     OUT NOCOPY drav_tbl_type,
3273 
3274     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3275 
3276 
3277 
3278     l_api_version                  CONSTANT NUMBER := 1;
3279 
3280     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
3281 
3282     i                              NUMBER := 0;
3283 
3284   BEGIN
3285 
3286     OKL_API.init_msg_list(p_init_msg_list);
3287 
3288     -- Make sure PL/SQL table has records in it before passing
3289 
3290     IF (p_drav_tbl.COUNT > 0) THEN
3291 
3292       i := p_drav_tbl.FIRST;
3293 
3294       LOOP
3295 
3296         DECLARE
3297 
3298           l_error_rec         OKL_API.ERROR_REC_TYPE;
3299 
3300         BEGIN
3301 
3302           l_error_rec.api_name := l_api_name;
3303 
3304           l_error_rec.api_package := G_PKG_NAME;
3305 
3306           l_error_rec.idx := i;
3307 
3308           insert_row (
3309 
3310             p_api_version                  => p_api_version,
3311 
3312             p_init_msg_list                => OKL_API.G_FALSE,
3313 
3314             x_return_status                => l_error_rec.error_type,
3315 
3316             x_msg_count                    => l_error_rec.msg_count,
3317 
3318             x_msg_data                     => l_error_rec.msg_data,
3319 
3320             p_drav_rec                     => p_drav_tbl(i),
3321 
3322             x_drav_rec                     => x_drav_tbl(i));
3323 
3324           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3325 
3326             l_error_rec.sqlcode := SQLCODE;
3327 
3328             load_error_tbl(l_error_rec, px_error_tbl);
3329 
3330           ELSE
3331 
3332             x_msg_count := l_error_rec.msg_count;
3333 
3334             x_msg_data := l_error_rec.msg_data;
3335 
3336           END IF;
3337 
3338         EXCEPTION
3339 
3340           WHEN OKL_API.G_EXCEPTION_ERROR THEN
3341 
3342             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3343 
3344             l_error_rec.sqlcode := SQLCODE;
3345 
3346             load_error_tbl(l_error_rec, px_error_tbl);
3347 
3348           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3349 
3350             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3351 
3352             l_error_rec.sqlcode := SQLCODE;
3353 
3354             load_error_tbl(l_error_rec, px_error_tbl);
3355 
3356           WHEN OTHERS THEN
3357 
3358             l_error_rec.error_type := 'OTHERS';
3359 
3360             l_error_rec.sqlcode := SQLCODE;
3361 
3362             load_error_tbl(l_error_rec, px_error_tbl);
3363 
3364         END;
3365 
3366         EXIT WHEN (i = p_drav_tbl.LAST);
3367 
3368         i := p_drav_tbl.NEXT(i);
3369 
3370       END LOOP;
3371 
3372     END IF;
3373 
3374     -- Loop through the error_tbl to find the error with the highest severity
3375 
3376     -- and return it.
3377 
3378     x_return_status := find_highest_exception(px_error_tbl);
3379 
3380     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3381 
3382   EXCEPTION
3383 
3384     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3385 
3386       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3387 
3388       (
3389 
3390         l_api_name,
3391 
3392         G_PKG_NAME,
3393 
3394         'OKL_API.G_RET_STS_ERROR',
3395 
3396         x_msg_count,
3397 
3398         x_msg_data,
3399 
3400         '_PVT'
3401 
3402       );
3403 
3404     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3405 
3406       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3407 
3408       (
3409 
3410         l_api_name,
3411 
3412         G_PKG_NAME,
3413 
3414         'OKL_API.G_RET_STS_UNEXP_ERROR',
3415 
3416         x_msg_count,
3417 
3418         x_msg_data,
3419 
3420         '_PVT'
3421 
3422       );
3423 
3424     WHEN OTHERS THEN
3425 
3426       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3427 
3428       (
3429 
3430         l_api_name,
3431 
3432         G_PKG_NAME,
3433 
3434         'OTHERS',
3435 
3436         x_msg_count,
3437 
3438         x_msg_data,
3439 
3440         '_PVT'
3441 
3442       );
3443 
3444   END insert_row;
3445 
3446 
3447 
3448   ----------------------------------------
3449 
3450   -- PL/SQL TBL insert_row for:DRAV_TBL --
3451 
3452   ----------------------------------------
3453 
3454   PROCEDURE insert_row(
3455 
3456     p_api_version                  IN NUMBER,
3457 
3458     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3459 
3460     x_return_status                OUT NOCOPY VARCHAR2,
3461 
3462     x_msg_count                    OUT NOCOPY NUMBER,
3463 
3464     x_msg_data                     OUT NOCOPY VARCHAR2,
3465 
3466     p_drav_tbl                     IN drav_tbl_type,
3467 
3468     x_drav_tbl                     OUT NOCOPY drav_tbl_type) IS
3469 
3470 
3471 
3472     l_api_version                  CONSTANT NUMBER := 1;
3473 
3474     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
3475 
3476     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3477 
3478     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3479 
3480   BEGIN
3481 
3482     OKL_API.init_msg_list(p_init_msg_list);
3483 
3484     -- Make sure PL/SQL table has records in it before passing
3485 
3486     IF (p_drav_tbl.COUNT > 0) THEN
3487 
3488       insert_row (
3489 
3490         p_api_version                  => p_api_version,
3491 
3492         p_init_msg_list                => OKL_API.G_FALSE,
3493 
3494         x_return_status                => x_return_status,
3495 
3496         x_msg_count                    => x_msg_count,
3497 
3498         x_msg_data                     => x_msg_data,
3499 
3500         p_drav_tbl                     => p_drav_tbl,
3501 
3502         x_drav_tbl                     => x_drav_tbl,
3503 
3504         px_error_tbl                   => l_error_tbl);
3505 
3506     END IF;
3507 
3508     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3509 
3510   EXCEPTION
3511 
3512     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3513 
3514       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3515 
3516       (
3517 
3518         l_api_name,
3519 
3520         G_PKG_NAME,
3521 
3522         'OKL_API.G_RET_STS_ERROR',
3523 
3524         x_msg_count,
3525 
3526         x_msg_data,
3527 
3528         '_PVT'
3529 
3530       );
3531 
3532     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3533 
3534       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3535 
3536       (
3537 
3538         l_api_name,
3539 
3540         G_PKG_NAME,
3541 
3542         'OKL_API.G_RET_STS_UNEXP_ERROR',
3543 
3544         x_msg_count,
3545 
3546         x_msg_data,
3547 
3548         '_PVT'
3549 
3550       );
3551 
3552     WHEN OTHERS THEN
3553 
3554       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3555 
3556       (
3557 
3558         l_api_name,
3559 
3560         G_PKG_NAME,
3561 
3562         'OTHERS',
3563 
3564         x_msg_count,
3565 
3566         x_msg_data,
3567 
3568         '_PVT'
3569 
3570       );
3571 
3572   END insert_row;
3573 
3574 
3575 
3576   ---------------------------------------------------------------------------
3577 
3578   -- PROCEDURE lock_row
3579 
3580   ---------------------------------------------------------------------------
3581 
3582   -----------------------------------
3583 
3584   -- lock_row for:OKL_DISB_RULES_B --
3585 
3586   -----------------------------------
3587 
3588   PROCEDURE lock_row(
3589 
3590     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3591 
3592     x_return_status                OUT NOCOPY VARCHAR2,
3593 
3594     x_msg_count                    OUT NOCOPY NUMBER,
3595 
3596     x_msg_data                     OUT NOCOPY VARCHAR2,
3597 
3598     p_dra_rec                      IN dra_rec_type) IS
3599 
3600 
3601 
3602     E_Resource_Busy                EXCEPTION;
3603 
3604     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
3605 
3606     CURSOR lock_csr (p_dra_rec IN dra_rec_type) IS
3607 
3608     SELECT OBJECT_VERSION_NUMBER
3609 
3610       FROM OKL_DISB_RULES_B
3611 
3612      WHERE DISB_RULE_ID = p_dra_rec.disb_rule_id
3613 
3614        AND OBJECT_VERSION_NUMBER = p_dra_rec.object_version_number
3615 
3616     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
3617 
3618 
3619 
3620     CURSOR lchk_csr (p_dra_rec IN dra_rec_type) IS
3621 
3622     SELECT OBJECT_VERSION_NUMBER
3623 
3624       FROM OKL_DISB_RULES_B
3625 
3626      WHERE DISB_RULE_ID = p_dra_rec.disb_rule_id;
3627 
3628     l_api_version                  CONSTANT NUMBER := 1;
3629 
3630     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
3631 
3632     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3633 
3634     l_object_version_number        OKL_DISB_RULES_B.OBJECT_VERSION_NUMBER%TYPE;
3635 
3636     lc_object_version_number       OKL_DISB_RULES_B.OBJECT_VERSION_NUMBER%TYPE;
3637 
3638     l_row_notfound                 BOOLEAN := FALSE;
3639 
3640     lc_row_notfound                BOOLEAN := FALSE;
3641 
3642   BEGIN
3643 
3644     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3645 
3646                                               p_init_msg_list,
3647 
3648                                               '_PVT',
3649 
3650                                               x_return_status);
3651 
3652     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3653 
3654       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3655 
3656     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3657 
3658       RAISE OKL_API.G_EXCEPTION_ERROR;
3659 
3660     END IF;
3661 
3662     BEGIN
3663 
3664       OPEN lock_csr(p_dra_rec);
3665 
3666       FETCH lock_csr INTO l_object_version_number;
3667 
3668       l_row_notfound := lock_csr%NOTFOUND;
3669 
3670       CLOSE lock_csr;
3671 
3672     EXCEPTION
3673 
3674       WHEN E_Resource_Busy THEN
3675 
3676         IF (lock_csr%ISOPEN) THEN
3677 
3678           CLOSE lock_csr;
3679 
3680         END IF;
3681 
3682         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
3683 
3684         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
3685 
3686     END;
3687 
3688 
3689 
3690     IF ( l_row_notfound ) THEN
3691 
3692       OPEN lchk_csr(p_dra_rec);
3693 
3694       FETCH lchk_csr INTO lc_object_version_number;
3695 
3696       lc_row_notfound := lchk_csr%NOTFOUND;
3697 
3698       CLOSE lchk_csr;
3699 
3700     END IF;
3701 
3702     IF (lc_row_notfound) THEN
3703 
3704       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
3705 
3706       RAISE OKL_API.G_EXCEPTION_ERROR;
3707 
3708     ELSIF lc_object_version_number > p_dra_rec.object_version_number THEN
3709 
3710       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3711 
3712       RAISE OKL_API.G_EXCEPTION_ERROR;
3713 
3714     ELSIF lc_object_version_number <> p_dra_rec.object_version_number THEN
3715 
3716       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3717 
3718       RAISE OKL_API.G_EXCEPTION_ERROR;
3719 
3720     ELSIF lc_object_version_number = -1 THEN
3721 
3722       OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
3723 
3724       RAISE OKL_API.G_EXCEPTION_ERROR;
3725 
3726     END IF;
3727 
3728     x_return_status := l_return_status;
3729 
3730     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3731 
3732   EXCEPTION
3733 
3734     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3735 
3736       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3737 
3738       (
3739 
3740         l_api_name,
3741 
3742         G_PKG_NAME,
3743 
3744         'OKL_API.G_RET_STS_ERROR',
3745 
3746         x_msg_count,
3747 
3748         x_msg_data,
3749 
3750         '_PVT'
3751 
3752       );
3753 
3754     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3755 
3756       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3757 
3758       (
3759 
3760         l_api_name,
3761 
3762         G_PKG_NAME,
3763 
3764         'OKL_API.G_RET_STS_UNEXP_ERROR',
3765 
3766         x_msg_count,
3767 
3768         x_msg_data,
3769 
3770         '_PVT'
3771 
3772       );
3773 
3774     WHEN OTHERS THEN
3775 
3776       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3777 
3778       (
3779 
3780         l_api_name,
3781 
3782         G_PKG_NAME,
3783 
3784         'OTHERS',
3785 
3786         x_msg_count,
3787 
3788         x_msg_data,
3789 
3790         '_PVT'
3791 
3792       );
3793 
3794   END lock_row;
3795 
3796   ------------------------------------
3797 
3798   -- lock_row for:OKL_DISB_RULES_TL --
3799 
3800   ------------------------------------
3801 
3802   PROCEDURE lock_row(
3803 
3804     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3805 
3806     x_return_status                OUT NOCOPY VARCHAR2,
3807 
3808     x_msg_count                    OUT NOCOPY NUMBER,
3809 
3810     x_msg_data                     OUT NOCOPY VARCHAR2,
3811 
3812     p_okl_disb_rules_tl_rec        IN okl_disb_rules_tl_rec_type) IS
3813 
3814 
3815 
3816     E_Resource_Busy                EXCEPTION;
3817 
3818     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
3819 
3820     CURSOR lock_csr (p_okl_disb_rules_tl_rec IN okl_disb_rules_tl_rec_type) IS
3821 
3822     SELECT *
3823 
3824       FROM OKL_DISB_RULES_TL
3825 
3826      WHERE DISB_RULE_ID = p_okl_disb_rules_tl_rec.disb_rule_id
3827 
3828     FOR UPDATE NOWAIT;
3829 
3830 
3831 
3832     l_api_version                  CONSTANT NUMBER := 1;
3833 
3834     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
3835 
3836     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3837 
3838     l_lock_var                     lock_csr%ROWTYPE;
3839 
3840     l_row_notfound                 BOOLEAN := FALSE;
3841 
3842     lc_row_notfound                BOOLEAN := FALSE;
3843 
3844   BEGIN
3845 
3846     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3847 
3848                                               p_init_msg_list,
3849 
3850                                               '_PVT',
3851 
3852                                               x_return_status);
3853 
3854     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3855 
3856       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3857 
3858     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3859 
3860       RAISE OKL_API.G_EXCEPTION_ERROR;
3861 
3862     END IF;
3863 
3864     BEGIN
3865 
3866       OPEN lock_csr(p_okl_disb_rules_tl_rec);
3867 
3868       FETCH lock_csr INTO l_lock_var;
3869 
3870       l_row_notfound := lock_csr%NOTFOUND;
3871 
3872       CLOSE lock_csr;
3873 
3874     EXCEPTION
3875 
3876       WHEN E_Resource_Busy THEN
3877 
3878         IF (lock_csr%ISOPEN) THEN
3879 
3880           CLOSE lock_csr;
3881 
3882         END IF;
3883 
3884         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
3885 
3886         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
3887 
3888     END;
3889 
3890 
3891 
3892     IF ( l_row_notfound ) THEN
3893 
3894       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
3895 
3896       RAISE OKL_API.G_EXCEPTION_ERROR;
3897 
3898     END IF;
3899 
3900     x_return_status := l_return_status;
3901 
3902     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3903 
3904   EXCEPTION
3905 
3906     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3907 
3908       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3909 
3910       (
3911 
3912         l_api_name,
3913 
3914         G_PKG_NAME,
3915 
3916         'OKL_API.G_RET_STS_ERROR',
3917 
3918         x_msg_count,
3919 
3920         x_msg_data,
3921 
3922         '_PVT'
3923 
3924       );
3925 
3926     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3927 
3928       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3929 
3930       (
3931 
3932         l_api_name,
3933 
3934         G_PKG_NAME,
3935 
3936         'OKL_API.G_RET_STS_UNEXP_ERROR',
3937 
3938         x_msg_count,
3939 
3940         x_msg_data,
3941 
3942         '_PVT'
3943 
3944       );
3945 
3946     WHEN OTHERS THEN
3947 
3948       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3949 
3950       (
3951 
3952         l_api_name,
3953 
3954         G_PKG_NAME,
3955 
3956         'OTHERS',
3957 
3958         x_msg_count,
3959 
3960         x_msg_data,
3961 
3962         '_PVT'
3963 
3964       );
3965 
3966   END lock_row;
3967 
3968   ------------------------------------
3969 
3970   -- lock_row for: OKL_DISB_RULES_V --
3971 
3972   ------------------------------------
3973 
3974   PROCEDURE lock_row(
3975 
3976     p_api_version                  IN NUMBER,
3977 
3978     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3979 
3980     x_return_status                OUT NOCOPY VARCHAR2,
3981 
3982     x_msg_count                    OUT NOCOPY NUMBER,
3983 
3984     x_msg_data                     OUT NOCOPY VARCHAR2,
3985 
3986     p_drav_rec                     IN drav_rec_type) IS
3987 
3988 
3989 
3990     l_api_version                  CONSTANT NUMBER := 1;
3991 
3992     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
3993 
3994     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3995 
3996     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type;
3997 
3998     l_dra_rec                      dra_rec_type;
3999 
4000   BEGIN
4001 
4002     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4003 
4004                                               G_PKG_NAME,
4005 
4006                                               p_init_msg_list,
4007 
4008                                               l_api_version,
4009 
4010                                               p_api_version,
4011 
4012                                               '_PVT',
4013 
4014                                               x_return_status);
4015 
4016     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4017 
4018       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4019 
4020     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4021 
4022       RAISE OKL_API.G_EXCEPTION_ERROR;
4023 
4024     END IF;
4025 
4026     -----------------------------------------
4027 
4028     -- Move VIEW record to "Child" records --
4029 
4030     -----------------------------------------
4031 
4032     migrate(p_drav_rec, l_okl_disb_rules_tl_rec);
4033 
4034     migrate(p_drav_rec, l_dra_rec);
4035 
4036     ---------------------------------------------
4037 
4038     -- Call the LOCK_ROW for each child record --
4039 
4040     ---------------------------------------------
4041 
4042     lock_row(
4043 
4044       p_init_msg_list,
4045 
4046       l_return_status,
4047 
4048       x_msg_count,
4049 
4050       x_msg_data,
4051 
4052       l_okl_disb_rules_tl_rec
4053 
4054     );
4055 
4056     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4057 
4058       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4059 
4060     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4061 
4062       RAISE OKL_API.G_EXCEPTION_ERROR;
4063 
4064     END IF;
4065 
4066     lock_row(
4067 
4068       p_init_msg_list,
4069 
4070       l_return_status,
4071 
4072       x_msg_count,
4073 
4074       x_msg_data,
4075 
4076       l_dra_rec
4077 
4078     );
4079 
4080     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4081 
4082       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4083 
4084     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4085 
4086       RAISE OKL_API.G_EXCEPTION_ERROR;
4087 
4088     END IF;
4089 
4090     x_return_status := l_return_status;
4091 
4092     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4093 
4094   EXCEPTION
4095 
4096     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4097 
4098       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4099 
4100       (
4101 
4102         l_api_name,
4103 
4104         G_PKG_NAME,
4105 
4106         'OKL_API.G_RET_STS_ERROR',
4107 
4108         x_msg_count,
4109 
4110         x_msg_data,
4111 
4112         '_PVT'
4113 
4114       );
4115 
4116     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4117 
4118       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4119 
4120       (
4121 
4122         l_api_name,
4123 
4124         G_PKG_NAME,
4125 
4126         'OKL_API.G_RET_STS_UNEXP_ERROR',
4127 
4128         x_msg_count,
4129 
4130         x_msg_data,
4131 
4132         '_PVT'
4133 
4134       );
4135 
4136     WHEN OTHERS THEN
4137 
4138       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4139 
4140       (
4141 
4142         l_api_name,
4143 
4144         G_PKG_NAME,
4145 
4146         'OTHERS',
4147 
4148         x_msg_count,
4149 
4150         x_msg_data,
4151 
4152         '_PVT'
4153 
4154       );
4155 
4156   END lock_row;
4157 
4158   --------------------------------------
4159 
4160   -- PL/SQL TBL lock_row for:DRAV_TBL --
4161 
4162   --------------------------------------
4163 
4164   PROCEDURE lock_row(
4165 
4166     p_api_version                  IN NUMBER,
4167 
4168     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4169 
4170     x_return_status                OUT NOCOPY VARCHAR2,
4171 
4172     x_msg_count                    OUT NOCOPY NUMBER,
4173 
4174     x_msg_data                     OUT NOCOPY VARCHAR2,
4175 
4176     p_drav_tbl                     IN drav_tbl_type,
4177 
4178     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
4179 
4180 
4181 
4182     l_api_version                  CONSTANT NUMBER := 1;
4183 
4184     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
4185 
4186     i                              NUMBER := 0;
4187 
4188   BEGIN
4189 
4190     OKL_API.init_msg_list(p_init_msg_list);
4191 
4192     -- Make sure PL/SQL table has recrods in it before passing
4193 
4194     IF (p_drav_tbl.COUNT > 0) THEN
4195 
4196       i := p_drav_tbl.FIRST;
4197 
4198       LOOP
4199 
4200         DECLARE
4201 
4202           l_error_rec         OKL_API.ERROR_REC_TYPE;
4203 
4204         BEGIN
4205 
4206           l_error_rec.api_name := l_api_name;
4207 
4208           l_error_rec.api_package := G_PKG_NAME;
4209 
4210           l_error_rec.idx := i;
4211 
4212           lock_row(
4213 
4214             p_api_version                  => p_api_version,
4215 
4216             p_init_msg_list                => OKL_API.G_FALSE,
4217 
4218             x_return_status                => l_error_rec.error_type,
4219 
4220             x_msg_count                    => l_error_rec.msg_count,
4221 
4222             x_msg_data                     => l_error_rec.msg_data,
4223 
4224             p_drav_rec                     => p_drav_tbl(i));
4225 
4226           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
4227 
4228             l_error_rec.sqlcode := SQLCODE;
4229 
4230             load_error_tbl(l_error_rec, px_error_tbl);
4231 
4232           ELSE
4233 
4234             x_msg_count := l_error_rec.msg_count;
4235 
4236             x_msg_data := l_error_rec.msg_data;
4237 
4238           END IF;
4239 
4240         EXCEPTION
4241 
4242           WHEN OKL_API.G_EXCEPTION_ERROR THEN
4243 
4244             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
4245 
4246             l_error_rec.sqlcode := SQLCODE;
4247 
4248             load_error_tbl(l_error_rec, px_error_tbl);
4249 
4250           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4251 
4252             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
4253 
4254             l_error_rec.sqlcode := SQLCODE;
4255 
4256             load_error_tbl(l_error_rec, px_error_tbl);
4257 
4258           WHEN OTHERS THEN
4259 
4260             l_error_rec.error_type := 'OTHERS';
4261 
4262             l_error_rec.sqlcode := SQLCODE;
4263 
4264             load_error_tbl(l_error_rec, px_error_tbl);
4265 
4266         END;
4267 
4268         EXIT WHEN (i = p_drav_tbl.LAST);
4269 
4270         i := p_drav_tbl.NEXT(i);
4271 
4272       END LOOP;
4273 
4274     END IF;
4275 
4276     -- Loop through the error_tbl to find the error with the highest severity
4277 
4278     -- and return it.
4279 
4280     x_return_status := find_highest_exception(px_error_tbl);
4281 
4282     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4283 
4284   EXCEPTION
4285 
4286     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4287 
4288       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4289 
4290       (
4291 
4292         l_api_name,
4293 
4294         G_PKG_NAME,
4295 
4296         'OKL_API.G_RET_STS_ERROR',
4297 
4298         x_msg_count,
4299 
4300         x_msg_data,
4301 
4302         '_PVT'
4303 
4304       );
4305 
4306     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4307 
4308       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4309 
4310       (
4311 
4312         l_api_name,
4313 
4314         G_PKG_NAME,
4315 
4316         'OKL_API.G_RET_STS_UNEXP_ERROR',
4317 
4318         x_msg_count,
4319 
4320         x_msg_data,
4321 
4322         '_PVT'
4323 
4324       );
4325 
4326     WHEN OTHERS THEN
4327 
4328       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4329 
4330       (
4331 
4332         l_api_name,
4333 
4334         G_PKG_NAME,
4335 
4336         'OTHERS',
4337 
4338         x_msg_count,
4339 
4340         x_msg_data,
4341 
4342         '_PVT'
4343 
4344       );
4345 
4346   END lock_row;
4347 
4348   --------------------------------------
4349 
4350   -- PL/SQL TBL lock_row for:DRAV_TBL --
4351 
4352   --------------------------------------
4353 
4354   PROCEDURE lock_row(
4355 
4356     p_api_version                  IN NUMBER,
4357 
4358     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4359 
4360     x_return_status                OUT NOCOPY VARCHAR2,
4361 
4362     x_msg_count                    OUT NOCOPY NUMBER,
4363 
4364     x_msg_data                     OUT NOCOPY VARCHAR2,
4365 
4366     p_drav_tbl                     IN drav_tbl_type) IS
4367 
4368 
4369 
4370     l_api_version                  CONSTANT NUMBER := 1;
4371 
4372     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
4373 
4374     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4375 
4376     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
4377 
4378   BEGIN
4379 
4380     OKL_API.init_msg_list(p_init_msg_list);
4381 
4382     -- Make sure PL/SQL table has recrods in it before passing
4383 
4384     IF (p_drav_tbl.COUNT > 0) THEN
4385 
4386       lock_row(
4387 
4388         p_api_version                  => p_api_version,
4389 
4390         p_init_msg_list                => OKL_API.G_FALSE,
4391 
4392         x_return_status                => x_return_status,
4393 
4394         x_msg_count                    => x_msg_count,
4395 
4396         x_msg_data                     => x_msg_data,
4397 
4398         p_drav_tbl                     => p_drav_tbl,
4399 
4400         px_error_tbl                   => l_error_tbl);
4401 
4402     END IF;
4403 
4404     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4405 
4406   EXCEPTION
4407 
4408     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4409 
4410       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4411 
4412       (
4413 
4414         l_api_name,
4415 
4416         G_PKG_NAME,
4417 
4418         'OKL_API.G_RET_STS_ERROR',
4419 
4420         x_msg_count,
4421 
4422         x_msg_data,
4423 
4424         '_PVT'
4425 
4426       );
4427 
4428     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4429 
4430       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4431 
4432       (
4433 
4434         l_api_name,
4435 
4436         G_PKG_NAME,
4437 
4438         'OKL_API.G_RET_STS_UNEXP_ERROR',
4439 
4440         x_msg_count,
4441 
4442         x_msg_data,
4443 
4444         '_PVT'
4445 
4446       );
4447 
4448     WHEN OTHERS THEN
4449 
4450       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4451 
4452       (
4453 
4454         l_api_name,
4455 
4456         G_PKG_NAME,
4457 
4458         'OTHERS',
4459 
4460         x_msg_count,
4461 
4462         x_msg_data,
4463 
4464         '_PVT'
4465 
4466       );
4467 
4468   END lock_row;
4469 
4470   ---------------------------------------------------------------------------
4471 
4472   -- PROCEDURE update_row
4473 
4474   ---------------------------------------------------------------------------
4475 
4476   -------------------------------------
4477 
4478   -- update_row for:OKL_DISB_RULES_B --
4479 
4480   -------------------------------------
4481 
4482   PROCEDURE update_row(
4483 
4484     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4485     x_return_status                OUT NOCOPY VARCHAR2,
4486     x_msg_count                    OUT NOCOPY NUMBER,
4487     x_msg_data                     OUT NOCOPY VARCHAR2,
4488     p_dra_rec                      IN dra_rec_type,
4489     x_dra_rec                      OUT NOCOPY dra_rec_type) IS
4490 
4491 
4492 
4493     l_api_version                  CONSTANT NUMBER := 1;
4494     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
4495     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4496     l_dra_rec                      dra_rec_type := p_dra_rec;
4497     l_def_dra_rec                  dra_rec_type;
4498     l_row_notfound                 BOOLEAN := TRUE;
4499 
4500     ----------------------------------
4501 
4502     -- FUNCTION populate_new_record --
4503 
4504     ----------------------------------
4505 
4506     FUNCTION populate_new_record (
4507 
4508       p_dra_rec IN dra_rec_type,
4509 
4510       x_dra_rec OUT NOCOPY dra_rec_type
4511 
4512     ) RETURN VARCHAR2 IS
4513 
4514       l_dra_rec                      dra_rec_type;
4515 
4516       l_row_notfound                 BOOLEAN := TRUE;
4517 
4518       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4519 
4520     BEGIN
4521 
4522       x_dra_rec := p_dra_rec;
4523 
4524       -- Get current database values
4525 
4526       l_dra_rec := get_rec(p_dra_rec, l_return_status);
4527 
4528       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
4529 
4530         IF x_dra_rec.disb_rule_id IS NULL THEN
4531 
4532           x_dra_rec.disb_rule_id := l_dra_rec.disb_rule_id;
4533 
4534         END IF;
4535 
4536         IF x_dra_rec.object_version_number IS NULL THEN
4537 
4538           x_dra_rec.object_version_number := l_dra_rec.object_version_number;
4539 
4540         END IF;
4541 
4542         IF x_dra_rec.rule_name IS NULL THEN
4543 
4544           x_dra_rec.rule_name := l_dra_rec.rule_name;
4545 
4546         END IF;
4547 
4548         IF x_dra_rec.org_id IS NULL THEN
4549 
4550           x_dra_rec.org_id := l_dra_rec.org_id;
4551 
4552         END IF;
4553 
4554         IF x_dra_rec.start_date IS NULL THEN
4555 
4556           x_dra_rec.start_date := l_dra_rec.start_date;
4557 
4558         END IF;
4559 
4560         IF x_dra_rec.end_date IS NULL THEN
4561 
4562           x_dra_rec.end_date := l_dra_rec.end_date;
4563 
4564         END IF;
4565 
4566         IF x_dra_rec.fee_option IS NULL THEN
4567 
4568           x_dra_rec.fee_option := l_dra_rec.fee_option;
4569 
4570         END IF;
4571 
4572         IF x_dra_rec.fee_basis IS NULL THEN
4573 
4574           x_dra_rec.fee_basis := l_dra_rec.fee_basis;
4575 
4576         END IF;
4577 
4578         IF x_dra_rec.fee_amount IS NULL THEN
4579 
4580           x_dra_rec.fee_amount := l_dra_rec.fee_amount;
4581 
4582         END IF;
4583 
4584         IF x_dra_rec.fee_percent IS NULL THEN
4585 
4586           x_dra_rec.fee_percent := l_dra_rec.fee_percent;
4587 
4588         END IF;
4589 
4590         IF x_dra_rec.consolidate_by_due_date IS NULL THEN
4591 
4592           x_dra_rec.consolidate_by_due_date := l_dra_rec.consolidate_by_due_date;
4593 
4594         END IF;
4595 
4596         IF x_dra_rec.frequency IS NULL THEN
4597 
4598           x_dra_rec.frequency := l_dra_rec.frequency;
4599 
4600         END IF;
4601 
4602         IF x_dra_rec.day_of_month IS NULL THEN
4603 
4604           x_dra_rec.day_of_month := l_dra_rec.day_of_month;
4605 
4606         END IF;
4607 
4608         IF x_dra_rec.scheduled_month IS NULL THEN
4609 
4610           x_dra_rec.scheduled_month := l_dra_rec.scheduled_month;
4611 
4612         END IF;
4613 
4614         IF x_dra_rec.consolidate_strm_type IS NULL THEN
4615 
4616           x_dra_rec.consolidate_strm_type := l_dra_rec.consolidate_strm_type;
4617 
4618         END IF;
4619 
4620         IF x_dra_rec.attribute_category IS NULL THEN
4621 
4622           x_dra_rec.attribute_category := l_dra_rec.attribute_category;
4623 
4624         END IF;
4625 
4626         IF x_dra_rec.attribute1 IS NULL THEN
4627 
4628           x_dra_rec.attribute1 := l_dra_rec.attribute1;
4629 
4630         END IF;
4631 
4632         IF x_dra_rec.attribute2 IS NULL THEN
4633 
4634           x_dra_rec.attribute2 := l_dra_rec.attribute2;
4635 
4636         END IF;
4637 
4638         IF x_dra_rec.attribute3 IS NULL THEN
4639 
4640           x_dra_rec.attribute3 := l_dra_rec.attribute3;
4641 
4642         END IF;
4643 
4644         IF x_dra_rec.attribute4 IS NULL THEN
4645 
4646           x_dra_rec.attribute4 := l_dra_rec.attribute4;
4647 
4648         END IF;
4649 
4650         IF x_dra_rec.attribute5 IS NULL THEN
4651 
4652           x_dra_rec.attribute5 := l_dra_rec.attribute5;
4653 
4654         END IF;
4655 
4656         IF x_dra_rec.attribute6 IS NULL THEN
4657 
4658           x_dra_rec.attribute6 := l_dra_rec.attribute6;
4659 
4660         END IF;
4661 
4662         IF x_dra_rec.attribute7 IS NULL THEN
4663 
4664           x_dra_rec.attribute7 := l_dra_rec.attribute7;
4665 
4666         END IF;
4667 
4668         IF x_dra_rec.attribute8 IS NULL THEN
4669 
4670           x_dra_rec.attribute8 := l_dra_rec.attribute8;
4671 
4672         END IF;
4673 
4674         IF x_dra_rec.attribute9 IS NULL THEN
4675 
4676           x_dra_rec.attribute9 := l_dra_rec.attribute9;
4677 
4678         END IF;
4679 
4680         IF x_dra_rec.attribute10 IS NULL THEN
4681 
4682           x_dra_rec.attribute10 := l_dra_rec.attribute10;
4683 
4684         END IF;
4685 
4686         IF x_dra_rec.attribute11 IS NULL THEN
4687 
4688           x_dra_rec.attribute11 := l_dra_rec.attribute11;
4689 
4690         END IF;
4691 
4692         IF x_dra_rec.attribute12 IS NULL THEN
4693 
4694           x_dra_rec.attribute12 := l_dra_rec.attribute12;
4695 
4696         END IF;
4697 
4698         IF x_dra_rec.attribute13 IS NULL THEN
4699 
4700           x_dra_rec.attribute13 := l_dra_rec.attribute13;
4701 
4702         END IF;
4703 
4704         IF x_dra_rec.attribute14 IS NULL THEN
4705 
4706           x_dra_rec.attribute14 := l_dra_rec.attribute14;
4707 
4708         END IF;
4709 
4710         IF x_dra_rec.attribute15 IS NULL THEN
4711 
4712           x_dra_rec.attribute15 := l_dra_rec.attribute15;
4713 
4714         END IF;
4715 
4716         IF x_dra_rec.created_by IS NULL THEN
4717 
4718           x_dra_rec.created_by := l_dra_rec.created_by;
4719 
4720         END IF;
4721 
4722         IF x_dra_rec.creation_date IS NULL THEN
4723 
4724           x_dra_rec.creation_date := l_dra_rec.creation_date;
4725 
4726         END IF;
4727 
4728         IF x_dra_rec.last_updated_by IS NULL THEN
4729 
4730           x_dra_rec.last_updated_by := l_dra_rec.last_updated_by;
4731 
4732         END IF;
4733 
4734         IF x_dra_rec.last_update_date IS NULL THEN
4735 
4736           x_dra_rec.last_update_date := l_dra_rec.last_update_date;
4737 
4738         END IF;
4739 
4740         IF x_dra_rec.last_update_login IS NULL THEN
4741 
4742           x_dra_rec.last_update_login := l_dra_rec.last_update_login;
4743 
4744         END IF;
4745 
4746       END IF;
4747 
4748       RETURN(l_return_status);
4749 
4750     END populate_new_record;
4751 
4752     -----------------------------------------
4753 
4754     -- Set_Attributes for:OKL_DISB_RULES_B --
4755 
4756     -----------------------------------------
4757 
4758     FUNCTION Set_Attributes (
4759 
4760       p_dra_rec IN dra_rec_type,
4761 
4762       x_dra_rec OUT NOCOPY dra_rec_type
4763 
4764     ) RETURN VARCHAR2 IS
4765 
4766       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4767 
4768     BEGIN
4769 
4770       x_dra_rec := p_dra_rec;
4771 
4772       x_dra_rec.OBJECT_VERSION_NUMBER := p_dra_rec.OBJECT_VERSION_NUMBER + 1;
4773 
4774       RETURN(l_return_status);
4775 
4776     END Set_Attributes;
4777 
4778   BEGIN
4779 
4780   --g_debug_proc('In DRA  l_def_dra_rec.day_of_month  ' || p_dra_rec.day_of_month);
4781     --g_debug_proc('In DRA l_def_dra_rec.scheduled_month ' || p_dra_rec.scheduled_month);
4782 
4783     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4784 
4785                                               p_init_msg_list,
4786 
4787                                               '_PVT',
4788 
4789                                               x_return_status);
4790 
4791     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4792 
4793       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4794 
4795     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4796 
4797       RAISE OKL_API.G_EXCEPTION_ERROR;
4798 
4799     END IF;
4800 
4801     --- Setting item attributes
4802 
4803     l_return_status := Set_Attributes(
4804 
4805       p_dra_rec,                         -- IN
4806 
4807       l_dra_rec);                        -- OUT
4808 
4809     --- If any errors happen abort API
4810 
4811     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4812 
4813       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4814 
4815     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4816 
4817       RAISE OKL_API.G_EXCEPTION_ERROR;
4818 
4819     END IF;
4820 
4821     l_return_status := populate_new_record(l_dra_rec, l_def_dra_rec);
4822 
4823     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4824 
4825       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4826 
4827     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4828 
4829       RAISE OKL_API.G_EXCEPTION_ERROR;
4830 
4831     END IF;
4832 
4833     --g_debug_proc('In DRA  l_def_dra_rec.day_of_month  ' || l_def_dra_rec.day_of_month);
4834     --g_debug_proc('In DRA l_def_dra_rec.scheduled_month ' || l_def_dra_rec.scheduled_month);
4835 
4836     UPDATE OKL_DISB_RULES_B
4837 
4838     SET OBJECT_VERSION_NUMBER = l_def_dra_rec.object_version_number,
4839 
4840         RULE_NAME = l_def_dra_rec.rule_name,
4841 
4842         ORG_ID = l_def_dra_rec.org_id,
4843 
4844         START_DATE = l_def_dra_rec.start_date,
4845 
4846         END_DATE = l_def_dra_rec.end_date,
4847 
4848         FEE_OPTION = l_def_dra_rec.fee_option,
4849 
4850         FEE_BASIS = l_def_dra_rec.fee_basis,
4851 
4852         FEE_AMOUNT = l_def_dra_rec.fee_amount,
4853 
4854         FEE_PERCENT = l_def_dra_rec.fee_percent,
4855 
4856         CONSOLIDATE_BY_DUE_DATE = l_def_dra_rec.consolidate_by_due_date,
4857 
4858         FREQUENCY = l_def_dra_rec.frequency,
4859 
4860         DAY_OF_MONTH = l_def_dra_rec.day_of_month,
4861 
4862         SCHEDULED_MONTH = l_def_dra_rec.scheduled_month,
4863 
4864         CONSOLIDATE_STRM_TYPE = l_def_dra_rec.consolidate_strm_type,
4865 
4866         ATTRIBUTE_CATEGORY = l_def_dra_rec.attribute_category,
4867 
4868         ATTRIBUTE1 = l_def_dra_rec.attribute1,
4869 
4870         ATTRIBUTE2 = l_def_dra_rec.attribute2,
4871 
4872         ATTRIBUTE3 = l_def_dra_rec.attribute3,
4873 
4874         ATTRIBUTE4 = l_def_dra_rec.attribute4,
4875 
4876         ATTRIBUTE5 = l_def_dra_rec.attribute5,
4877 
4878         ATTRIBUTE6 = l_def_dra_rec.attribute6,
4879 
4880         ATTRIBUTE7 = l_def_dra_rec.attribute7,
4881 
4882         ATTRIBUTE8 = l_def_dra_rec.attribute8,
4883 
4884         ATTRIBUTE9 = l_def_dra_rec.attribute9,
4885 
4886         ATTRIBUTE10 = l_def_dra_rec.attribute10,
4887 
4888         ATTRIBUTE11 = l_def_dra_rec.attribute11,
4889 
4890         ATTRIBUTE12 = l_def_dra_rec.attribute12,
4891 
4892         ATTRIBUTE13 = l_def_dra_rec.attribute13,
4893 
4894         ATTRIBUTE14 = l_def_dra_rec.attribute14,
4895 
4896         ATTRIBUTE15 = l_def_dra_rec.attribute15,
4897 
4898         CREATED_BY = l_def_dra_rec.created_by,
4899 
4900         CREATION_DATE = l_def_dra_rec.creation_date,
4901 
4902         LAST_UPDATED_BY = l_def_dra_rec.last_updated_by,
4903 
4904         LAST_UPDATE_DATE = l_def_dra_rec.last_update_date,
4905 
4906         LAST_UPDATE_LOGIN = l_def_dra_rec.last_update_login
4907 
4908     WHERE DISB_RULE_ID = l_def_dra_rec.disb_rule_id;
4909 
4910 
4911 
4912     x_dra_rec := l_dra_rec;
4913 
4914     x_return_status := l_return_status;
4915 
4916     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4917 
4918   EXCEPTION
4919 
4920     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4921 
4922       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4923 
4924       (
4925 
4926         l_api_name,
4927 
4928         G_PKG_NAME,
4929 
4930         'OKL_API.G_RET_STS_ERROR',
4931 
4932         x_msg_count,
4933 
4934         x_msg_data,
4935 
4936         '_PVT'
4937 
4938       );
4939 
4940     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4941 
4942       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4943 
4944       (
4945 
4946         l_api_name,
4947 
4948         G_PKG_NAME,
4949 
4950         'OKL_API.G_RET_STS_UNEXP_ERROR',
4951 
4952         x_msg_count,
4953 
4954         x_msg_data,
4955 
4956         '_PVT'
4957 
4958       );
4959 
4960     WHEN OTHERS THEN
4961 
4962       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4963 
4964       (
4965 
4966         l_api_name,
4967 
4968         G_PKG_NAME,
4969 
4970         'OTHERS',
4971 
4972         x_msg_count,
4973 
4974         x_msg_data,
4975 
4976         '_PVT'
4977 
4978       );
4979 
4980   END update_row;
4981 
4982   --------------------------------------
4983 
4984   -- update_row for:OKL_DISB_RULES_TL --
4985 
4986   --------------------------------------
4987 
4988   PROCEDURE update_row(
4989 
4990     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4991 
4992     x_return_status                OUT NOCOPY VARCHAR2,
4993 
4994     x_msg_count                    OUT NOCOPY NUMBER,
4995 
4996     x_msg_data                     OUT NOCOPY VARCHAR2,
4997 
4998     p_okl_disb_rules_tl_rec        IN okl_disb_rules_tl_rec_type,
4999 
5000     x_okl_disb_rules_tl_rec        OUT NOCOPY okl_disb_rules_tl_rec_type) IS
5001 
5002 
5003 
5004     l_api_version                  CONSTANT NUMBER := 1;
5005 
5006     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
5007 
5008     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5009 
5010     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type := p_okl_disb_rules_tl_rec;
5011 
5012     l_def_okl_disb_rules_tl_rec    okl_disb_rules_tl_rec_type;
5013 
5014     l_row_notfound                 BOOLEAN := TRUE;
5015 
5016     ----------------------------------
5017 
5018     -- FUNCTION populate_new_record --
5019 
5020     ----------------------------------
5021 
5022     FUNCTION populate_new_record (
5023 
5024       p_okl_disb_rules_tl_rec IN okl_disb_rules_tl_rec_type,
5025 
5026       x_okl_disb_rules_tl_rec OUT NOCOPY okl_disb_rules_tl_rec_type
5027 
5028     ) RETURN VARCHAR2 IS
5029 
5030       l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type;
5031 
5032       l_row_notfound                 BOOLEAN := TRUE;
5033 
5034       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5035 
5036     BEGIN
5037 
5038       x_okl_disb_rules_tl_rec := p_okl_disb_rules_tl_rec;
5039 
5040       -- Get current database values
5041 
5042       l_okl_disb_rules_tl_rec := get_rec(p_okl_disb_rules_tl_rec, l_return_status);
5043 
5044       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
5045 
5046         IF x_okl_disb_rules_tl_rec.disb_rule_id IS NULL THEN
5047 
5048           x_okl_disb_rules_tl_rec.disb_rule_id := l_okl_disb_rules_tl_rec.disb_rule_id;
5049 
5050         END IF;
5051 
5052         IF x_okl_disb_rules_tl_rec.language IS NULL THEN
5053 
5054           x_okl_disb_rules_tl_rec.language := l_okl_disb_rules_tl_rec.language;
5055 
5056         END IF;
5057 
5058         IF x_okl_disb_rules_tl_rec.source_lang IS NULL THEN
5059 
5060           x_okl_disb_rules_tl_rec.source_lang := l_okl_disb_rules_tl_rec.source_lang;
5061 
5062         END IF;
5063 
5064         IF x_okl_disb_rules_tl_rec.sfwt_flag IS NULL THEN
5065 
5066           x_okl_disb_rules_tl_rec.sfwt_flag := l_okl_disb_rules_tl_rec.sfwt_flag;
5067 
5068         END IF;
5069 
5070         IF x_okl_disb_rules_tl_rec.description IS NULL THEN
5071 
5072           x_okl_disb_rules_tl_rec.description := l_okl_disb_rules_tl_rec.description;
5073 
5074         END IF;
5075 
5076         IF x_okl_disb_rules_tl_rec.created_by IS NULL THEN
5077 
5078           x_okl_disb_rules_tl_rec.created_by := l_okl_disb_rules_tl_rec.created_by;
5079 
5080         END IF;
5081 
5082         IF x_okl_disb_rules_tl_rec.creation_date IS NULL THEN
5083 
5084           x_okl_disb_rules_tl_rec.creation_date := l_okl_disb_rules_tl_rec.creation_date;
5085 
5086         END IF;
5087 
5088         IF x_okl_disb_rules_tl_rec.last_updated_by IS NULL THEN
5089 
5090           x_okl_disb_rules_tl_rec.last_updated_by := l_okl_disb_rules_tl_rec.last_updated_by;
5091 
5092         END IF;
5093 
5094         IF x_okl_disb_rules_tl_rec.last_update_date IS NULL THEN
5095 
5096           x_okl_disb_rules_tl_rec.last_update_date := l_okl_disb_rules_tl_rec.last_update_date;
5097 
5098         END IF;
5099 
5100         IF x_okl_disb_rules_tl_rec.last_update_login IS NULL THEN
5101 
5102           x_okl_disb_rules_tl_rec.last_update_login := l_okl_disb_rules_tl_rec.last_update_login;
5103 
5104         END IF;
5105 
5106       END IF;
5107 
5108       RETURN(l_return_status);
5109 
5110     END populate_new_record;
5111 
5112     ------------------------------------------
5113 
5114     -- Set_Attributes for:OKL_DISB_RULES_TL --
5115 
5116     ------------------------------------------
5117 
5118     FUNCTION Set_Attributes (
5119 
5120       p_okl_disb_rules_tl_rec IN okl_disb_rules_tl_rec_type,
5121 
5122       x_okl_disb_rules_tl_rec OUT NOCOPY okl_disb_rules_tl_rec_type
5123 
5124     ) RETURN VARCHAR2 IS
5125       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5126     BEGIN
5127       x_okl_disb_rules_tl_rec := p_okl_disb_rules_tl_rec;
5128       x_okl_disb_rules_tl_rec.LANGUAGE := USERENV('LANG');
5129       x_okl_disb_rules_tl_rec.LANGUAGE := USERENV('LANG');
5130       RETURN(l_return_status);
5131     END Set_Attributes;
5132 
5133   BEGIN
5134 
5135     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
5136 
5137                                               p_init_msg_list,
5138 
5139                                               '_PVT',
5140 
5141                                               x_return_status);
5142 
5143     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5144 
5145       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5146 
5147     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5148 
5149       RAISE OKL_API.G_EXCEPTION_ERROR;
5150 
5151     END IF;
5152 
5153     --- Setting item attributes
5154 
5155     l_return_status := Set_Attributes(
5156 
5157       p_okl_disb_rules_tl_rec,           -- IN
5158 
5159       l_okl_disb_rules_tl_rec);          -- OUT
5160 
5161     --- If any errors happen abort API
5162 
5163     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5164 
5165       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5166 
5167     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5168 
5169       RAISE OKL_API.G_EXCEPTION_ERROR;
5170 
5171     END IF;
5172 
5173     l_return_status := populate_new_record(l_okl_disb_rules_tl_rec, l_def_okl_disb_rules_tl_rec);
5174 
5175     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5176 
5177       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5178 
5179     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5180 
5181       RAISE OKL_API.G_EXCEPTION_ERROR;
5182 
5183     END IF;
5184 
5185     UPDATE OKL_DISB_RULES_TL
5186 
5187     SET DESCRIPTION = l_def_okl_disb_rules_tl_rec.description,
5188 
5189         CREATED_BY = l_def_okl_disb_rules_tl_rec.created_by,
5190 
5191         CREATION_DATE = l_def_okl_disb_rules_tl_rec.creation_date,
5192 
5193         LAST_UPDATED_BY = l_def_okl_disb_rules_tl_rec.last_updated_by,
5194 
5195         LAST_UPDATE_DATE = l_def_okl_disb_rules_tl_rec.last_update_date,
5196 
5197         LAST_UPDATE_LOGIN = l_def_okl_disb_rules_tl_rec.last_update_login
5198 
5199     WHERE DISB_RULE_ID = l_def_okl_disb_rules_tl_rec.disb_rule_id
5200 
5201       AND SOURCE_LANG = USERENV('LANG');
5202 
5203 
5204 
5205     UPDATE OKL_DISB_RULES_TL
5206 
5207     SET SFWT_FLAG = 'Y'
5208 
5209     WHERE DISB_RULE_ID = l_def_okl_disb_rules_tl_rec.disb_rule_id
5210 
5211       AND SOURCE_LANG <> USERENV('LANG');
5212 
5213 
5214 
5215     x_okl_disb_rules_tl_rec := l_okl_disb_rules_tl_rec;
5216 
5217     x_return_status := l_return_status;
5218 
5219     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
5220 
5221   EXCEPTION
5222 
5223     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5224 
5225       x_return_status := OKL_API.HANDLE_EXCEPTIONS
5226 
5227       (
5228 
5229         l_api_name,
5230 
5231         G_PKG_NAME,
5232 
5233         'OKL_API.G_RET_STS_ERROR',
5234 
5235         x_msg_count,
5236 
5237         x_msg_data,
5238 
5239         '_PVT'
5240 
5241       );
5242 
5243     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5244 
5245       x_return_status := OKL_API.HANDLE_EXCEPTIONS
5246 
5247       (
5248 
5249         l_api_name,
5250 
5251         G_PKG_NAME,
5252 
5253         'OKL_API.G_RET_STS_UNEXP_ERROR',
5254 
5255         x_msg_count,
5256 
5257         x_msg_data,
5258 
5259         '_PVT'
5260 
5261       );
5262 
5263     WHEN OTHERS THEN
5264 
5265       x_return_status := OKL_API.HANDLE_EXCEPTIONS
5266 
5267       (
5268 
5269         l_api_name,
5270 
5271         G_PKG_NAME,
5272 
5273         'OTHERS',
5274 
5275         x_msg_count,
5276 
5277         x_msg_data,
5278 
5279         '_PVT'
5280 
5281       );
5282 
5283   END update_row;
5284 
5285   -------------------------------------
5286 
5287   -- update_row for:OKL_DISB_RULES_V --
5288 
5289   -------------------------------------
5290 
5291   PROCEDURE update_row(
5292     p_api_version                  IN NUMBER,
5293     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5294     x_return_status                OUT NOCOPY VARCHAR2,
5295     x_msg_count                    OUT NOCOPY NUMBER,
5296     x_msg_data                     OUT NOCOPY VARCHAR2,
5297     p_drav_rec                     IN drav_rec_type,
5298     x_drav_rec                     OUT NOCOPY drav_rec_type) IS
5299 
5300     l_api_version                  CONSTANT NUMBER := 1;
5301     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
5302     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5303     l_drav_rec                     drav_rec_type := p_drav_rec;
5304     l_def_drav_rec                 drav_rec_type;
5305     l_db_drav_rec                  drav_rec_type;
5306     l_dra_rec                      dra_rec_type;
5307     lx_dra_rec                     dra_rec_type;
5308     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type;
5309     lx_okl_disb_rules_tl_rec       okl_disb_rules_tl_rec_type;
5310 
5311     -------------------------------
5312 
5313     -- FUNCTION fill_who_columns --
5314 
5315     -------------------------------
5316 
5317     FUNCTION fill_who_columns (
5318 
5319       p_drav_rec IN drav_rec_type
5320 
5321     ) RETURN drav_rec_type IS
5322 
5323       l_drav_rec drav_rec_type := p_drav_rec;
5324 
5325     BEGIN
5326 
5327       l_drav_rec.LAST_UPDATE_DATE := SYSDATE;
5328 
5329       l_drav_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
5330 
5331       l_drav_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
5332 
5333       RETURN(l_drav_rec);
5334 
5335     END fill_who_columns;
5336 
5337     ----------------------------------
5338 
5339     -- FUNCTION populate_new_record --
5340 
5341     ----------------------------------
5342 
5343     FUNCTION populate_new_record (
5344 
5345       p_drav_rec IN drav_rec_type,
5346 
5347       x_drav_rec OUT NOCOPY drav_rec_type
5348 
5349     ) RETURN VARCHAR2 IS
5350 
5351       l_row_notfound                 BOOLEAN := TRUE;
5352 
5353       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5354 
5355     BEGIN
5356 
5357       x_drav_rec := p_drav_rec;
5358 
5359       -- Get current database values
5360 
5361       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
5362 
5363       --       so it may be verified through LOCK_ROW.
5364 
5365       l_db_drav_rec := get_rec(p_drav_rec, l_return_status);
5366 
5367       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
5368 
5369         IF x_drav_rec.disb_rule_id IS NULL THEN
5370 
5371           x_drav_rec.disb_rule_id := l_db_drav_rec.disb_rule_id;
5372 
5373         END IF;
5374 
5375         IF x_drav_rec.sfwt_flag IS NULL THEN
5376 
5377           x_drav_rec.sfwt_flag := l_db_drav_rec.sfwt_flag;
5378 
5379         END IF;
5380 
5381         IF x_drav_rec.rule_name IS NULL THEN
5382 
5383           x_drav_rec.rule_name := l_db_drav_rec.rule_name;
5384 
5385         END IF;
5386 
5387         IF x_drav_rec.org_id IS NULL THEN
5388 
5389           x_drav_rec.org_id := l_db_drav_rec.org_id;
5390 
5391         END IF;
5392 
5393         IF x_drav_rec.start_date IS NULL THEN
5394 
5395           x_drav_rec.start_date := l_db_drav_rec.start_date;
5396 
5397         END IF;
5398 
5399         IF x_drav_rec.end_date IS NULL THEN
5400 
5401           x_drav_rec.end_date := l_db_drav_rec.end_date;
5402 
5403         END IF;
5404 
5405         IF x_drav_rec.fee_option IS NULL THEN
5406 
5407           x_drav_rec.fee_option := l_db_drav_rec.fee_option;
5408 
5409         END IF;
5410 
5411         IF x_drav_rec.fee_basis IS NULL THEN
5412 
5413           x_drav_rec.fee_basis := l_db_drav_rec.fee_basis;
5414 
5415         END IF;
5416 
5417         IF x_drav_rec.fee_amount IS NULL THEN
5418 
5419           x_drav_rec.fee_amount := l_db_drav_rec.fee_amount;
5420 
5421         END IF;
5422 
5423         IF x_drav_rec.fee_percent IS NULL THEN
5424 
5425           x_drav_rec.fee_percent := l_db_drav_rec.fee_percent;
5426 
5427         END IF;
5428 
5429         IF x_drav_rec.consolidate_by_due_date IS NULL THEN
5430 
5431           x_drav_rec.consolidate_by_due_date := l_db_drav_rec.consolidate_by_due_date;
5432 
5433         END IF;
5434 
5435         IF x_drav_rec.frequency IS NULL THEN
5436 
5437           x_drav_rec.frequency := l_db_drav_rec.frequency;
5438 
5439         END IF;
5440 
5441         IF x_drav_rec.day_of_month IS NULL THEN
5442 
5443           x_drav_rec.day_of_month := l_db_drav_rec.day_of_month;
5444 
5445         END IF;
5446 
5447         IF x_drav_rec.scheduled_month IS NULL THEN
5448 
5449           x_drav_rec.scheduled_month := l_db_drav_rec.scheduled_month;
5450 
5451         END IF;
5452 
5453         IF x_drav_rec.consolidate_strm_type IS NULL THEN
5454 
5455           x_drav_rec.consolidate_strm_type := l_db_drav_rec.consolidate_strm_type;
5456 
5457         END IF;
5458 
5459         IF x_drav_rec.description IS NULL THEN
5460 
5461           x_drav_rec.description := l_db_drav_rec.description;
5462 
5463         END IF;
5464 
5465         IF x_drav_rec.attribute_category IS NULL THEN
5466 
5467           x_drav_rec.attribute_category := l_db_drav_rec.attribute_category;
5468 
5469         END IF;
5470 
5471         IF x_drav_rec.attribute1 IS NULL THEN
5472 
5473           x_drav_rec.attribute1 := l_db_drav_rec.attribute1;
5474 
5475         END IF;
5476 
5477         IF x_drav_rec.attribute2 IS NULL THEN
5478 
5479           x_drav_rec.attribute2 := l_db_drav_rec.attribute2;
5480 
5481         END IF;
5482 
5483         IF x_drav_rec.attribute3 IS NULL THEN
5484 
5485           x_drav_rec.attribute3 := l_db_drav_rec.attribute3;
5486 
5487         END IF;
5488 
5489         IF x_drav_rec.attribute4 IS NULL THEN
5490 
5491           x_drav_rec.attribute4 := l_db_drav_rec.attribute4;
5492 
5493         END IF;
5494 
5495         IF x_drav_rec.attribute5 IS NULL THEN
5496 
5497           x_drav_rec.attribute5 := l_db_drav_rec.attribute5;
5498 
5499         END IF;
5500 
5501         IF x_drav_rec.attribute6 IS NULL THEN
5502 
5503           x_drav_rec.attribute6 := l_db_drav_rec.attribute6;
5504 
5505         END IF;
5506 
5507         IF x_drav_rec.attribute7 IS NULL THEN
5508 
5509           x_drav_rec.attribute7 := l_db_drav_rec.attribute7;
5510 
5511         END IF;
5512 
5513         IF x_drav_rec.attribute8 IS NULL THEN
5514 
5515           x_drav_rec.attribute8 := l_db_drav_rec.attribute8;
5516 
5517         END IF;
5518 
5519         IF x_drav_rec.attribute9 IS NULL THEN
5520 
5521           x_drav_rec.attribute9 := l_db_drav_rec.attribute9;
5522 
5523         END IF;
5524 
5525         IF x_drav_rec.attribute10 IS NULL THEN
5526 
5527           x_drav_rec.attribute10 := l_db_drav_rec.attribute10;
5528 
5529         END IF;
5530 
5531         IF x_drav_rec.attribute11 IS NULL THEN
5532 
5533           x_drav_rec.attribute11 := l_db_drav_rec.attribute11;
5534 
5535         END IF;
5536 
5537         IF x_drav_rec.attribute12 IS NULL THEN
5538 
5539           x_drav_rec.attribute12 := l_db_drav_rec.attribute12;
5540 
5541         END IF;
5542 
5543         IF x_drav_rec.attribute13 IS NULL THEN
5544 
5545           x_drav_rec.attribute13 := l_db_drav_rec.attribute13;
5546 
5547         END IF;
5548 
5549         IF x_drav_rec.attribute14 IS NULL THEN
5550 
5551           x_drav_rec.attribute14 := l_db_drav_rec.attribute14;
5552 
5553         END IF;
5554 
5555         IF x_drav_rec.attribute15 IS NULL THEN
5556 
5557           x_drav_rec.attribute15 := l_db_drav_rec.attribute15;
5558 
5559         END IF;
5560 
5561         IF x_drav_rec.created_by IS NULL THEN
5562 
5563           x_drav_rec.created_by := l_db_drav_rec.created_by;
5564 
5565         END IF;
5566 
5567         IF x_drav_rec.creation_date IS NULL THEN
5568 
5569           x_drav_rec.creation_date := l_db_drav_rec.creation_date;
5570 
5571         END IF;
5572 
5573         IF x_drav_rec.last_updated_by IS NULL THEN
5574 
5575           x_drav_rec.last_updated_by := l_db_drav_rec.last_updated_by;
5576 
5577         END IF;
5578 
5579         IF x_drav_rec.last_update_date IS NULL THEN
5580 
5581           x_drav_rec.last_update_date := l_db_drav_rec.last_update_date;
5582 
5583         END IF;
5584 
5585         IF x_drav_rec.last_update_login IS NULL THEN
5586 
5587           x_drav_rec.last_update_login := l_db_drav_rec.last_update_login;
5588 
5589         END IF;
5590 
5591       END IF;
5592 
5593       RETURN(l_return_status);
5594 
5595     END populate_new_record;
5596 
5597     -----------------------------------------
5598 
5599     -- Set_Attributes for:OKL_DISB_RULES_V --
5600 
5601     -----------------------------------------
5602 
5603     FUNCTION Set_Attributes (
5604 
5605       p_drav_rec IN drav_rec_type,
5606 
5607       x_drav_rec OUT NOCOPY drav_rec_type
5608 
5609     ) RETURN VARCHAR2 IS
5610 
5611       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5612 
5613     BEGIN
5614 
5615       x_drav_rec := p_drav_rec;
5616 
5617       RETURN(l_return_status);
5618 
5619     END Set_Attributes;
5620 
5621   BEGIN
5622     --g_debug_proc('In TAPI DRA  '  || p_drav_rec.scheduled_month);
5623 
5624     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
5625                                               G_PKG_NAME,
5626                                               p_init_msg_list,
5627                                               l_api_version,
5628                                               p_api_version,
5629                                               '_PVT',
5630                                               x_return_status);
5631 
5632     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5633       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5634     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5635       RAISE OKL_API.G_EXCEPTION_ERROR;
5636     END IF;
5637 
5638     --- Setting item attributes
5639 
5640     l_return_status := Set_Attributes(
5641       p_drav_rec,                        -- IN
5642       l_drav_rec);                       -- OUT
5643 
5644  ----g_debug_proc('SEt Attri');
5645 
5646   --- If any errors happen abort API
5647 
5648     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5649       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5650     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5651       RAISE OKL_API.G_EXCEPTION_ERROR;
5652     END IF;
5653 
5654     l_return_status := populate_new_record(l_drav_rec, l_def_drav_rec);
5655 
5656 ----g_debug_proc('Populate Record');
5657 
5658     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5659       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5660     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5661       RAISE OKL_API.G_EXCEPTION_ERROR;
5662     END IF;
5663 
5664     l_def_drav_rec := null_out_defaults(l_def_drav_rec);
5665 --g_debug_proc('null defects  '   || l_def_drav_rec.scheduled_month);
5666 
5667     l_def_drav_rec := fill_who_columns(l_def_drav_rec);
5668 
5669 --g_debug_proc('fill columns  ' || l_def_drav_rec.scheduled_month);
5670     --- Validate all non-missing attributes (Item Level Validation)
5671 
5672     l_return_status := Validate_Attributes(l_def_drav_rec);
5673 
5674 --g_debug_proc('validate attri  ' || l_return_status);
5675     --- If any errors happen abort API
5676 
5677     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5678 
5679       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5680 
5681     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5682 
5683       RAISE OKL_API.G_EXCEPTION_ERROR;
5684 
5685     END IF;
5686 
5687     l_return_status := Validate_Record(l_def_drav_rec, l_db_drav_rec);
5688     --g_debug_proc('validate rec  '   || l_return_status);
5689 
5690     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5691       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5692     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5693       RAISE OKL_API.G_EXCEPTION_ERROR;
5694     END IF;
5695 
5696 
5697    --g_debug_proc('Tapi update LOCK DRA');
5698     -- Lock the Record
5699 
5700     lock_row(
5701       p_api_version                  => p_api_version,
5702       p_init_msg_list                => p_init_msg_list,
5703       x_return_status                => l_return_status,
5704       x_msg_count                    => x_msg_count,
5705       x_msg_data                     => x_msg_data,
5706       p_drav_rec                     => l_db_drav_rec);
5707 
5708     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5709       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5710     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5711       RAISE OKL_API.G_EXCEPTION_ERROR;
5712     END IF;
5713 
5714 
5715 
5716     -----------------------------------------
5717 
5718     -- Move VIEW record to "Child" records --
5719 
5720     -----------------------------------------
5721     --g_debug_proc('Tapi Before Migrate');
5722     migrate(l_def_drav_rec, l_dra_rec);
5723     migrate(l_def_drav_rec, l_okl_disb_rules_tl_rec);
5724 
5725     -----------------------------------------------
5726 
5727     -- Call the UPDATE_ROW for each child record --
5728 
5729     -----------------------------------------------
5730    --g_debug_proc('Tapi UpdateDRA  ' || l_db_drav_rec.object_version_number || l_dra_rec.object_version_number );
5731    --g_debug_proc('Tapi UpdateDRA  ' || l_def_drav_rec.scheduled_month);
5732    --g_debug_proc('Tapi UpdateDRA  ' || l_dra_rec.scheduled_month);
5733 
5734     update_row(
5735       p_init_msg_list,
5736       l_return_status,
5737       x_msg_count,
5738       x_msg_data,
5739       l_dra_rec,
5740       lx_dra_rec
5741     );
5742 
5743     --g_debug_proc('Tapi UpdateDRA ' || l_return_status);
5744 
5745     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5746 
5747       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5748 
5749     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5750 
5751       RAISE OKL_API.G_EXCEPTION_ERROR;
5752 
5753     END IF;
5754 
5755     migrate(lx_dra_rec, l_def_drav_rec);
5756 
5757     update_row(
5758 
5759       p_init_msg_list,
5760 
5761       l_return_status,
5762 
5763       x_msg_count,
5764 
5765       x_msg_data,
5766 
5767       l_okl_disb_rules_tl_rec,
5768 
5769       lx_okl_disb_rules_tl_rec
5770 
5771     );
5772 
5773     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5774 
5775       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5776 
5777     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5778 
5779       RAISE OKL_API.G_EXCEPTION_ERROR;
5780 
5781     END IF;
5782 
5783     migrate(lx_okl_disb_rules_tl_rec, l_def_drav_rec);
5784 
5785     x_drav_rec := l_def_drav_rec;
5786 
5787     x_return_status := l_return_status;
5788 
5789     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
5790 
5791   EXCEPTION
5792 
5793     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5794 
5795       x_return_status := OKL_API.HANDLE_EXCEPTIONS
5796 
5797       (
5798 
5799         l_api_name,
5800 
5801         G_PKG_NAME,
5802 
5803         'OKL_API.G_RET_STS_ERROR',
5804 
5805         x_msg_count,
5806 
5807         x_msg_data,
5808 
5809         '_PVT'
5810 
5811       );
5812 
5813     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5814 
5815       x_return_status := OKL_API.HANDLE_EXCEPTIONS
5816 
5817       (
5818 
5819         l_api_name,
5820 
5821         G_PKG_NAME,
5822 
5823         'OKL_API.G_RET_STS_UNEXP_ERROR',
5824 
5825         x_msg_count,
5826 
5827         x_msg_data,
5828 
5829         '_PVT'
5830 
5831       );
5832 
5833     WHEN OTHERS THEN
5834 
5835       x_return_status := OKL_API.HANDLE_EXCEPTIONS
5836 
5837       (
5838 
5839         l_api_name,
5840 
5841         G_PKG_NAME,
5842 
5843         'OTHERS',
5844 
5845         x_msg_count,
5846 
5847         x_msg_data,
5848 
5849         '_PVT'
5850 
5851       );
5852 
5853   END update_row;
5854 
5855   ----------------------------------------
5856 
5857   -- PL/SQL TBL update_row for:drav_tbl --
5858 
5859   ----------------------------------------
5860 
5861   PROCEDURE update_row(
5862 
5863     p_api_version                  IN NUMBER,
5864 
5865     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5866 
5867     x_return_status                OUT NOCOPY VARCHAR2,
5868 
5869     x_msg_count                    OUT NOCOPY NUMBER,
5870 
5871     x_msg_data                     OUT NOCOPY VARCHAR2,
5872 
5873     p_drav_tbl                     IN drav_tbl_type,
5874 
5875     x_drav_tbl                     OUT NOCOPY drav_tbl_type,
5876 
5877     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
5878 
5879 
5880 
5881     l_api_version                  CONSTANT NUMBER := 1;
5882 
5883     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
5884 
5885     i                              NUMBER := 0;
5886 
5887   BEGIN
5888 
5889     OKL_API.init_msg_list(p_init_msg_list);
5890 
5891     -- Make sure PL/SQL table has records in it before passing
5892 
5893     IF (p_drav_tbl.COUNT > 0) THEN
5894 
5895       i := p_drav_tbl.FIRST;
5896 
5897       LOOP
5898 
5899         DECLARE
5900 
5901           l_error_rec         OKL_API.ERROR_REC_TYPE;
5902 
5903         BEGIN
5904 
5905           l_error_rec.api_name := l_api_name;
5906 
5907           l_error_rec.api_package := G_PKG_NAME;
5908 
5909           l_error_rec.idx := i;
5910 
5911           update_row (
5912 
5913             p_api_version                  => p_api_version,
5914 
5915             p_init_msg_list                => OKL_API.G_FALSE,
5916 
5917             x_return_status                => l_error_rec.error_type,
5918 
5919             x_msg_count                    => l_error_rec.msg_count,
5920 
5921             x_msg_data                     => l_error_rec.msg_data,
5922 
5923             p_drav_rec                     => p_drav_tbl(i),
5924 
5925             x_drav_rec                     => x_drav_tbl(i));
5926 
5927           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
5928 
5929             l_error_rec.sqlcode := SQLCODE;
5930 
5931             load_error_tbl(l_error_rec, px_error_tbl);
5932 
5933           ELSE
5934 
5935             x_msg_count := l_error_rec.msg_count;
5936 
5937             x_msg_data := l_error_rec.msg_data;
5938 
5939           END IF;
5940 
5941         EXCEPTION
5942 
5943           WHEN OKL_API.G_EXCEPTION_ERROR THEN
5944 
5945             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
5946 
5947             l_error_rec.sqlcode := SQLCODE;
5948 
5949             load_error_tbl(l_error_rec, px_error_tbl);
5950 
5951           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5952 
5953             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
5954 
5955             l_error_rec.sqlcode := SQLCODE;
5956 
5957             load_error_tbl(l_error_rec, px_error_tbl);
5958 
5959           WHEN OTHERS THEN
5960 
5961             l_error_rec.error_type := 'OTHERS';
5962 
5963             l_error_rec.sqlcode := SQLCODE;
5964 
5965             load_error_tbl(l_error_rec, px_error_tbl);
5966 
5967         END;
5968 
5969         EXIT WHEN (i = p_drav_tbl.LAST);
5970 
5971         i := p_drav_tbl.NEXT(i);
5972 
5973       END LOOP;
5974 
5975     END IF;
5976 
5977     -- Loop through the error_tbl to find the error with the highest severity
5978 
5979     -- and return it.
5980 
5981     x_return_status := find_highest_exception(px_error_tbl);
5982 
5983     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
5984 
5985   EXCEPTION
5986 
5987     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5988 
5989       x_return_status := OKL_API.HANDLE_EXCEPTIONS
5990 
5991       (
5992 
5993         l_api_name,
5994 
5995         G_PKG_NAME,
5996 
5997         'OKL_API.G_RET_STS_ERROR',
5998 
5999         x_msg_count,
6000 
6001         x_msg_data,
6002 
6003         '_PVT'
6004 
6005       );
6006 
6007     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6008 
6009       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6010 
6011       (
6012 
6013         l_api_name,
6014 
6015         G_PKG_NAME,
6016 
6017         'OKL_API.G_RET_STS_UNEXP_ERROR',
6018 
6019         x_msg_count,
6020 
6021         x_msg_data,
6022 
6023         '_PVT'
6024 
6025       );
6026 
6027     WHEN OTHERS THEN
6028 
6029       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6030 
6031       (
6032 
6033         l_api_name,
6034 
6035         G_PKG_NAME,
6036 
6037         'OTHERS',
6038 
6039         x_msg_count,
6040 
6041         x_msg_data,
6042 
6043         '_PVT'
6044 
6045       );
6046 
6047   END update_row;
6048 
6049 
6050 
6051   ----------------------------------------
6052 
6053   -- PL/SQL TBL update_row for:DRAV_TBL --
6054 
6055   ----------------------------------------
6056 
6057   PROCEDURE update_row(
6058 
6059     p_api_version                  IN NUMBER,
6060 
6061     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6062 
6063     x_return_status                OUT NOCOPY VARCHAR2,
6064 
6065     x_msg_count                    OUT NOCOPY NUMBER,
6066 
6067     x_msg_data                     OUT NOCOPY VARCHAR2,
6068 
6069     p_drav_tbl                     IN drav_tbl_type,
6070 
6071     x_drav_tbl                     OUT NOCOPY drav_tbl_type) IS
6072 
6073 
6074 
6075     l_api_version                  CONSTANT NUMBER := 1;
6076 
6077     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
6078 
6079     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6080 
6081     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
6082 
6083   BEGIN
6084 
6085     OKL_API.init_msg_list(p_init_msg_list);
6086 
6087     -- Make sure PL/SQL table has records in it before passing
6088 
6089     IF (p_drav_tbl.COUNT > 0) THEN
6090 
6091       update_row (
6092 
6093         p_api_version                  => p_api_version,
6094 
6095         p_init_msg_list                => OKL_API.G_FALSE,
6096 
6097         x_return_status                => x_return_status,
6098 
6099         x_msg_count                    => x_msg_count,
6100 
6101         x_msg_data                     => x_msg_data,
6102 
6103         p_drav_tbl                     => p_drav_tbl,
6104 
6105         x_drav_tbl                     => x_drav_tbl,
6106 
6107         px_error_tbl                   => l_error_tbl);
6108 
6109     END IF;
6110 
6111     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
6112 
6113   EXCEPTION
6114 
6115     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6116 
6117       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6118 
6119       (
6120 
6121         l_api_name,
6122 
6123         G_PKG_NAME,
6124 
6125         'OKL_API.G_RET_STS_ERROR',
6126 
6127         x_msg_count,
6128 
6129         x_msg_data,
6130 
6131         '_PVT'
6132 
6133       );
6134 
6135     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6136 
6137       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6138 
6139       (
6140 
6141         l_api_name,
6142 
6143         G_PKG_NAME,
6144 
6145         'OKL_API.G_RET_STS_UNEXP_ERROR',
6146 
6147         x_msg_count,
6148 
6149         x_msg_data,
6150 
6151         '_PVT'
6152 
6153       );
6154 
6155     WHEN OTHERS THEN
6156 
6157       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6158 
6159       (
6160 
6161         l_api_name,
6162 
6163         G_PKG_NAME,
6164 
6165         'OTHERS',
6166 
6167         x_msg_count,
6168 
6169         x_msg_data,
6170 
6171         '_PVT'
6172 
6173       );
6174 
6175   END update_row;
6176 
6177 
6178 
6179   ---------------------------------------------------------------------------
6180 
6181   -- PROCEDURE delete_row
6182 
6183   ---------------------------------------------------------------------------
6184 
6185   -------------------------------------
6186 
6187   -- delete_row for:OKL_DISB_RULES_B --
6188 
6189   -------------------------------------
6190 
6191   PROCEDURE delete_row(
6192 
6193     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6194 
6195     x_return_status                OUT NOCOPY VARCHAR2,
6196 
6197     x_msg_count                    OUT NOCOPY NUMBER,
6198 
6199     x_msg_data                     OUT NOCOPY VARCHAR2,
6200 
6201     p_dra_rec                      IN dra_rec_type) IS
6202 
6203 
6204 
6205     l_api_version                  CONSTANT NUMBER := 1;
6206 
6207     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
6208 
6209     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6210 
6211     l_dra_rec                      dra_rec_type := p_dra_rec;
6212 
6213     l_row_notfound                 BOOLEAN := TRUE;
6214 
6215   BEGIN
6216 
6217     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
6218 
6219                                               p_init_msg_list,
6220 
6221                                               '_PVT',
6222 
6223                                               x_return_status);
6224 
6225     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6226 
6227       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6228 
6229     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
6230 
6231       RAISE OKL_API.G_EXCEPTION_ERROR;
6232 
6233     END IF;
6234 
6235 
6236 
6237     DELETE FROM OKL_DISB_RULES_B
6238 
6239      WHERE DISB_RULE_ID = p_dra_rec.disb_rule_id;
6240 
6241 
6242 
6243     x_return_status := l_return_status;
6244 
6245     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
6246 
6247   EXCEPTION
6248 
6249     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6250 
6251       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6252 
6253       (
6254 
6255         l_api_name,
6256 
6257         G_PKG_NAME,
6258 
6259         'OKL_API.G_RET_STS_ERROR',
6260 
6261         x_msg_count,
6262 
6263         x_msg_data,
6264 
6265         '_PVT'
6266 
6267       );
6268 
6269     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6270 
6271       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6272 
6273       (
6274 
6275         l_api_name,
6276 
6277         G_PKG_NAME,
6278 
6279         'OKL_API.G_RET_STS_UNEXP_ERROR',
6280 
6281         x_msg_count,
6282 
6283         x_msg_data,
6284 
6285         '_PVT'
6286 
6287       );
6288 
6289     WHEN OTHERS THEN
6290 
6291       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6292 
6293       (
6294 
6295         l_api_name,
6296 
6297         G_PKG_NAME,
6298 
6299         'OTHERS',
6300 
6301         x_msg_count,
6302 
6303         x_msg_data,
6304 
6305         '_PVT'
6306 
6307       );
6308 
6309   END delete_row;
6310 
6311   --------------------------------------
6312 
6313   -- delete_row for:OKL_DISB_RULES_TL --
6314 
6315   --------------------------------------
6316 
6317   PROCEDURE delete_row(
6318 
6319     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6320 
6321     x_return_status                OUT NOCOPY VARCHAR2,
6322 
6323     x_msg_count                    OUT NOCOPY NUMBER,
6324 
6325     x_msg_data                     OUT NOCOPY VARCHAR2,
6326 
6327     p_okl_disb_rules_tl_rec        IN okl_disb_rules_tl_rec_type) IS
6328 
6329 
6330 
6331     l_api_version                  CONSTANT NUMBER := 1;
6332 
6333     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
6334 
6335     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6336 
6337     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type := p_okl_disb_rules_tl_rec;
6338 
6339     l_row_notfound                 BOOLEAN := TRUE;
6340 
6341   BEGIN
6342 
6343     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
6344 
6345                                               p_init_msg_list,
6346 
6347                                               '_PVT',
6348 
6349                                               x_return_status);
6350 
6351     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6352 
6353       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6354 
6355     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
6356 
6357       RAISE OKL_API.G_EXCEPTION_ERROR;
6358 
6359     END IF;
6360 
6361 
6362 
6363     DELETE FROM OKL_DISB_RULES_TL
6364 
6365      WHERE DISB_RULE_ID = p_okl_disb_rules_tl_rec.disb_rule_id;
6366 
6367 
6368 
6369     x_return_status := l_return_status;
6370 
6371     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
6372 
6373   EXCEPTION
6374 
6375     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6376 
6377       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6378 
6379       (
6380 
6381         l_api_name,
6382 
6383         G_PKG_NAME,
6384 
6385         'OKL_API.G_RET_STS_ERROR',
6386 
6387         x_msg_count,
6388 
6389         x_msg_data,
6390 
6391         '_PVT'
6392 
6393       );
6394 
6395     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6396 
6397       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6398 
6399       (
6400 
6401         l_api_name,
6402 
6403         G_PKG_NAME,
6404 
6405         'OKL_API.G_RET_STS_UNEXP_ERROR',
6406 
6407         x_msg_count,
6408 
6409         x_msg_data,
6410 
6411         '_PVT'
6412 
6413       );
6414 
6415     WHEN OTHERS THEN
6416 
6417       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6418 
6419       (
6420 
6421         l_api_name,
6422 
6423         G_PKG_NAME,
6424 
6425         'OTHERS',
6426 
6427         x_msg_count,
6428 
6429         x_msg_data,
6430 
6431         '_PVT'
6432 
6433       );
6434 
6435   END delete_row;
6436 
6437   -------------------------------------
6438 
6439   -- delete_row for:OKL_DISB_RULES_V --
6440 
6441   -------------------------------------
6442 
6443   PROCEDURE delete_row(
6444 
6445     p_api_version                  IN NUMBER,
6446 
6447     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6448 
6449     x_return_status                OUT NOCOPY VARCHAR2,
6450 
6451     x_msg_count                    OUT NOCOPY NUMBER,
6452 
6453     x_msg_data                     OUT NOCOPY VARCHAR2,
6454 
6455     p_drav_rec                     IN drav_rec_type) IS
6456 
6457 
6458 
6459     l_api_version                  CONSTANT NUMBER := 1;
6460 
6461     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
6462 
6463     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6464 
6465     l_drav_rec                     drav_rec_type := p_drav_rec;
6466 
6467     l_okl_disb_rules_tl_rec        okl_disb_rules_tl_rec_type;
6468 
6469     l_dra_rec                      dra_rec_type;
6470 
6471   BEGIN
6472 
6473     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
6474 
6475                                               G_PKG_NAME,
6476 
6477                                               p_init_msg_list,
6478 
6479                                               l_api_version,
6480 
6481                                               p_api_version,
6482 
6483                                               '_PVT',
6484 
6485                                               x_return_status);
6486 
6487     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6488 
6489       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6490 
6491     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
6492 
6493       RAISE OKL_API.G_EXCEPTION_ERROR;
6494 
6495     END IF;
6496 
6497     -----------------------------------------
6498 
6499     -- Move VIEW record to "Child" records --
6500 
6501     -----------------------------------------
6502 
6503     migrate(l_drav_rec, l_okl_disb_rules_tl_rec);
6504 
6505     migrate(l_drav_rec, l_dra_rec);
6506 
6507     -----------------------------------------------
6508 
6509     -- Call the DELETE_ROW for each child record --
6510 
6511     -----------------------------------------------
6512 
6513     delete_row(
6514 
6515       p_init_msg_list,
6516 
6517       l_return_status,
6518 
6519       x_msg_count,
6520 
6521       x_msg_data,
6522 
6523       l_okl_disb_rules_tl_rec
6524 
6525     );
6526 
6527     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6528 
6529       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6530 
6531     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
6532 
6533       RAISE OKL_API.G_EXCEPTION_ERROR;
6534 
6535     END IF;
6536 
6537     delete_row(
6538 
6539       p_init_msg_list,
6540 
6541       l_return_status,
6542 
6543       x_msg_count,
6544 
6545       x_msg_data,
6546 
6547       l_dra_rec
6548 
6549     );
6550 
6551     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6552 
6553       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6554 
6555     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
6556 
6557       RAISE OKL_API.G_EXCEPTION_ERROR;
6558 
6559     END IF;
6560 
6561     x_return_status := l_return_status;
6562 
6563     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
6564 
6565   EXCEPTION
6566 
6567     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6568 
6569       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6570 
6571       (
6572 
6573         l_api_name,
6574 
6575         G_PKG_NAME,
6576 
6577         'OKL_API.G_RET_STS_ERROR',
6578 
6579         x_msg_count,
6580 
6581         x_msg_data,
6582 
6583         '_PVT'
6584 
6585       );
6586 
6587     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6588 
6589       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6590 
6591       (
6592 
6593         l_api_name,
6594 
6595         G_PKG_NAME,
6596 
6597         'OKL_API.G_RET_STS_UNEXP_ERROR',
6598 
6599         x_msg_count,
6600 
6601         x_msg_data,
6602 
6603         '_PVT'
6604 
6605       );
6606 
6607     WHEN OTHERS THEN
6608 
6609       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6610 
6611       (
6612 
6613         l_api_name,
6614 
6615         G_PKG_NAME,
6616 
6617         'OTHERS',
6618 
6619         x_msg_count,
6620 
6621         x_msg_data,
6622 
6623         '_PVT'
6624 
6625       );
6626 
6627   END delete_row;
6628 
6629   ------------------------------------------------
6630 
6631   -- PL/SQL TBL delete_row for:OKL_DISB_RULES_V --
6632 
6633   ------------------------------------------------
6634 
6635   PROCEDURE delete_row(
6636 
6637     p_api_version                  IN NUMBER,
6638 
6639     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6640 
6641     x_return_status                OUT NOCOPY VARCHAR2,
6642 
6643     x_msg_count                    OUT NOCOPY NUMBER,
6644 
6645     x_msg_data                     OUT NOCOPY VARCHAR2,
6646 
6647     p_drav_tbl                     IN drav_tbl_type,
6648 
6649     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
6650 
6651 
6652 
6653     l_api_version                  CONSTANT NUMBER := 1;
6654 
6655     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
6656 
6657     i                              NUMBER := 0;
6658 
6659   BEGIN
6660 
6661     OKL_API.init_msg_list(p_init_msg_list);
6662 
6663     -- Make sure PL/SQL table has records in it before passing
6664 
6665     IF (p_drav_tbl.COUNT > 0) THEN
6666 
6667       i := p_drav_tbl.FIRST;
6668 
6669       LOOP
6670 
6671         DECLARE
6672 
6673           l_error_rec         OKL_API.ERROR_REC_TYPE;
6674 
6675         BEGIN
6676 
6677           l_error_rec.api_name := l_api_name;
6678 
6679           l_error_rec.api_package := G_PKG_NAME;
6680 
6681           l_error_rec.idx := i;
6682 
6683           delete_row (
6684 
6685             p_api_version                  => p_api_version,
6686 
6687             p_init_msg_list                => OKL_API.G_FALSE,
6688 
6689             x_return_status                => l_error_rec.error_type,
6690 
6691             x_msg_count                    => l_error_rec.msg_count,
6692 
6693             x_msg_data                     => l_error_rec.msg_data,
6694 
6695             p_drav_rec                     => p_drav_tbl(i));
6696 
6697           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
6698 
6699             l_error_rec.sqlcode := SQLCODE;
6700 
6701             load_error_tbl(l_error_rec, px_error_tbl);
6702 
6703           ELSE
6704 
6705             x_msg_count := l_error_rec.msg_count;
6706 
6707             x_msg_data := l_error_rec.msg_data;
6708 
6709           END IF;
6710 
6711         EXCEPTION
6712 
6713           WHEN OKL_API.G_EXCEPTION_ERROR THEN
6714 
6715             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
6716 
6717             l_error_rec.sqlcode := SQLCODE;
6718 
6719             load_error_tbl(l_error_rec, px_error_tbl);
6720 
6721           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6722 
6723             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
6724 
6725             l_error_rec.sqlcode := SQLCODE;
6726 
6727             load_error_tbl(l_error_rec, px_error_tbl);
6728 
6729           WHEN OTHERS THEN
6730 
6731             l_error_rec.error_type := 'OTHERS';
6732 
6733             l_error_rec.sqlcode := SQLCODE;
6734 
6735             load_error_tbl(l_error_rec, px_error_tbl);
6736 
6737         END;
6738 
6739         EXIT WHEN (i = p_drav_tbl.LAST);
6740 
6741         i := p_drav_tbl.NEXT(i);
6742 
6743       END LOOP;
6744 
6745     END IF;
6746 
6747     -- Loop through the error_tbl to find the error with the highest severity
6748 
6749     -- and return it.
6750 
6751     x_return_status := find_highest_exception(px_error_tbl);
6752 
6753     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
6754 
6755   EXCEPTION
6756 
6757     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6758 
6759       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6760 
6761       (
6762 
6763         l_api_name,
6764 
6765         G_PKG_NAME,
6766 
6767         'OKL_API.G_RET_STS_ERROR',
6768 
6769         x_msg_count,
6770 
6771         x_msg_data,
6772 
6773         '_PVT'
6774 
6775       );
6776 
6777     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6778 
6779       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6780 
6781       (
6782 
6783         l_api_name,
6784 
6785         G_PKG_NAME,
6786 
6787         'OKL_API.G_RET_STS_UNEXP_ERROR',
6788 
6789         x_msg_count,
6790 
6791         x_msg_data,
6792 
6793         '_PVT'
6794 
6795       );
6796 
6797     WHEN OTHERS THEN
6798 
6799       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6800 
6801       (
6802 
6803         l_api_name,
6804 
6805         G_PKG_NAME,
6806 
6807         'OTHERS',
6808 
6809         x_msg_count,
6810 
6811         x_msg_data,
6812 
6813         '_PVT'
6814 
6815       );
6816 
6817   END delete_row;
6818 
6819 
6820 
6821   ------------------------------------------------
6822 
6823   -- PL/SQL TBL delete_row for:OKL_DISB_RULES_V --
6824 
6825   ------------------------------------------------
6826 
6827   PROCEDURE delete_row(
6828 
6829     p_api_version                  IN NUMBER,
6830 
6831     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6832 
6833     x_return_status                OUT NOCOPY VARCHAR2,
6834 
6835     x_msg_count                    OUT NOCOPY NUMBER,
6836 
6837     x_msg_data                     OUT NOCOPY VARCHAR2,
6838 
6839     p_drav_tbl                     IN drav_tbl_type) IS
6840 
6841 
6842 
6843     l_api_version                  CONSTANT NUMBER := 1;
6844 
6845     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
6846 
6847     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6848 
6849     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
6850 
6851   BEGIN
6852 
6853     OKL_API.init_msg_list(p_init_msg_list);
6854 
6855     -- Make sure PL/SQL table has records in it before passing
6856 
6857     IF (p_drav_tbl.COUNT > 0) THEN
6858 
6859       delete_row (
6860 
6861         p_api_version                  => p_api_version,
6862 
6863         p_init_msg_list                => OKL_API.G_FALSE,
6864 
6865         x_return_status                => x_return_status,
6866 
6867         x_msg_count                    => x_msg_count,
6868 
6869         x_msg_data                     => x_msg_data,
6870 
6871         p_drav_tbl                     => p_drav_tbl,
6872 
6873         px_error_tbl                   => l_error_tbl);
6874 
6875     END IF;
6876 
6877     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
6878 
6879   EXCEPTION
6880 
6881     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6882 
6883       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6884 
6885       (
6886 
6887         l_api_name,
6888 
6889         G_PKG_NAME,
6890 
6891         'OKL_API.G_RET_STS_ERROR',
6892 
6893         x_msg_count,
6894 
6895         x_msg_data,
6896 
6897         '_PVT'
6898 
6899       );
6900 
6901     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6902 
6903       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6904 
6905       (
6906 
6907         l_api_name,
6908 
6909         G_PKG_NAME,
6910 
6911         'OKL_API.G_RET_STS_UNEXP_ERROR',
6912 
6913         x_msg_count,
6914 
6915         x_msg_data,
6916 
6917         '_PVT'
6918 
6919       );
6920 
6921     WHEN OTHERS THEN
6922 
6923       x_return_status := OKL_API.HANDLE_EXCEPTIONS
6924 
6925       (
6926 
6927         l_api_name,
6928 
6929         G_PKG_NAME,
6930 
6931         'OTHERS',
6932 
6933         x_msg_count,
6934 
6935         x_msg_data,
6936 
6937         '_PVT'
6938 
6939       );
6940 
6941   END delete_row;
6942 
6943 END OKL_DRA_PVT;