DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEC_VALIDATE_PVT

Source


1 PACKAGE BODY IEC_VALIDATE_PVT AS
2 /* $Header: IECVALB.pls 120.7.12010000.3 2009/01/13 08:38:29 majha ship $ */
3 
4 
5 
6 g_pkg_name CONSTANT VARCHAR2(30) := 'IEC_VALIDATE_PVT';
7 
8 
9 
10 TYPE varchar_idx_tbl_type IS TABLE OF VARCHAR2(500)
11 
12    INDEX BY BINARY_INTEGER;
13 
14 TYPE number_idx_tbl_type IS TABLE OF NUMBER(15)
15 
16    INDEX BY BINARY_INTEGER;
17 
18 
19 
20 g_cc_cc_lookup_tbl    varchar_idx_tbl_type;
21 
22 g_cc_tc_lookup_tbl    varchar_idx_tbl_type;
23 
24 g_cc_ac_tc_lookup_tbl varchar_idx_tbl_type;
25 
26 g_ac_length_tbl       varchar_idx_tbl_type;
27 
28 g_pn_length_tbl       varchar_idx_tbl_type;
29 
30 g_tz_lookup_tbl       varchar_idx_tbl_type;
31 
32 
33 
34 -- Bulk Collect Batch Size
35 
36 g_row_increment CONSTANT NUMBER(9) := 10000;
37 
38 
39 
40 -- Logging variables
41 
42 g_fnd_log_enabled BOOLEAN := TRUE;
43 
44 g_status          VARCHAR2(32) := NULl;
45 
46 g_method          VARCHAR2(4000) := NULL;
47 
48 g_sub_method      VARCHAR2(4000) := NULL;
49 
50 g_encoded_message VARCHAR2(4000) := NULL;
51 
52 g_module          VARCHAR2(4000) := NULL;
53 
54 g_message         VARCHAR2(4000) := NULL;
55 
56 g_message_prefix  VARCHAR2(4000) := NULL;
57 
58 g_start_time      DATE := NULL;
59 
60 g_end_time        DATE := NULL;
61 
62 g_ignore          VARCHAR2(4000);
63 
64 
65 
66 -- Validation rule configuration variables, set in Init_Rules
67 
68 g_enable_zc_lookups BOOLEAN;
69 
70 g_enable_tz_map_ovrd BOOLEAN;
71 
72 g_enable_cell_phone_val BOOLEAN;
73 
74 g_phone_country_code VARCHAR2(60);
75 
76 g_territory_code VARCHAR2(2);
77 
78 g_enable_ac_incr_parse BOOLEAN;
79 
80 g_enable_cc_incr_parse BOOLEAN;
81 
82 g_timezone_id NUMBER(15);
83 
84 g_region_id NUMBER(15);
85 
86 g_require_regions BOOLEAN;
87 
88 g_enable_pn_length_val BOOLEAN;
89 
90 g_enable_ac_length_val BOOLEAN;
91 
92 
93 
94 PROCEDURE Set_LoggingGlobals
95 
96    ( p_status         IN VARCHAR2
97 
98    , p_method         IN VARCHAR2
99 
100    , p_sub_method     IN VARCHAR2
101 
102    )
103 
104 IS
105 
106 BEGIN
107 
108 
109 
110    g_status := p_status; -- used to create validation history report, not general logging
111 
112    g_method := p_method;
113 
114    g_sub_method := p_sub_method;
115 
116 
117 
118    IEC_OCS_LOG_PVT.Get_EncodedMessage(g_message, g_encoded_message);
119 
120 
121 
122    IF g_message_prefix IS NOT NULL THEN
123 
124       g_module := 'iec.plsql.' || UPPER('IEC_VALIDATE_PVT') || '.' || UPPER(g_method) || '.' || LOWER(g_sub_method) || '.' || LOWER(g_message_prefix);
125 
126    ELSE
127 
128       g_module := 'iec.plsql.' || UPPER('IEC_VALIDATE_PVT') || '.' || UPPER(g_method) || '.' || LOWER(g_sub_method);
129 
130    END IF;
131 
132 
133 
134 END Set_LoggingGlobals;
135 
136 
137 
138 FUNCTION Get_TranslatedErrorMessage
139 
140 RETURN VARCHAR2
141 
142 IS
143 
144 BEGIN
145 
146    RETURN g_module || ': ' || g_message;
147 
148 END Get_TranslatedErrorMessage;
149 
150 
151 
152 PROCEDURE Set_MessagePrefix
153 
154    ( p_action IN VARCHAR2 )
155 
156 IS
157 
158 BEGIN
159 
160    g_message_prefix := p_action;
161 
162 END Set_MessagePrefix;
163 
164 
165 
166 PROCEDURE Disable_FndLogging
167 
168 IS
169 
170 BEGIN
171 
172    g_fnd_log_enabled := FALSE;
173 
174 END Disable_FndLogging;
175 
176 
177 
178 PROCEDURE Enable_FndLogging
179 
180 IS
181 
182 BEGIN
183 
184    g_fnd_log_enabled := TRUE;
185 
186 END Enable_FndLogging;
187 
188 
189 
190 FUNCTION Is_FndLoggingEnabled
191 
192 RETURN BOOLEAN
193 
194 IS
195 
196 BEGIN
197 
198    RETURN g_fnd_log_enabled;
199 
200 END Is_FndLoggingEnabled;
201 
202 
203 
204 -- Creates generic translatable error message using the
205 
206 -- SQLERRM parameter.  You should not pass non-translatable
207 
208 -- strings (other than SQLERRM) into this procedure b/c
209 
210 -- all logs and validation history records must be translatable.
211 
212 -- The translatable error message is logged if Immediate Logging
213 
214 -- Enabled (Main validation procedure defers logging until
215 
216 -- validation history record is created)
217 
218 PROCEDURE Log ( p_method        IN VARCHAR2
219 
220               , p_sub_method    IN VARCHAR2
221 
222               , p_sqlerrm       IN VARCHAR2)
223 
224 IS
225 
226 BEGIN
227 
228 
229 
230    IEC_OCS_LOG_PVT.Init_ValidationSqlErrmMsg
231 
232       ( p_sqlerrm
233 
234       , p_method || '.' || p_sub_method
235 
236       , g_message
237 
238       , g_encoded_message
239 
240       );
241 
242 
243 
244    Set_LoggingGlobals
245 
246       ( 'FAILED_VALIDATION'
247 
248       , p_method
249 
250       , p_sub_method
251 
252       );
253 
254 
255 
256    IF g_fnd_log_enabled THEN
257 
258       IEC_OCS_LOG_PVT.Log_Message(g_module);
259 
260    END IF;
261 
262 
263 
264 END Log;
265 
266 
267 PROCEDURE Log_msg
268 (
269   p_method_name   IN VARCHAR2,
270   p_sql_errmsg    IN VARCHAR2
271 )
272 IS
273   l_error_msg VARCHAR2(2048);
274 BEGIN
275 
276   IEC_OCS_LOG_PVT.LOG_INTERNAL_PLSQL_ERROR
277   (
278     'IEC_VALIDATE_PVT',
279      p_method_name,
280      '',
281      p_sql_errmsg,
282      l_error_msg
283   );
284 
285 END Log_msg;
286 
287 -- Logs a previously initialized translatable error message
288 
289 -- in FND_MESSAGE.
290 
291 -- The translatable error message is logged if Immediate Logging
292 
293 -- Enabled (Main validation procedure defers logging until
294 
295 -- validation history record is created)
296 
297 PROCEDURE Log ( p_method        IN VARCHAR2
298 
299               , p_sub_method    IN VARCHAR2)
300 
301 IS
302 
303 BEGIN
304 
305 
306 
307    -- The message object should already be initialized
308 
309    -- prior to calling this Log procedure
310 
311    Set_LoggingGlobals
312 
313       ( 'FAILED_VALIDATION'
314 
315       , p_method
316 
317       , p_sub_method
318 
319       );
320 
321 
322 
323    IF g_fnd_log_enabled THEN
324 
325       IEC_OCS_LOG_PVT.Log_Message(g_module);
326 
327    END IF;
328 
329 
330 
331 END Log;
332 
333 
334 
335 PROCEDURE Log_SchemaNameNotFound
336 
337    ( p_method             IN VARCHAR2
338 
339    , p_sub_method         IN VARCHAR2
340 
341    , p_appl_short_name    IN VARCHAR2
342 
343    )
344 
345 IS
346 
347 BEGIN
348 
349 
350 
351    IEC_OCS_LOG_PVT.Init_SqlErrmMsg
352 
353       ( p_appl_short_name
354 
355       , g_message
356 
357       , g_encoded_message
358 
359       );
360 
361 
362 
363    -- References FND_MESSAGE object initialized above
364 
365    Log(p_method, p_sub_method);
366 
367 
368 
369 END Log_SchemaNameNotFound;
370 
371 
372 
373 FUNCTION Get_AppsSchemaName
374 
375 RETURN VARCHAR2
376 
377 IS
378 
379    l_schema_name VARCHAR2(30);
380 
381 BEGIN
382 
383 
384 
385    SELECT ORACLE_USERNAME
386 
387    INTO l_schema_name
388 
389    FROM FND_ORACLE_USERID
390 
391    WHERE READ_ONLY_FLAG = 'U';
392 
393 
394 
395    RETURN l_schema_name;
396 
397 
398 
399 EXCEPTION
400 
401    WHEN OTHERS THEN
402 
403       Log( 'Get_AppsSchemaName'
404 
405          , 'MAIN'
406 
407          , SQLERRM);
408 
409       RAISE fnd_api.g_exc_unexpected_error;
410 
411 
412 
413 END Get_AppsSchemaName;
414 
415 
416 
417 FUNCTION Get_IecSchemaName
418 
419 RETURN VARCHAR2
420 
421 IS
422 
423    l_return BOOLEAN;
424 
425    l_status VARCHAR2(1);
426 
427    l_industry VARCHAR2(1);
428 
429    l_schema_name VARCHAR2(30);
430 
431 BEGIN
432 
433    l_return := FND_INSTALLATION.GET_APP_INFO
434 
435       ( 'IEC'
436 
437       , l_status
438 
439       , l_industry
440 
441       , l_schema_name
442 
443       );
444 
445 
446 
447    IF NOT l_return THEN
448 
449       Log_SchemaNameNotFound
450 
451          ( 'Get_IecSchemaName'
452 
453          , 'CALL_FND_INSTALLATION.GET_APP_INFO'
454 
455          , 'IEC');
456 
457       RAISE fnd_api.g_exc_unexpected_error;
458 
459    END IF;
460 
461 
462 
463    RETURN l_schema_name;
464 
465 
466 
467 END Get_IecSchemaName;
468 
469 
470 
471 PROCEDURE Log_TerritoryNotFound
472 
473    ( p_method         IN VARCHAR2
474 
475    , p_sub_method     IN VARCHAR2
476 
477    , p_territory_code IN VARCHAR2)
478 
479 IS
480 
481 BEGIN
482 
483 
484 
485    IEC_OCS_LOG_PVT.Init_TerritoryNotFoundMsg
486 
487       ( p_territory_code
488 
489       , 'HZ_PHONE_COUNTRY_CODES'
490 
491       , g_message
492 
493       , g_encoded_message
494 
495       );
496 
497 
498 
499    -- References FND_MESSAGE object initialized above
500 
501    Log(p_method, p_sub_method);
502 
503 
504 
505 END Log_TerritoryNotFound;
506 
507 
508 
509 PROCEDURE Log_TerritoryNotUnique
510 
511    ( p_method         IN VARCHAR2
512 
513    , p_sub_method     IN VARCHAR2
514 
515    , p_territory_code IN VARCHAR2)
516 
517 IS
518 
519 BEGIN
520 
521 
522 
523    IEC_OCS_LOG_PVT.Init_TerritoryNotUniqueMsg
524 
525       ( p_territory_code
526 
527       , 'HZ_PHONE_COUNTRY_CODES'
528 
529       , g_message
530 
531       , g_encoded_message
532 
533       );
534 
535 
536 
537    -- References FND_MESSAGE object initialized above
538 
539    Log(p_method, p_sub_method);
540 
541 
542 
543 END Log_TerritoryNotUnique;
544 
545 
546 
547 PROCEDURE Log_GetSubsetViewError
548 
549    ( p_method         IN VARCHAR2
550 
551    , p_sub_method     IN VARCHAR2
552 
553    , p_subset_name    IN VARCHAR2
554 
555    , p_list_name      IN VARCHAR2)
556 
557 IS
558 
559 BEGIN
560 
561 
562 
563    IEC_OCS_LOG_PVT.Init_GetSubsetViewErrorMsg
564 
565       ( p_subset_name
566 
567       , p_list_name
568 
569       , 'IEC_SUBSET_PVT.GET_SUBSET_VIEW'
570 
571       , g_message
572 
573       , g_encoded_message
574 
575       );
576 
577 
578 
579    -- References FND_MESSAGE object initialized above
580 
581    Log(p_method, p_sub_method);
582 
583 
584 
585 END Log_GetSubsetViewError;
586 
587 
588 
589 PROCEDURE Log_SubsetViewDoesNotExist
590 
591    ( p_method         IN VARCHAR2
592 
593    , p_sub_method     IN VARCHAR2
594 
595    , p_subset_name    IN VARCHAR2
596 
597    , p_list_name      IN VARCHAR2)
598 
599 IS
600 
601 BEGIN
602 
603 
604 
605    IEC_OCS_LOG_PVT.Init_SubsetViewDoesNotExistMsg
606 
607       ( p_subset_name
608 
609       , p_list_name
610 
611       , g_message
612 
613       , g_encoded_message
614 
615       );
616 
617 
618 
619    -- References FND_MESSAGE object initialized above
620 
621    Log(p_method, p_sub_method);
622 
623 
624 
625 END Log_SubsetViewDoesNotExist;
626 
627 
628 
629 PROCEDURE Log_SourceTypeMismatchAll
630 
631    ( p_method           IN VARCHAR2
632 
633    , p_sub_method       IN VARCHAR2
634 
635    , p_source_type      IN VARCHAR2
636 
637    , p_source_type_dist IN VARCHAR2)
638 
639 IS
640 
641 BEGIN
642 
643 
644 
645    IEC_OCS_LOG_PVT.Init_SourceTypeMismatchAllMsg
646 
647       ( p_source_type
648 
649       , p_source_type_dist
650 
651       , g_message
652 
653       , g_encoded_message
654 
655       );
656 
657 
658 
659    -- References FND_MESSAGE object initialized above
660 
661    Log(p_method, p_sub_method);
662 
663 
664 
665 END Log_SourceTypeMismatchAll;
666 
667 
668 
669 PROCEDURE Log_SourceTypeMismatchSome
670 
671    ( p_method           IN VARCHAR2
672 
673    , p_sub_method       IN VARCHAR2
674 
675    , p_source_type      IN VARCHAR2
676 
677    , p_source_type_dist IN VARCHAR2)
678 
679 IS
680 
681 BEGIN
682 
683 
684 
685    IEC_OCS_LOG_PVT.Init_SourceTypeMismatchSomeMsg
686 
687       ( p_source_type
688 
689       , p_source_type_dist
690 
691       , g_message
692 
693       , g_encoded_message
694 
695       );
696 
697 
698 
699    -- References FND_MESSAGE object initialized above
700 
701    Log(p_method, p_sub_method);
702 
703 
704 
705 END Log_SourceTypeMismatchSome;
706 
707 
708 
709 PROCEDURE Log_NoEntriesFound
710 
711    ( p_method           IN VARCHAR2
712 
713    , p_sub_method       IN VARCHAR2)
714 
715 IS
716 
717 BEGIN
718 
719 
720 
721    IEC_OCS_LOG_PVT.Init_NoEntriesFoundMsg
722 
723       ( g_message
724 
725       , g_encoded_message
726 
727       );
728 
729 
730 
731    -- References FND_MESSAGE object initialized above
732 
733    Log(p_method, p_sub_method);
734 
735 
736 
737 END Log_NoEntriesFound;
738 
739 
740 
741 PROCEDURE Log_ValidationSuccess
742 
743    ( p_method           IN VARCHAR2
744 
745    , p_sub_method       IN VARCHAR2
746 
747    , p_total_count      IN VARCHAR2
748 
749    , p_valid_count      IN VARCHAR2)
750 
751 IS
752 
753 BEGIN
754 
755 
756 
757    IEC_OCS_LOG_PVT.Init_ValidationSuccessMsg
758 
759       ( p_total_count
760 
761       , p_valid_count
762 
763       , g_message
764 
765       , g_encoded_message
766 
767       );
768 
769 
770 
771    -- References FND_MESSAGE object initialized above
772 
773    Set_LoggingGlobals('VALIDATED', p_method, p_sub_method);
774 
775 
776 
777 END Log_ValidationSuccess;
778 
779 
780 
781 PROCEDURE Log_StatusUpdateError
782 
783    ( p_method           IN VARCHAR2
784 
785    , p_sub_method       IN VARCHAR2
786 
787    , p_list_name        IN VARCHAR2)
788 
789 IS
790 
791 BEGIN
792 
793 
794 
795    IEC_OCS_LOG_PVT.Init_StatusUpdateErrorMsg
796 
797       ( p_list_name
798 
799       , 'IEC_STATUS_PVT.UPDATE_LIST_STATUS'
800 
801       , g_message
802 
803       , g_encoded_message
804 
805       );
806 
807 
808 
809    -- References FND_MESSAGE object initialized above
810 
811    Log(p_method, p_sub_method);
812 
813 
814 
815 END Log_StatusUpdateError;
816 
817 
818 
819 FUNCTION Contains
820 
821    ( p_list  IN SYSTEM.varchar_tbl_type
822 
823    , p_value IN VARCHAR2
824 
825    )
826 
827 RETURN BOOLEAN
828 
829 IS
830 
831 BEGIN
832 
833 
834 
835    IF p_list IS NOT NULL AND p_list.COUNT > 0 THEN
836 
837       FOR i IN p_list.FIRST..p_list.LAST LOOP
838 
839          IF p_list(i) = p_value THEN
840 
841             RETURN TRUE;
842 
843          END IF;
844 
845       END LOOP;
846 
847    END IF;
848 
849    RETURN FALSE;
850 
851 
852 
853 END Contains;
854 
855 
856 
857 PROCEDURE Log_MissingSourceTypeColumns
858 
859    ( p_list_id          IN            NUMBER
860 
861    , p_source_type_view IN            VARCHAR2
862 
863    , p_source_type_code IN            VARCHAR2
864 
865    , p_method           IN            VARCHAR2
866 
867    , p_sub_method       IN            VARCHAR2
868 
869    )
870 
871 IS
872 
873    l_curr         VARCHAR2(32);
874 
875    l_columns      SYSTEM.varchar_tbl_type;
876 
877    l_missing_cols VARCHAR2(4000);
878 
879    l_ignore       VARCHAR2(4000);
880 
881    l_table_owner  VARCHAR2(30);
882 
883 BEGIN
884 
885 
886 
887    l_table_owner := Get_AppsSchemaName;
888 
889 
890 
891    -- Change to ALL_TAB_COLS for performance reasons when 9i db becomes prereq
892 
893    SELECT COLUMN_NAME
894 
895    BULK COLLECT INTO l_columns
896 
897    FROM ALL_TAB_COLUMNS
898 
899    WHERE TABLE_NAME = p_source_type_view
900 
901    AND OWNER = l_table_owner;
902 
903 
904 
905    l_curr := 'LIST_ENTRY_ID';
906 
907    IF NOT Contains(l_columns, l_curr) THEN
908 
909       l_missing_cols := l_missing_cols || ' ' || l_curr;
910 
911    END IF;
912 
913    l_curr := 'POSTAL_CODE';
914 
915    IF NOT Contains(l_columns, l_curr) THEN
916 
917       l_missing_cols := l_missing_cols || ' ' || l_curr;
918 
919    END IF;
920 
921    l_curr := 'DO_NOT_USE_FLAG';
922 
923    IF NOT Contains(l_columns, l_curr) THEN
924 
925       l_missing_cols := l_missing_cols || ' ' || l_curr;
926 
927    END IF;
928 
929    l_curr := 'DO_NOT_USE_REASON';
930 
931    IF NOT Contains(l_columns, l_curr) THEN
932 
933       l_missing_cols := l_missing_cols || ' ' || l_curr;
934 
935    END IF;
936 
937    l_curr := 'NEWLY_UPDATED_FLAG';
938 
939    IF NOT Contains(l_columns, l_curr) THEN
940 
941       l_missing_cols := l_missing_cols || ' ' || l_curr;
942 
943    END IF;
944 
945    l_curr := 'CONTACT_POINT_ID_S1';
946 
947    IF NOT Contains(l_columns, l_curr) THEN
948 
949       l_missing_cols := l_missing_cols || ' ' || l_curr;
950 
951    END IF;
952 
953    l_curr := 'TIME_ZONE_S1';
954 
955    IF NOT Contains(l_columns, l_curr) THEN
956 
957       l_missing_cols := l_missing_cols || ' ' || l_curr;
958 
959    END IF;
960 
961    l_curr := 'PHONE_COUNTRY_CODE_S1';
962 
963    IF NOT Contains(l_columns, l_curr) THEN
964 
965       l_missing_cols := l_missing_cols || ' ' || l_curr;
966 
967    END IF;
968 
969    l_curr := 'PHONE_AREA_CODE_S1';
970 
971    IF NOT Contains(l_columns, l_curr) THEN
972 
973       l_missing_cols := l_missing_cols || ' ' || l_curr;
974 
975    END IF;
976 
977    l_curr := 'PHONE_NUMBER_S1';
978 
979    IF NOT Contains(l_columns, l_curr) THEN
980 
981       l_missing_cols := l_missing_cols || ' ' || l_curr;
982 
983    END IF;
984 
985    l_curr := 'RAW_PHONE_NUMBER_S1';
986 
987    IF NOT Contains(l_columns, l_curr) THEN
988 
989       l_missing_cols := l_missing_cols || ' ' || l_curr;
990 
991    END IF;
992 
993    l_curr := 'REASON_CODE_S1';
994 
995    IF NOT Contains(l_columns, l_curr) THEN
996 
997       l_missing_cols := l_missing_cols || ' ' || l_curr;
998 
999    END IF;
1000 
1001    l_curr := 'PHONE_LINE_TYPE_S1';
1002 
1003    IF NOT Contains(l_columns, l_curr) THEN
1004 
1005       l_missing_cols := l_missing_cols || ' ' || l_curr;
1006 
1007    END IF;
1008 
1009    l_curr := 'CONTACT_POINT_ID_S2';
1010 
1011    IF NOT Contains(l_columns, l_curr) THEN
1012 
1013       l_missing_cols := l_missing_cols || ' ' || l_curr;
1014 
1015    END IF;
1016 
1017    l_curr := 'TIME_ZONE_S2';
1018 
1019    IF NOT Contains(l_columns, l_curr) THEN
1020 
1021       l_missing_cols := l_missing_cols || ' ' || l_curr;
1022 
1023    END IF;
1024 
1025    l_curr := 'PHONE_COUNTRY_CODE_S2';
1026 
1027    IF NOT Contains(l_columns, l_curr) THEN
1028 
1029       l_missing_cols := l_missing_cols || ' ' || l_curr;
1030 
1031    END IF;
1032 
1033    l_curr := 'PHONE_AREA_CODE_S2';
1034 
1035    IF NOT Contains(l_columns, l_curr) THEN
1036 
1037       l_missing_cols := l_missing_cols || ' ' || l_curr;
1038 
1039    END IF;
1040 
1041    l_curr := 'PHONE_NUMBER_S2';
1042 
1043    IF NOT Contains(l_columns, l_curr) THEN
1044 
1045       l_missing_cols := l_missing_cols || ' ' || l_curr;
1046 
1047    END IF;
1048 
1049    l_curr := 'RAW_PHONE_NUMBER_S2';
1050 
1051    IF NOT Contains(l_columns, l_curr) THEN
1052 
1053       l_missing_cols := l_missing_cols || ' ' || l_curr;
1054 
1055    END IF;
1056 
1057    l_curr := 'REASON_CODE_S2';
1058 
1059    IF NOT Contains(l_columns, l_curr) THEN
1060 
1061       l_missing_cols := l_missing_cols || ' ' || l_curr;
1062 
1063    END IF;
1064 
1065    l_curr := 'PHONE_LINE_TYPE_S2';
1066 
1067    IF NOT Contains(l_columns, l_curr) THEN
1068 
1069       l_missing_cols := l_missing_cols || ' ' || l_curr;
1070 
1071    END IF;
1072 
1073    l_curr := 'CONTACT_POINT_ID_S3';
1074 
1075    IF NOT Contains(l_columns, l_curr) THEN
1076 
1077       l_missing_cols := l_missing_cols || ' ' || l_curr;
1078 
1079    END IF;
1080 
1081    l_curr := 'TIME_ZONE_S3';
1082 
1083    IF NOT Contains(l_columns, l_curr) THEN
1084 
1085       l_missing_cols := l_missing_cols || ' ' || l_curr;
1086 
1087    END IF;
1088 
1089    l_curr := 'PHONE_COUNTRY_CODE_S3';
1090 
1091    IF NOT Contains(l_columns, l_curr) THEN
1092 
1093       l_missing_cols := l_missing_cols || ' ' || l_curr;
1094 
1095    END IF;
1096 
1097    l_curr := 'PHONE_AREA_CODE_S3';
1098 
1099    IF NOT Contains(l_columns, l_curr) THEN
1100 
1101       l_missing_cols := l_missing_cols || ' ' || l_curr;
1102 
1103    END IF;
1104 
1105    l_curr := 'PHONE_NUMBER_S3';
1106 
1107    IF NOT Contains(l_columns, l_curr) THEN
1108 
1109       l_missing_cols := l_missing_cols || ' ' || l_curr;
1110 
1111    END IF;
1112 
1113    l_curr := 'RAW_PHONE_NUMBER_S3';
1114 
1115    IF NOT Contains(l_columns, l_curr) THEN
1116 
1117       l_missing_cols := l_missing_cols || ' ' || l_curr;
1118 
1119    END IF;
1120 
1121    l_curr := 'REASON_CODE_S3';
1122 
1123    IF NOT Contains(l_columns, l_curr) THEN
1124 
1125       l_missing_cols := l_missing_cols || ' ' || l_curr;
1126 
1127    END IF;
1128 
1129    l_curr := 'PHONE_LINE_TYPE_S3';
1130 
1131    IF NOT Contains(l_columns, l_curr) THEN
1132 
1133       l_missing_cols := l_missing_cols || ' ' || l_curr;
1134 
1135    END IF;
1136 
1137    l_curr := 'CONTACT_POINT_ID_S4';
1138 
1139    IF NOT Contains(l_columns, l_curr) THEN
1140 
1141       l_missing_cols := l_missing_cols || ' ' || l_curr;
1142 
1143    END IF;
1144 
1145    l_curr := 'TIME_ZONE_S4';
1146 
1147    IF NOT Contains(l_columns, l_curr) THEN
1148 
1149       l_missing_cols := l_missing_cols || ' ' || l_curr;
1150 
1151    END IF;
1152 
1153    l_curr := 'PHONE_COUNTRY_CODE_S4';
1154 
1155    IF NOT Contains(l_columns, l_curr) THEN
1156 
1157       l_missing_cols := l_missing_cols || ' ' || l_curr;
1158 
1159    END IF;
1160 
1161    l_curr := 'PHONE_AREA_CODE_S4';
1162 
1163    IF NOT Contains(l_columns, l_curr) THEN
1164 
1165       l_missing_cols := l_missing_cols || ' ' || l_curr;
1166 
1167    END IF;
1168 
1169    l_curr := 'PHONE_NUMBER_S4';
1170 
1171    IF NOT Contains(l_columns, l_curr) THEN
1172 
1173       l_missing_cols := l_missing_cols || ' ' || l_curr;
1174 
1175    END IF;
1176 
1177    l_curr := 'RAW_PHONE_NUMBER_S4';
1178 
1179    IF NOT Contains(l_columns, l_curr) THEN
1180 
1181       l_missing_cols := l_missing_cols || ' ' || l_curr;
1182 
1183    END IF;
1184 
1185    l_curr := 'REASON_CODE_S4';
1186 
1187    IF NOT Contains(l_columns, l_curr) THEN
1188 
1189       l_missing_cols := l_missing_cols || ' ' || l_curr;
1190 
1191    END IF;
1192 
1193    l_curr := 'PHONE_LINE_TYPE_S4';
1194 
1195    IF NOT Contains(l_columns, l_curr) THEN
1196 
1197       l_missing_cols := l_missing_cols || ' ' || l_curr;
1198 
1199    END IF;
1200 
1201    l_curr := 'CONTACT_POINT_ID_S5';
1202 
1203    IF NOT Contains(l_columns, l_curr) THEN
1204 
1205       l_missing_cols := l_missing_cols || ' ' || l_curr;
1206 
1207    END IF;
1208 
1209    l_curr := 'TIME_ZONE_S5';
1210 
1211    IF NOT Contains(l_columns, l_curr) THEN
1212 
1213       l_missing_cols := l_missing_cols || ' ' || l_curr;
1214 
1215    END IF;
1216 
1217    l_curr := 'PHONE_COUNTRY_CODE_S5';
1218 
1219    IF NOT Contains(l_columns, l_curr) THEN
1220 
1221       l_missing_cols := l_missing_cols || ' ' || l_curr;
1222 
1223    END IF;
1224 
1225    l_curr := 'PHONE_AREA_CODE_S5';
1226 
1227    IF NOT Contains(l_columns, l_curr) THEN
1228 
1229       l_missing_cols := l_missing_cols || ' ' || l_curr;
1230 
1231    END IF;
1232 
1233    l_curr := 'PHONE_NUMBER_S5';
1234 
1235    IF NOT Contains(l_columns, l_curr) THEN
1236 
1237       l_missing_cols := l_missing_cols || ' ' || l_curr;
1238 
1239    END IF;
1240 
1241    l_curr := 'RAW_PHONE_NUMBER_S5';
1242 
1243    IF NOT Contains(l_columns, l_curr) THEN
1244 
1245       l_missing_cols := l_missing_cols || ' ' || l_curr;
1246 
1247    END IF;
1248 
1249    l_curr := 'REASON_CODE_S5';
1250 
1251    IF NOT Contains(l_columns, l_curr) THEN
1252 
1253       l_missing_cols := l_missing_cols || ' ' || l_curr;
1254 
1255    END IF;
1256 
1257    l_curr := 'PHONE_LINE_TYPE_S5';
1258 
1259    IF NOT Contains(l_columns, l_curr) THEN
1260 
1261       l_missing_cols := l_missing_cols || ' ' || l_curr;
1262 
1263    END IF;
1264 
1265    l_curr := 'CONTACT_POINT_ID_S6';
1266 
1267    IF NOT Contains(l_columns, l_curr) THEN
1268 
1269       l_missing_cols := l_missing_cols || ' ' || l_curr;
1270 
1271    END IF;
1272 
1273    l_curr := 'TIME_ZONE_S6';
1274 
1275    IF NOT Contains(l_columns, l_curr) THEN
1276 
1277       l_missing_cols := l_missing_cols || ' ' || l_curr;
1278 
1279    END IF;
1280 
1281    l_curr := 'PHONE_COUNTRY_CODE_S6';
1282 
1283    IF NOT Contains(l_columns, l_curr) THEN
1284 
1285       l_missing_cols := l_missing_cols || ' ' || l_curr;
1286 
1287    END IF;
1288 
1289    l_curr := 'PHONE_AREA_CODE_S6';
1290 
1291    IF NOT Contains(l_columns, l_curr) THEN
1292 
1293       l_missing_cols := l_missing_cols || ' ' || l_curr;
1294 
1295    END IF;
1296 
1297    l_curr := 'PHONE_NUMBER_S6';
1298 
1299    IF NOT Contains(l_columns, l_curr) THEN
1300 
1301       l_missing_cols := l_missing_cols || ' ' || l_curr;
1302 
1303    END IF;
1304 
1305    l_curr := 'RAW_PHONE_NUMBER_S6';
1306 
1307    IF NOT Contains(l_columns, l_curr) THEN
1308 
1309       l_missing_cols := l_missing_cols || ' ' || l_curr;
1310 
1311    END IF;
1312 
1313    l_curr := 'REASON_CODE_S6';
1314 
1315    IF NOT Contains(l_columns, l_curr) THEN
1316 
1317       l_missing_cols := l_missing_cols || ' ' || l_curr;
1318 
1319    END IF;
1320 
1321    l_curr := 'PHONE_LINE_TYPE_S6';
1322 
1323    IF NOT Contains(l_columns, l_curr) THEN
1324 
1325       l_missing_cols := l_missing_cols || ' ' || l_curr;
1326 
1327    END IF;
1328 
1329 
1330 
1331    IF l_missing_cols IS NOT NULL THEN
1332 
1333 
1334 
1335       IEC_OCS_LOG_PVT.Init_SourceTypeMissingColsMsg
1336 
1337          ( p_source_type_code
1338 
1339          , l_missing_cols
1340 
1341          , g_message
1342 
1343          , g_encoded_message
1344 
1345          );
1346 
1347 
1348 
1349       -- References FND_MESSAGE object initialized above
1350 
1351       Log(p_method, p_sub_method);
1352 
1353 
1354 
1355    END IF;
1356 
1357 
1358 
1359 END Log_MissingSourceTypeColumns;
1360 
1361 
1362 
1363 PROCEDURE Log_CopyDestListInvalidStaMsg
1364 
1365    ( p_method             IN VARCHAR2
1366 
1367    , p_sub_method         IN VARCHAR2
1368 
1369    , p_src_schedule_name  IN VARCHAR2
1370 
1371    , p_dest_schedule_name IN VARCHAR2
1372 
1373    )
1374 
1375 IS
1376 
1377 BEGIN
1378 
1379 
1380 
1381    IEC_OCS_LOG_PVT.Init_CopyDestListInvalidStaMsg
1382 
1383       ( p_src_schedule_name
1384 
1385       , p_dest_schedule_name
1386 
1387       , g_message
1388 
1389       , g_encoded_message
1390 
1391       );
1392 
1393 
1394 
1395    -- References FND_MESSAGE object initialized above
1396 
1397    Log(p_method, p_sub_method);
1398 
1399 
1400 
1401 END Log_CopyDestListInvalidStaMsg;
1402 
1403 
1404 
1405 PROCEDURE Log_CopyDestListNotCCRMsg
1406 
1407    ( p_method             IN VARCHAR2
1408 
1409    , p_sub_method         IN VARCHAR2
1410 
1411    , p_src_schedule_name  IN VARCHAR2
1412 
1413    , p_dest_schedule_name IN VARCHAR2
1414 
1415    )
1416 
1417 IS
1418 
1419 BEGIN
1420 
1421 
1422 
1423    IEC_OCS_LOG_PVT.Init_CopyDestListNotCCRMsg
1424 
1425       ( p_src_schedule_name
1426 
1427       , p_dest_schedule_name
1428 
1429       , g_message
1430 
1431       , g_encoded_message
1432 
1433       );
1434 
1435 
1436 
1437    -- References FND_MESSAGE object initialized above
1438 
1439    Log(p_method, p_sub_method);
1440 
1441 
1442 
1443 END Log_CopyDestListNotCCRMsg;
1444 
1445 
1446 
1447 PROCEDURE Log_CopyDestListNotValMsg
1448 
1449    ( p_method             IN VARCHAR2
1450 
1451    , p_sub_method         IN VARCHAR2
1452 
1453    , p_src_schedule_name  IN VARCHAR2
1454 
1455    , p_dest_schedule_name IN VARCHAR2
1456 
1457    )
1458 
1459 IS
1460 
1461 BEGIN
1462 
1463 
1464 
1465    IEC_OCS_LOG_PVT.Init_CopyDestListNotValMsg
1466 
1467       ( p_src_schedule_name
1468 
1469       , p_dest_schedule_name
1470 
1471       , g_message
1472 
1473       , g_encoded_message
1474 
1475       );
1476 
1477 
1478 
1479    -- References FND_MESSAGE object initialized above
1480 
1481    Log(p_method, p_sub_method);
1482 
1483 
1484 
1485 END Log_CopyDestListNotValMsg;
1486 
1487 
1488 
1489 PROCEDURE Log_CopyDestListNullMsg
1490 
1491    ( p_method             IN VARCHAR2
1492 
1493    , p_sub_method         IN VARCHAR2
1494 
1495    , p_src_schedule_name  IN VARCHAR2
1496 
1497    , p_dest_schedule_name IN VARCHAR2
1498 
1499    )
1500 
1501 IS
1502 
1503 BEGIN
1504 
1505 
1506 
1507    IEC_OCS_LOG_PVT.Init_CopyDestListNullMsg
1508 
1509       ( p_src_schedule_name
1510 
1511       , p_dest_schedule_name
1512 
1513       , g_message
1514 
1515       , g_encoded_message
1516 
1517       );
1518 
1519 
1520 
1521    -- References FND_MESSAGE object initialized above
1522 
1523    Log(p_method, p_sub_method);
1524 
1525 
1526 
1527 END Log_CopyDestListNullMsg;
1528 
1529 
1530 
1531 PROCEDURE Log_CopySrcListInvalidStatMsg
1532 
1533    ( p_method             IN VARCHAR2
1534 
1535    , p_sub_method         IN VARCHAR2
1536 
1537    , p_src_schedule_name  IN VARCHAR2
1538 
1539    , p_dest_schedule_name IN VARCHAR2
1540 
1541    )
1542 
1543 IS
1544 
1545 BEGIN
1546 
1547 
1548 
1549    IEC_OCS_LOG_PVT.Init_CopySrcListInvalidStatMsg
1550 
1551       ( p_src_schedule_name
1552 
1553       , p_dest_schedule_name
1554 
1555       , g_message
1556 
1557       , g_encoded_message
1558 
1559       );
1560 
1561 
1562 
1563    -- References FND_MESSAGE object initialized above
1564 
1565    Log(p_method, p_sub_method);
1566 
1567 
1568 
1569 END Log_CopySrcListInvalidStatMsg;
1570 
1571 
1572 
1573 PROCEDURE Log_CopySrcListNotCCRMsg
1574 
1575    ( p_method             IN VARCHAR2
1576 
1577    , p_sub_method         IN VARCHAR2
1578 
1579    , p_src_schedule_name  IN VARCHAR2
1580 
1581    , p_dest_schedule_name IN VARCHAR2
1582 
1583    )
1584 
1585 IS
1586 
1587 BEGIN
1588 
1589 
1590 
1591    IEC_OCS_LOG_PVT.Init_CopySrcListNotCCRMsg
1592 
1593       ( p_src_schedule_name
1594 
1595       , p_dest_schedule_name
1596 
1597       , g_message
1598 
1599       , g_encoded_message
1600 
1601       );
1602 
1603 
1604 
1605    -- References FND_MESSAGE object initialized above
1606 
1607    Log(p_method, p_sub_method);
1608 
1609 
1610 
1611 END Log_CopySrcListNotCCRMsg;
1612 
1613 
1614 
1615 PROCEDURE Log_CopySrcListNotValMsg
1616 
1617    ( p_method             IN VARCHAR2
1618 
1619    , p_sub_method         IN VARCHAR2
1620 
1621    , p_src_schedule_name  IN VARCHAR2
1622 
1623    , p_dest_schedule_name IN VARCHAR2
1624 
1625    )
1626 
1627 IS
1628 
1629 BEGIN
1630 
1631 
1632 
1633    IEC_OCS_LOG_PVT.Init_CopySrcListNotValMsg
1634 
1635       ( p_src_schedule_name
1636 
1637       , p_dest_schedule_name
1638 
1639       , g_message
1640 
1641       , g_encoded_message
1642 
1643       );
1644 
1645 
1646 
1647    -- References FND_MESSAGE object initialized above
1648 
1649    Log(p_method, p_sub_method);
1650 
1651 
1652 
1653 END Log_CopySrcListNotValMsg;
1654 
1655 
1656 
1657 PROCEDURE Log_CopySrcListNullMsg
1658 
1659    ( p_method             IN VARCHAR2
1660 
1661    , p_sub_method         IN VARCHAR2
1662 
1663    , p_src_schedule_name  IN VARCHAR2
1664 
1665    , p_dest_schedule_name IN VARCHAR2
1666 
1667    )
1668 
1669 IS
1670 
1671 BEGIN
1672 
1673 
1674 
1675    IEC_OCS_LOG_PVT.Init_CopySrcListNullMsg
1676 
1677       ( p_src_schedule_name
1678 
1679       , p_dest_schedule_name
1680 
1681       , g_message
1682 
1683       , g_encoded_message
1684 
1685       );
1686 
1687 
1688 
1689    -- References FND_MESSAGE object initialized above
1690 
1691    Log(p_method, p_sub_method);
1692 
1693 
1694 
1695 END Log_CopySrcListNullMsg;
1696 
1697 
1698 
1699 PROCEDURE Log_ListRtInfoDNE
1700 
1701    ( p_method             IN VARCHAR2
1702 
1703    , p_sub_method         IN VARCHAR2
1704 
1705    , p_schedule_name      IN VARCHAR2
1706 
1707    )
1708 
1709 IS
1710 
1711 BEGIN
1712 
1713 
1714 
1715    IEC_OCS_LOG_PVT.Init_ListRtInfoDNEMsg
1716 
1717       ( p_schedule_name
1718 
1719       , g_message
1720 
1721       , g_encoded_message
1722 
1723       );
1724 
1725 
1726 
1727    -- References FND_MESSAGE object initialized above
1728 
1729    Log(p_method, p_sub_method);
1730 
1731 
1732 
1733 END Log_ListRtInfoDNE;
1734 
1735 
1736 
1737 PROCEDURE Log_PurgeListStatusInvMsg
1738 
1739    ( p_method             IN VARCHAR2
1740 
1741    , p_sub_method         IN VARCHAR2
1742 
1743    , p_schedule_name      IN VARCHAR2
1744 
1745    )
1746 
1747 IS
1748 
1749 BEGIN
1750 
1751 
1752 
1753    IEC_OCS_LOG_PVT.Init_PurgeListStatusInvMsg
1754 
1755       ( p_schedule_name
1756 
1757       , g_message
1758 
1759       , g_encoded_message
1760 
1761       );
1762 
1763 
1764 
1765    -- References FND_MESSAGE object initialized above
1766 
1767    Log(p_method, p_sub_method);
1768 
1769 
1770 
1771 END Log_PurgeListStatusInvMsg;
1772 
1773 
1774 
1775 FUNCTION Get_ListName
1776 
1777    (p_list_id IN NUMBER)
1778 
1779 RETURN VARCHAR2
1780 
1781 IS
1782 
1783    l_name VARCHAR2(240);
1784 
1785 BEGIN
1786 
1787 
1788 
1789    IEC_COMMON_UTIL_PVT.Get_ListName(p_list_id, l_name);
1790 
1791 
1792 
1793    RETURN l_name;
1794 
1795 EXCEPTION
1796 
1797    WHEN OTHERS THEN
1798 
1799       Log('Get_ListName', 'MAIN');
1800 
1801       RAISE fnd_api.g_exc_unexpected_error;
1802 
1803 END Get_ListName;
1804 
1805 
1806 
1807 FUNCTION Get_ScheduleName
1808 
1809    (p_schedule_id IN NUMBER)
1810 
1811 RETURN VARCHAR2
1812 
1813 IS
1814 
1815    l_name VARCHAR2(240);
1816 
1817 BEGIN
1818 
1819 
1820 
1821    IEC_COMMON_UTIL_PVT.Get_ScheduleName(p_schedule_id, l_name);
1822 
1823 
1824 
1825    RETURN l_name;
1826 
1827 EXCEPTION
1828 
1829    WHEN OTHERS THEN
1830 
1831       Log('Get_ScheduleName', 'MAIN');
1832 
1833       RAISE fnd_api.g_exc_unexpected_error;
1834 
1835 END Get_ScheduleName;
1836 
1837 
1838 
1839 FUNCTION Get_SubsetName
1840 
1841    (p_subset_id IN NUMBER)
1842 
1843 RETURN VARCHAR2
1844 
1845 IS
1846 
1847    l_name VARCHAR2(240);
1848 
1849 BEGIN
1850 
1851 
1852 
1853    IEC_COMMON_UTIL_PVT.Get_SubsetName(p_subset_id, l_name);
1854 
1855 
1856 
1857    RETURN l_name;
1858 
1859 EXCEPTION
1860 
1861    WHEN OTHERS THEN
1862 
1863       Log('Get_ListName', 'MAIN');
1864 
1865       RAISE fnd_api.g_exc_unexpected_error;
1866 
1867 END Get_SubsetName;
1868 
1869 
1870 
1871 FUNCTION Get_SourceType
1872 
1873    (p_list_id IN NUMBER)
1874 
1875 RETURN VARCHAR2
1876 
1877 IS
1878 
1879    l_source_type VARCHAR2(500);
1880 
1881 BEGIN
1882 
1883 
1884 
1885    BEGIN
1886 
1887       EXECUTE IMMEDIATE
1888 
1889          'SELECT LIST_SOURCE_TYPE
1890 
1891           FROM AMS_LIST_HEADERS_ALL
1892 
1893           WHERE LIST_HEADER_ID = :list_id'
1894 
1895       INTO l_source_type
1896 
1897       USING IN p_list_id;
1898 
1899 
1900 
1901    EXCEPTION
1902 
1903       WHEN OTHERS THEN
1904 
1905          Log( 'Get_SourceType'
1906 
1907             , 'MAIN'
1908 
1909             , SQLERRM
1910 
1911             );
1912 
1913          RAISE fnd_api.g_exc_unexpected_error;
1914 
1915    END;
1916 
1917 
1918 
1919    RETURN l_source_type;
1920 
1921 
1922 
1923 END Get_SourceType;
1924 
1925 
1926 
1927 FUNCTION Get_SourceTypeView
1928 
1929    (p_list_id IN NUMBER)
1930 
1931 RETURN VARCHAR2
1932 
1933 IS
1934 
1935    l_source_type_view VARCHAR2(500);
1936 
1937 BEGIN
1938 
1939 
1940 
1941    -- Get Source Type of List
1942 
1943    BEGIN
1944 
1945       IEC_COMMON_UTIL_PVT.Get_SourceTypeView(p_list_id, l_source_type_view);
1946 
1947    EXCEPTION
1948 
1949       WHEN OTHERS THEN
1950 
1951          -- FND_MESSAGE is initialized but not logged in Get_SourceTypeView
1952 
1953          -- if an exception is thrown, so we log it here with current
1954 
1955          -- module
1956 
1957          Log('Get_SourceTypeView', 'MAIN');
1958 
1959          RAISE fnd_api.g_exc_unexpected_error;
1960 
1961    END;
1962 
1963 
1964 
1965    RETURN l_source_type_view;
1966 
1967 
1968 
1969 END Get_SourceTypeView;
1970 
1971 
1972 
1973 PROCEDURE Truncate_IecValEntryCache
1974 
1975 IS
1976 
1977 /* Start of fix for bug7622572 */
1978 
1979  /*  CURSOR l_trunc_temp_tbles_csr(table_owner VARCHAR2) IS
1980 
1981       SELECT 'TRUNCATE TABLE ' || OWNER || '.' || TABLE_NAME SQLSTMT
1982 
1983       FROM ALL_TABLES
1984 
1985       WHERE TABLE_NAME = 'IEC_VAL_ENTRY_CACHE'
1986 
1987       AND OWNER = table_owner;
1988 
1989 
1990 
1991    l_ddl_csr INTEGER; */
1992 
1993 
1994 
1995    PRAGMA AUTONOMOUS_TRANSACTION;
1996 
1997    /* End of fix for bug7622572 */
1998 
1999 
2000 
2001 BEGIN
2002 
2003 /* Start of fix for bug7622572 */
2004 
2005 /*   l_ddl_csr := DBMS_SQL.OPEN_CURSOR;
2006 
2007 
2008 
2009    FOR l_rec IN l_trunc_temp_tbles_csr(Get_AppsSchemaName) LOOP
2010 
2011      DBMS_SQL.PARSE(l_ddl_csr, l_rec.SQLSTMT, DBMS_SQL.NATIVE);
2012 
2013    END LOOP;
2014 
2015 
2016 
2017    DBMS_SQL.CLOSE_CURSOR(l_ddl_csr);
2018 
2019 
2020 
2021    COMMIT;   */
2022 
2023    delete from IEC_VAL_ENTRY_CACHE;
2024 
2025    COMMIT;
2026 
2027    /* End of fix for bug7622572 */
2028 
2029 EXCEPTION
2030 
2031    WHEN OTHERS THEN
2032 
2033       ROLLBACK;
2034 
2035       RAISE;
2036 
2037 
2038 
2039 END Truncate_IecValEntryCache;
2040 
2041 
2042 
2043 PROCEDURE Truncate_Temporary_Tables
2044 
2045 IS
2046 
2047 /* Start of fix for bug7622572 */
2048 
2049 /*   CURSOR l_trunc_temp_tbles_csr(table_owner VARCHAR2) IS
2050 
2051       SELECT 'TRUNCATE TABLE ' || OWNER || '.' || TABLE_NAME SQLSTMT
2052 
2053       FROM ALL_TABLES
2054 
2055       WHERE TABLE_NAME IN ('IEC_TC_TZ_PAIRS_CACHE', 'IEC_TZ_MAPPING_CACHE', 'IEC_TZ_OFFSET_MAP_CACHE', 'IEC_VAL_ENTRY_CACHE')
2056 
2057       AND OWNER = table_owner;
2058 
2059 
2060 
2061    l_ddl_csr INTEGER;  */
2062 
2063 /* End of fix for bug7622572 */
2064 
2065    PRAGMA AUTONOMOUS_TRANSACTION;
2066 
2067 
2068 
2069 BEGIN
2070 
2071 /* Start of fix for bug7622572 */
2072 
2073 /*   l_ddl_csr := DBMS_SQL.OPEN_CURSOR;
2074 
2075 
2076 
2077    FOR l_rec IN l_trunc_temp_tbles_csr(Get_AppsSchemaName) LOOP
2078 
2079      DBMS_SQL.PARSE(l_ddl_csr, l_rec.SQLSTMT, DBMS_SQL.NATIVE);
2080 
2081    END LOOP;
2082 
2083 
2084 
2085    DBMS_SQL.CLOSE_CURSOR(l_ddl_csr);  */
2086 
2087 delete from IEC_TC_TZ_PAIRS_CACHE;
2088 
2089 delete from IEC_TZ_MAPPING_CACHE;
2090 
2091 delete from IEC_TZ_OFFSET_MAP_CACHE;
2092 
2093 delete from IEC_VAL_ENTRY_CACHE;
2094 
2095    COMMIT;
2096 
2097 EXCEPTION
2098 
2099    WHEN OTHERS THEN
2100 
2101       ROLLBACK;
2102 
2103       RAISE;
2104 
2105 
2106 
2107 END Truncate_Temporary_Tables;
2108 
2109 
2110 
2111 PROCEDURE Refresh_MViews
2112 
2113 IS
2114 
2115    PRAGMA AUTONOMOUS_TRANSACTION;
2116 
2117    CURSOR Get_MaterializedViews(mview_owner VARCHAR2) IS
2118 
2119       SELECT OWNER || '.' || MVIEW_NAME MVIEW_LNAME
2120 
2121       FROM ALL_MVIEWS
2122 
2123       WHERE MVIEW_NAME IN ('IEC_O_VAL_DNU_S1_COUNTS_MV', 'IEC_O_VAL_DNU_S2_COUNTS_MV', 'IEC_O_VAL_DNU_S3_COUNTS_MV', 'IEC_O_VAL_DNU_S4_COUNTS_MV', 'IEC_O_VAL_DNU_S5_COUNTS_MV', 'IEC_O_VAL_DNU_S6_COUNTS_MV')
2124 
2125       AND OWNER = mview_owner;
2126 
2127 
2128 
2129 BEGIN
2130 
2131 
2132 
2133    FOR rec IN Get_MaterializedViews(Get_IecSchemaName) LOOP
2134 
2135       DBMS_MVIEW.REFRESH(rec.MVIEW_LNAME, 'C');
2136 
2137    END LOOP;
2138 
2139 
2140 
2141    COMMIT;
2142 
2143 EXCEPTION
2144 
2145    WHEN OTHERS THEN
2146 
2147       ROLLBACK;
2148 
2149       RAISE;
2150 
2151 END Refresh_MViews;
2152 
2153 
2154 
2155 PROCEDURE Init_GlobalVariables
2156 
2157 IS
2158 
2159 BEGIN
2160 
2161 
2162 
2163    g_enable_zc_lookups := FALSE;
2164 
2165    g_enable_tz_map_ovrd := FALSE;
2166 
2167    g_enable_cell_phone_val := TRUE;
2168 
2169    g_phone_country_code := NULL;
2170 
2171    g_territory_code := NULL;
2172 
2173    g_enable_ac_incr_parse := FALSE;
2174 
2175    g_enable_cc_incr_parse := FALSE;
2176 
2177    g_timezone_id := NULL;
2178 
2179    g_region_id := NULL;
2180 
2181    g_enable_ac_length_val := TRUE;
2182 
2183    g_enable_pn_length_val := TRUE;
2184 
2185 
2186 
2187 END Init_GlobalVariables;
2188 
2189 
2190 
2191 PROCEDURE Init_LoggingVariables
2192 
2193 IS
2194 
2195 BEGIN
2196 
2197 
2198 
2199    g_fnd_log_enabled := TRUE;
2200 
2201    g_status          := NULl;
2202 
2203    g_method          := NULL;
2204 
2205    g_sub_method      := NULL;
2206 
2207    g_message         := NULL;
2208 
2209    g_encoded_message := NULL;
2210 
2211    g_module          := NULL;
2212 
2213    g_start_time      := NULL;
2214 
2215    g_end_time        := NULL;
2216 
2217 
2218 
2219 END Init_LoggingVariables;
2220 
2221 
2222 
2223 PROCEDURE Init_LookupTables
2224 
2225 IS
2226 
2227 BEGIN
2228 
2229 
2230 
2231    FOR cc_rec IN (SELECT DISTINCT B.PHONE_COUNTRY_CODE, B.AREA_CODE_LENGTH
2232 
2233                   FROM HZ_PHONE_COUNTRY_CODES B
2234 
2235                   WHERE B.AREA_CODE_LENGTH IS NOT NULL
2236 
2237                   AND (1, B.PHONE_COUNTRY_CODE) = (SELECT COUNT(*) COUNT, PHONE_COUNTRY_CODE
2238 
2239                                                    FROM (SELECT DISTINCT PHONE_COUNTRY_CODE, AREA_CODE_LENGTH
2240 
2241                                                          FROM HZ_PHONE_COUNTRY_CODES
2242 
2243                                                          WHERE AREA_CODE_LENGTH IS NOT NULL)
2244 
2245                                                    WHERE PHONE_COUNTRY_CODE = B.PHONE_COUNTRY_CODE GROUP BY PHONE_COUNTRY_CODE))
2246 
2247    LOOP
2248 
2249       g_ac_length_tbl(cc_rec.PHONE_COUNTRY_CODE) := cc_rec.AREA_CODE_LENGTH;
2250 
2251    END LOOP;
2252 
2253 
2254 
2255    FOR cc_rec IN (SELECT DISTINCT B.PHONE_COUNTRY_CODE, (B.PHONE_LENGTH - B.AREA_CODE_LENGTH) PN_LENGTH
2256 
2257                   FROM HZ_PHONE_COUNTRY_CODES B
2258 
2259                   WHERE B.PHONE_LENGTH IS NOT NULL
2260 
2261                   AND (1, B.PHONE_COUNTRY_CODE) = (SELECT COUNT(*) COUNT, PHONE_COUNTRY_CODE
2262 
2263                                                    FROM (SELECT DISTINCT PHONE_COUNTRY_CODE, PHONE_LENGTH
2264 
2265                                                          FROM HZ_PHONE_COUNTRY_CODES
2266 
2267                                                          WHERE PHONE_LENGTH IS NOT NULL)
2268 
2269                                                    WHERE PHONE_COUNTRY_CODE = B.PHONE_COUNTRY_CODE GROUP BY PHONE_COUNTRY_CODE))
2270 
2271    LOOP
2272 
2273       g_pn_length_tbl(cc_rec.PHONE_COUNTRY_CODE) := cc_rec.PN_LENGTH;
2274 
2275    END LOOP;
2276 
2277 
2278 
2279    FOR cc_rec IN (SELECT DISTINCT PHONE_COUNTRY_CODE, TERRITORY_CODE
2280 
2281                   FROM HZ_PHONE_COUNTRY_CODES A WHERE 1 = (SELECT COUNT(*)
2282 
2283                                                            FROM HZ_PHONE_COUNTRY_CODES
2284 
2285                                                            WHERE PHONE_COUNTRY_CODE = A.PHONE_COUNTRY_CODE))
2286 
2287    LOOP
2288 
2289       g_cc_tc_lookup_tbl(cc_rec.PHONE_COUNTRY_CODE) := cc_rec.TERRITORY_CODE;
2290 
2291    END LOOP;
2292 
2293 
2294 
2295    FOR cc_rec IN (SELECT DISTINCT PHONE_COUNTRY_CODE
2296 
2297                   FROM HZ_PHONE_COUNTRY_CODES)
2298 
2299    LOOP
2300 
2301       g_cc_cc_lookup_tbl(cc_rec.PHONE_COUNTRY_CODE) := cc_rec.PHONE_COUNTRY_CODE;
2302 
2303    END LOOP;
2304 
2305 
2306 
2307    FOR cc_rec IN (SELECT DISTINCT PHONE_COUNTRY_CODE, AREA_CODE, TERRITORY_CODE
2308 
2309                   FROM HZ_PHONE_AREA_CODES)
2310 
2311    LOOP
2312 
2313       g_cc_ac_tc_lookup_tbl(cc_rec.PHONE_COUNTRY_CODE || cc_rec.AREA_CODE) := cc_rec.TERRITORY_CODE;
2314 
2315    END LOOP;
2316 
2317 
2318 
2319   -- FOR cc_rec IN (SELECT TIMEZONE_ID FROM HZ_TIMEZONES_VL) //bug6449880
2320     FOR cc_rec IN (SELECT UPGRADE_TZ_ID FROM FND_TIMEZONES_VL)  -- bug6449880
2321    LOOP
2322 
2323      -- g_tz_lookup_tbl(cc_rec.TIMEZONE_ID) := cc_rec.TIMEZONE_ID; //bug6449880
2324       g_tz_lookup_tbl(cc_rec.UPGRADE_TZ_ID) := cc_rec.UPGRADE_TZ_ID; --bug6449880
2325 
2326    END LOOP;
2327 
2328 
2329 
2330 END Init_LookupTables;
2331 
2332 
2333 
2334 PROCEDURE Init_Rules
2335 
2336    (p_list_id IN NUMBER)
2337 
2338 IS
2339 
2340    l_rule_block_id   NUMBER(15);
2341 
2342    l_action_id       NUMBER(15);
2343 
2344    l_action_code     VARCHAR2(500);
2345 
2346    l_data_code       VARCHAR2(500);
2347 
2348    l_data_code_col   SYSTEM.varchar_tbl_type := SYSTEM.varchar_tbl_type();
2349 
2350    l_data_value_col  SYSTEM.varchar_tbl_type := SYSTEM.varchar_tbl_type();
2351 
2352 
2353 
2354    l_count           PLS_INTEGER;
2355 
2356 BEGIN
2357 
2358 
2359 
2360    BEGIN
2361 
2362       EXECUTE IMMEDIATE
2363 
2364          'SELECT VALIDATION_ACTION_BLOCK_ID
2365 
2366           FROM IEC_G_LIST_RT_INFO
2367 
2368           WHERE LIST_HEADER_ID = :list_id'
2369 
2370       INTO l_rule_block_id
2371 
2372       USING p_list_id;
2373 
2374    EXCEPTION
2375 
2376       WHEN NO_DATA_FOUND THEN
2377 
2378          l_rule_block_id := NULL;
2379 
2380       WHEN OTHERS THEN
2381 
2382          Log( 'INIT_RULES'
2383 
2384             , 'GET_RULE_BLOCK_ID'
2385 
2386             , SQLERRM
2387 
2388             );
2389 
2390          RAISE fnd_api.g_exc_unexpected_error;
2391 
2392    END;
2393 
2394 
2395 
2396    IF l_rule_block_id IS NOT NULL THEN
2397 
2398 
2399 
2400       -- ENABLE TIME ZONE MAPPING WITH ZIPCODE?
2401 
2402       l_action_id := NULL;
2403 
2404       l_action_code := 'TIMEZONE_MAPPING_WITH_ZIP';
2405 
2406       BEGIN
2407 
2408          EXECUTE IMMEDIATE
2409 
2410             'SELECT ACTION_ID
2411 
2412              FROM IEC_O_ALG_ACTIONS
2413 
2414              WHERE PARENT_BLOCK_ID = :rule_block_id
2415 
2416              AND ACTION_CODE = :action_code'
2417 
2418          INTO l_action_id
2419 
2420          USING l_rule_block_id, l_action_code;
2421 
2422       EXCEPTION
2423 
2424          WHEN NO_DATA_FOUND THEN
2425 
2426             g_enable_zc_lookups := FALSE;
2427 
2428          WHEN TOO_MANY_ROWS THEN
2429 
2430             g_enable_zc_lookups := TRUE;
2431 
2432       END;
2433 
2434 
2435 
2436       IF l_action_id IS NOT NULL THEN
2437 
2438          g_enable_zc_lookups := TRUE;
2439 
2440       END IF;
2441 
2442 
2443 
2444       -- ENABLE TIME ZONE MAPPINGS TO OVER RIDE PROVIDED DATA
2445 
2446       l_action_id := NULL;
2447 
2448       l_action_code := 'TZ_MAP_OVR_RIDE';
2449 
2450       BEGIN
2451 
2452          EXECUTE IMMEDIATE
2453 
2454             'SELECT ACTION_ID
2455 
2456              FROM IEC_O_ALG_ACTIONS
2457 
2458              WHERE PARENT_BLOCK_ID = :rule_block_id
2459 
2460              AND ACTION_CODE = :action_code'
2461 
2462          INTO l_action_id
2463 
2464          USING l_rule_block_id, l_action_code;
2465 
2466       EXCEPTION
2467 
2468          WHEN NO_DATA_FOUND THEN
2469 
2470             g_enable_tz_map_ovrd := FALSE;
2471 
2472          WHEN TOO_MANY_ROWS THEN
2473 
2474             g_enable_tz_map_ovrd := TRUE;
2475 
2476       END;
2477 
2478 
2479 
2480       IF l_action_id IS NOT NULL THEN
2481 
2482         g_enable_tz_map_ovrd := TRUE;
2483 
2484       END IF;
2485 
2486 
2487 
2488       -- ENABLE INCREMENTAL PARSING OF AREA CODE FROM PHONE NUMBER FIELD
2489 
2490       l_action_id := NULL;
2491 
2492       l_action_code := 'INCR_PARSE_AC';
2493 
2494       BEGIN
2495 
2496          EXECUTE IMMEDIATE
2497 
2498             'SELECT ACTION_ID
2499 
2500              FROM IEC_O_ALG_ACTIONS
2501 
2502              WHERE PARENT_BLOCK_ID = :rule_block_id
2503 
2504              AND ACTION_CODE = :action_code'
2505 
2506          INTO l_action_id
2507 
2508          USING l_rule_block_id, l_action_code;
2509 
2510       EXCEPTION
2511 
2512          WHEN NO_DATA_FOUND THEN
2513 
2514             g_enable_ac_incr_parse := FALSE;
2515 
2516          WHEN TOO_MANY_ROWS THEN
2517 
2518             g_enable_ac_incr_parse := TRUE;
2519 
2520       END;
2521 
2522 
2523 
2524       IF l_action_id IS NOT NULL THEN
2525 
2526          g_enable_ac_incr_parse := TRUE;
2527 
2528       END IF;
2529 
2530 
2531 
2532       -- ENABLE INCREMENTAL PARSING OF COUNTRY CODE FROM PHONE NUMBER FIELD
2533 
2534       l_action_id := NULL;
2535 
2536       l_action_code := 'INCR_PARSE_CC';
2537 
2538       BEGIN
2539 
2540          EXECUTE IMMEDIATE
2541 
2542             'SELECT ACTION_ID
2543 
2544              FROM IEC_O_ALG_ACTIONS
2545 
2546              WHERE PARENT_BLOCK_ID = :rule_block_id
2547 
2548              AND ACTION_CODE = :action_code'
2549 
2550          INTO l_action_id
2551 
2552          USING l_rule_block_id, l_action_code;
2553 
2554       EXCEPTION
2555 
2556          WHEN NO_DATA_FOUND THEN
2557 
2558             g_enable_cc_incr_parse := FALSE;
2559 
2560          WHEN TOO_MANY_ROWS THEN
2561 
2562             g_enable_cc_incr_parse := TRUE;
2563 
2564       END;
2565 
2566 
2567 
2568       IF l_action_id IS NOT NULL THEN
2569 
2570          g_enable_cc_incr_parse := TRUE;
2571 
2572       END IF;
2573 
2574 
2575 
2576       -- DISABLE VALIDATION OF CELL PHONE NUMBERS
2577 
2578       l_action_id := NULL;
2579 
2580       l_action_code := 'CELL_PHONE_DISABLE';
2581 
2582       BEGIN
2583 
2584          EXECUTE IMMEDIATE
2585 
2586             'SELECT ACTION_ID
2587 
2588              FROM IEC_O_ALG_ACTIONS
2589 
2590              WHERE PARENT_BLOCK_ID = :rule_block_id
2591 
2592              AND ACTION_CODE = :action_code'
2593 
2594          INTO l_action_id
2595 
2596          USING l_rule_block_id, l_action_code;
2597 
2598       EXCEPTION
2599 
2600          WHEN NO_DATA_FOUND THEN
2601 
2602             g_enable_cell_phone_val := TRUE;
2603 
2604          WHEN TOO_MANY_ROWS THEN
2605 
2606             g_enable_cell_phone_val := FALSE;
2607 
2608       END;
2609 
2610 
2611 
2612       IF l_action_id IS NOT NULL THEN
2613 
2614          g_enable_cell_phone_val := FALSE;
2615 
2616       END IF;
2617 
2618 
2619 
2620       -- Fail entries when the region cannot be determined
2621 
2622       l_action_id := NULL;
2623 
2624       l_action_code := 'REQUIRE_REGION';
2625 
2626       BEGIN
2627 
2628          EXECUTE IMMEDIATE
2629 
2630             'SELECT ACTION_ID
2631 
2632              FROM IEC_O_ALG_ACTIONS
2633 
2634              WHERE PARENT_BLOCK_ID = :rule_block_id
2635 
2636              AND ACTION_CODE = :action_code'
2637 
2638          INTO l_action_id
2639 
2640          USING l_rule_block_id, l_action_code;
2641 
2642       EXCEPTION
2643 
2644          WHEN NO_DATA_FOUND THEN
2645 
2646             g_require_regions := FALSE;
2647 
2648          WHEN TOO_MANY_ROWS THEN
2649 
2650             g_require_regions := TRUE;
2651 
2652       END;
2653 
2654 
2655 
2656       IF l_action_id IS NOT NULL THEN
2657 
2658          g_require_regions := TRUE;
2659 
2660       END IF;
2661 
2662 
2663 
2664       -- GET RULE SPECIFIED TIMEZONE ID
2665 
2666       l_action_code := 'TIMEZONE';
2667 
2668       l_data_code := 'TIMEZONE';
2669 
2670 
2671 
2672       EXECUTE IMMEDIATE
2673 
2674          'BEGIN
2675 
2676           SELECT B.DATA_VALUE BULK COLLECT INTO :data_value_col
2677 
2678           FROM IEC_O_ALG_ACTIONS A, IEC_O_ALG_DATA B
2679 
2680           WHERE A.ACTION_ID = B.OWNER_ID
2681 
2682           AND PARENT_BLOCK_ID = :rule_block_id
2683 
2684           AND ACTION_CODE = :action_code AND DATA_CODE = :data_code
2685 
2686           AND ROWNUM = 1;
2687 
2688           END;'
2689 
2690       USING OUT l_data_value_col, IN l_rule_block_id, IN l_action_code, IN l_data_code;
2691 
2692 
2693 
2694       IF l_data_value_col IS NOT NULL AND l_data_value_col.COUNT > 0 THEN
2695 
2696          g_timezone_id := l_data_value_col(1);
2697 
2698       END IF;
2699 
2700 
2701 
2702       -- GET RULE SPECIFIED TERRITORY CODE
2703 
2704       l_action_code := 'TERRITORY_CODE';
2705 
2706       l_data_code := 'TERRITORY_CODE';
2707 
2708 
2709 
2710       EXECUTE IMMEDIATE
2711 
2712          'BEGIN
2713 
2714           SELECT B.DATA_VALUE BULK COLLECT INTO :data_value_col
2715 
2716           FROM IEC_O_ALG_ACTIONS A, IEC_O_ALG_DATA B
2717 
2718           WHERE A.ACTION_ID = B.OWNER_ID
2719 
2720           AND PARENT_BLOCK_ID = :rule_block_id
2721 
2722           AND ACTION_CODE = :action_code AND DATA_CODE = :data_code
2723 
2724           AND ROWNUM = 1;
2725 
2726           END;'
2727 
2728       USING OUT l_data_value_col, IN l_rule_block_id, IN l_action_code, IN l_data_code;
2729 
2730 
2731 
2732       IF l_data_value_col IS NOT NULL AND l_data_value_col.COUNT > 0 THEN
2733 
2734          g_territory_code := l_data_value_col(1);
2735 
2736 
2737 
2738          BEGIN
2739 
2740             EXECUTE IMMEDIATE
2741 
2742                'SELECT PHONE_COUNTRY_CODE
2743 
2744                 FROM HZ_PHONE_COUNTRY_CODES
2745 
2746                 WHERE TERRITORY_CODE = :territory_code'
2747 
2748             INTO g_phone_country_code
2749 
2750             USING g_territory_code;
2751 
2752          EXCEPTION
2753 
2754             WHEN NO_DATA_FOUND THEN
2755 
2756                Log_TerritoryNotFound('Init_Rules', 'MAP_TERRITORY_CODE_TO_PHONE_COUNTRY_CODE', g_territory_code);
2757 
2758                RAISE fnd_api.g_exc_unexpected_error;
2759 
2760             WHEN TOO_MANY_ROWS THEN
2761 
2762                Log_TerritoryNotUnique('Init_Rules', 'MAP_TERRITORY_CODE_TO_PHONE_COUNTRY_CODE', g_territory_code);
2763 
2764                RAISE fnd_api.g_exc_unexpected_error;
2765 
2766          END;
2767 
2768       END IF;
2769 
2770 
2771 
2772       -- GET RULE SPECIFIED PHONE COUNTRY CODE IF TERRITORY_CODE WAS NOT ALREADY SPECIFIED
2773 
2774       IF g_phone_country_code IS NULL THEN
2775 
2776 
2777 
2778          l_action_code := 'PHONE_COUNTRY_CODE';
2779 
2780          l_data_code := 'PHONE_COUNTRY_CODE';
2781 
2782 
2783 
2784          EXECUTE IMMEDIATE
2785 
2786             'BEGIN
2787 
2788              SELECT B.DATA_VALUE BULK COLLECT INTO :data_value_col
2789 
2790              FROM IEC_O_ALG_ACTIONS A, IEC_O_ALG_DATA B
2791 
2792              WHERE A.ACTION_ID = B.OWNER_ID
2793 
2794              AND PARENT_BLOCK_ID = :rule_block_id
2795 
2796              AND ACTION_CODE = :action_code AND DATA_CODE = :data_code
2797 
2798              AND ROWNUM = 1;
2799 
2800              END;'
2801 
2802          USING OUT l_data_value_col, IN l_rule_block_id, IN l_action_code, IN l_data_code;
2803 
2804 
2805 
2806          IF l_data_value_col IS NOT NULL AND l_data_value_col.COUNT > 0 THEN
2807 
2808            g_phone_country_code := l_data_value_col(1);
2809 
2810          END IF;
2811 
2812       END IF;
2813 
2814 
2815 
2816       -- GET RULE SPECIFIED REGION ID
2817 
2818       l_action_code := 'REGION';
2819 
2820       l_data_code := 'REGION';
2821 
2822 
2823 
2824       EXECUTE IMMEDIATE
2825 
2826          'BEGIN
2827 
2828           SELECT B.DATA_VALUE BULK COLLECT INTO :data_value_col
2829 
2830           FROM IEC_O_ALG_ACTIONS A, IEC_O_ALG_DATA B
2831 
2832           WHERE A.ACTION_ID = B.OWNER_ID
2833 
2834           AND PARENT_BLOCK_ID = :rule_block_id
2835 
2836           AND ACTION_CODE = :action_code AND DATA_CODE = :data_code
2837 
2838           AND ROWNUM = 1;
2839 
2840           END;'
2841 
2842       USING OUT l_data_value_col, IN l_rule_block_id, IN l_action_code, IN l_data_code;
2843 
2844 
2845 
2846       IF l_data_value_col IS NOT NULL AND l_data_value_col.COUNT > 0 THEN
2847 
2848          g_region_id := l_data_value_col(1);
2849 
2850       END IF;
2851 
2852 
2853 
2854       -- Disable validation of phone number length
2855 
2856       l_action_id := NULL;
2857 
2858       l_action_code := 'PN_LENGTH_VAL_DISABLE';
2859 
2860       BEGIN
2861 
2862          EXECUTE IMMEDIATE
2863 
2864             'SELECT ACTION_ID
2865 
2866              FROM IEC_O_ALG_ACTIONS
2867 
2868              WHERE PARENT_BLOCK_ID = :rule_block_id
2869 
2870              AND ACTION_CODE = :action_code'
2871 
2872          INTO l_action_id
2873 
2874          USING l_rule_block_id, l_action_code;
2875 
2876       EXCEPTION
2877 
2878          WHEN NO_DATA_FOUND THEN
2879 
2880             g_enable_pn_length_val := TRUE;
2881 
2882          WHEN TOO_MANY_ROWS THEN
2883 
2884             g_enable_pn_length_val := FALSE;
2885 
2886       END;
2887 
2888 
2889 
2890       IF l_action_id IS NOT NULL THEN
2891 
2892          g_enable_pn_length_val := FALSE;
2893 
2894       END IF;
2895 
2896 
2897 
2898       -- Disable validation of area code length
2899 
2900       l_action_id := NULL;
2901 
2902       l_action_code := 'AC_LENGTH_VAL_DISABLE';
2903 
2904       BEGIN
2905 
2906          EXECUTE IMMEDIATE
2907 
2908             'SELECT ACTION_ID
2909 
2910              FROM IEC_O_ALG_ACTIONS
2911 
2912              WHERE PARENT_BLOCK_ID = :rule_block_id
2913 
2914              AND ACTION_CODE = :action_code'
2915 
2916          INTO l_action_id
2917 
2918          USING l_rule_block_id, l_action_code;
2919 
2920       EXCEPTION
2921 
2922          WHEN NO_DATA_FOUND THEN
2923 
2924             g_enable_ac_length_val := TRUE;
2925 
2926          WHEN TOO_MANY_ROWS THEN
2927 
2928             g_enable_ac_length_val := FALSE;
2929 
2930       END;
2931 
2932 
2933 
2934       IF l_action_id IS NOT NULL THEN
2935 
2936          g_enable_ac_length_val := FALSE;
2937 
2938       END IF;
2939 
2940 
2941 
2942       -- LOAD TZ OFFSET OR NAME MAPPINGS AS DEFINED IN RULES
2943 
2944       l_action_code := 'TIMEZONE_MAPPING';
2945 
2946       l_data_code := 'TIMEZONE_CODE';
2947 
2948 
2949 
2950       EXECUTE IMMEDIATE
2951 
2952          'BEGIN
2953 
2954           SELECT B.DATA_CODE, B.DATA_VALUE BULK COLLECT INTO :data_code_col, :data_value_col
2955 
2956           FROM IEC_O_ALG_ACTIONS A, IEC_O_ALG_DATA B
2957 
2958           WHERE A.ACTION_ID = B.OWNER_ID
2959 
2960           AND PARENT_BLOCK_ID = :rule_block_id
2961 
2962           AND ACTION_CODE = :action_code
2963 
2964           AND DATA_CODE IN (:data_code, ''TIMEZONE_VALUE'')
2965 
2966           ORDER BY A.ACTION_ID, B.DATA_CODE;
2967 
2968           END;'
2969 
2970       USING OUT l_data_code_col, OUT l_data_value_col, IN l_rule_block_id, IN l_action_code, IN l_data_code;
2971 
2972 
2973 
2974       IF l_data_code_col IS NOT NULL AND l_data_code_col.COUNT > 0 THEN
2975 
2976 
2977 
2978          l_count := 1;
2979 
2980          WHILE l_count < l_data_code_col.COUNT LOOP
2981 
2982 
2983 
2984             BEGIN
2985 
2986                EXECUTE IMMEDIATE
2987 
2988                   'INSERT INTO IEC_TZ_OFFSET_MAP_CACHE (OFFSET, TIMEZONE_ID) VALUES (:timezone_offset, :timezone)'
2989 
2990                USING l_data_value_col(l_count), l_data_value_col(l_count + 1);
2991 
2992             EXCEPTION
2993 
2994                WHEN DUP_VAL_ON_INDEX THEN
2995 
2996                   NULL;
2997 
2998             END;
2999 
3000 
3001 
3002             l_count := l_count + 2;
3003 
3004          END LOOP;
3005 
3006       END IF;
3007 
3008 
3009 
3010    END IF;
3011 
3012 
3013 
3014    -- LOAD TZ MAPPING CACHE
3015 
3016 
3017 
3018    IF g_enable_zc_lookups THEN
3019 
3020       INSERT INTO IEC_TZ_MAPPING_CACHE
3021 
3022          (TERRITORY_CODE, AREA_CODE, POSTAL_CODE, TIMEZONE_ID)
3023 
3024          SELECT DISTINCT TERRITORY_CODE, PHONE_AREA_CODE, POSTAL_CODE, TIMEZONE_ID
3025 
3026          FROM IEC_G_TIMEZONE_MAPPINGS;
3027 
3028    ELSE
3029 
3030       INSERT INTO IEC_TZ_MAPPING_CACHE
3031 
3032          (TERRITORY_CODE, AREA_CODE, POSTAL_CODE, TIMEZONE_ID)
3033 
3034          SELECT DISTINCT TERRITORY_CODE, PHONE_AREA_CODE, NULL, TIMEZONE_ID
3035 
3036          FROM IEC_G_TIMEZONE_MAPPINGS;
3037 
3038    END IF;
3039 
3040 
3041 
3042 EXCEPTION
3043 
3044    WHEN fnd_api.g_exc_error THEN
3045 
3046       RAISE;
3047 
3048    WHEN fnd_api.g_exc_unexpected_error THEN
3049 
3050       RAISE;
3051 
3052    WHEN OTHERS THEN
3053 
3054       Log( 'INIT_RULES'
3055 
3056          , 'MAIN'
3057 
3058          , SQLERRM
3059 
3060          );
3061 
3062       RAISE fnd_api.g_exc_unexpected_error;
3063 
3064 
3065 
3066 END Init_Rules;
3067 
3068 
3069 
3070 PROCEDURE Update_ReportCounts
3071 
3072    ( p_campaign_id              IN NUMBER
3073 
3074    , p_schedule_id              IN NUMBER
3075 
3076    , p_list_id                  IN NUMBER
3077 
3078    , p_subset_id_col            IN SYSTEM.number_tbl_type
3079 
3080    , p_sub_rec_loaded_incr_col  IN SYSTEM.number_tbl_type)
3081 
3082 IS
3083 
3084    l_rec_count                    NUMBER;
3085 
3086 BEGIN
3087 
3088 
3089 
3090    -- Create/Update subset records in IEC_G_REP_SUBSET_COUNTS
3091 
3092    IF p_subset_id_col IS NOT NULL AND p_subset_id_col.COUNT > 0 THEN
3093 
3094 
3095 
3096       FOR i IN 1..p_subset_id_col.LAST LOOP
3097 
3098 
3099 
3100          -- Check for existence of record for the current subset
3101 
3102          EXECUTE IMMEDIATE
3103 
3104             'SELECT COUNT(*)
3105 
3106              FROM IEC_G_REP_SUBSET_COUNTS
3107 
3108              WHERE SUBSET_ID = :subset_id'
3109 
3110          INTO l_rec_count
3111 
3112          USING p_subset_id_col(i);
3113 
3114 
3115 
3116          -- If record does not exist, create record and initialize counts
3117 
3118          IF l_rec_count = 0 THEN
3119 
3120 
3121 
3122             EXECUTE IMMEDIATE
3123 
3124                'INSERT INTO IEC_G_REP_SUBSET_COUNTS
3125 
3126                 ( SUBSET_COUNT_ID
3127 
3128                 , CAMPAIGN_ID
3129 
3130                 , SCHEDULE_ID
3131 
3132                 , LIST_HEADER_ID
3133 
3134                 , SUBSET_ID
3135 
3136                 , RECORD_LOADED
3137 
3138                 , RECORD_CALLED_ONCE
3139 
3140                 , RECORD_CALLED_AND_REMOVED
3141 
3142                 , RECORD_CALLED_AND_REMOVED_COPY
3143 
3144                 , LAST_COPY_TIME
3145 
3146                 , CREATED_BY
3147 
3148                 , CREATION_DATE
3149 
3150                 , LAST_UPDATE_LOGIN
3151 
3152                 , LAST_UPDATE_DATE
3153 
3154                 , LAST_UPDATED_BY
3155 
3156                 , OBJECT_VERSION_NUMBER
3157 
3158                 )
3159 
3160                 VALUES
3161 
3162                 (IEC_G_REP_SUBSET_COUNTS_S.NEXTVAL
3163 
3164                 , :campaign_id
3165 
3166                 , :schedule_id
3167 
3168                 , :list_id
3169 
3170                 , :subset_id
3171 
3172                 , :records_loaded
3173 
3174                 , 0
3175 
3176                 , 0
3177 
3178                 , 0
3179 
3180                 , SYSDATE
3181 
3182                 , 1
3183 
3184                 , SYSDATE
3185 
3186                 , 1
3187 
3188                 , SYSDATE
3189 
3190                 , 0
3191 
3192                 , 0)'
3193 
3194             USING p_campaign_id
3195 
3196                 , p_schedule_id
3197 
3198                 , p_list_id
3199 
3200                 , p_subset_id_col(i)
3201 
3202                 , p_sub_rec_loaded_incr_col(i);
3203 
3204 
3205 
3206          ELSE
3207 
3208 
3209 
3210             -- If record exists, simply update counts by appropriate increment
3211 
3212             EXECUTE IMMEDIATE
3213 
3214                'UPDATE IEC_G_REP_SUBSET_COUNTS
3215 
3216                    SET RECORD_LOADED = RECORD_LOADED + :records_loaded
3217 
3218                      , LAST_UPDATE_DATE = SYSDATE
3219 
3220                 WHERE SUBSET_ID = :subset_id'
3221 
3222             USING p_sub_rec_loaded_incr_col(i)
3223 
3224                 , p_subset_id_col(i);
3225 
3226 
3227 
3228          END IF;
3229 
3230 
3231 
3232       END LOOP;
3233 
3234 
3235 
3236    END IF;
3237 
3238 
3239 
3240 EXCEPTION
3241 
3242    WHEN fnd_api.g_exc_error THEN
3243 
3244       RAISE;
3245 
3246    WHEN fnd_api.g_exc_unexpected_error THEN
3247 
3248       RAISE;
3249 
3250    WHEN OTHERS THEN
3251 
3252       Log( 'Update_ReportCounts'
3253 
3254          , 'MAIN'
3255 
3256          , SQLERRM
3257 
3258          );
3259 
3260       RAISE fnd_api.g_exc_unexpected_error;
3261 
3262 
3263 
3264 END Update_ReportCounts;
3265 
3266 
3267 
3268 PROCEDURE Update_Status
3269 
3270    ( p_list_id IN NUMBER
3271 
3272    , p_status  IN VARCHAR2)
3273 
3274 IS
3275 
3276    PRAGMA AUTONOMOUS_TRANSACTION;
3277 
3278 BEGIN
3279 
3280 
3281 
3282    IF p_status = 'VALIDATED' THEN
3283 
3284 
3285 
3286       BEGIN
3287 
3288          g_end_time := SYSDATE;
3289 
3290 
3291 
3292          EXECUTE IMMEDIATE
3293 
3294             'UPDATE IEC_O_VALIDATION_STATUS
3295 
3296                 SET VALIDATED_ONCE_FLAG = ''Y''
3297 
3298                   , VALIDATION_END_TIME = :end_time
3299 
3300                   , LAST_UPDATE_DATE = SYSDATE
3301 
3302                 WHERE LIST_HEADER_ID = :list_id'
3303 
3304          USING g_end_time, p_list_id;
3305 
3306       EXCEPTION
3307 
3308          WHEN OTHERS THEN
3309 
3310             Log('UPDATE_STATUS', 'DO_IEC_STAT_UPD_VALIDATED', SQLERRM);
3311 
3312             RAISE fnd_api.g_exc_unexpected_error;
3313 
3314       END;
3315 
3316 
3317 
3318    ELSIF p_status = 'VALIDATING' THEN
3319 
3320 
3321 
3322       BEGIN
3323 
3324          g_start_time := SYSDATE;
3325 
3326 
3327 
3328          EXECUTE IMMEDIATE
3329 
3330             'UPDATE IEC_O_VALIDATION_STATUS
3331 
3332                 SET SCHEDULED_EXECUTION_TIME = NULL
3333 
3334                   , USER_SCHEDULED_EXECUTION_TIME = NULL
3335 
3336                   , USER_TIMEZONE_ID = NULL
3337 
3338                   , VALIDATION_START_TIME = :start_time
3339 
3340                   , VALIDATION_END_TIME = NULL
3341 
3342                   , LAST_UPDATE_DATE = SYSDATE
3343 
3344                 WHERE LIST_HEADER_ID = :list_id'
3345 
3346          USING g_start_time, p_list_id;
3347 
3348       EXCEPTION
3349 
3350          WHEN OTHERS THEN
3351 
3352             Log('UPDATE_STATUS', 'DO_IEC_STAT_UPD_VALIDATING', SQLERRM);
3353 
3354             RAISE fnd_api.g_exc_unexpected_error;
3355 
3356       END;
3357 
3358 
3359 
3360    ELSIF p_status = 'FAILED_VALIDATION' THEN
3361 
3362 
3363 
3364       BEGIN
3365 
3366          g_end_time := SYSDATE;
3367 
3368 
3369 
3370          EXECUTE IMMEDIATE
3371 
3372             'UPDATE IEC_O_VALIDATION_STATUS
3373 
3374                 SET VALIDATION_END_TIME = SYSDATE
3375 
3376                   , LAST_UPDATE_DATE = SYSDATE
3377 
3378                 WHERE LIST_HEADER_ID = :list_id'
3379 
3380          USING p_list_id;
3381 
3382       EXCEPTION
3383 
3384          WHEN OTHERS THEN
3385 
3386             Log('UPDATE_STATUS', 'DO_IEC_STAT_UPD_FAILED_VALIDATION', SQLERRM);
3387 
3388             RAISE fnd_api.g_exc_unexpected_error;
3389 
3390       END;
3391 
3392    ELSE
3393 
3394       -- must log start/end time if status code is invalid
3395 
3396       -- for validation history logging purposes
3397 
3398       IF g_start_time IS NULL THEN
3399 
3400          g_start_time := SYSDATE;
3401 
3402       END IF;
3403 
3404       IF g_end_time IS NULL THEN
3405 
3406          g_end_time := SYSDATE;
3407 
3408       END IF;
3409 
3410    END IF;
3411 
3412 
3413 
3414    -- Update the Marketing list status
3415 
3416    BEGIN
3417 
3418       Iec_Status_Pvt.Update_List_Status(p_list_id, p_status);
3419 
3420    EXCEPTION
3421 
3422       WHEN OTHERS THEN
3423 
3424          Log_StatusUpdateError('Update_Status', 'DO_MKT_STATUS_UPDATE', Get_ListName(p_list_id));
3425 
3426          RAISE fnd_api.g_exc_unexpected_error;
3427 
3428    END;
3429 
3430 
3431 
3432    COMMIT;
3433 
3434 EXCEPTION
3435 
3436    WHEN fnd_api.g_exc_error THEN
3437 
3438       ROLLBACK;
3439 
3440       IF p_status <> 'FAILED_VALIDATION' THEN
3441 
3442          RAISE;
3443 
3444       END IF;
3445 
3446    WHEN fnd_api.g_exc_unexpected_error THEN
3447 
3448       ROLLBACK;
3449 
3450       IF p_status <> 'FAILED_VALIDATION' THEN
3451 
3452          RAISE;
3453 
3454       END IF;
3455 
3456    WHEN OTHERS THEN
3457 
3458       ROLLBACK;
3459 
3460       Log('UPDATE_STATUS', 'MAIN', SQLERRM);
3461 
3462       IF p_status <> 'FAILED_VALIDATION' THEN
3463 
3464          RAISE fnd_api.g_exc_unexpected_error;
3465 
3466       END IF;
3467 
3468 
3469 
3470 END Update_Status;
3471 
3472 
3473 
3474 PROCEDURE Update_AmsListHeaderCounts
3475 
3476    ( p_list_id           IN NUMBER
3477 
3478    , p_rows_in_list_incr IN NUMBER
3479 
3480    , p_rows_active_incr  IN NUMBER
3481 
3482    )
3483 
3484 IS
3485   l_api_version     CONSTANT NUMBER   := 1.0;
3486   l_init_msg_list		VARCHAR2(1);
3487   l_return_status		VARCHAR2(1);
3488   l_msg_count			  NUMBER;
3489   l_msg_data			  VARCHAR2(2000);
3490 
3491   l_no_of_rows_in_list NUMBER;
3492   l_no_of_rows_active  NUMBER;
3493 
3494 BEGIN
3495   l_init_msg_list		:=FND_API.G_TRUE;
3496 
3497   IF(G_LISTHEADER_REC_INITIAL = 0 ) THEN
3498 
3499       l_listheader_rec.last_update_date := FND_API.g_miss_date;
3500       l_listheader_rec.last_updated_by := FND_API.g_miss_num;
3501       l_listheader_rec.creation_date := FND_API.g_miss_date;
3502       l_listheader_rec.created_by := FND_API.g_miss_num;
3503       l_listheader_rec.last_update_login := FND_API.g_miss_num;
3504       l_listheader_rec.object_version_number := FND_API.g_miss_num;
3505       l_listheader_rec.request_id := FND_API.g_miss_num;
3506       l_listheader_rec.program_id := FND_API.g_miss_num;
3507       l_listheader_rec.program_application_id := FND_API.g_miss_num;
3508       l_listheader_rec.program_update_date := FND_API.g_miss_date;
3509       l_listheader_rec.view_application_id := FND_API.g_miss_num;
3510       l_listheader_rec.list_name := FND_API.g_miss_char;
3511       l_listheader_rec.list_used_by_id := FND_API.g_miss_num;
3512       l_listheader_rec.arc_list_used_by := FND_API.g_miss_char;
3513       l_listheader_rec.list_type := FND_API.g_miss_char;
3514       l_listheader_rec.status_code := FND_API.g_miss_char;
3515       l_listheader_rec.status_date := FND_API.g_miss_date;
3516       l_listheader_rec.generation_type := FND_API.g_miss_char;
3517       l_listheader_rec.repeat_exclude_type := FND_API.g_miss_char;
3518       l_listheader_rec.row_selection_type := FND_API.g_miss_char;
3519       l_listheader_rec.owner_user_id := FND_API.g_miss_num;
3520       l_listheader_rec.access_level := FND_API.g_miss_char;
3521       l_listheader_rec.enable_log_flag :=FND_API.g_miss_char;
3522       l_listheader_rec.enable_word_replacement_flag := FND_API.g_miss_char;
3523       l_listheader_rec.enable_parallel_dml_flag := FND_API.g_miss_char;
3524       l_listheader_rec.dedupe_during_generation_flag := FND_API.g_miss_char;
3525       l_listheader_rec.generate_control_group_flag := FND_API.g_miss_char;
3526       l_listheader_rec.last_generation_success_flag := FND_API.g_miss_char;
3527       l_listheader_rec.forecasted_start_date := FND_API.g_miss_date;
3528       l_listheader_rec.forecasted_end_date := FND_API.g_miss_date;
3529       l_listheader_rec.actual_end_date := FND_API.g_miss_date;
3530       l_listheader_rec.sent_out_date := FND_API.g_miss_date;
3531       l_listheader_rec.dedupe_start_date := FND_API.g_miss_date;
3532       l_listheader_rec.last_dedupe_date := FND_API.g_miss_date;
3533       l_listheader_rec.last_deduped_by_user_id := FND_API.g_miss_num;
3534       l_listheader_rec.workflow_item_key := FND_API.g_miss_num;
3535       l_listheader_rec.no_of_rows_duplicates := FND_API.g_miss_num;
3536       l_listheader_rec.no_of_rows_min_requested := FND_API.g_miss_num;
3537       l_listheader_rec.no_of_rows_max_requested := FND_API.g_miss_num;
3538       l_listheader_rec.no_of_rows_in_list := FND_API.g_miss_num;
3539       l_listheader_rec.no_of_rows_in_ctrl_group := FND_API.g_miss_num;
3540       l_listheader_rec.no_of_rows_active := FND_API.g_miss_num;
3541       l_listheader_rec.no_of_rows_inactive := FND_API.g_miss_num;
3542       l_listheader_rec.no_of_rows_manually_entered := FND_API.g_miss_num;
3543       l_listheader_rec.no_of_rows_do_not_call := FND_API.g_miss_num;
3544       l_listheader_rec.no_of_rows_do_not_mail :=FND_API.g_miss_num;
3545       l_listheader_rec.no_of_rows_random := FND_API.g_miss_num;
3546       l_listheader_rec.org_id := FND_API.g_miss_num;
3547       l_listheader_rec.main_gen_start_time := FND_API.g_miss_date;
3548       l_listheader_rec.main_gen_end_time := FND_API.g_miss_date;
3549       l_listheader_rec.main_random_nth_row_selection := FND_API.g_miss_num;
3550       l_listheader_rec.main_random_pct_row_selection := FND_API.g_miss_num;
3551       l_listheader_rec.ctrl_random_nth_row_selection := FND_API.g_miss_num;
3552       l_listheader_rec.ctrl_random_pct_row_selection := FND_API.g_miss_num;
3553       l_listheader_rec.repeat_source_list_header_id := FND_API.g_miss_char;
3554       l_listheader_rec.result_text := FND_API.g_miss_char;
3555       l_listheader_rec.keywords := FND_API.g_miss_char;
3556       l_listheader_rec.description := FND_API.g_miss_char;
3557       l_listheader_rec.list_priority := FND_API.g_miss_num;
3558       l_listheader_rec.assign_person_id := FND_API.g_miss_num;
3559       l_listheader_rec.list_source := FND_API.g_miss_char;
3560       l_listheader_rec.list_source_type := FND_API.g_miss_char;
3561       l_listheader_rec.list_online_flag := FND_API.g_miss_char;
3562       l_listheader_rec.random_list_id := FND_API.g_miss_num;
3563       l_listheader_rec.enabled_flag := FND_API.g_miss_char;
3564       l_listheader_rec.assigned_to := FND_API.g_miss_num;
3565       l_listheader_rec.query_id := FND_API.g_miss_num;
3566       l_listheader_rec.owner_person_id := FND_API.g_miss_num;
3567       l_listheader_rec.archived_by := FND_API.g_miss_num;
3568       l_listheader_rec.archived_date := FND_API.g_miss_date;
3569       l_listheader_rec.attribute_category := FND_API.g_miss_char;
3570       l_listheader_rec.attribute1 := FND_API.g_miss_char;
3571       l_listheader_rec.attribute2 := FND_API.g_miss_char;
3572       l_listheader_rec.attribute3 := FND_API.g_miss_char;
3573       l_listheader_rec.attribute4 := FND_API.g_miss_char;
3574       l_listheader_rec.attribute5 := FND_API.g_miss_char;
3575       l_listheader_rec.attribute6 := FND_API.g_miss_char;
3576       l_listheader_rec.attribute7 := FND_API.g_miss_char;
3577       l_listheader_rec.attribute8 := FND_API.g_miss_char;
3578       l_listheader_rec.attribute9 := FND_API.g_miss_char;
3579       l_listheader_rec.attribute10 := FND_API.g_miss_char;
3580       l_listheader_rec.attribute11 := FND_API.g_miss_char;
3581       l_listheader_rec.attribute12 := FND_API.g_miss_char;
3582       l_listheader_rec.attribute13 := FND_API.g_miss_char;
3583       l_listheader_rec.attribute14 := FND_API.g_miss_char;
3584       l_listheader_rec.attribute15 := FND_API.g_miss_char;
3585       l_listheader_rec.timezone_id := FND_API.g_miss_num;
3586       l_listheader_rec.user_entered_start_time := FND_API.g_miss_date;
3587       l_listheader_rec.user_status_id := FND_API.g_miss_num;
3588       l_listheader_rec.quantum := FND_API.g_miss_num;
3589       l_listheader_rec.release_control_alg_id := FND_API.g_miss_num;
3590       l_listheader_rec.dialing_method := FND_API.g_miss_char;
3591       l_listheader_rec.calling_calendar_id := FND_API.g_miss_num;
3592       l_listheader_rec.release_strategy := FND_API.g_miss_char;
3593       l_listheader_rec.custom_setup_id := FND_API.g_miss_num;
3594       l_listheader_rec.country := FND_API.g_miss_num;
3595       l_listheader_rec.callback_priority_flag := FND_API.g_miss_char;
3596       l_listheader_rec.call_center_ready_flag := FND_API.g_miss_char;
3597       l_listheader_rec.language := FND_API.g_miss_char;
3598       l_listheader_rec.purge_flag := FND_API.g_miss_char;
3599       l_listheader_rec.public_flag := FND_API.g_miss_char;
3600       l_listheader_rec.list_category := FND_API.g_miss_char;
3601       l_listheader_rec.quota := FND_API.g_miss_num;
3602       l_listheader_rec.quota_reset := FND_API.g_miss_num;
3603       l_listheader_rec.recycling_alg_id := FND_API.g_miss_num;
3604       l_listheader_rec.source_lang := FND_API.g_miss_char;
3605 
3606     G_LISTHEADER_REC_INITIAL := 1;
3607   END IF;
3608 
3609   select nvl(no_of_rows_in_list,0), nvl(no_of_rows_active,0) into l_no_of_rows_in_list, l_no_of_rows_active from
3610   AMS_LIST_HEADERS_ALL where list_header_id = p_list_id;
3611   l_listheader_rec.list_header_id := p_list_id;
3612   l_listheader_rec.no_of_rows_in_list := l_no_of_rows_in_list + p_rows_in_list_incr;
3613   l_listheader_rec.no_of_rows_active := l_no_of_rows_active + p_rows_active_incr;
3614 
3615   AMS_LISTHEADER_PUB.Update_ListHeader
3616   (   p_api_version => l_api_version,
3617       p_init_msg_list => l_init_msg_list,
3618       x_return_status => l_return_status,
3619       x_msg_count => l_msg_count,
3620       x_msg_data => l_msg_data,
3621       p_listheader_rec => l_listheader_rec);
3622 
3623   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3624     Log_msg('AMS_LISTHEADER_PUB.Update_ListHeader', l_msg_data);
3625   END IF;
3626 
3627 /*
3628    EXECUTE IMMEDIATE
3629 
3630       'UPDATE AMS_LIST_HEADERS_ALL
3631 
3632        SET NO_OF_ROWS_IN_LIST = NVL(NO_OF_ROWS_IN_LIST, 0) + :rows_incr
3633 
3634          , NO_OF_ROWS_ACTIVE = NVL(NO_OF_ROWS_ACTIVE, 0) + :active_incr
3635 
3636        WHERE LIST_HEADER_ID = :list_id'
3637 
3638    USING IN p_rows_in_list_incr
3639 
3640        , IN p_rows_active_incr
3641 
3642        , IN p_list_id;
3643 
3644 */
3645 
3646 EXCEPTION
3647 
3648    WHEN OTHERS THEN
3649 
3650       Log( 'Update_AmsListHeaderCounts'
3651 
3652          , 'MAIN'
3653 
3654          , SQLERRM
3655 
3656          );
3657 
3658       RAISE fnd_api.g_exc_unexpected_error;
3659 
3660 
3661 
3662 END Update_AmsListHeaderCounts;
3663 
3664 
3665 
3666 PROCEDURE Update_MoveEntriesStatusCounts
3667 
3668    ( p_from_list_id    IN NUMBER
3669 
3670    , p_records_moved   IN NUMBER
3671 
3672    , p_records_updated IN NUMBER
3673 
3674    )
3675 
3676 IS
3677 
3678    PRAGMA AUTONOMOUS_TRANSACTION;
3679 
3680 BEGIN
3681 
3682 
3683 
3684    -- Update counts relative to current values
3685 
3686    EXECUTE IMMEDIATE
3687 
3688       'UPDATE IEC_O_MOVE_RECORDS_STATUS
3689 
3690           SET RECORDS_MOVED = NVL(RECORDS_MOVED, 0) + :records_moved
3691 
3692           ,   RECORDS_UPDATED = NVL(RECORDS_UPDATED, 0) + :records_updated
3693 
3694           , LAST_UPDATE_DATE = SYSDATE
3695 
3696        WHERE FROM_LIST_HEADER_ID = :from_list_id'
3697 
3698    USING p_records_moved, p_records_updated, p_from_list_id;
3699 
3700 
3701 
3702    COMMIT;
3703 
3704 EXCEPTION
3705 
3706    WHEN OTHERS THEN
3707 
3708       Log( 'Update_MoveEntriesStatusCounts'
3709 
3710          , 'MAIN'
3711 
3712          , SQLERRM
3713 
3714          );
3715 
3716       ROLLBACK;
3717 
3718       RAISE fnd_api.g_exc_unexpected_error;
3719 
3720 
3721 
3722 END Update_MoveEntriesStatusCounts;
3723 
3724 
3725 
3726 PROCEDURE Update_MoveEntriesStatus
3727 
3728    ( p_from_list_id  IN NUMBER
3729 
3730    , p_to_list_id    IN NUMBER
3731 
3732    , p_status        IN VARCHAR2
3733 
3734    , p_api_initiated IN BOOLEAN)
3735 
3736 IS
3737 
3738    PRAGMA AUTONOMOUS_TRANSACTION;
3739 
3740    l_count NUMBER;
3741 
3742    l_user_id NUMBER;
3743 
3744    l_login_id NUMBER;
3745 
3746    l_api_init_flag VARCHAR2(1);
3747 
3748 
3749 
3750    l_sequence NUMBER(15);
3751 
3752 BEGIN
3753 
3754 
3755 
3756    l_user_id := nvl(FND_GLOBAL.user_id, -1);
3757 
3758    l_login_id := nvl(FND_GLOBAL.conc_login_id, -1);
3759 
3760 
3761 
3762    IF p_status = 'MOVING' AND p_api_initiated THEN
3763 
3764       l_api_init_flag := 'Y';
3765 
3766    ELSE
3767 
3768       l_api_init_flag := NULL;
3769 
3770    END IF;
3771 
3772 
3773 
3774    -- Verify that record exists in IEC_O_MOVE_RECORDS_STATUS
3775 
3776    -- We need to do this now that we are providing an api
3777 
3778    -- and we can't rely on the admin screens to create this record
3779 
3780    EXECUTE IMMEDIATE
3781 
3782       'SELECT COUNT(*)
3783 
3784        FROM IEC_O_MOVE_RECORDS_STATUS
3785 
3786        WHERE FROM_LIST_HEADER_ID = :from_list_id'
3787 
3788    INTO l_count
3789 
3790    USING p_from_list_id;
3791 
3792 
3793 
3794    IF l_count = 0 THEN
3795 
3796       EXECUTE IMMEDIATE
3797 
3798          'SELECT IEC_O_MOVE_RECORDS_STATUS_S.NEXTVAL FROM DUAL'
3799 
3800       INTO l_sequence;
3801 
3802       EXECUTE IMMEDIATE
3803 
3804          'INSERT INTO IEC_O_MOVE_RECORDS_STATUS
3805 
3806           ( MOVE_RECORDS_STATUS_ID
3807 
3808           , FROM_LIST_HEADER_ID
3809 
3810           , TO_LIST_HEADER_ID
3811 
3812           , MOVE_RECORDS_STATUS_CODE
3813 
3814           , API_INITIATED_FLAG
3815 
3816           , RECORDS_MOVED
3817 
3818           , RECORDS_UPDATED
3819 
3820           , CREATED_BY
3821 
3822           , CREATION_DATE
3823 
3824           , LAST_UPDATED_BY
3825 
3826           , LAST_UPDATE_DATE
3827 
3828           , LAST_UPDATE_LOGIN
3829 
3830           , OBJECT_VERSION_NUMBER
3831 
3832           )
3833 
3834           VALUES
3835 
3836           ( :move_records_status_id
3837 
3838           , :from_list_header_id
3839 
3840           , :to_list_header_id
3841 
3842           , ''PENDING_MOVE''
3843 
3844           , :api_init_flag
3845 
3846           , 0
3847 
3848           , 0
3849 
3850           , :user_id
3851 
3852           , SYSDATE
3853 
3854           , :user_id
3855 
3856           , SYSDATE
3857 
3858           , :login_id
3859 
3860           , 0
3861 
3862           )'
3863 
3864       USING l_sequence
3865 
3866           , p_from_list_id
3867 
3868           , p_to_list_id
3869 
3870           , l_api_init_flag
3871 
3872           , l_user_id
3873 
3874           , l_user_id
3875 
3876           , l_login_id;
3877 
3878    END IF;
3879 
3880 
3881 
3882    IF p_status = 'MOVED' THEN
3883 
3884       EXECUTE IMMEDIATE
3885 
3886          'UPDATE IEC_O_MOVE_RECORDS_STATUS
3887 
3888              SET MOVE_RECORDS_STATUS_CODE = :status
3889 
3890                , API_INITIATED_FLAG = NULL
3891 
3892                , SCHEDULED_EXECUTION_TIME = NULL
3893 
3894                , USER_SCHEDULED_EXECUTION_TIME = NULL
3895 
3896                , USER_TIMEZONE_ID = NULL
3897 
3898                , MOVE_RECORDS_END_TIME = SYSDATE
3899 
3900                , LAST_UPDATE_DATE = SYSDATE
3901 
3902              WHERE FROM_LIST_HEADER_ID = :from_list_id'
3903 
3904       USING p_status, p_from_list_id;
3905 
3906    ELSIF p_status = 'MOVING' THEN
3907 
3908       EXECUTE IMMEDIATE
3909 
3910          'UPDATE IEC_O_MOVE_RECORDS_STATUS
3911 
3912              SET MOVE_RECORDS_STATUS_CODE = :status
3913 
3914                , TO_LIST_HEADER_ID = :to_list_id
3915 
3916                , API_INITIATED_FLAG = :api_init_flag
3917 
3918                , RECORDS_MOVED = 0
3919 
3920                , RECORDS_UPDATED = 0
3921 
3922                , SCHEDULED_EXECUTION_TIME = NULL
3923 
3924                , USER_SCHEDULED_EXECUTION_TIME = NULL
3925 
3926                , USER_TIMEZONE_ID = NULL
3927 
3928                , MOVE_RECORDS_START_TIME = SYSDATE
3929 
3930                , MOVE_RECORDS_END_TIME = NULL
3931 
3932                , LAST_UPDATE_DATE = SYSDATE
3933 
3934              WHERE FROM_LIST_HEADER_ID = :from_list_id'
3935 
3936       USING p_status, p_to_list_id, l_api_init_flag, p_from_list_id;
3937 
3938    ELSE
3939 
3940       EXECUTE IMMEDIATE
3941 
3942          'UPDATE IEC_O_MOVE_RECORDS_STATUS
3943 
3944              SET MOVE_RECORDS_STATUS_CODE = :status
3945 
3946                , API_INITIATED_FLAG = NULL
3947 
3948                , SCHEDULED_EXECUTION_TIME = NULL
3949 
3950                , USER_SCHEDULED_EXECUTION_TIME = NULL
3951 
3952                , USER_TIMEZONE_ID = NULL
3953 
3954                , MOVE_RECORDS_END_TIME = SYSDATE
3955 
3956                , LAST_UPDATE_DATE = SYSDATE
3957 
3958              WHERE FROM_LIST_HEADER_ID = :from_list_id'
3959 
3960       USING p_status, p_from_list_id;
3961 
3962    END IF;
3963 
3964 
3965 
3966    COMMIT;
3967 
3968 EXCEPTION
3969 
3970    WHEN OTHERS THEN
3971 
3972       Log( 'Update_MoveEntriesStatus'
3973 
3974          , 'MAIN'
3975 
3976          , SQLERRM
3977 
3978          );
3979 
3980       ROLLBACK;
3981 
3982       RAISE fnd_api.g_exc_unexpected_error;
3983 
3984 
3985 
3986 END Update_MoveEntriesStatus;
3987 
3988 
3989 
3990 PROCEDURE Update_PurgeStatus
3991 
3992    ( p_list_id       IN NUMBER
3993 
3994    , p_schedule_id   IN NUMBER
3995 
3996    , p_status        IN VARCHAR2
3997 
3998    , p_api_initiated IN BOOLEAN)
3999 
4000 IS
4001 
4002    PRAGMA AUTONOMOUS_TRANSACTION;
4003 
4004    l_count NUMBER;
4005 
4006    l_api_init_flag VARCHAR2(1);
4007 
4008 BEGIN
4009 
4010 
4011 
4012    -- We will assume that the rt info record exists
4013 
4014    -- If not, we will simply throw an exception
4015 
4016    -- b/c I don't think we should be in the business of creating
4017 
4018    -- that here
4019 
4020    EXECUTE IMMEDIATE
4021 
4022       'SELECT COUNT(*)
4023 
4024        FROM IEC_G_LIST_RT_INFO
4025 
4026        WHERE LIST_HEADER_ID = :list_id'
4027 
4028    INTO l_count
4029 
4030    USING p_list_id;
4031 
4032 
4033 
4034    IF l_count = 0 THEN
4035 
4036       Log_ListRtInfoDNE('Update_PurgeStatus', 'CHECK_LIST_RT_INFO', Get_ScheduleName(p_schedule_id));
4037 
4038       RAISE fnd_api.g_exc_error;
4039 
4040    END IF;
4041 
4042 
4043 
4044    IF p_status = 'PURGING' AND p_api_initiated THEN
4045 
4046       l_api_init_flag := 'Y';
4047 
4048    ELSE
4049 
4050       l_api_init_flag := NULL;
4051 
4052    END IF;
4053 
4054 
4055 
4056    -- Update the Marketing list status
4057 
4058    BEGIN
4059 
4060       Iec_Status_Pvt.Update_List_Status(p_list_id, p_status, l_api_init_flag);
4061 
4062    EXCEPTION
4063 
4064       WHEN OTHERS THEN
4065 
4066          Log_StatusUpdateError('Update_PurgeStatus', 'DO_MKT_STATUS_UPDATE', Get_ListName(p_list_id));
4067 
4068          RAISE fnd_api.g_exc_unexpected_error;
4069 
4070    END;
4071 
4072 
4073 
4074    COMMIT;
4075 
4076 EXCEPTION
4077 
4078    WHEN fnd_api.g_exc_error THEN
4079 
4080       ROLLBACK;
4081 
4082       IF p_status <> 'FAILED_VALIDATION' THEN
4083 
4084          RAISE;
4085 
4086       END IF;
4087 
4088    WHEN fnd_api.g_exc_unexpected_error THEN
4089 
4090       ROLLBACK;
4091 
4092       IF p_status <> 'FAILED_VALIDATION' THEN
4093 
4094          RAISE;
4095 
4096       END IF;
4097 
4098    WHEN OTHERS THEN
4099 
4100       ROLLBACK;
4101 
4102       Log('UPDATE_STATUS', 'MAIN', SQLERRM);
4103 
4104       IF p_status <> 'FAILED_VALIDATION' THEN
4105 
4106          RAISE fnd_api.g_exc_unexpected_error;
4107 
4108       END IF;
4109 
4110 
4111 
4112 END Update_PurgeStatus;
4113 
4114 
4115 
4116 PROCEDURE Update_AmsListEntries
4117 
4118    ( p_list_id IN NUMBER
4119 
4120    , p_source_type_view IN VARCHAR2)
4121 
4122 IS
4123 
4124       -- UPDATE ALE
4125 
4126       BEGIN
4127 
4128          EXECUTE IMMEDIATE
4129 
4130             'BEGIN
4131 
4132                 UPDATE ' || p_source_type_view || ' A' ||
4133 
4134                 ' SET
4135 
4136                 ( DO_NOT_USE_FLAG,
4137 
4138                   DO_NOT_USE_REASON,
4139 
4140                   NEWLY_UPDATED_FLAG,
4141 
4142                   CONTACT_POINT_ID_S1, TIME_ZONE_S1, PHONE_COUNTRY_CODE_S1, PHONE_AREA_CODE_S1, PHONE_NUMBER_S1, RAW_PHONE_NUMBER_S1, REASON_CODE_S1,
4143 
4144                   CONTACT_POINT_ID_S2, TIME_ZONE_S2, PHONE_COUNTRY_CODE_S2, PHONE_AREA_CODE_S2, PHONE_NUMBER_S2, RAW_PHONE_NUMBER_S2, REASON_CODE_S2,
4145 
4146                   CONTACT_POINT_ID_S3, TIME_ZONE_S3, PHONE_COUNTRY_CODE_S3, PHONE_AREA_CODE_S3, PHONE_NUMBER_S3, RAW_PHONE_NUMBER_S3, REASON_CODE_S3,
4147 
4148                   CONTACT_POINT_ID_S4, TIME_ZONE_S4, PHONE_COUNTRY_CODE_S4, PHONE_AREA_CODE_S4, PHONE_NUMBER_S4, RAW_PHONE_NUMBER_S4, REASON_CODE_S4,
4149 
4150                   CONTACT_POINT_ID_S5, TIME_ZONE_S5, PHONE_COUNTRY_CODE_S5, PHONE_AREA_CODE_S5, PHONE_NUMBER_S5, RAW_PHONE_NUMBER_S5, REASON_CODE_S5,
4151 
4152                   CONTACT_POINT_ID_S6, TIME_ZONE_S6, PHONE_COUNTRY_CODE_S6, PHONE_AREA_CODE_S6, PHONE_NUMBER_S6, RAW_PHONE_NUMBER_S6, REASON_CODE_S6
4153 
4154                 ) =
4155 
4156                 ( SELECT DO_NOT_USE_FLAG,
4157 
4158                          DO_NOT_USE_REASON,
4159 
4160                          ''N'',
4161 
4162                          CONTACT_POINT_ID_S1, TIME_ZONE_S1, PHONE_COUNTRY_CODE_S1, PHONE_AREA_CODE_S1, PHONE_NUMBER_S1, RAW_PHONE_NUMBER_S1, MKTG_ITEM_CC_TZS_ID_S1,
4163 
4164                          CONTACT_POINT_ID_S2, TIME_ZONE_S2, PHONE_COUNTRY_CODE_S2, PHONE_AREA_CODE_S2, PHONE_NUMBER_S2, RAW_PHONE_NUMBER_S2, MKTG_ITEM_CC_TZS_ID_S2,
4165 
4166                          CONTACT_POINT_ID_S3, TIME_ZONE_S3, PHONE_COUNTRY_CODE_S3, PHONE_AREA_CODE_S3, PHONE_NUMBER_S3, RAW_PHONE_NUMBER_S3, MKTG_ITEM_CC_TZS_ID_S3,
4167 
4168                          CONTACT_POINT_ID_S4, TIME_ZONE_S4, PHONE_COUNTRY_CODE_S4, PHONE_AREA_CODE_S4, PHONE_NUMBER_S4, RAW_PHONE_NUMBER_S4, MKTG_ITEM_CC_TZS_ID_S4,
4169 
4170                          CONTACT_POINT_ID_S5, TIME_ZONE_S5, PHONE_COUNTRY_CODE_S5, PHONE_AREA_CODE_S5, PHONE_NUMBER_S5, RAW_PHONE_NUMBER_S5, MKTG_ITEM_CC_TZS_ID_S5,
4171 
4172                          CONTACT_POINT_ID_S6, TIME_ZONE_S6, PHONE_COUNTRY_CODE_S6, PHONE_AREA_CODE_S6, PHONE_NUMBER_S6, RAW_PHONE_NUMBER_S6, MKTG_ITEM_CC_TZS_ID_S6
4173 
4174                   FROM IEC_VAL_ENTRY_CACHE B WHERE A.LIST_ENTRY_ID = B.LIST_ENTRY_ID
4175 
4176                 )
4177 
4178              WHERE LIST_HEADER_ID = :list_id AND LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID FROM IEC_VAL_ENTRY_CACHE);
4179 
4180              END;'
4181 
4182           USING p_list_id;
4183 
4184 
4185 
4186 EXCEPTION
4187 
4188    WHEN OTHERS THEN
4189 
4190       IF SQLCODE = -904 THEN
4191 
4192          Log_MissingSourceTypeColumns(p_list_id, p_source_type_view, Get_SourceType(p_list_id), 'UPDATE_AMS_LIST_ENTRIES', 'UPDATE_LIST_ENTRIES');
4193 
4194          RAISE fnd_api.g_exc_unexpected_error;
4195 
4196       ELSE
4197 
4198          Log( 'Update_AmsListEntries'
4199 
4200             , 'MAIN'
4201 
4202             , SQLERRM
4203 
4204             );
4205 
4206          RAISE fnd_api.g_exc_unexpected_error;
4207 
4208       END IF;
4209 
4210 END Update_AmsListEntries;
4211 
4212 
4213 
4214 PROCEDURE Update_ValidationReportDetails
4215 
4216    (p_list_id IN NUMBER)
4217 
4218 IS
4219 
4220 
4221 
4222    l_user_id NUMBER;
4223 
4224    l_login_id NUMBER;
4225 
4226 
4227 
4228    L_TEMP VARCHAR2(4000);
4229 
4230 BEGIN
4231 
4232    l_user_id := nvl(FND_GLOBAL.user_id, -1);
4233 
4234    l_login_id := nvl(FND_GLOBAL.conc_login_id, -1);
4235 
4236 
4237 
4238    BEGIN
4239 
4240       EXECUTE IMMEDIATE
4241 
4242          'UPDATE IEC_O_VALIDATION_REPORT_DETS A
4243 
4244              SET
4245 
4246                 ( DO_NOT_USE_REASON_S1
4247 
4248                 , DO_NOT_USE_REASON_S2
4249 
4250                 , DO_NOT_USE_REASON_S3
4251 
4252                 , DO_NOT_USE_REASON_S4
4253 
4254                 , DO_NOT_USE_REASON_S5
4255 
4256                 , DO_NOT_USE_REASON_S6
4257 
4258                 ) =
4259 
4260                 ( SELECT
4261 
4262                          DO_NOT_USE_REASON_S1
4263 
4264                        , DO_NOT_USE_REASON_S2
4265 
4266                        , DO_NOT_USE_REASON_S3
4267 
4268                        , DO_NOT_USE_REASON_S4
4269 
4270                        , DO_NOT_USE_REASON_S5
4271 
4272                        , DO_NOT_USE_REASON_S6
4273 
4274                   FROM IEC_VAL_ENTRY_CACHE B WHERE A.LIST_ENTRY_ID = B.LIST_ENTRY_ID
4275 
4276                 )
4277 
4278               , LAST_UPDATED_BY = :login_id
4279 
4280               , LAST_UPDATE_DATE = SYSDATE
4281 
4282               , LAST_UPDATE_LOGIN = :login_id
4283 
4284           WHERE A.LIST_HEADER_ID = :list_id
4285 
4286           AND A.LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID FROM IEC_VAL_ENTRY_CACHE)'
4287 
4288       USING l_login_id, l_login_id, p_list_id;
4289 
4290    EXCEPTION
4291 
4292       WHEN OTHERS THEN
4293 
4294          Log( 'Update_ValidationReportDetails'
4295 
4296             , 'UPDATE_EXISTING_ENTRIES'
4297 
4298             , SQLERRM
4299 
4300             );
4301 
4302          RAISE fnd_api.g_exc_unexpected_error;
4303 
4304    END;
4305 
4306 
4307 
4308    BEGIN
4309 
4310       EXECUTE IMMEDIATE
4311 
4312          'DELETE IEC_O_VALIDATION_REPORT_DETS
4313 
4314           WHERE LIST_HEADER_ID = :list_id
4315 
4316           AND LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID FROM IEC_VAL_ENTRY_CACHE)
4317 
4318           AND DO_NOT_USE_REASON_S1 IS NULL
4319 
4320           AND DO_NOT_USE_REASON_S2 IS NULL
4321 
4322           AND DO_NOT_USE_REASON_S3 IS NULL
4323 
4324           AND DO_NOT_USE_REASON_S4 IS NULL
4325 
4326           AND DO_NOT_USE_REASON_S5 IS NULL
4327 
4328           AND DO_NOT_USE_REASON_S6 IS NULL'
4329 
4330       USING p_list_id;
4331 
4332    EXCEPTION
4333 
4334       WHEN OTHERS THEN
4335 
4336          Log( 'Update_ValidationReportDetails'
4337 
4338             , 'DELETE_UNNECESSARY_ENTRIES'
4339 
4340             , SQLERRM
4341 
4342             );
4343 
4344          RAISE fnd_api.g_exc_unexpected_error;
4345 
4346    END;
4347 
4348 
4349 
4350    BEGIN
4351 
4352       EXECUTE IMMEDIATE
4353 
4354          'INSERT INTO IEC_O_VALIDATION_REPORT_DETS
4355 
4356                 ( LIST_HEADER_ID
4357 
4358                 , LIST_ENTRY_ID
4359 
4360                 , DO_NOT_USE_REASON_S1
4361 
4362                 , DO_NOT_USE_REASON_S2
4363 
4364                 , DO_NOT_USE_REASON_S3
4365 
4366                 , DO_NOT_USE_REASON_S4
4367 
4368                 , DO_NOT_USE_REASON_S5
4369 
4370                 , DO_NOT_USE_REASON_S6
4371 
4372                 , CREATED_BY
4373 
4374                 , CREATION_DATE
4375 
4376                 , LAST_UPDATED_BY
4377 
4378                 , LAST_UPDATE_DATE
4379 
4380                 , LAST_UPDATE_LOGIN )
4381 
4382           SELECT  :list_id
4383 
4384                 , LIST_ENTRY_ID
4385 
4386                 , DO_NOT_USE_REASON_S1
4387 
4388                 , DO_NOT_USE_REASON_S2
4389 
4390                 , DO_NOT_USE_REASON_S3
4391 
4392                 , DO_NOT_USE_REASON_S4
4393 
4394                 , DO_NOT_USE_REASON_S5
4395 
4396                 , DO_NOT_USE_REASON_S6
4397 
4398                 , :user_id
4399 
4400                 , sysdate
4401 
4402                 , :login_id
4403 
4404                 , sysdate
4405 
4406                 , :login_id
4407 
4408           FROM IEC_VAL_ENTRY_CACHE
4409 
4410           WHERE LIST_ENTRY_ID NOT IN (SELECT LIST_ENTRY_ID FROM IEC_O_VALIDATION_REPORT_DETS WHERE LIST_HEADER_ID = :list_id)
4411 
4412           AND (   DO_NOT_USE_REASON_S1 IS NOT NULL
4413 
4414                OR DO_NOT_USE_REASON_S2 IS NOT NULL
4415 
4416                OR DO_NOT_USE_REASON_S3 IS NOT NULL
4417 
4418                OR DO_NOT_USE_REASON_S4 IS NOT NULL
4419 
4420                OR DO_NOT_USE_REASON_S5 IS NOT NULL
4421 
4422                OR DO_NOT_USE_REASON_S6 IS NOT NULL
4423 
4424               )'
4425 
4426       USING p_list_id, l_user_id, l_login_id, l_login_id, p_list_id;
4427 
4428 
4429 
4430    EXCEPTION
4431 
4432       WHEN OTHERS THEN
4433 
4434          Log( 'Update_ValidationReportDetails'
4435 
4436             , 'INSERTING_NEW_ENTRIES'
4437 
4438             , SQLERRM
4439 
4440             );
4441 
4442          RAISE fnd_api.g_exc_unexpected_error;
4443 
4444    END;
4445 
4446 
4447 
4448 EXCEPTION
4449 
4450    WHEN fnd_api.g_exc_error THEN
4451 
4452       ROLLBACK;
4453 
4454       RAISE;
4455 
4456    WHEN fnd_api.g_exc_unexpected_error THEN
4457 
4458       ROLLBACK;
4459 
4460       RAISE;
4461 
4462    WHEN OTHERS THEN
4463 
4464       ROLLBACK;
4465 
4466       Log( 'Update_ValidationReportDetails'
4467 
4468          , 'MAIN'
4469 
4470          , SQLERRM
4471 
4472          );
4473 
4474       RAISE fnd_api.g_exc_unexpected_error;
4475 
4476 
4477 
4478 END Update_ValidationReportDetails;
4479 
4480 
4481 
4482 PROCEDURE Update_CallableZones
4483 
4484    (p_list_id IN NUMBER)
4485 
4486 IS
4487 
4488    l_cp_postfix SYSTEM.varchar_tbl_type := SYSTEM.varchar_tbl_type();
4489 
4490 
4491 
4492    TYPE ref_csr_type IS REF CURSOR;
4493 
4494    l_callable_zone_csr ref_csr_type;
4495 
4496 
4497 
4498    l_tc_tz_pair_id  NUMBER(15);
4499 
4500    l_subset_id      NUMBER(15);
4501 
4502    l_territory_code VARCHAR2(2);
4503 
4504    l_region_id      NUMBER(15);
4505 
4506    l_timezone_id    NUMBER(15);
4507 
4508 
4509 
4510 BEGIN
4511 
4512 
4513 
4514    -- Update IEC_TC_TZ_PAIRS_CACHE for current contact point (increment record counts)
4515 
4516 
4517 
4518    FOR subset_rec IN (SELECT   SUBSET_ID              SUBSET_ID
4519 
4520                              , CURR_CP_TERRITORY_CODE TERRITORY_CODE
4521 
4522                              , CURR_CP_REGION_ID      REGION_ID
4523 
4524                              , CURR_CP_TIME_ZONE      TIME_ZONE
4525 
4526                              , COUNT(*)               RECORD_COUNT
4527 
4528                       FROM IEC_VAL_ENTRY_CACHE
4529 
4530                       WHERE DO_NOT_USE_FLAG = 'N'
4531 
4532                       GROUP BY SUBSET_ID
4533 
4534                              , CURR_CP_TERRITORY_CODE
4535 
4536                              , CURR_CP_REGION_ID
4537 
4538                              , CURR_CP_TIME_ZONE)
4539 
4540    LOOP
4541 
4542 
4543 
4544       l_tc_tz_pair_id := NULL;
4545 
4546 
4547 
4548       IF subset_rec.REGION_ID IS NULL THEN
4549 
4550 
4551 
4552             EXECUTE IMMEDIATE
4553 
4554                'UPDATE IEC_TC_TZ_PAIRS_CACHE
4555 
4556                 SET RECORD_COUNT = NVL(RECORD_COUNT, 0) + :record_count_incr
4557 
4558                 WHERE SUBSET_ID = :subset_id
4559 
4560                 AND TERRITORY_CODE = :territory_code
4561 
4562                 AND TIMEZONE_ID = :timezone_id
4563 
4564                 AND REGION_ID IS NULL
4565 
4566                 AND CACHE_ONLY_FLAG <> ''O''
4567 
4568                 RETURNING TC_TZ_PAIR_ID INTO :tc_tz_pair_id'
4569 
4570             USING subset_rec.RECORD_COUNT
4571 
4572                 , subset_rec.SUBSET_ID
4573 
4574                 , subset_rec.TERRITORY_CODE
4575 
4576                 , subset_rec.TIME_ZONE
4577 
4578                 , OUT l_tc_tz_pair_id;
4579 
4580 
4581 
4582       ELSE
4583 
4584             EXECUTE IMMEDIATE
4585 
4586                'UPDATE IEC_TC_TZ_PAIRS_CACHE
4587 
4588                 SET RECORD_COUNT = NVL(RECORD_COUNT, 0) + :record_count_incr
4589 
4590                 WHERE SUBSET_ID = :subset_id
4591 
4592                 AND TERRITORY_CODE = :territory_code
4593 
4594                 AND TIMEZONE_ID = :timezone_id
4595 
4596                 AND REGION_ID = :region_id
4597 
4598                 AND CACHE_ONLY_FLAG <> ''O''
4599 
4600                 RETURNING TC_TZ_PAIR_ID INTO :tc_tz_pair_id'
4601 
4602             USING subset_rec.RECORD_COUNT
4603 
4604                 , subset_rec.SUBSET_ID
4605 
4606                 , subset_rec.TERRITORY_CODE
4607 
4608                 , subset_rec.TIME_ZONE
4609 
4610                 , subset_rec.REGION_ID
4611 
4612                 , OUT l_tc_tz_pair_id;
4613 
4614 
4615 
4616       END IF;
4617 
4618 
4619 
4620       IF SQL%ROWCOUNT = 0 THEN
4621 
4622 
4623 
4624          -- Create record and initialize RECORD_COUNT
4625 
4626          EXECUTE IMMEDIATE
4627 
4628             'SELECT IEC_G_MKTG_ITEM_CC_TZS_S.NEXTVAL FROM DUAL'
4629 
4630          INTO l_tc_tz_pair_id;
4631 
4632 
4633 
4634          EXECUTE IMMEDIATE
4635 
4636             'INSERT INTO IEC_TC_TZ_PAIRS_CACHE
4637 
4638                     ( SUBSET_ID
4639 
4640                     , TERRITORY_CODE
4641 
4642                     , REGION_ID
4643 
4644                     , TIMEZONE_ID
4645 
4646                     , TC_TZ_PAIR_ID
4647 
4648                     , RECORD_COUNT
4649 
4650                     , CACHE_ONLY_FLAG)
4651 
4652              VALUES ( :subset_id
4653 
4654                     , :territory_code
4655 
4656                     , :region_id
4657 
4658                     , :timezone_id
4659 
4660                     , :tc_tz_pair_id
4661 
4662                     , :init_record_count
4663 
4664                     , ''Y'')'
4665 
4666          USING subset_rec.SUBSET_ID
4667 
4668              , subset_rec.TERRITORY_CODE
4669 
4670              , subset_rec.REGION_ID
4671 
4672              , subset_rec.TIME_ZONE
4673 
4674              , l_tc_tz_pair_id
4675 
4676              , subset_rec.RECORD_COUNT;
4677 
4678 
4679 
4680       END IF;
4681 
4682 
4683 
4684    END LOOP;
4685 
4686 
4687 
4688    -- Update IEC_TC_TZ_PAIRS_CACHE for contact points 1 through 6 (do not increment record counts)
4689 
4690    l_cp_postfix.EXTEND(6);
4691 
4692    l_cp_postfix(1) := '_S1';
4693 
4694    l_cp_postfix(2) := '_S2';
4695 
4696    l_cp_postfix(3) := '_S3';
4697 
4698    l_cp_postfix(4) := '_S4';
4699 
4700    l_cp_postfix(5) := '_S5';
4701 
4702    l_cp_postfix(6) := '_S6';
4703 
4704 
4705 
4706    FOR i IN 1..l_cp_postfix.COUNT LOOP
4707 
4708 
4709 
4710       OPEN l_callable_zone_csr FOR
4711 
4712          'SELECT DISTINCT SUBSET_ID                               SUBSET_ID
4713 
4714                         , TERRITORY_CODE' || l_cp_postfix(i) || ' TERRITORY_CODE
4715 
4716                         , REGION_ID'      || l_cp_postfix(i) || ' REGION_ID
4717 
4718                         , TIME_ZONE'      || l_cp_postfix(i) || ' TIME_ZONE
4719 
4720           FROM IEC_VAL_ENTRY_CACHE
4721 
4722           WHERE DO_NOT_USE_FLAG = ''N''
4723 
4724           AND VALID_FLAG' || l_cp_postfix(i) || ' = ''Y''';
4725 
4726 
4727 
4728       LOOP
4729 
4730 
4731 
4732          l_tc_tz_pair_id := NULL;
4733 
4734 
4735 
4736          FETCH l_callable_zone_csr INTO l_subset_id, l_territory_code, l_region_id, l_timezone_id;
4737 
4738 
4739 
4740          EXIT WHEN l_callable_zone_csr%NOTFOUND;
4741 
4742 
4743 
4744          BEGIN
4745 
4746             IF l_region_id IS NULL THEN
4747 
4748 
4749 
4750                EXECUTE IMMEDIATE
4751 
4752                   'SELECT TC_TZ_PAIR_ID
4753 
4754                    FROM IEC_TC_TZ_PAIRS_CACHE
4755 
4756                    WHERE SUBSET_ID = :subset_id
4757 
4758                    AND TERRITORY_CODE = :territory_code
4759 
4760                    AND TIMEZONE_ID = :timezone_id
4761 
4762                    AND REGION_ID IS NULL
4763 
4764                    AND CACHE_ONLY_FLAG <> ''O'''
4765 
4766                INTO l_tc_tz_pair_id
4767 
4768                USING l_subset_id
4769 
4770                    , l_territory_code
4771 
4772                    , l_timezone_id;
4773 
4774             ELSE
4775 
4776 
4777 
4778                EXECUTE IMMEDIATE
4779 
4780                   'SELECT TC_TZ_PAIR_ID
4781 
4782                    FROM IEC_TC_TZ_PAIRS_CACHE
4783 
4784                    WHERE SUBSET_ID = :subset_id
4785 
4786                    AND TERRITORY_CODE = :territory_code
4787 
4788                    AND TIMEZONE_ID = :timezone_id
4789 
4790                    AND REGION_ID = :region_id
4791 
4792                    AND CACHE_ONLY_FLAG <> ''O'''
4793 
4794                INTO l_tc_tz_pair_id
4795 
4796                USING l_subset_id
4797 
4798                    , l_territory_code
4799 
4800                    , l_timezone_id
4801 
4802                    , l_region_id;
4803 
4804 
4805 
4806             END IF;
4807 
4808 
4809 
4810          EXCEPTION
4811 
4812             WHEN NO_DATA_FOUND THEN
4813 
4814 
4815 
4816                -- Create record and initialize RECORD_COUNT to 0
4817 
4818                EXECUTE IMMEDIATE
4819 
4820                   'SELECT IEC_G_MKTG_ITEM_CC_TZS_S.NEXTVAL FROM DUAL'
4821 
4822                INTO l_tc_tz_pair_id;
4823 
4824 
4825 
4826                EXECUTE IMMEDIATE
4827 
4828                   'INSERT INTO IEC_TC_TZ_PAIRS_CACHE
4829 
4830                           ( SUBSET_ID
4831 
4832                           , TERRITORY_CODE
4833 
4834                           , REGION_ID
4835 
4836                           , TIMEZONE_ID
4837 
4838                           , TC_TZ_PAIR_ID
4839 
4840                           , RECORD_COUNT
4841 
4842                           , CACHE_ONLY_FLAG)
4843 
4844                    VALUES ( :subset_id
4845 
4846                           , :territory_code
4847 
4848                           , :region_id
4849 
4850                           , :timezone_id
4851 
4852                           , :tc_tz_pair_id
4853 
4854                           , :init_record_count
4855 
4856                           , ''Y'')'
4857 
4858                USING l_subset_id
4859 
4860                    , l_territory_code
4861 
4862                    , l_region_id
4863 
4864                    , l_timezone_id
4865 
4866                    , l_tc_tz_pair_id
4867 
4868                    , 0;
4869 
4870 
4871 
4872             WHEN OTHERS THEN
4873 
4874                RAISE;
4875 
4876          END;
4877 
4878 
4879 
4880       END LOOP;
4881 
4882 
4883 
4884       CLOSE l_callable_zone_csr;
4885 
4886 
4887 
4888    END LOOP;
4889 
4890 
4891 
4892    -- Update IEC_VAL_ENTRY_CACHE with the MKTG_ITEM_CC_TZ_ID
4893 
4894    EXECUTE IMMEDIATE
4895 
4896       'UPDATE IEC_VAL_ENTRY_CACHE A
4897 
4898        SET A.MKTG_ITEM_CC_TZS_ID_S1 = (SELECT TC_TZ_PAIR_ID
4899 
4900                                        FROM IEC_TC_TZ_PAIRS_CACHE
4901 
4902                                        WHERE SUBSET_ID = A.SUBSET_ID
4903 
4904                                        AND TERRITORY_CODE = A.TERRITORY_CODE_S1
4905 
4906                                        AND TIMEZONE_ID = A.TIME_ZONE_S1
4907 
4908                                        AND NVL(REGION_ID, -1) = NVL(A.REGION_ID_S1, -1)
4909 
4910                                        AND A.VALID_FLAG_S1 = ''Y''
4911 
4912                                        AND CACHE_ONLY_FLAG <> ''O'')
4913 
4914          , A.MKTG_ITEM_CC_TZS_ID_S2 = (SELECT TC_TZ_PAIR_ID
4915 
4916                                        FROM IEC_TC_TZ_PAIRS_CACHE
4917 
4918                                        WHERE SUBSET_ID = A.SUBSET_ID
4919 
4920                                        AND TERRITORY_CODE = A.TERRITORY_CODE_S2
4921 
4922                                        AND TIMEZONE_ID = A.TIME_ZONE_S2
4923 
4924                                        AND NVL(REGION_ID, -1) = NVL(A.REGION_ID_S2, -1)
4925 
4926                                        AND A.VALID_FLAG_S2 = ''Y''
4927 
4928                                        AND CACHE_ONLY_FLAG <> ''O'')
4929 
4930          , A.MKTG_ITEM_CC_TZS_ID_S3 = (SELECT TC_TZ_PAIR_ID
4931 
4932                                        FROM IEC_TC_TZ_PAIRS_CACHE
4933 
4934                                        WHERE SUBSET_ID = A.SUBSET_ID
4935 
4936                                        AND TERRITORY_CODE = A.TERRITORY_CODE_S3
4937 
4938                                        AND TIMEZONE_ID = A.TIME_ZONE_S3
4939 
4940                                        AND NVL(REGION_ID, -1) = NVL(A.REGION_ID_S3, -1)
4941 
4942                                        AND A.VALID_FLAG_S3 = ''Y''
4943 
4944                                        AND CACHE_ONLY_FLAG <> ''O'')
4945 
4946          , A.MKTG_ITEM_CC_TZS_ID_S4 = (SELECT TC_TZ_PAIR_ID
4947 
4948                                        FROM IEC_TC_TZ_PAIRS_CACHE
4949 
4950                                        WHERE SUBSET_ID = A.SUBSET_ID
4951 
4952                                        AND TERRITORY_CODE = A.TERRITORY_CODE_S4
4953 
4954                                        AND TIMEZONE_ID = A.TIME_ZONE_S4
4955 
4956                                        AND NVL(REGION_ID, -1) = NVL(A.REGION_ID_S4, -1)
4957 
4958                                        AND A.VALID_FLAG_S4 = ''Y''
4959 
4960                                        AND CACHE_ONLY_FLAG <> ''O'')
4961 
4962          , A.MKTG_ITEM_CC_TZS_ID_S5 = (SELECT TC_TZ_PAIR_ID
4963 
4964                                        FROM IEC_TC_TZ_PAIRS_CACHE
4965 
4966                                        WHERE SUBSET_ID = A.SUBSET_ID
4967 
4968                                        AND TERRITORY_CODE = A.TERRITORY_CODE_S5
4969 
4970                                        AND TIMEZONE_ID = A.TIME_ZONE_S5
4971 
4972                                        AND NVL(REGION_ID, -1) = NVL(A.REGION_ID_S5, -1)
4973 
4974                                        AND A.VALID_FLAG_S5 = ''Y''
4975 
4976                                        AND CACHE_ONLY_FLAG <> ''O'')
4977 
4978          , A.MKTG_ITEM_CC_TZS_ID_S6 = (SELECT TC_TZ_PAIR_ID
4979 
4980                                        FROM IEC_TC_TZ_PAIRS_CACHE
4981 
4982                                        WHERE SUBSET_ID = A.SUBSET_ID
4983 
4984                                        AND TERRITORY_CODE = A.TERRITORY_CODE_S6
4985 
4986                                        AND TIMEZONE_ID = A.TIME_ZONE_S6
4987 
4988                                        AND NVL(REGION_ID, -1) = NVL(A.REGION_ID_S6, -1)
4989 
4990                                        AND A.VALID_FLAG_S6 = ''Y''
4991 
4992                                        AND CACHE_ONLY_FLAG <> ''O'')
4993 
4994          , A.CURR_CP_MKTG_ITEM_CC_TZS_ID = (SELECT TC_TZ_PAIR_ID
4995 
4996                                             FROM IEC_TC_TZ_PAIRS_CACHE
4997 
4998                                             WHERE SUBSET_ID = A.SUBSET_ID
4999 
5000                                             AND TERRITORY_CODE = A.CURR_CP_TERRITORY_CODE
5001 
5002                                             AND TIMEZONE_ID = A.CURR_CP_TIME_ZONE
5003 
5004                                             AND NVL(REGION_ID, -1) = NVL(A.CURR_CP_REGION_ID, -1)
5005 
5006                                             AND CACHE_ONLY_FLAG <> ''O'')
5007 
5008       WHERE A.DO_NOT_USE_FLAG = ''N''';
5009 
5010 
5011 
5012 EXCEPTION
5013 
5014    WHEN OTHERS THEN
5015 
5016       Log( 'Update_CallableZones'
5017 
5018          , 'MAIN'
5019 
5020          , SQLERRM
5021 
5022          );
5023 
5024       RAISE fnd_api.g_exc_unexpected_error;
5025 
5026 
5027 
5028 END Update_CallableZones;
5029 
5030 
5031 
5032 PROCEDURE Incr_RecordsLoadedCounts
5033 
5034    ( p_schedule_id              IN NUMBER
5035 
5036    , p_list_id                  IN NUMBER
5037 
5038    , p_subset_id_col            IN SYSTEM.number_tbl_type
5039 
5040    , p_incr_amount_col          IN SYSTEM.number_tbl_type
5041 
5042    )
5043 
5044 IS
5045 
5046 BEGIN
5047 
5048 
5049 
5050    IF p_subset_id_col.COUNT > 0 THEN
5051 
5052       FORALL i IN p_subset_id_col.FIRST..p_subset_id_col.LAST
5053 
5054          UPDATE IEC_G_REP_SUBSET_COUNTS
5055 
5056          SET RECORD_LOADED = NVL(RECORD_LOADED, 0) + p_incr_amount_col(i)
5057 
5058          WHERE SCHEDULE_ID = p_schedule_id
5059 
5060          AND LIST_HEADER_ID = p_list_id
5061 
5062          AND SUBSET_ID = p_subset_id_col(i);
5063 
5064    END IF;
5065 
5066 
5067 
5068 EXCEPTION
5069 
5070    WHEN OTHERS THEN
5071 
5072       Log( 'Incr_RecordsLoadedCounts'
5073 
5074          , 'MAIN'
5075 
5076          , SQLERRM
5077 
5078          );
5079 
5080       RAISE fnd_api.g_exc_unexpected_error;
5081 
5082 
5083 
5084 END Incr_RecordsLoadedCounts;
5085 
5086 
5087 
5088 PROCEDURE Incr_CallableZoneCounts
5089 
5090    ( p_callable_zone_id_col IN SYSTEM.number_tbl_type
5091 
5092    , p_incr_amount_col      IN SYSTEM.number_tbl_type
5093 
5094    )
5095 
5096 IS
5097 
5098 BEGIN
5099 
5100 
5101 
5102    IF p_callable_zone_id_col.COUNT > 0 THEN
5103 
5104       FORALL i IN p_callable_zone_id_col.FIRST..p_callable_zone_id_col.LAST
5105 
5106          UPDATE IEC_G_MKTG_ITEM_CC_TZS
5107 
5108          SET RECORD_COUNT = NVL(RECORD_COUNT, 0) + p_incr_amount_col(i)
5109 
5110          WHERE ITM_CC_TZ_ID = p_callable_zone_id_col(i);
5111 
5112    END IF;
5113 
5114 
5115 
5116 EXCEPTION
5117 
5118    WHEN OTHERS THEN
5119 
5120       Log( 'Incr_CallableZoneCounts'
5121 
5122          , 'MAIN'
5123 
5124          , SQLERRM
5125 
5126          );
5127 
5128       RAISE fnd_api.g_exc_unexpected_error;
5129 
5130 
5131 
5132 END Incr_CallableZoneCounts;
5133 
5134 
5135 
5136 PROCEDURE Incr_CallableZoneCounts_Cache
5137 
5138    ( p_callable_zone_id_col IN SYSTEM.number_tbl_type
5139 
5140    , p_incr_amount_col      IN SYSTEM.number_tbl_type
5141 
5142    )
5143 
5144 IS
5145 
5146 BEGIN
5147 
5148 
5149 
5150    IF p_callable_zone_id_col.COUNT > 0 THEN
5151 
5152       FORALL i IN p_callable_zone_id_col.FIRST..p_callable_zone_id_col.LAST
5153 
5154          UPDATE IEC_TC_TZ_PAIRS_CACHE
5155 
5156          SET RECORD_COUNT = NVL(RECORD_COUNT, 0) + p_incr_amount_col(i)
5157 
5158          WHERE TC_TZ_PAIR_ID = p_callable_zone_id_col(i);
5159 
5160    END IF;
5161 
5162 
5163 
5164 EXCEPTION
5165 
5166    WHEN OTHERS THEN
5167 
5168       Log( 'Incr_CallableZoneCounts_Cache'
5169 
5170          , 'MAIN'
5171 
5172          , SQLERRM
5173 
5174          );
5175 
5176       RAISE fnd_api.g_exc_unexpected_error;
5177 
5178 
5179 
5180 END Incr_CallableZoneCounts_Cache;
5181 
5182 
5183 
5184 PROCEDURE Load_CallableZones
5185 
5186    (p_list_id IN NUMBER)
5187 
5188 IS
5189 
5190 BEGIN
5191 
5192 
5193 
5194    -- LOAD IEC_G_MKTG_ITEM_CC_TZS RECORDS FOR CURRENT LIST INTO CACHE
5195 
5196    EXECUTE IMMEDIATE
5197 
5198          'INSERT INTO IEC_TC_TZ_PAIRS_CACHE (SUBSET_ID, TERRITORY_CODE, REGION_ID, TIMEZONE_ID, TC_TZ_PAIR_ID, RECORD_COUNT, CACHE_ONLY_FLAG)
5199 
5200           SELECT SUBSET_ID, TERRITORY_CODE, REGION_ID, TIMEZONE_ID, ITM_CC_TZ_ID, 0, ''N''
5201 
5202           FROM IEC_G_MKTG_ITEM_CC_TZS
5203 
5204           WHERE LIST_HEADER_ID = :list_id'
5205 
5206    USING p_list_id;
5207 
5208 
5209 
5210 END Load_CallableZones;
5211 
5212 
5213 
5214 PROCEDURE Get_CallableZoneDetail
5215 
5216    ( p_cc_tz_id       IN            NUMBER
5217 
5218    , x_territory_code    OUT NOCOPY VARCHAR2   -- OUT
5219 
5220    , x_region_id         OUT NOCOPY NUMBER     -- OUT
5221 
5222    , x_time_zone_id      OUT NOCOPY NUMBER     -- OUT
5223 
5224    , x_valid_flag        OUT NOCOPY VARCHAR2)  -- OUT
5225 
5226 IS
5227 
5228    l_territory_code VARCHAR2(2);
5229 
5230    l_region_id NUMBER;
5231 
5232    l_time_zone_id NUMBER;
5233 
5234    l_valid_flag VARCHAR2(1);
5235 
5236 BEGIN
5237 
5238 
5239 
5240    IF p_cc_tz_id IS NOT NULL THEN
5241 
5242       EXECUTE IMMEDIATE
5243 
5244          'SELECT TERRITORY_CODE, REGION_ID, TIMEZONE_ID
5245 
5246           FROM IEC_G_MKTG_ITEM_CC_TZS
5247 
5248           WHERE ITM_CC_TZ_ID = :cc_tz_id'
5249 
5250       INTO l_territory_code, l_region_id, l_time_zone_id
5251 
5252       USING p_cc_tz_id;
5253 
5254       l_valid_flag := 'Y';
5255 
5256    ELSE
5257 
5258       l_territory_code := NULL;
5259 
5260       l_region_id := NULL;
5261 
5262       l_time_zone_id := NULL;
5263 
5264       l_valid_flag := 'N';
5265 
5266    END IF;
5267 
5268 
5269 
5270    x_territory_code := l_territory_code;
5271 
5272    x_region_id := l_region_id;
5273 
5274    x_time_zone_id := l_time_zone_id;
5275 
5276    x_valid_flag := l_valid_flag;
5277 
5278 
5279 
5280 EXCEPTION
5281 
5282    WHEN NO_DATA_FOUND THEN
5283 
5284       x_territory_code := NULL;
5285 
5286       x_region_id := NULL;
5287 
5288       x_time_zone_id := NULL;
5289 
5290       x_valid_flag := 'N';
5291 
5292    WHEN OTHERS THEN
5293 
5294       Log( 'Get_CallableZoneDetail'
5295 
5296          , 'MAIN'
5297 
5298          , SQLERRM
5299 
5300          );
5301 
5302       RAISE fnd_api.g_exc_unexpected_error;
5303 
5304 
5305 
5306 END Get_CallableZoneDetail;
5307 
5308 
5309 
5310 PROCEDURE Get_CallableZoneDetail_Cache
5311 
5312    ( p_cc_tz_id       IN            NUMBER
5313 
5314    , x_territory_code    OUT NOCOPY VARCHAR2   -- OUT
5315 
5316    , x_region_id         OUT NOCOPY NUMBER     -- OUT
5317 
5318    , x_time_zone_id      OUT NOCOPY NUMBER     -- OUT
5319 
5320    , x_valid_flag        OUT NOCOPY VARCHAR2)  -- OUT
5321 
5322 IS
5323 
5324    l_territory_code VARCHAR2(2);
5325 
5326    l_region_id NUMBER;
5327 
5328    l_time_zone_id NUMBER;
5329 
5330    l_valid_flag VARCHAR2(1);
5331 
5332 BEGIN
5333 
5334 
5335 
5336    IF p_cc_tz_id IS NOT NULL THEN
5337 
5338 
5339 
5340       EXECUTE IMMEDIATE
5341 
5342          'SELECT TERRITORY_CODE, REGION_ID, TIMEZONE_ID
5343 
5344           FROM IEC_TC_TZ_PAIRS_CACHE
5345 
5346           WHERE TC_TZ_PAIR_ID = :cc_tz_id'
5347 
5348       INTO l_territory_code, l_region_id, l_time_zone_id
5349 
5350       USING p_cc_tz_id;
5351 
5352       l_valid_flag := 'Y';
5353 
5354    ELSE
5355 
5356       l_territory_code := NULL;
5357 
5358       l_region_id := NULL;
5359 
5360       l_time_zone_id := NULL;
5361 
5362       l_valid_flag := 'N';
5363 
5364    END IF;
5365 
5366 
5367 
5368    x_territory_code := l_territory_code;
5369 
5370    x_region_id := l_region_id;
5371 
5372    x_time_zone_id := l_time_zone_id;
5373 
5374    x_valid_flag := l_valid_flag;
5375 
5376 
5377 
5378 EXCEPTION
5379 
5380    WHEN NO_DATA_FOUND THEN
5381 
5382       x_territory_code := NULL;
5383 
5384       x_region_id := NULL;
5385 
5386       x_time_zone_id := NULL;
5387 
5388       x_valid_flag := 'N';
5389 
5390    WHEN OTHERS THEN
5391 
5392       Log( 'Get_CallableZoneDetail_Cache'
5393 
5394          , 'MAIN'
5395 
5396          , SQLERRM
5397 
5398          );
5399 
5400       RAISE fnd_api.g_exc_unexpected_error;
5401 
5402 
5403 
5404 END Get_CallableZoneDetail_Cache;
5405 
5406 
5407 
5408 PROCEDURE Delete_CallableZones
5409 
5410    (p_list_id IN NUMBER)
5411 
5412 IS
5413 
5414 BEGIN
5415 
5416 
5417 
5418    EXECUTE IMMEDIATE
5419 
5420          'DELETE IEC_G_MKTG_ITEM_CC_TZS
5421 
5422           WHERE LIST_HEADER_ID = :list_id'
5423 
5424    USING p_list_id;
5425 
5426 
5427 
5428 END Delete_CallableZones;
5429 
5430 
5431 
5432 PROCEDURE Purge_CallableZones
5433 
5434    ( p_list_id              IN NUMBER
5435 
5436    , p_campaign_schedule_id IN NUMBER)
5437 
5438 IS
5439 
5440    l_subset_id_col      SYSTEM.number_tbl_type;
5441 
5442    l_territory_code_col SYSTEM.varchar_tbl_type;
5443 
5444    l_region_col         SYSTEM.varchar_tbl_type;
5445 
5446    l_timezone_col       SYSTEM.number_tbl_type;
5447 
5448    l_tc_tz_pair_id_col  SYSTEM.number_tbl_type;
5449 
5450    l_record_count_col   SYSTEM.number_tbl_type;
5451 
5452 
5453 
5454 BEGIN
5455 
5456 
5457 
5458    -- Create new tc/tz pairs in IEC_G_MKTG_ITEM_CC_TZS for those tc/tz pairs only existing in cache
5459 
5460    SELECT SUBSET_ID, TERRITORY_CODE, REGION_ID, TIMEZONE_ID, TC_TZ_PAIR_ID, RECORD_COUNT
5461 
5462    BULK COLLECT INTO l_subset_id_col, l_territory_code_col, l_region_col, l_timezone_col, l_tc_tz_pair_id_col, l_record_count_col
5463 
5464    FROM IEC_TC_TZ_PAIRS_CACHE
5465 
5466    WHERE CACHE_ONLY_FLAG = 'Y';
5467 
5468 
5469 
5470    IF l_territory_code_col IS NOT NULL AND l_territory_code_col.COUNT > 0 THEN
5471 
5472 
5473 
5474       FORALL I IN l_territory_code_col.FIRST..l_territory_code_col.LAST
5475 
5476          INSERT INTO IEC_G_MKTG_ITEM_CC_TZS ( ITM_CC_TZ_ID
5477 
5478                                             , SUBSET_ID
5479 
5480                                             , LIST_HEADER_ID
5481 
5482                                             , CAMPAIGN_SCHEDULE_ID
5483 
5484                                             , TERRITORY_CODE
5485 
5486                                             , REGION_ID
5487 
5488                                             , TIMEZONE_ID
5489 
5490                                             , LAST_CALLABLE_TIME
5491 
5492                                             , CALLABLE_FLAG
5493 
5494                                             , RECORD_COUNT
5495 
5496                                             , OBJECT_VERSION_NUMBER
5497 
5498                                             , LAST_UPDATE_DATE)
5499 
5500                                      VALUES ( l_tc_tz_pair_id_col(I)
5501 
5502                                             , l_subset_id_col(I)
5503 
5504                                             , p_list_id
5505 
5506                                             , p_campaign_schedule_id
5507 
5508                                             , l_territory_code_col(I)
5509 
5510                                             , l_region_col(I)
5511 
5512                                             , l_timezone_col(I)
5513 
5514                                             , NULL
5515 
5516                                             , NULL
5517 
5518                                             , l_record_count_col(I)
5519 
5520                                             , 1
5521 
5522                                             , SYSDATE);
5523 
5524    END IF;
5525 
5526 
5527 
5528    -- Only update the RECORD_COUNT column for those tc/tz pairs that already exist in the db (outside of cache)
5529 
5530    SELECT TC_TZ_PAIR_ID, RECORD_COUNT
5531 
5532    BULK COLLECT INTO l_tc_tz_pair_id_col, l_record_count_col
5533 
5534    FROM IEC_TC_TZ_PAIRS_CACHE
5535 
5536    WHERE CACHE_ONLY_FLAG = 'N';
5537 
5538 
5539 
5540    IF l_tc_tz_pair_id_col IS NOT NULL AND l_tc_tz_pair_id_col.COUNT > 0 THEN
5541 
5542 
5543 
5544       FORALL I IN l_tc_tz_pair_id_col.FIRST..l_tc_tz_pair_id_col.LAST
5545 
5546          UPDATE IEC_G_MKTG_ITEM_CC_TZS
5547 
5548          SET RECORD_COUNT = RECORD_COUNT + l_record_count_col(I)
5549 
5550            , LAST_UPDATE_DATE = SYSDATE
5551 
5552          WHERE ITM_CC_TZ_ID = l_tc_tz_pair_id_col(I);
5553 
5554    END IF;
5555 
5556 
5557 
5558    -- Update these records to reflect the fact that they now exist outside of the cache
5559 
5560    UPDATE IEC_TC_TZ_PAIRS_CACHE
5561 
5562    SET CACHE_ONLY_FLAG = 'N'
5563 
5564    WHERE CACHE_ONLY_FLAG = 'Y';
5565 
5566 
5567 
5568    -- Clear record counts in cache to start fresh for next batch
5569 
5570    UPDATE IEC_TC_TZ_PAIRS_CACHE
5571 
5572    SET RECORD_COUNT = 0;
5573 
5574 
5575 
5576 EXCEPTION
5577 
5578    WHEN OTHERS THEN
5579 
5580       Log( 'Purge_CallableZones'
5581 
5582          , 'MAIN'
5583 
5584          , SQLERRM
5585 
5586          );
5587 
5588       RAISE fnd_api.g_exc_unexpected_error;
5589 
5590 
5591 
5592 END Purge_CallableZones;
5593 
5594 
5595 
5596 PROCEDURE Update_IecReturnEntries
5597 
5598    ( p_list_id              IN NUMBER
5599 
5600    , p_campaign_schedule_id IN NUMBER
5601 
5602    , p_campaign_id          IN NUMBER
5603 
5604    , p_source_type_view     IN VARCHAR2)
5605 
5606 IS
5607 
5608    l_user_id NUMBER;
5609 
5610    l_login_id NUMBER;
5611 
5612 BEGIN
5613 
5614    l_user_id := nvl(FND_GLOBAL.user_id, -1);
5615 
5616    l_login_id := nvl(FND_GLOBAL.conc_login_id, -1);
5617 
5618 
5619 
5620    BEGIN
5621 
5622       EXECUTE IMMEDIATE
5623 
5624          'UPDATE IEC_G_RETURN_ENTRIES A
5625 
5626           SET ( A.SUBSET_ID
5627 
5628               , A.DO_NOT_USE_FLAG
5629 
5630               , A.DO_NOT_USE_REASON
5631 
5632               , A.CONTACT_POINT_ID
5633 
5634               , A.CONTACT_POINT_INDEX
5635 
5636               , A.COUNTRY_CODE
5637 
5638               , A.AREA_CODE
5639 
5640               , A.PHONE_NUMBER
5641 
5642               , A.RAW_PHONE_NUMBER
5643 
5644               , A.TIME_ZONE
5645 
5646               , A.ITM_CC_TZ_ID
5647 
5648 			  , A.PHONE_LINE_TYPE
5649 
5650 			  , A.CONTACT_POINT_PURPOSE )
5651 
5652              =
5653 
5654               ( SELECT B.SUBSET_ID
5655 
5656               , B.DO_NOT_USE_FLAG
5657 
5658               , B.DO_NOT_USE_REASON
5659 
5660               , B.CURR_CP_ID
5661 
5662               , B.CURR_CP_INDEX
5663 
5664               , B.CURR_CP_COUNTRY_CODE
5665 
5666               , B.CURR_CP_AREA_CODE
5667 
5668               , B.CURR_CP_PHONE_NUMBER
5669 
5670               , B.CURR_CP_RAW_PHONE_NUMBER
5671 
5672               , B.CURR_CP_TIME_ZONE
5673 
5674               , B.CURR_CP_MKTG_ITEM_CC_TZS_ID
5675 
5676               , B.CURR_CP_PHONE_LINE_TYPE
5677 
5678               , B.CURR_CP_CONTACT_POINT_PURPOSE
5679 
5680               FROM IEC_VAL_ENTRY_CACHE B
5681 
5682               WHERE A.LIST_ENTRY_ID = B.LIST_ENTRY_ID)
5683 
5684            , LAST_UPDATED_BY = :login_id
5685 
5686            , LAST_UPDATE_DATE = SYSDATE
5687 
5688            , LAST_UPDATE_LOGIN = :login_id
5689 
5690            WHERE A.LIST_HEADER_ID = :list_id
5691 
5692            AND A.LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID FROM IEC_VAL_ENTRY_CACHE)'
5693 
5694       USING l_login_id, l_login_id, p_list_id;
5695 
5696 
5697 
5698    EXCEPTION
5699 
5700       WHEN OTHERS THEN
5701 
5702          Log( 'Update_IecReturnEntries'
5703 
5704             , 'UPDATE_EXISTING_ENTRIES'
5705 
5706             , SQLERRM
5707 
5708             );
5709 
5710          RAISE fnd_api.g_exc_unexpected_error;
5711 
5712    END;
5713 
5714 
5715 
5716    BEGIN
5717 
5718       EXECUTE IMMEDIATE
5719 
5720          'DELETE IEC_G_RETURN_ENTRIES A
5721 
5722           WHERE A.LIST_HEADER_ID = :list_id
5723 
5724           AND A.LIST_ENTRY_ID IN
5725 
5726               ( SELECT LIST_ENTRY_ID
5727 
5728                 FROM IEC_VAL_ENTRY_CACHE
5729 
5730                 WHERE DO_NOT_USE_FLAG = ''Y''
5731 
5732                 AND DO_NOT_USE_REASON = ''4'')'
5733 
5734       USING p_list_id;
5735 
5736 
5737 
5738    EXCEPTION
5739 
5740       WHEN OTHERS THEN
5741 
5742          Log( 'Update_IecReturnEntries'
5743 
5744             , 'DELETE_INVALIDATED_ENTRIES'
5745 
5746             , SQLERRM
5747 
5748             );
5749 
5750          RAISE fnd_api.g_exc_unexpected_error;
5751 
5752    END;
5753 
5754 
5755 
5756    BEGIN
5757 
5758       EXECUTE IMMEDIATE
5759 
5760          'INSERT INTO IEC_G_RETURN_ENTRIES
5761 
5762                 ( RETURNS_ID
5763 
5764                 , CAMPAIGN_ID
5765 
5766                 , CAMPAIGN_SCHEDULE_ID
5767 
5768                 , LIST_VIEW_NAME
5769 
5770                 , LIST_HEADER_ID
5771 
5772                 , LIST_ENTRY_ID
5773 
5774                 , SUBSET_ID
5775 
5776                 , OUTCOME_ID
5777 
5778                 , RESULT_ID
5779 
5780                 , REASON_ID
5781 
5782                 , DELIVER_IH_FLAG
5783 
5784                 , RECYCLE_FLAG
5785 
5786                 , DO_NOT_USE_FLAG
5787 
5788                 , CALLBACK_FLAG
5789 
5790                 , RECORD_OUT_FLAG
5791 
5792                 , RECORD_RELEASE_TIME
5793 
5794                 , CONTACT_POINT_ID
5795 
5796                 , CONTACT_POINT_INDEX
5797 
5798                 , COUNTRY_CODE
5799 
5800                 , AREA_CODE
5801 
5802                 , PHONE_NUMBER
5803 
5804                 , RAW_PHONE_NUMBER
5805 
5806                 , TIME_ZONE
5807 
5808                 , PHONE_LINE_TYPE
5809 
5810                 , CONTACT_POINT_PURPOSE
5811 
5812                 , ITM_CC_TZ_ID
5813 
5814                 , CREATED_BY
5815 
5816                 , CREATION_DATE
5817 
5818                 , LAST_UPDATED_BY
5819 
5820                 , LAST_UPDATE_DATE
5821 
5822                 , LAST_UPDATE_LOGIN )
5823 
5824           SELECT  IEC_G_RETURN_ENTRIES_S.NEXTVAL
5825 
5826                 , :campaign_id
5827 
5828                 , :campaign_schedule_id
5829 
5830                 , :source_type_view
5831 
5832                 , :list_id
5833 
5834                 , LIST_ENTRY_ID
5835 
5836                 , SUBSET_ID
5837 
5838                 , -1
5839 
5840                 , -1
5841 
5842                 , -1
5843 
5844                 , ''N''
5845 
5846                 , ''N''
5847 
5848                 , ''N''
5849 
5850                 , ''N''
5851 
5852                 , ''N''
5853 
5854                 , SYSDATE
5855 
5856                 , CURR_CP_ID
5857 
5858                 , CURR_CP_INDEX
5859 
5860                 , CURR_CP_COUNTRY_CODE
5861 
5862                 , CURR_CP_AREA_CODE
5863 
5864                 , CURR_CP_PHONE_NUMBER
5865 
5866                 , CURR_CP_RAW_PHONE_NUMBER
5867 
5868                 , CURR_CP_TIME_ZONE
5869 
5870                 , CURR_CP_PHONE_LINE_TYPE
5871 
5872                 , CURR_CP_CONTACT_POINT_PURPOSE
5873 
5874                 , CURR_CP_MKTG_ITEM_CC_TZS_ID
5875 
5876                 , :user_id
5877 
5878                 , sysdate
5879 
5880                 , :login_id
5881 
5882                 , sysdate
5883 
5884                 , :login_id
5885 
5886           FROM IEC_VAL_ENTRY_CACHE
5887 
5888           WHERE DO_NOT_USE_FLAG = ''N''
5889 
5890           AND LIST_ENTRY_ID NOT IN (SELECT LIST_ENTRY_ID FROM IEC_G_RETURN_ENTRIES WHERE LIST_HEADER_ID = :list_id)'
5891 
5892       USING p_campaign_id, p_campaign_schedule_id, p_source_type_view, p_list_id, l_user_id, l_login_id, l_login_id, p_list_id;
5893 
5894 
5895 
5896    EXCEPTION
5897 
5898       WHEN OTHERS THEN
5899 
5900          Log( 'Update_IecReturnEntries'
5901 
5902             , 'INSERTING_NEW_ENTRIES'
5903 
5904             , SQLERRM
5905 
5906             );
5907 
5908          RAISE fnd_api.g_exc_unexpected_error;
5909 
5910    END;
5911 
5912 
5913 
5914 EXCEPTION
5915 
5916    WHEN fnd_api.g_exc_error THEN
5917 
5918       RAISE;
5919 
5920    WHEN fnd_api.g_exc_unexpected_error THEN
5921 
5922       RAISE;
5923 
5924    WHEN OTHERS THEN
5925 
5926       Log( 'Update_IecReturnEntries'
5927 
5928          , 'MAIN'
5929 
5930          , SQLERRM
5931 
5932          );
5933 
5934       RAISE fnd_api.g_exc_unexpected_error;
5935 
5936 
5937 
5938 END Update_IecReturnEntries;
5939 
5940 
5941 
5942 PROCEDURE Init_SubsetRtInfo
5943 
5944    ( p_list_id          IN            NUMBER
5945 
5946    , p_source_type_view IN            VARCHAR2
5947 
5948    , x_subset_id_col       OUT NOCOPY SYSTEM.number_tbl_type    -- OUT
5949 
5950    , x_subset_view_col     OUT NOCOPY SYSTEM.varchar_tbl_type)  -- OUT
5951 
5952 IS
5953 
5954    l_subset_id   NUMBER(15);
5955 
5956    l_return_code VARCHAR2(1);
5957 
5958    l_validated_once VARCHAR2(1);
5959 
5960 BEGIN
5961 
5962 
5963 
5964    x_subset_id_col := SYSTEM.number_tbl_type();
5965 
5966    x_subset_view_col := SYSTEM.varchar_tbl_type();
5967 
5968 
5969 
5970    BEGIN
5971 
5972       EXECUTE IMMEDIATE
5973 
5974          'SELECT VALIDATED_ONCE_FLAG
5975 
5976           FROM IEC_O_VALIDATION_STATUS
5977 
5978        WHERE LIST_HEADER_ID = :list_id'
5979 
5980       INTO  l_validated_once
5981 
5982       USING p_list_id;
5983 
5984    EXCEPTION
5985 
5986       WHEN NO_DATA_FOUND THEN
5987 
5988          l_validated_once := 'N';
5989 
5990       WHEN OTHERS THEN
5991 
5992          RAISE;
5993 
5994    END;
5995 
5996 
5997 
5998    IF l_validated_once = 'Y' THEN
5999 
6000 
6001 
6002       -- Loop through each subset (in order of priority, default subset assumed to have lowest load priority)
6003 
6004       FOR subset_rec IN (SELECT   A.LIST_SUBSET_ID
6005 
6006                         ,         A.LOAD_PRIORITY
6007 
6008                         ,         NVL(B.DEFAULT_SUBSET_FLAG, 'N') SUBSET_FLAG
6009 
6010                         FROM      IEC_G_SUBSET_RT_INFO A, IEC_G_LIST_SUBSETS B
6011 
6012                         WHERE     A.LIST_SUBSET_ID = B.LIST_SUBSET_ID
6013 
6014                         AND       B.LIST_HEADER_ID = p_list_id
6015 
6016                         AND       A.STATUS_CODE <> 'DELETED'
6017 
6018                         ORDER BY  NVL(B.DEFAULT_SUBSET_FLAG, 'N') ASC, A.LOAD_PRIORITY)
6019 
6020       LOOP
6021 
6022          l_subset_id := subset_rec.LIST_SUBSET_ID;
6023 
6024 
6025 
6026          x_subset_id_col.EXTEND(1);
6027 
6028          x_subset_view_col.EXTEND(1);
6029 
6030 
6031 
6032          x_subset_id_col(x_subset_id_col.LAST) := l_subset_id;
6033 
6034 
6035 
6036          -- Retrieve Subset View (Created if necessary, but should already exist)
6037 
6038          x_subset_view_col(x_subset_view_col.LAST) := IEC_SUBSET_PVT.GET_SUBSET_VIEW
6039 
6040                                                       ( 0
6041 
6042                                                       , p_list_id
6043 
6044                                                       , subset_rec.LIST_SUBSET_ID
6045 
6046                                                       , subset_rec.SUBSET_FLAG
6047 
6048                                                       , p_source_type_view
6049 
6050                                                       , l_return_code);
6051 
6052 
6053 
6054          IF l_return_code <> FND_API.G_RET_STS_SUCCESS THEN
6055 
6056             Log_GetSubsetViewError('Init_SubsetRtInfo', 'GET_SUBSET_VIEW', Get_SubsetName(l_subset_id), Get_ListName(p_list_id));
6057 
6058             RAISE fnd_api.g_exc_unexpected_error;
6059 
6060          END IF;
6061 
6062 
6063 
6064       END LOOP;
6065 
6066 
6067 
6068    ELSE
6069 
6070 
6071 
6072       -- Loop through each subset (in order of priority, default subset assumed to have lowest load priority)
6073 
6074       FOR subset_rec IN (SELECT   LIST_SUBSET_ID
6075 
6076                         ,         LOAD_PRIORITY
6077 
6078                         ,         NVL(DEFAULT_SUBSET_FLAG, 'N') SUBSET_FLAG
6079 
6080                         FROM      IEC_G_LIST_SUBSETS
6081 
6082                         WHERE     LIST_HEADER_ID = p_list_id
6083 
6084                         AND       STATUS_CODE <> 'DELETED'
6085 
6086                         ORDER BY  NVL(DEFAULT_SUBSET_FLAG, 'N') ASC, LOAD_PRIORITY)
6087 
6088       LOOP
6089 
6090          l_subset_id := subset_rec.LIST_SUBSET_ID;
6091 
6092 
6093 
6094          x_subset_id_col.EXTEND(1);
6095 
6096          x_subset_view_col.EXTEND(1);
6097 
6098 
6099 
6100          x_subset_id_col(x_subset_id_col.LAST) := l_subset_id;
6101 
6102 
6103 
6104          -- Retrieve Subset View (Created if necessary)
6105 
6106          x_subset_view_col(x_subset_view_col.LAST) := IEC_SUBSET_PVT.GET_SUBSET_VIEW
6107 
6108                                                       ( 0
6109 
6110                                                       , p_list_id
6111 
6112                                                       , subset_rec.LIST_SUBSET_ID
6113 
6114                                                       , subset_rec.SUBSET_FLAG
6115 
6116                                                       , p_source_type_view
6117 
6118                                                       , l_return_code);
6119 
6120 
6121 
6122          IF l_return_code <> FND_API.G_RET_STS_SUCCESS THEN
6123 
6124             Log_GetSubsetViewError('Init_SubsetRtInfo', 'GET_SUBSET_VIEW', Get_SubsetName(l_subset_id), Get_ListName(p_list_id));
6125 
6126             Log('Init_SubsetRtInfo', 'GET_SUBSET_VIEW');
6127 
6128             RAISE fnd_api.g_exc_unexpected_error;
6129 
6130          END IF;
6131 
6132 
6133 
6134          IEC_SUBSET_PVT.CREATE_SUBSET_RT_INFO(l_subset_id);
6135 
6136 
6137 
6138       END LOOP;
6139 
6140    END IF;
6141 
6142 
6143 
6144 EXCEPTION
6145 
6146    WHEN fnd_api.g_exc_error THEN
6147 
6148       RAISE;
6149 
6150    WHEN fnd_api.g_exc_unexpected_error THEN
6151 
6152       RAISE;
6153 
6154    WHEN OTHERS THEN
6155 
6156       Log( 'Init_SubsetRtInfo'
6157 
6158          , 'MAIN'
6159 
6160          , SQLERRM
6161 
6162          );
6163 
6164       RAISE fnd_api.g_exc_unexpected_error;
6165 
6166 
6167 
6168 END Init_SubsetRtInfo;
6169 
6170 
6171 
6172 PROCEDURE Partition_SubsetEntries
6173 
6174    ( p_list_id               IN            NUMBER
6175 
6176    , p_subset_id_col         IN            SYSTEM.number_tbl_type
6177 
6178    , p_subset_view_col       IN            SYSTEM.varchar_tbl_type
6179 
6180    , x_subset_rec_loaded_col    OUT NOCOPY SYSTEM.number_tbl_type)   -- OUT
6181 
6182 IS
6183 
6184 BEGIN
6185 
6186 
6187 
6188    x_subset_rec_loaded_col := SYSTEM.number_tbl_type();
6189 
6190 
6191 
6192    IF p_subset_id_col IS NOT NULL AND p_subset_id_col.COUNT > 1 THEN
6193 
6194 
6195 
6196       -- Loop through each subset (in order of priority, excluding default subset)
6197 
6198       FOR i IN 1..(p_subset_id_col.COUNT - 1) LOOP
6199 
6200 
6201 
6202          IF p_subset_view_col(i) IS NOT NULL THEN
6203 
6204             EXECUTE IMMEDIATE
6205 
6206                'UPDATE IEC_VAL_ENTRY_CACHE
6207 
6208                 SET SUBSET_ID = :subset_id
6209 
6210                 WHERE SUBSET_ID IS NULL
6211 
6212                 AND DO_NOT_USE_FLAG = ''N''
6213 
6214                 AND LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID FROM ' || p_subset_view_col(i) || ')'
6215 
6216             USING p_subset_id_col(i);
6217 
6218 
6219 
6220             x_subset_rec_loaded_col.EXTEND(1);
6221 
6222             x_subset_rec_loaded_col(i) := SQL%ROWCOUNT;
6223 
6224 
6225 
6226          ELSE
6227 
6228             Log_SubsetViewDoesNotExist('Partition_SubsetEntries', 'ASSIGN_ENTRIES_TO_SUBSET', Get_SubsetName(p_subset_id_col(i)), Get_ListName(p_list_id));
6229 
6230             RAISE fnd_api.g_exc_unexpected_error;
6231 
6232          END IF;
6233 
6234 
6235 
6236       END LOOP;
6237 
6238 
6239 
6240       -- Assign all remaining entries to default subset
6241 
6242       EXECUTE IMMEDIATE
6243 
6244          'UPDATE IEC_VAL_ENTRY_CACHE
6245 
6246           SET SUBSET_ID = :subset_id
6247 
6248           WHERE SUBSET_ID IS NULL
6249 
6250           AND DO_NOT_USE_FLAG = ''N'''
6251 
6252       USING p_subset_id_col(p_subset_id_col.LAST);
6253 
6254 
6255 
6256       x_subset_rec_loaded_col.EXTEND(1);
6257 
6258       x_subset_rec_loaded_col(x_subset_rec_loaded_col.LAST) := SQL%ROWCOUNT;
6259 
6260 
6261 
6262    ELSIF p_subset_id_col IS NOT NULL AND p_subset_id_col.COUNT = 1 THEN
6263 
6264 
6265 
6266       -- No user-defined subsets exist, assign all entries to default subset
6267 
6268       EXECUTE IMMEDIATE
6269 
6270          'UPDATE IEC_VAL_ENTRY_CACHE
6271 
6272           SET SUBSET_ID = :subset_id
6273 
6274           WHERE SUBSET_ID IS NULL
6275 
6276           AND DO_NOT_USE_FLAG = ''N'''
6277 
6278       USING p_subset_id_col(p_subset_id_col.LAST);
6279 
6280 
6281 
6282       x_subset_rec_loaded_col.EXTEND(1);
6283 
6284       x_subset_rec_loaded_col(x_subset_rec_loaded_col.LAST) := SQL%ROWCOUNT;
6285 
6286 
6287 
6288    END IF;
6289 
6290 
6291 
6292 EXCEPTION
6293 
6294    WHEN fnd_api.g_exc_error THEN
6295 
6296       RAISE;
6297 
6298    WHEN fnd_api.g_exc_unexpected_error THEN
6299 
6300       RAISE;
6301 
6302    WHEN OTHERS THEN
6303 
6304       Log( 'Partition_SubsetEntries'
6305 
6306          , 'MAIN'
6307 
6308          , SQLERRM
6309 
6310          );
6311 
6312       RAISE fnd_api.g_exc_unexpected_error;
6313 
6314 
6315 
6316 END Partition_SubsetEntries;
6317 
6318 
6319 
6320 FUNCTION Parse_Country_Code
6321 
6322    (x_phone_number IN OUT NOCOPY VARCHAR2) -- IN OUT
6323 
6324 RETURN VARCHAR2
6325 
6326 IS
6327 
6328    l_country_code         VARCHAR2(9);
6329 
6330    l_country_code_col     SYSTEM.varchar_tbl_type := SYSTEM.varchar_tbl_type();
6331 
6332    l_cc_substr            VARCHAR2(500);
6333 
6334 
6335 
6336 BEGIN
6337 
6338 
6339 
6340    x_phone_number := TRANSLATE( UPPER(x_phone_number)
6341 
6342                               , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
6343 
6344                               , '0123456789');
6345 
6346 
6347 
6348    IF x_phone_number IS NOT NULL AND g_enable_cc_incr_parse THEN
6349 
6350 
6351 
6352       IF g_cc_cc_lookup_tbl IS NOT NULL THEN
6353 
6354          FOR I IN 1..LENGTH(x_phone_number) LOOP
6355 
6356             l_cc_substr := SUBSTR(x_phone_number, 1, I);
6357 
6358             FOR J IN g_cc_cc_lookup_tbl.FIRST..g_cc_cc_lookup_tbl.LAST LOOP
6359 
6360                IF g_cc_cc_lookup_tbl.EXISTS(J) AND l_cc_substr = g_cc_cc_lookup_tbl(J) THEN
6361 
6362                   l_country_code := g_cc_cc_lookup_tbl(J);
6363 
6364                   GOTO Done;
6365 
6366                END IF;
6367 
6368             END LOOP;
6369 
6370          END LOOP;
6371 
6372       END IF;
6373 
6374    END IF;
6375 
6376 
6377 
6378 <<Done>>
6379 
6380    IF l_country_code IS NOT NULL THEN
6381 
6382       x_phone_number := SUBSTR(x_phone_number, LENGTH(l_country_code) + 1);
6383 
6384    END IF;
6385 
6386    RETURN l_country_code;
6387 
6388 
6389 
6390 EXCEPTION
6391 
6392    WHEN fnd_api.g_exc_error THEN
6393 
6394       RAISE;
6395 
6396    WHEN fnd_api.g_exc_unexpected_error THEN
6397 
6398       RAISE;
6399 
6400    WHEN OTHERS THEN
6401 
6402       Log( 'Parse_Country_Code'
6403 
6404          , 'MAIN'
6405 
6406          , SQLERRM
6407 
6408          );
6409 
6410       RAISE fnd_api.g_exc_unexpected_error;
6411 
6412 
6413 
6414 END Parse_Country_Code;
6415 
6416 
6417 
6418 PROCEDURE Parse_Area_Code
6419 
6420    ( x_phone_number       IN OUT NOCOPY VARCHAR2   -- IN OUT
6421 
6422    , x_country_code       IN OUT NOCOPY VARCHAR2   -- IN OUT
6423 
6424    , x_territory_code     IN OUT NOCOPY VARCHAR2   -- IN OUT
6425 
6426    , x_area_code             OUT NOCOPY VARCHAR2   -- OUT
6427 
6428    , x_area_code_req_flag    OUT NOCOPY BOOLEAN)   -- OUT
6429 
6430 IS
6431 
6432    l_area_code          VARCHAR2(9);
6433 
6434    l_area_code_size     NUMBER(9);
6435 
6436    l_area_code_col      SYSTEM.varchar_tbl_type := SYSTEM.varchar_tbl_type();
6437 
6438    l_ac_substr          VARCHAR2(500);
6439 
6440 BEGIN
6441 
6442 
6443 
6444    -- Assume that a 0 length area code is invalid, until we find a phone format
6445 
6446    -- specifying an area code length of 0
6447 
6448    x_area_code_req_flag := TRUE;
6449 
6450 
6451 
6452    x_phone_number := TRANSLATE( x_phone_number
6453 
6454                               , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
6455 
6456                               , '0123456789');
6457 
6458 
6459 
6460    -- Attempt to parse area code
6461 
6462    -- Use phone format defined for country code
6463 
6464    -- Look for fixed length area code size
6465 
6466    IF x_country_code IS NOT NULL AND g_ac_length_tbl.EXISTS(x_country_code)
6467 
6468    THEN
6469 
6470       l_area_code_size := g_ac_length_tbl(x_country_code);
6471 
6472       IF l_area_code_size IS NOT NULL THEN
6473 
6474          GOTO Done;  -- Found area code size, finish up
6475 
6476       END IF;
6477 
6478    END IF;
6479 
6480 
6481 
6482    -- Attempt to parse area code
6483 
6484    -- Using phone format defined for territory code
6485 
6486    -- Look for matching variable length area code size
6487 
6488    IF l_area_code IS NULL AND x_territory_code IS NOT NULL THEN
6489 
6490 
6491 
6492       BEGIN
6493 
6494          EXECUTE IMMEDIATE
6495 
6496             'SELECT DISTINCT AREA_CODE_SIZE
6497 
6498              FROM HZ_PHONE_FORMATS
6499 
6500              WHERE TERRITORY_CODE = :territory_code
6501 
6502              AND LENGTH(TRIM(TRANSLATE( UPPER(PHONE_FORMAT_STYLE)
6503 
6504                                       , ''9012345678ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., ''
6505 
6506                                       , ''9''
6507 
6508                                       ))) = LENGTH(:phone_number)
6509 
6510              AND ROWNUM = 1'
6511 
6512          INTO l_area_code_size
6513 
6514          USING x_territory_code, x_phone_number;
6515 
6516       EXCEPTION
6517 
6518          WHEN NO_DATA_FOUND THEN
6519 
6520             NULL;
6521 
6522          WHEN OTHERS THEN
6523 
6524             Log( 'Parse_Area_Code'
6525 
6526                , 'GET_VARIABLE_AREA_CODE_LENGTH_TC'
6527 
6528                , SQLERRM
6529 
6530                );
6531 
6532             RAISE fnd_api.g_exc_unexpected_error;
6533 
6534       END;
6535 
6536 
6537 
6538       IF l_area_code_size IS NOT NULL THEN
6539 
6540          GOTO Done;  -- Found area code size, finish up
6541 
6542       END IF;
6543 
6544 
6545 
6546    END IF;
6547 
6548 
6549 
6550    -- Attempt to parse area code
6551 
6552    -- Use phone format defined for country code
6553 
6554    -- Look for matching variable length area code size
6555 
6556    IF l_area_code IS NULL AND x_country_code IS NOT NULL
6557 
6558    THEN
6559 
6560      -- Get area code size for phone country code (area code not fixed length)
6561 
6562       BEGIN
6563 
6564          EXECUTE IMMEDIATE
6565 
6566             'SELECT DISTINCT A.AREA_CODE_SIZE
6567 
6568              FROM HZ_PHONE_FORMATS A, HZ_PHONE_COUNTRY_CODES B
6569 
6570              WHERE A.TERRITORY_CODE = B.TERRITORY_CODE AND B.PHONE_COUNTRY_CODE = :country_code
6571 
6572              AND LENGTH(TRIM(TRANSLATE( UPPER(PHONE_FORMAT_STYLE)
6573 
6574                                       , ''9012345678ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., ''
6575 
6576                                       , ''9''))) = LENGTH(:phone_number)
6577 
6578              AND ROWNUM = 1'
6579 
6580          INTO l_area_code_size
6581 
6582          USING x_country_code, x_phone_number;
6583 
6584       EXCEPTION
6585 
6586          WHEN NO_DATA_FOUND THEN
6587 
6588             NULL;
6589 
6590          WHEN OTHERS THEN
6591 
6592             Log( 'Parse_Area_Code'
6593 
6594                , 'GET_VARIABLE_AREA_CODE_LENGTH_CC'
6595 
6596                , SQLERRM
6597 
6598                );
6599 
6600             RAISE fnd_api.g_exc_unexpected_error;
6601 
6602       END;
6603 
6604 
6605 
6606       IF l_area_code_size IS NOT NULL THEN
6607 
6608          GOTO Done;  -- Found area code size, finish up
6609 
6610       END IF;
6611 
6612 
6613 
6614    END IF;
6615 
6616 
6617 
6618    -- Attempt incremental parsing of area code
6619 
6620    IF  l_area_code IS NULL
6621 
6622    AND x_country_code IS NOT NULL
6623 
6624    AND g_enable_ac_incr_parse
6625 
6626    THEN
6627 
6628       l_area_code_size := NULL;  -- Size not relevant to incremental parsing
6629 
6630 
6631 
6632       BEGIN
6633 
6634          EXECUTE IMMEDIATE
6635 
6636             'BEGIN
6637 
6638              SELECT DISTINCT AREA_CODE BULK COLLECT INTO :area_code_col
6639 
6640              FROM HZ_PHONE_AREA_CODES
6641 
6642              WHERE PHONE_COUNTRY_CODE = :country_code
6643 
6644              AND AREA_CODE LIKE CONCAT(SUBSTR(:phone_number, 1, 1), ''%'')
6645 
6646              ORDER BY AREA_CODE;
6647 
6648              END;'
6649 
6650          USING OUT l_area_code_col, IN x_country_code, IN x_phone_number;
6651 
6652 
6653 
6654          IF l_area_code_col IS NOT NULL AND l_area_code_col.COUNT > 0 THEN
6655 
6656             FOR I IN 1..LENGTH(x_phone_number) LOOP
6657 
6658                l_ac_substr := SUBSTR(x_phone_number, 1, I);
6659 
6660                FOR J IN 1..l_area_code_col.LAST LOOP
6661 
6662                   IF l_ac_substr = l_area_code_col(J) THEN
6663 
6664                      l_area_code := l_area_code_col(J);
6665 
6666                      GOTO DONE;
6667 
6668                   END IF;
6669 
6670                END LOOP;
6671 
6672             END LOOP;
6673 
6674          END IF;
6675 
6676       EXCEPTION
6677 
6678          WHEN OTHERS THEN
6679 
6680             Log( 'Parse_Area_Code'
6681 
6682                , 'PARSE_AREA_CODE_INCR'
6683 
6684                , SQLERRM
6685 
6686                );
6687 
6688             RAISE fnd_api.g_exc_unexpected_error;
6689 
6690       END;
6691 
6692    END IF;
6693 
6694 
6695 
6696 <<Done>>
6697 
6698 
6699 
6700    -- Only use size to parse area code if not already parsed incrementally
6701 
6702    IF l_area_code_size IS NOT NULL THEN
6703 
6704 
6705 
6706       IF l_area_code_size = 0 THEN
6707 
6708          x_area_code_req_flag := FALSE;
6709 
6710       END IF;
6711 
6712 
6713 
6714       l_area_code := SUBSTR(x_phone_number, 1, l_area_code_size);
6715 
6716    END IF;
6717 
6718 
6719 
6720    IF l_area_code IS NOT NULL THEN
6721 
6722       x_phone_number := SUBSTR(x_phone_number, LENGTH(l_area_code) + 1);
6723 
6724    END IF;
6725 
6726 
6727 
6728    x_area_code := l_area_code;
6729 
6730 
6731 
6732 EXCEPTION
6733 
6734    WHEN fnd_api.g_exc_error THEN
6735 
6736       RAISE;
6737 
6738    WHEN fnd_api.g_exc_unexpected_error THEN
6739 
6740       RAISE;
6741 
6742    WHEN OTHERS THEN
6743 
6744       Log( 'Parse_Area_Code'
6745 
6746          , 'MAIN'
6747 
6748          , SQLERRM
6749 
6750          );
6751 
6752       RAISE fnd_api.g_exc_unexpected_error;
6753 
6754 
6755 
6756 END Parse_Area_Code;
6757 
6758 
6759 
6760 FUNCTION Create_Canonical_Number ( p_country_code IN VARCHAR2
6761 
6762                                  , p_area_code    IN VARCHAR2
6763 
6764                                  , p_phone_number IN VARCHAR2)
6765 
6766 RETURN VARCHAR2
6767 
6768 IS
6769 
6770 BEGIN
6771 
6772 
6773 
6774    RETURN '+' || p_country_code || ' (' || p_area_code || ') ' || p_phone_number;
6775 
6776 
6777 
6778 EXCEPTION
6779 
6780    WHEN OTHERS THEN
6781 
6782       Log( 'Create_Canonical_Number'
6783 
6784          , 'MAIN'
6785 
6786          , SQLERRM
6787 
6788          );
6789 
6790       RAISE fnd_api.g_exc_unexpected_error;
6791 
6792 
6793 
6794 END Create_Canonical_Number;
6795 
6796 
6797 
6798 PROCEDURE Get_Territory_Code ( p_country_code   IN            VARCHAR2
6799 
6800                              , p_area_code      IN            VARCHAR2
6801 
6802                              , x_territory_code    OUT NOCOPY VARCHAR2   -- OUT
6803 
6804                              , x_region            OUT NOCOPY VARCHAR2)  -- OUT
6805 
6806 IS
6807 
6808 BEGIN
6809 
6810 
6811 
6812    IF x_territory_code IS NULL AND g_territory_code IS NOT NULL THEN
6813 
6814       x_territory_code := g_territory_code;
6815 
6816    ELSIF x_territory_code IS NULL AND p_country_code IS NOT NULL THEN
6817 
6818 
6819 
6820       -- Look for territory with dedicated phone country code
6821 
6822       IF g_cc_tc_lookup_tbl.EXISTS(p_country_code) THEN
6823 
6824          x_territory_code := g_cc_tc_lookup_tbl(p_country_code);
6825 
6826       END IF;
6827 
6828 
6829 
6830       -- Look for territory using both the phone country code and area code
6831 
6832       -- Applies to territories that do not have a dedicated phone country code
6833 
6834       IF x_territory_code IS NULL AND p_country_code IS NOT NULL AND p_area_code IS NOT NULL THEN
6835 
6836          IF g_cc_ac_tc_lookup_tbl.EXISTS(p_country_code || p_area_code) THEN
6837 
6838             x_territory_code := g_cc_ac_tc_lookup_tbl(p_country_code || p_area_code);
6839 
6840          END IF;
6841 
6842       END IF;
6843 
6844 
6845 
6846    END IF;
6847 
6848 
6849 
6850    -- Derive region
6851 
6852    IF g_region_id IS NOT NULL THEN
6853 
6854       x_region := g_region_id;
6855 
6856    ELSIF x_territory_code IS NOT NULL AND p_area_code IS NOT NULL THEN
6857 
6858       -- determine corresponding region code
6859 
6860       BEGIN
6861 
6862          EXECUTE IMMEDIATE
6863 
6864             'SELECT REGION_ID
6865 
6866              FROM IEC_G_REGION_MAPPINGS
6867 
6868              WHERE TERRITORY_CODE = :territory_code AND PHONE_AREA_CODE = :area_code'
6869 
6870          INTO x_region
6871 
6872          USING x_territory_code, p_area_code;
6873 
6874       EXCEPTION
6875 
6876          WHEN NO_DATA_FOUND THEN
6877 
6878             NULL;
6879 
6880          WHEN OTHERS THEN
6881 
6882             Log( 'GET_TERRITORY_CODE'
6883 
6884                , 'GET_REGION_MAPPING'
6885 
6886                , SQLERRM
6887 
6888                );
6889 
6890             RAISE fnd_api.g_exc_unexpected_error;
6891 
6892       END;
6893 
6894    END IF;
6895 
6896 
6897 
6898 EXCEPTION
6899 
6900    WHEN fnd_api.g_exc_error THEN
6901 
6902       RAISE;
6903 
6904    WHEN fnd_api.g_exc_unexpected_error THEN
6905 
6906       RAISE;
6907 
6908    WHEN OTHERS THEN
6909 
6910       Log( 'Get_Territory_Code'
6911 
6912          , 'MAIN'
6913 
6914          , SQLERRM
6915 
6916          );
6917 
6918       RAISE fnd_api.g_exc_unexpected_error;
6919 
6920 
6921 
6922 END Get_Territory_Code;
6923 
6924 
6925 
6926 FUNCTION Get_Timezone_Id ( p_territory_code IN            VARCHAR2
6927 
6928                          , p_area_code      IN            VARCHAR2
6929 
6930                          , p_postal_code    IN            VARCHAR2
6931 
6932                          , p_timezone       IN            VARCHAR2
6933 
6934                          , x_dnu_reason        OUT NOCOPY NUMBER)   -- OUT
6935 
6936 
6937 
6938 RETURN NUMBER
6939 
6940 IS
6941 
6942    l_timezone_id    NUMBER(15);
6943 
6944    l_timezone       VARCHAR2(500);
6945 
6946    l_timezone_clean VARCHAR2(500);
6947 
6948    l_alt_timezone   VARCHAR2(500);
6949 
6950    l_count          NUMBER(9);
6951 
6952    l_index          PLS_INTEGER;
6953 
6954 BEGIN
6955 
6956 
6957 
6958    IF g_timezone_id IS NOT NULL THEN
6959 
6960       l_timezone_id := g_timezone_ID;
6961 
6962    END IF;
6963 
6964 
6965 
6966    IF l_timezone_id IS NULL AND (p_timezone IS NULL OR g_enable_tz_map_ovrd) THEN
6967 
6968       BEGIN
6969 
6970          EXECUTE IMMEDIATE
6971 
6972             'SELECT DISTINCT TIMEZONE_ID
6973 
6974              FROM IEC_TZ_MAPPING_CACHE
6975 
6976              WHERE TERRITORY_CODE = :territory_code
6977 
6978              AND (AREA_CODE = :area_code OR AREA_CODE IS NULL)'
6979 
6980          INTO l_timezone_id
6981 
6982          USING p_territory_code, p_area_code;
6983 
6984       EXCEPTION
6985 
6986          WHEN TOO_MANY_ROWS THEN
6987 
6988             NULL;
6989 
6990          WHEN NO_DATA_FOUND THEN
6991 
6992             NULL;
6993 
6994          WHEN OTHERS THEN
6995 
6996             Log( 'Get_Timezone_Id'
6997 
6998                , 'MAP_TC_AC_WITH_TIMEZONE'
6999 
7000                , SQLERRM
7001 
7002                );
7003 
7004             RAISE fnd_api.g_exc_unexpected_error;
7005 
7006       END;
7007 
7008 
7009 
7010       IF l_timezone_id IS NULL AND g_enable_zc_lookups THEN
7011 
7012          BEGIN
7013 
7014             EXECUTE IMMEDIATE
7015 
7016                'SELECT DISTINCT TIMEZONE_ID
7017 
7018                 FROM IEC_TZ_MAPPING_CACHE
7019 
7020                 WHERE TERRITORY_CODE = :territory_code
7021 
7022                 AND AREA_CODE = :area_code
7023 
7024                 AND POSTAL_CODE = :postal_code'
7025 
7026             INTO l_timezone_id
7027 
7028             USING p_territory_code, p_area_code, p_postal_code;
7029 
7030          EXCEPTION
7031 
7032             WHEN TOO_MANY_ROWS THEN
7033 
7034                NULL;
7035 
7036             WHEN NO_DATA_FOUND THEN
7037 
7038                NULL;
7039 
7040             WHEN OTHERS THEN
7041 
7042                Log( 'Get_Timezone_Id'
7043 
7044                   , 'MAP_TC_AC_PC_WITH_TIMEZONE'
7045 
7046                   , SQLERRM
7047 
7048                   );
7049 
7050                RAISE fnd_api.g_exc_unexpected_error;
7051 
7052          END;
7053 
7054       END IF;
7055 
7056    END IF;
7057 
7058 
7059 
7060    -- Try to interpret time zone data provided as id, gmt offset, or descriptive name
7061 
7062    IF l_timezone_id IS NULL AND p_timezone IS NOT NULL THEN
7063 
7064 
7065 
7066       l_timezone := UPPER(TRIM(p_timezone));
7067 
7068 
7069 
7070       l_timezone_clean := TRANSLATE( l_timezone
7071 
7072                                    , '0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZ/=()*&^%$#@!~`[]{}|\:;?><., '
7073 
7074                                    , '0123456789+-');
7075 
7076 
7077 
7078       -- Time zone is provided in numeric format (gmt offset, id)
7079 
7080       IF l_timezone_clean = l_timezone THEN
7081 
7082 
7083 
7084          -- Time zone is specified as an offset
7085 
7086          IF SUBSTR(l_timezone, 1, 1) = '+' OR SUBSTR(l_timezone, 1, 1) = '-' THEN
7087 
7088 
7089 
7090             BEGIN
7091 
7092                EXECUTE IMMEDIATE
7093 
7094                   'SELECT TIMEZONE_ID
7095 
7096                    FROM IEC_TZ_OFFSET_MAP_CACHE
7097 
7098                    WHERE OFFSET = :timezone
7099 
7100                    AND ROWNUM = 1'
7101 
7102                INTO l_timezone_id
7103 
7104                USING l_timezone;
7105 
7106             EXCEPTION
7107 
7108                WHEN NO_DATA_FOUND THEN
7109 
7110                   x_dnu_reason := 409;
7111 
7112                WHEN OTHERS THEN
7113 
7114                   Log( 'Get_Timezone_Id'
7115 
7116                      , 'MAP_GMT_OFFSET_WITH_TIMEZONE'
7117 
7118                      , SQLERRM
7119 
7120                      );
7121 
7122                   RAISE fnd_api.g_exc_unexpected_error;
7123 
7124             END;
7125 
7126 
7127 
7128          -- Time zone is specified as an id
7129 
7130          ELSE
7131 
7132             IF g_tz_lookup_tbl.EXISTS(l_timezone) THEN
7133 
7134                l_timezone_id := l_timezone;
7135 
7136             END IF;
7137 
7138          END IF;
7139 
7140 
7141 
7142       -- Time zone contains non-numeric characters, indicating descriptive name
7143 
7144       ELSE
7145 
7146 
7147 
7148          l_timezone := p_timezone;
7149 
7150          BEGIN
7151 
7152             BEGIN
7153 
7154                EXECUTE IMMEDIATE
7155 
7156                   'SELECT TIMEZONE_ID
7157 
7158                    FROM IEC_TZ_OFFSET_MAP_CACHE
7159 
7160                    WHERE UPPER(OFFSET) = :timezone
7161 
7162                    AND ROWNUM = 1'
7163 
7164                INTO l_timezone_id
7165 
7166                USING l_timezone;
7167 
7168             EXCEPTION
7169 
7170                WHEN NO_DATA_FOUND THEN
7171 
7172                   NULL;
7173 
7174                WHEN OTHERS THEN
7175 
7176                   RAISE;
7177 
7178             END;
7179 
7180 
7181 
7182             IF l_timezone_id IS NULL THEN
7183 
7184 
7185 
7186                -- Assume time zone name is specified in long format ('America/New_York')
7187 
7188                l_timezone := REPLACE(l_timezone, ' ', '_');
7189 
7190                BEGIN
7191 
7192                   EXECUTE IMMEDIATE   ---- bug6449880
7193 
7194                      'SELECT UPGRADE_TZ_ID
7195 
7196                       FROM FND_TIMEZONES_VL
7197 
7198                       WHERE UPPER(NAME) = :timezone_name
7199 
7200                       AND ROWNUM = 1'
7201 
7202                   INTO l_timezone_id
7203 
7204                   USING l_timezone;
7205 
7206                EXCEPTION
7207 
7208                   WHEN NO_DATA_FOUND THEN
7209 
7210                      x_dnu_reason := 430;
7211 
7212                   WHEN OTHERS THEN
7213 
7214                      RAISE;
7215 
7216                END;
7217 
7218             END IF;
7219 
7220 
7221 
7222          EXCEPTION
7223 
7224             WHEN OTHERS THEN
7225 
7226                Log( 'Get_Timezone_Id'
7227 
7228                   , 'MAP_NAME_WITH_TIMEZONE'
7229 
7230                   , SQLERRM
7231 
7232                   );
7233 
7234                RAISE fnd_api.g_exc_unexpected_error;
7235 
7236          END;
7237 
7238       END IF;
7239 
7240 
7241 
7242    END IF;
7243 
7244 
7245 
7246    IF l_timezone_id IS NOT NULL THEN
7247 
7248       x_dnu_reason := NULL;
7249 
7250    ELSIF x_dnu_reason IS NULL THEN
7251 
7252       x_dnu_reason := 404;
7253 
7254    END IF;
7255 
7256 
7257 
7258    RETURN l_timezone_id;
7259 
7260 
7261 
7262 EXCEPTION
7263 
7264    WHEN fnd_api.g_exc_error THEN
7265 
7266       RAISE;
7267 
7268    WHEN fnd_api.g_exc_unexpected_error THEN
7269 
7270       RAISE;
7271 
7272    WHEN OTHERS THEN
7273 
7274       Log( 'Get_Timezone_Id'
7275 
7276          , 'MAIN'
7277 
7278          , SQLERRM
7279 
7280          );
7281 
7282       RAISE fnd_api.g_exc_unexpected_error;
7283 
7284 
7285 
7286 END Get_Timezone_Id;
7287 
7288 
7289 
7290 FUNCTION Validate_Canonical_Number
7291 
7292    ( p_raw_phone_number IN            VARCHAR2
7293 
7294    , x_country_code     IN OUT NOCOPY VARCHAR2   -- IN OUT
7295 
7296    , x_area_code        IN OUT NOCOPY VARCHAR2   -- IN OUT
7297 
7298    , x_phone_number     IN OUT NOCOPY VARCHAR2   -- IN OUT
7299 
7300    , x_dnu_reason          OUT NOCOPY NUMBER)    -- OUT
7301 
7302 RETURN BOOLEAN
7303 
7304 IS
7305 
7306    l_cc_index  PLS_INTEGER;
7307 
7308    l_ac_index  PLS_INTEGER;
7309 
7310    l_pn_index  PLS_INTEGER;
7311 
7312    l_validated BOOLEAN := FALSE;
7313 
7314 
7315 
7316    l_area_code_clean VARCHAR2(500);
7317 
7318    l_country_code_clean VARCHAR2(500);
7319 
7320 BEGIN
7321 
7322 
7323 
7324    l_cc_index := INSTR(p_raw_phone_number, '+');
7325 
7326    l_ac_index := INSTR(p_raw_phone_number, ' (');
7327 
7328    l_pn_index := INSTR(p_raw_phone_number, ') ');
7329 
7330 
7331 
7332    IF l_cc_index = 1 AND l_ac_index <> 0 AND l_pn_index <> 0 THEN
7333 
7334 
7335 
7336       x_country_code := SUBSTR(p_raw_phone_number, l_cc_index + 1, (l_ac_index - l_cc_index - 1));
7337 
7338 
7339 
7340       l_country_code_clean := TRANSLATE( UPPER(x_country_code)
7341 
7342                                        , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
7343 
7344                                        , '0123456789');
7345 
7346 
7347 
7348       -- Invalidate record if country code contains non-numeric characters
7349 
7350       IF l_country_code_clean <> x_country_code THEN
7351 
7352          x_country_code := NULL;
7353 
7354          x_dnu_reason := 423;
7355 
7356          RETURN l_validated;
7357 
7358       END IF;
7359 
7360 
7361 
7362       x_area_code := SUBSTR(p_raw_phone_number, l_ac_index + 2, (l_pn_index - l_ac_index - 2));
7363 
7364 
7365 
7366       l_area_code_clean := TRANSLATE( UPPER(x_area_code)
7367 
7368                                     , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
7369 
7370                                     , '0123456789');
7371 
7372 
7373 
7374       -- Invalidate record if area code contains non-numeric characters
7375 
7376       IF l_area_code_clean <> x_area_code THEN
7377 
7378          x_area_code := NULL;
7379 
7380          x_dnu_reason := 424;
7381 
7382          RETURN l_validated;
7383 
7384       END IF;
7385 
7386 
7387 
7388       x_phone_number := SUBSTR(p_raw_phone_number, l_pn_index + 2
7389 
7390                               , (LENGTH(p_raw_phone_number) - l_pn_index - 1));
7391 
7392 
7393 
7394       x_phone_number := TRANSLATE( UPPER(x_phone_number)
7395 
7396                                  , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
7397 
7398                                  , '0123456789');
7399 
7400 
7401 
7402       IF x_country_code IS NOT NULL AND x_area_code IS NOT NULL AND x_phone_number IS NOT NULL THEN
7403 
7404          l_validated := TRUE;
7405 
7406       END IF;
7407 
7408 
7409 
7410    END IF;
7411 
7412 
7413 
7414    RETURN l_validated;
7415 
7416 
7417 
7418 EXCEPTION
7419 
7420    WHEN fnd_api.g_exc_error THEN
7421 
7422       RAISE;
7423 
7424    WHEN fnd_api.g_exc_unexpected_error THEN
7425 
7426       RAISE;
7427 
7428    WHEN OTHERS THEN
7429 
7430       Log( 'Validate_Canonical_Number'
7431 
7432          , 'MAIN'
7433 
7434          , SQLERRM
7435 
7436          );
7437 
7438       RAISE fnd_api.g_exc_unexpected_error;
7439 
7440 
7441 
7442 END Validate_Canonical_Number;
7443 
7444 
7445 
7446 FUNCTION Validate_Non_Canonical_Number
7447 
7448    ( x_raw_phone_number IN OUT NOCOPY VARCHAR2   -- IN OUT
7449 
7450    , x_country_code     IN OUT NOCOPY VARCHAR2   -- IN OUT
7451 
7452    , x_area_code        IN OUT NOCOPY VARCHAR2   -- IN OUT
7453 
7454    , x_phone_number     IN OUT NOCOPY VARCHAR2   -- IN OUT
7455 
7456    , x_territory_code   IN OUT NOCOPY VARCHAR2   -- IN OUT
7457 
7458    , x_dnu_reason          OUT NOCOPY NUMBER)    -- OUT
7459 
7460 RETURN BOOLEAN
7461 
7462 IS
7463 
7464    l_validated BOOLEAN := FALSE;
7465 
7466    l_area_code_req_flag BOOLEAN;
7467 
7468 BEGIN
7469 
7470 
7471 
7472    x_raw_phone_number := TRANSLATE( x_raw_phone_number
7473 
7474                                   , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
7475 
7476                                   , '0123456789');
7477 
7478 
7479 
7480    IF g_territory_code IS NOT NULL THEN
7481 
7482       x_territory_code := g_territory_code;
7483 
7484       x_country_code := g_phone_country_code;
7485 
7486       IF INSTR(x_raw_phone_number, x_country_code) = 1 THEN
7487 
7488          x_raw_phone_number := SUBSTR(x_raw_phone_number, LENGTH(x_country_code) + 1);
7489 
7490       END IF;
7491 
7492    ELSIF g_phone_country_code IS NOT NULL THEN
7493 
7494       x_country_code := g_phone_country_code;
7495 
7496       IF INSTR(x_raw_phone_number, x_country_code) = 1 THEN
7497 
7498          x_raw_phone_number := SUBSTR(x_raw_phone_number, LENGTH(x_country_code) + 1);
7499 
7500       END IF;
7501 
7502    ELSIF x_country_code IS NULL THEN
7503 
7504       x_country_code := Parse_Country_Code(x_raw_phone_number);
7505 
7506    END IF;
7507 
7508 
7509 
7510    IF x_country_code IS NULL THEN
7511 
7512       x_dnu_reason := 420;
7513 
7514       GOTO Done;
7515 
7516    END IF;
7517 
7518 
7519 
7520    Parse_Area_Code(x_raw_phone_number, x_country_code, x_territory_code, x_area_code, l_area_code_req_flag);
7521 
7522    IF x_area_code IS NULL AND l_area_code_req_flag THEN
7523 
7524       x_dnu_reason := 421;
7525 
7526       GOTO DONE;
7527 
7528    END IF;
7529 
7530 
7531 
7532    x_phone_number := x_raw_phone_number;
7533 
7534    IF x_phone_number IS NULL THEN
7535 
7536       x_dnu_reason := 422;
7537 
7538       GOTO Done;
7539 
7540    END IF;
7541 
7542 
7543 
7544    l_validated := TRUE;
7545 
7546 
7547 
7548 <<Done>>
7549 
7550    RETURN l_validated;
7551 
7552 
7553 
7554 EXCEPTION
7555 
7556    WHEN fnd_api.g_exc_error THEN
7557 
7558       RAISE;
7559 
7560    WHEN fnd_api.g_exc_unexpected_error THEN
7561 
7562       RAISE;
7563 
7564    WHEN OTHERS THEN
7565 
7566       Log( 'Validate_Non_Canonical_Number'
7567 
7568          , 'MAIN'
7569 
7570          , SQLERRM
7571 
7572          );
7573 
7574       RAISE fnd_api.g_exc_unexpected_error;
7575 
7576 
7577 
7578 END Validate_Non_Canonical_Number;
7579 
7580 
7581 
7582 FUNCTION Validate_Composite_Number
7583 
7584    ( x_country_code       IN OUT NOCOPY VARCHAR2   -- IN OUT
7585 
7586    , x_area_code          IN OUT NOCOPY VARCHAR2   -- IN OUT
7587 
7588    , x_phone_number       IN OUT NOCOPY VARCHAR2   -- IN OUT
7589 
7590    , x_territory_code     IN OUT NOCOPY VARCHAR2   -- IN OUT
7591 
7592    , x_cp_dnu_reason         OUT NOCOPY NUMBER)    -- OUT
7593 
7594 RETURN BOOLEAN
7595 
7596 IS
7597 
7598    l_validated BOOLEAN := FALSE;
7599 
7600 
7601 
7602    l_country_code_clean VARCHAR2(500);
7603 
7604    l_area_code_clean    VARCHAR2(500);
7605 
7606    l_area_code_req_flag BOOLEAN;
7607 
7608 
7609 
7610 BEGIN
7611 
7612 
7613 
7614    IF g_territory_code IS NOT NULL THEN
7615 
7616       x_territory_code := g_territory_code;
7617 
7618       x_country_code := g_phone_country_code;
7619 
7620    ELSIF g_phone_country_code IS NOT NULL THEN
7621 
7622       x_country_code := g_phone_country_code;
7623 
7624    ELSIF x_country_code IS NULL THEN
7625 
7626       x_cp_dnu_reason := 410;
7627 
7628       GOTO Done;
7629 
7630    END IF;
7631 
7632 
7633 
7634    x_country_code := TRANSLATE( UPPER(x_country_code)
7635 
7636                               , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
7637 
7638                               , '0123456789');
7639 
7640 
7641 
7642    l_country_code_clean := TRANSLATE( UPPER(x_country_code)
7643 
7644                                     , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
7645 
7646                                     , '0123456789');
7647 
7648 
7649 
7650    -- Invalidate record if country code contains non-numeric characters
7651 
7652    IF l_country_code_clean <> x_country_code THEN
7653 
7654       x_country_code := NULL;
7655 
7656       x_cp_dnu_reason := 413;
7657 
7658       GOTO Done;
7659 
7660    END IF;
7661 
7662 
7663 
7664    IF x_area_code IS NULL THEN
7665 
7666       Parse_Area_Code(x_phone_number, x_country_code, x_territory_code, x_area_code, l_area_code_req_flag);
7667 
7668       IF x_area_code IS NULL AND l_area_code_req_flag THEN
7669 
7670          x_cp_dnu_reason := 411;
7671 
7672          GOTO Done;
7673 
7674       END IF;
7675 
7676    END IF;
7677 
7678 
7679 
7680    l_area_code_clean := TRANSLATE( UPPER(x_area_code)
7681 
7682                                  , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
7683 
7684                                  , '0123456789');
7685 
7686 
7687 
7688    -- Invalidate record if area code contains non-numeric characters
7689 
7690    IF l_area_code_clean <> x_area_code THEN
7691 
7692       x_area_code := NULL;
7693 
7694       x_cp_dnu_reason := 414;
7695 
7696       GOTO Done;
7697 
7698    END IF;
7699 
7700 
7701 
7702    IF x_phone_number IS NULL THEN
7703 
7704       x_cp_dnu_reason := 412;
7705 
7706       GOTO Done;
7707 
7708    END IF;
7709 
7710 
7711 
7712    x_phone_number := TRANSLATE( UPPER(x_phone_number)
7713 
7714                               , '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-+/=()*&^%$#@!~`[]{}|\:;?><., '
7715 
7716                               , '0123456789');
7717 
7718 
7719 
7720    l_validated := TRUE;
7721 
7722 
7723 
7724 <<Done>>
7725 
7726    RETURN l_validated;
7727 
7728 
7729 
7730 EXCEPTION
7731 
7732    WHEN fnd_api.g_exc_error THEN
7733 
7734       RAISE;
7735 
7736    WHEN fnd_api.g_exc_unexpected_error THEN
7737 
7738       RAISE;
7739 
7740    WHEN OTHERS THEN
7741 
7742       Log( 'Validate_Composite_Number'
7743 
7744          , 'MAIN'
7745 
7746          , SQLERRM
7747 
7748          );
7749 
7750       RAISE fnd_api.g_exc_unexpected_error;
7751 
7752 
7753 
7754 END Validate_Composite_Number;
7755 
7756 
7757 
7758 PROCEDURE Init_ContactPointRecord
7759 
7760    ( x_contact_point IN OUT NOCOPY ContactPoint)   -- IN OUT
7761 
7762 IS
7763 
7764 BEGIN
7765 
7766 
7767 
7768    x_contact_point.id                 := NULL;
7769 
7770    x_contact_point.phone_country_code := NULL;
7771 
7772    x_contact_point.phone_area_code    := NULL;
7773 
7774    x_contact_point.phone_number       := NULL;
7775 
7776    x_contact_point.raw_phone_number   := NULL;
7777 
7778    x_contact_point.time_zone          := NULL;
7779 
7780    x_contact_point.territory_code     := NULL;
7781 
7782    x_contact_point.region_id          := NULL;
7783 
7784    x_contact_point.cc_tz_id           := NULL;
7785 
7786    x_contact_point.valid_flag         := NULL;
7787 
7788    x_contact_point.dnu_reason         := NULL;
7789 
7790 
7791 
7792 END Init_ContactPointRecord;
7793 
7794 
7795 
7796 PROCEDURE Validate_ContactPointRecord
7797 
7798    ( p_postal_code   IN            VARCHAR2
7799 
7800    , x_contact_point IN OUT NOCOPY ContactPoint)   -- IN OUT
7801 
7802 IS
7803 
7804    l_contact_point ContactPoint;
7805 
7806 
7807 
7808    l_already_validated BOOLEAN := FALSE;
7809 
7810    l_rpn_exists        BOOLEAN := FALSE;
7811 
7812    l_pn_exists         BOOLEAN := FALSE;
7813 
7814    l_tz_dnu_reason     NUMBER;
7815 
7816 
7817 
7818    -- Variables for mobile phone check (TCA procedure call)
7819 
7820    l_mobile_flag       VARCHAR2(1);
7821 
7822    l_return_status     VARCHAR2(1);
7823 
7824    l_msg_count         NUMBER;
7825 
7826    l_msg_data          VARCHAR2(4000);
7827 
7828 BEGIN
7829 
7830 
7831 
7832    -- Copy In Out Parameters into local variables
7833 
7834    -- Contact Point Paramater will not be updated unless contact point is valid
7835 
7836    -- Prevents overwriting data in AMS_LIST_ENTRIES for invalid contact points
7837 
7838    l_contact_point := x_contact_point;
7839 
7840 
7841 
7842    -- Assume that contact point is invalid
7843 
7844    x_contact_point.valid_flag := 'N';
7845 
7846 
7847 
7848    IF l_contact_point.phone_number IS NULL AND l_contact_point.raw_phone_number IS NULL THEN
7849 
7850       x_contact_point.dnu_reason := 400;
7851 
7852       GOTO Done;
7853 
7854    END IF;
7855 
7856 
7857 
7858    IF l_contact_point.raw_phone_number IS NOT NULL THEN
7859 
7860       l_rpn_exists := TRUE;
7861 
7862    END IF;
7863 
7864 
7865 
7866    IF l_contact_point.phone_number IS NOT NULL THEN
7867 
7868       l_pn_exists := TRUE;
7869 
7870    END IF;
7871 
7872 
7873 
7874    IF l_rpn_exists THEN
7875 
7876 
7877 
7878       -- ATTEMPT TO VALIDATE RAW_PHONE_NUMBER FIELD (IN CANONICAL FORM)
7879 
7880       l_already_validated := Validate_Canonical_Number( l_contact_point.raw_phone_number
7881 
7882                                                       , l_contact_point.phone_country_code
7883 
7884                                                       , l_contact_point.phone_area_code
7885 
7886                                                       , l_contact_point.phone_number
7887 
7888                                                       , x_contact_point.dnu_reason);
7889 
7890    END IF;
7891 
7892 
7893 
7894    IF l_pn_exists AND NOT l_already_validated THEN
7895 
7896 
7897 
7898       -- ATTEMPT TO VALIDATE SEPERATE PHONE_NUMBER, AREA_CODE, COUNTRY_CODE FIELDS
7899 
7900       l_already_validated := Validate_Composite_Number( l_contact_point.phone_country_code
7901 
7902                                                       , l_contact_point.phone_area_code
7903 
7904                                                       , l_contact_point.phone_number
7905 
7906                                                       , l_contact_point.territory_code
7907 
7908                                                       , x_contact_point.dnu_reason);
7909 
7910 
7911 
7912    END IF;
7913 
7914 
7915 
7916    IF l_rpn_exists
7917 
7918       AND NOT l_already_validated
7919 
7920       AND (x_contact_point.dnu_reason IS NULL
7921 
7922            OR (x_contact_point.dnu_reason <> 423        -- Ensure that record did not already fail as a result of having
7923 
7924                AND x_contact_point.dnu_reason <> 424))  -- non-numeric characters in country or area code in canonical form
7925 
7926    THEN
7927 
7928 
7929 
7930       -- ATTEMPT TO VALIDATE RAW_PHONE_NUMBER FIELD (NOT IN CANONICAL FORM)
7931 
7932       l_already_validated := Validate_Non_Canonical_Number( l_contact_point.raw_phone_number
7933 
7934                                                           , l_contact_point.phone_country_code
7935 
7936                                                           , l_contact_point.phone_area_code
7937 
7938                                                           , l_contact_point.phone_number
7939 
7940                                                           , l_contact_point.territory_code
7941 
7942                                                           , x_contact_point.dnu_reason);
7943 
7944    END IF;
7945 
7946 
7947 
7948    -- COULD NOT VALIDATE NUMBER USING ANY METHOD
7949 
7950    IF NOT l_already_validated THEN
7951 
7952       GOTO Done;
7953 
7954    END IF;
7955 
7956 
7957 
7958    -- If this phone country code has a fixed area code length
7959 
7960    -- Verify that area code is of correct length
7961 
7962    -- Only enforce this if rule is set!
7963 
7964    IF  g_enable_ac_length_val
7965 
7966    AND g_ac_length_tbl.EXISTS(l_contact_point.phone_country_code)
7967 
7968    AND LENGTH(l_contact_point.phone_area_code) <> g_ac_length_tbl(l_contact_point.phone_country_code)
7969 
7970    THEN
7971 
7972       x_contact_point.dnu_reason := 407;
7973 
7974       Goto Done;
7975 
7976    END IF;
7977 
7978 
7979 
7980    -- If this phone country code has a fixed phone number length
7981 
7982    -- Verify that phone number is of correct length
7983 
7984    -- Only enforce this if rule is set!
7985 
7986    IF  g_enable_pn_length_val
7987 
7988    AND g_pn_length_tbl.EXISTS(l_contact_point.phone_country_code)
7989 
7990    AND LENGTH(l_contact_point.phone_number) <> g_pn_length_tbl(l_contact_point.phone_country_code)
7991 
7992    THEN
7993 
7994       x_contact_point.dnu_reason := 406;
7995 
7996       Goto Done;
7997 
7998    END IF;
7999 
8000 
8001 
8002    l_contact_point.raw_phone_number := Create_Canonical_Number(l_contact_point.phone_country_code, l_contact_point.phone_area_code, l_contact_point.phone_number);
8003 
8004    IF l_contact_point.raw_phone_number IS NULL OR LENGTH(l_contact_point.raw_phone_number) > 240 THEN
8005 
8006       x_contact_point.dnu_reason := 402;
8007 
8008       GOTO Done;
8009 
8010    END IF;
8011 
8012 
8013 
8014    -- If not validating cell phones, check if number if mobile number
8015 
8016    IF g_enable_cell_phone_val = FALSE THEN
8017 
8018 
8019 
8020       HZ_FORMAT_PHONE_V2PUB.check_mobile_phone
8021 
8022          ( 'T'
8023 
8024          , l_contact_point.phone_country_code
8025 
8026          , l_contact_point.phone_area_code
8027 
8028          , l_contact_point.phone_number
8029 
8030          , l_mobile_flag
8031 
8032          , l_return_status
8033 
8034          , l_msg_count
8035 
8036          , l_msg_data);
8037 
8038 
8039 
8040       IF l_return_status <> 'S' THEN
8041 
8042          Log( 'Validate_Contact_Point'
8043 
8044             , 'CHECK_MOBILE_PHONE'
8045 
8046             , l_msg_data
8047 
8048             );
8049 
8050         RAISE fnd_api.g_exc_unexpected_error;
8051 
8052       END IF;
8053 
8054 
8055 
8056       IF l_mobile_flag = 'Y' THEN
8057 
8058          x_contact_point.dnu_reason := 408;
8059 
8060          GOTO Done;
8061 
8062       END IF;
8063 
8064    END IF;
8065 
8066 
8067 
8068    Get_Territory_Code(l_contact_point.phone_country_code, l_contact_point.phone_area_code, l_contact_point.territory_code, l_contact_point.region_id);
8069 
8070    IF l_contact_point.territory_code IS NULL OR LENGTH(l_contact_point.territory_code) > 30 THEN
8071 
8072       x_contact_point.dnu_reason := 403;
8073 
8074       GOTO Done;
8075 
8076    END IF;
8077 
8078 
8079 
8080    IF l_contact_point.region_id IS NULL AND g_require_regions THEN
8081 
8082       x_contact_point.dnu_reason := 405;
8083 
8084       GOTO Done;
8085 
8086    END IF;
8087 
8088 
8089 
8090    l_contact_point.time_zone := Get_Timezone_Id(l_contact_point.territory_code, l_contact_point.phone_area_code, p_postal_code, l_contact_point.time_zone, l_tz_dnu_reason);
8091 
8092    IF l_contact_point.time_zone IS NULL THEN
8093 
8094       x_contact_point.dnu_reason := l_tz_dnu_reason;
8095 
8096       GOTO Done;
8097 
8098    END IF;
8099 
8100 
8101 
8102    -- Contact Point is Valid
8103 
8104    -- Overwrite Contact Point with validated Contact Point
8105 
8106    x_contact_point := l_contact_point;
8107 
8108    x_contact_point.valid_flag := 'Y';
8109 
8110    x_contact_point.dnu_reason := NULL;
8111 
8112 
8113 
8114 <<Done>>
8115 
8116    NULL;
8117 
8118 
8119 
8120 EXCEPTION
8121 
8122    WHEN fnd_api.g_exc_error THEN
8123 
8124       RAISE;
8125 
8126    WHEN fnd_api.g_exc_unexpected_error THEN
8127 
8128       RAISE;
8129 
8130    WHEN OTHERS THEN
8131 
8132       Log( 'Validate_ContactPointRecord'
8133 
8134          , 'MAIN'
8135 
8136          , SQLERRM
8137 
8138          );
8139 
8140       RAISE fnd_api.g_exc_unexpected_error;
8141 
8142 
8143 
8144 END Validate_ContactPointRecord;
8145 
8146 
8147 
8148 PROCEDURE Validate_List_Entry
8149 
8150    ( p_list_entry_id             IN            NUMBER
8151 
8152    , p_postal_code               IN            VARCHAR2
8153 
8154    , x_contact_points            IN OUT NOCOPY ContactPointList   -- IN OUT
8155 
8156    , x_current_contact_point        OUT NOCOPY ContactPoint       -- OUT
8157 
8158    , x_current_contact_point_idx IN OUT NOCOPY NUMBER)            -- IN OUT
8159 
8160 IS
8161 
8162    l_found_current_cp       BOOLEAN := FALSE;
8163 
8164    l_save_contact_point_idx NUMBER;
8165 
8166 BEGIN
8167 
8168 
8169 
8170    Init_ContactPointRecord(x_current_contact_point);
8171 
8172    l_save_contact_point_idx := x_current_contact_point_idx;
8173 
8174    x_current_contact_point_idx := NULL;
8175 
8176 
8177 
8178    FOR i IN 1..G_NUM_CONTACT_POINTS LOOP
8179 
8180 
8181 
8182       -- Validate contact points that are invalid
8183 
8184       -- invalid if no cc_tz_id has been assigned
8185 
8186       IF  x_contact_points(i).cc_tz_id IS NULL THEN
8187 
8188          Validate_ContactPointRecord( p_postal_code
8189 
8190                                     , x_contact_points(i));
8191 
8192       ELSE
8193 
8194          x_contact_points(i).valid_flag := 'Y';
8195 
8196       END IF;
8197 
8198 
8199 
8200       IF (NOT l_found_current_cp) AND (x_contact_points(i).valid_flag = 'Y') THEN
8201 
8202          x_current_contact_point := x_contact_points(i);
8203 
8204          x_current_contact_point_idx := i;
8205 
8206          l_found_current_cp := TRUE;
8207 
8208       END IF;
8209 
8210 
8211 
8212    END LOOP;
8213 
8214 
8215 
8216    -- We want to preserve the current contact point for records that
8217 
8218    -- already have some valid contact points since recycling algs
8219 
8220    -- may have changed the current contact point during execution.
8221 
8222    -- must make sure that this contact point is still valid
8223 
8224    IF     l_save_contact_point_idx IS NOT NULL
8225 
8226       AND l_save_contact_point_idx <> x_current_contact_point_idx
8227 
8228       AND x_contact_points(l_save_contact_point_idx).valid_flag = 'Y'
8229 
8230    THEN
8231 
8232       x_current_contact_point := x_contact_points(l_save_contact_point_idx);
8233 
8234       x_current_contact_point_idx := l_save_contact_point_idx;
8235 
8236    END IF;
8237 
8238 
8239 
8240 EXCEPTION
8241 
8242    WHEN fnd_api.g_exc_error OR fnd_api.g_exc_unexpected_error THEN
8243 
8244       RAISE;
8245 
8246    WHEN OTHERS THEN
8247 
8248       Log( 'Validate_List_Entry'
8249 
8250          , 'MAIN'
8251 
8252          , SQLERRM
8253 
8254          );
8255 
8256       RAISE fnd_api.g_exc_unexpected_error;
8257 
8258 
8259 
8260 END Validate_List_Entry;
8261 
8262 
8263 
8264 PROCEDURE Remove_Entries_Pvt
8265 
8266    ( p_list_id              IN NUMBER
8267 
8268    , p_schedule_id          IN NUMBER
8269 
8270    , p_returns_id_col       IN SYSTEM.number_tbl_type
8271 
8272    )
8273 
8274 IS
8275 
8276    l_returns_id_col         SYSTEM.number_tbl_type;
8277 
8278    l_subset_id_col          SYSTEM.number_tbl_type;
8279 
8280    l_list_entry_id_col      SYSTEM.number_tbl_type;
8281 
8282    l_callable_zone_id_col   SYSTEM.number_tbl_type;
8283 
8284    l_do_not_use_col         SYSTEM.varchar_tbl_type;
8285 
8286    l_rl_incr_amount_col     SYSTEM.number_tbl_type;
8287 
8288    l_cz_incr_amount_col     SYSTEM.number_tbl_type;
8289 
8290 BEGIN
8291 
8292 
8293 
8294    -- Delete specified records in IEC_G_RETURN_ENTRIES
8295 
8296    -- Retrieving information to clean up other tables
8297 
8298    DELETE IEC_G_RETURN_ENTRIES A
8299 
8300    WHERE A.LIST_HEADER_ID = p_list_id
8301 
8302    AND A.RETURNS_ID IN (SELECT * FROM TABLE(CAST(p_returns_id_col AS SYSTEM.NUMBER_TBL_TYPE)))
8303    RETURNING A.RETURNS_ID, A.SUBSET_ID, A.LIST_ENTRY_ID, A.ITM_CC_TZ_ID, A.DO_NOT_USE_FLAG
8304    BULK COLLECT INTO l_returns_id_col, l_subset_id_col, l_list_entry_id_col, l_callable_zone_id_col, l_do_not_use_col;
8305 
8306 
8307 
8308    IF l_returns_id_col IS NOT NULL AND l_returns_id_col.COUNT > 0 THEN
8309 
8310 
8311 
8312       -- Delete call history
8313 
8314       EXECUTE IMMEDIATE
8315 
8316          'BEGIN
8317 
8318           FORALL i IN :first .. :last
8319 
8320              DELETE IEC_O_RCY_CALL_HISTORIES
8321 
8322              WHERE RETURNS_ID = :returns_id(i);
8323 
8324           END;'
8325 
8326       USING IN l_returns_id_col.FIRST
8327 
8328           , IN l_returns_id_col.LAST
8329 
8330           , IN l_returns_id_col;
8331 
8332 
8333 
8334       -- Delete IEC_O_VALIDATION_REPORT_DETS
8335 
8336       EXECUTE IMMEDIATE
8337 
8338          'BEGIN
8339 
8340           FORALL i IN :first .. :last
8341 
8342              DELETE IEC_O_VALIDATION_REPORT_DETS
8343 
8344              WHERE LIST_HEADER_ID = :list_id
8345 
8346              AND LIST_ENTRY_ID = :list_entry_id(i);
8347 
8348           END;'
8349 
8350       USING IN l_list_entry_id_col.FIRST
8351 
8352           , IN l_list_entry_id_col.LAST
8353 
8354           , IN p_list_id
8355 
8356           , IN l_list_entry_id_col;
8357 
8358 
8359 
8360       l_cz_incr_amount_col := SYSTEM.number_tbl_type();
8361 
8362       l_rl_incr_amount_col := SYSTEM.number_tbl_type();
8363 
8364       FOR i IN 1..l_do_not_use_col.LAST LOOP
8365 
8366          l_cz_incr_amount_col.EXTEND;
8367 
8368          l_rl_incr_amount_col.EXTEND;
8369 
8370          l_rl_incr_amount_col(i) := -1;
8371 
8372          IF l_do_not_use_col(i) = 'N' THEN
8373 
8374             l_cz_incr_amount_col(i) := -1;
8375 
8376          ELSE
8377 
8378             l_cz_incr_amount_col(i) := 0;
8379 
8380          END IF;
8381 
8382       END LOOP;
8383 
8384 
8385 
8386       -- Decrement callable zone count to indicate that these records have been removed
8387 
8388       Incr_CallableZoneCounts( l_callable_zone_id_col
8389 
8390                              , l_cz_incr_amount_col);
8391 
8392 
8393 
8394       Purge_CallableZones(p_list_id, p_schedule_id);
8395 
8396 
8397 
8398       -- Decrement records loaded count to indicate that these records have been removed
8399 
8400       Incr_RecordsLoadedCounts( p_schedule_id
8401 
8402                               , p_list_id
8403 
8404                               , l_subset_id_col
8405 
8406                               , l_rl_incr_amount_col);
8407 
8408    END IF;
8409 
8410 EXCEPTION
8411 
8412    WHEN OTHERS THEN
8413 
8414          Log( 'Remove_Entries_Pvt'
8415 
8416             , 'MAIN'
8417 
8418             , SQLERRM
8419 
8420             );
8421 
8422       RAISE fnd_api.g_exc_unexpected_error;
8423 
8424 
8425 
8426 END Remove_Entries_Pvt;
8427 
8428 
8429 
8430 PROCEDURE Remove_DeletedRecords
8431 
8432    ( p_list_id     IN NUMBER
8433 
8434    , p_schedule_id IN NUMBER
8435 
8436    )
8437 
8438 IS
8439 
8440    l_returns_id_col         SYSTEM.number_tbl_type;
8441 
8442 BEGIN
8443 
8444 
8445 
8446    -- Look for records that have been deleted from
8447 
8448    -- AMS_LIST_ENTRIES
8449 
8450    EXECUTE IMMEDIATE
8451 
8452       'BEGIN
8453 
8454           SELECT A.RETURNS_ID
8455 
8456           BULK COLLECT INTO :returns_id_col
8457 
8458           FROM IEC_G_RETURN_ENTRIES A
8459 
8460           WHERE A.LIST_HEADER_ID = :list_id
8461 
8462           AND NOT EXISTS (SELECT LIST_ENTRY_ID
8463 
8464                           FROM AMS_LIST_ENTRIES
8465 
8466                           WHERE A.LIST_HEADER_ID = LIST_HEADER_ID
8467 
8468                           AND A.LIST_ENTRY_ID = LIST_ENTRY_ID
8469 
8470                           AND ENABLED_FLAG = ''Y'');
8471 
8472        END;'
8473 
8474     USING OUT l_returns_id_col
8475 
8476         , IN  p_list_id;
8477 
8478 
8479 
8480    IF l_returns_id_col IS NOT NULL AND l_returns_id_col.COUNT > 0 THEN
8481 
8482 
8483 
8484       Remove_Entries_Pvt
8485 
8486          ( p_list_id
8487 
8488          , p_schedule_id
8489 
8490          , l_returns_id_col
8491 
8492          );
8493 
8494 
8495 
8496    END IF;
8497 
8498 
8499 
8500    -- Also need to delete records from IEC_O_VALIDATION_REPORT_DETS
8501 
8502    -- when all contact points were invalid and there is no corresponding
8503 
8504    -- entry in return entries
8505 
8506    EXECUTE IMMEDIATE
8507 
8508       'DELETE IEC_O_VALIDATION_REPORT_DETS
8509 
8510        WHERE LIST_HEADER_ID = :list_id
8511 
8512        AND DO_NOT_USE_REASON_S1 IS NOT NULL
8513 
8514        AND DO_NOT_USE_REASON_S2 IS NOT NULL
8515 
8516        AND DO_NOT_USE_REASON_S3 IS NOT NULL
8517 
8518        AND DO_NOT_USE_REASON_S4 IS NOT NULL
8519 
8520        AND DO_NOT_USE_REASON_S5 IS NOT NULL
8521 
8522        AND DO_NOT_USE_REASON_S6 IS NOT NULL
8523 
8524        AND LIST_ENTRY_ID NOT IN
8525 
8526           (SELECT LIST_ENTRY_ID
8527 
8528            FROM AMS_LIST_ENTRIES
8529 
8530            WHERE LIST_HEADER_ID = :list_id
8531 
8532            AND ENABLED_FLAG = ''Y'')'
8533 
8534    USING IN p_list_id
8535 
8536        , IN p_list_id;
8537 
8538 
8539 
8540 EXCEPTION
8541 
8542    WHEN OTHERS THEN
8543 
8544          Log( 'Remove_DeletedRecords'
8545 
8546             , 'MAIN'
8547 
8548             , SQLERRM
8549 
8550             );
8551 
8552       RAISE fnd_api.g_exc_unexpected_error;
8553 
8554 
8555 
8556 END Remove_DeletedRecords;
8557 
8558 
8559 
8560 PROCEDURE Purge_ScheduleEntries_Pvt
8561 
8562    ( p_schedule_id   IN            NUMBER
8563 
8564    , p_api_initiated IN            BOOLEAN
8565 
8566    , p_commit_flag   IN            BOOLEAN)
8567 
8568 IS
8569 
8570    l_api_initiated     BOOLEAN;
8571 
8572    l_list_id           NUMBER(15);
8573 
8574    l_returns_id_col    SYSTEM.number_tbl_type;
8575 
8576    l_list_entry_id_col SYSTEM.number_tbl_type;
8577 
8578    l_status_code       VARCHAR2(30);
8579 
8580 BEGIN
8581 
8582 
8583 
8584    SAVEPOINT purge_schedule_entries;
8585 
8586 
8587 
8588    -- Logging initialization
8589 
8590    Init_LoggingVariables;
8591 
8592    Set_MessagePrefix('purge_schedule_' || p_schedule_id);
8593 
8594 
8595 
8596    l_api_initiated := FALSE; -- Default value
8597 
8598    IF p_api_initiated IS NOT NULL THEN
8599 
8600       l_api_initiated := p_api_initiated;
8601 
8602    END IF;
8603 
8604 
8605 
8606    -- get list header id corresponding to schedule id
8607 
8608    BEGIN
8609 
8610       IEC_COMMON_UTIL_PVT.Get_ListId(p_schedule_id, l_list_id);
8611 
8612    EXCEPTION
8613 
8614       WHEN OTHERS THEN
8615 
8616          Log( 'Purge_ScheduleEntries_Pub'
8617 
8618             , 'GET_LIST_HEADER_ID'
8619 
8620             );
8621 
8622    END;
8623 
8624 
8625 
8626    -- check list status - needs to be Inactive, Validated, Purged, Failed Purge
8627 
8628    EXECUTE IMMEDIATE
8629 
8630       'SELECT A.STATUS_CODE
8631 
8632        FROM IEC_G_AO_LISTS_V A
8633 
8634        WHERE A.LIST_HEADER_ID = :list_id
8635 
8636        AND LANGUAGE = USERENV(''LANG'')'
8637 
8638    INTO l_status_code
8639 
8640    USING l_list_id;
8641 
8642 
8643 
8644    IF l_status_code <> 'INACTIVE' AND
8645 
8646       l_status_code <> 'VALIDATED' AND
8647 
8648       l_status_code <> 'PURGING' AND
8649 
8650       l_status_code <> 'PURGED' AND
8651 
8652       l_status_code <> 'FAILED_PURGE'
8653 
8654    THEN
8655 
8656       Log_PurgeListStatusInvMsg('Purge_ScheduleEntries_Pvt','CHECK_SCHEDULE_STATUS', Get_ScheduleName(p_schedule_id));
8657 
8658       RAISE fnd_api.g_exc_error;
8659 
8660    END IF;
8661 
8662 
8663 
8664    Update_PurgeStatus(l_list_id, p_schedule_id, 'PURGING', l_api_initiated);
8665 
8666 
8667 
8668    -- Look for records that have been marked as do not use
8669 
8670    EXECUTE IMMEDIATE
8671 
8672       'BEGIN
8673 
8674        SELECT A.RETURNS_ID, A.LIST_ENTRY_ID
8675 
8676        BULK COLLECT INTO :returns_id_col, :list_entry_id_col
8677 
8678        FROM IEC_G_RETURN_ENTRIES A
8679 
8680        WHERE A.LIST_HEADER_ID = :list_id
8681 
8682        AND A.DO_NOT_USE_FLAG = ''Y'';
8683 
8684        END;'
8685 
8686    USING OUT l_returns_id_col
8687 
8688        , OUT l_list_entry_id_col
8689 
8690        , IN  l_list_id;
8691 
8692 
8693 
8694    IF l_returns_id_col IS NOT NULL AND l_returns_id_col.COUNT > 0 THEN
8695 
8696 
8697 
8698       -- Remove_Entries_Pvt expects certain temporary tables
8699 
8700       -- to be initialized
8701 
8702       Truncate_Temporary_Tables;
8703 
8704       Load_CallableZones(l_list_id);
8705 
8706 
8707 
8708       Remove_Entries_Pvt
8709 
8710          ( l_list_id
8711 
8712          , p_schedule_id
8713 
8714          , l_returns_id_col
8715 
8716          );
8717 
8718 
8719 
8720       EXECUTE IMMEDIATE
8721 
8722          'BEGIN
8723 
8724           UPDATE ' || Get_SourceTypeView(l_list_id) || '
8725 
8726           SET REASON_CODE_S1 = NULL
8727 
8728             , REASON_CODE_S2 = NULL
8729 
8730             , REASON_CODE_S3 = NULL
8731 
8732             , REASON_CODE_S4 = NULL
8733 
8734             , REASON_CODE_S5 = NULL
8735 
8736             , REASON_CODE_S6 = NULL
8737 
8738           WHERE LIST_HEADER_ID = :list_id
8739 
8740           AND LIST_ENTRY_ID IN (SELECT * FROM TABLE(CAST(:list_entry_id_col AS SYSTEM.NUMBER_TBL_TYPE)));
8741           END;'
8742       USING IN l_list_id
8743 
8744           , IN l_list_entry_id_col;
8745 
8746 
8747 
8748       Refresh_MViews;
8749 
8750       Truncate_Temporary_Tables;
8751 
8752 
8753 
8754    END IF;
8755 
8756 
8757 
8758 --   Update_PurgeStatus(l_list_id, p_schedule_id, 'PURGED', l_api_initiated);
8759 
8760    Update_PurgeStatus(l_list_id, p_schedule_id, l_status_code, l_api_initiated);
8761 
8762 
8763 
8764    IF p_commit_flag THEN
8765 
8766       COMMIT;
8767 
8768    END IF;
8769 
8770 
8771 
8772 EXCEPTION
8773 
8774    WHEN fnd_api.g_exc_error THEN
8775 
8776       ROLLBACK TO purge_schedule_entries;
8777 
8778 --      Update_PurgeStatus(l_list_id, p_schedule_id, 'FAILED_PURGE', l_api_initiated);
8779 
8780       Update_PurgeStatus(l_list_id, p_schedule_id, l_status_code, l_api_initiated);
8781 
8782       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
8783 
8784    WHEN fnd_api.g_exc_unexpected_error THEN
8785 
8786       ROLLBACK TO purge_schedule_entries;
8787 
8788 --      Update_PurgeStatus(l_list_id, p_schedule_id, 'FAILED_PURGE', l_api_initiated);
8789 
8790       Update_PurgeStatus(l_list_id, p_schedule_id, l_status_code, l_api_initiated);
8791 
8792       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
8793 
8794    WHEN OTHERS THEN
8795 
8796       ROLLBACK TO purge_schedule_entries;
8797 
8798       Log( 'Purge_ScheduleEntries_Pvt'
8799 
8800          , 'MAIN'
8801 
8802          , SQLERRM
8803 
8804          );
8805 
8806 --      Update_PurgeStatus(l_list_id, p_schedule_id, 'FAILED_PURGE', l_api_initiated);
8807 
8808       Update_PurgeStatus(l_list_id, p_schedule_id, l_status_code, l_api_initiated);
8809 
8810       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
8811 
8812 
8813 
8814 END Purge_ScheduleEntries_Pvt;
8815 
8816 
8817 
8818 -- Procedure to be called by public api to purge schedule
8819 
8820 -- entries
8821 
8822 PROCEDURE Purge_ScheduleEntries_Pub
8823 
8824    ( p_schedule_id   IN            NUMBER
8825 
8826    , p_commit        IN            BOOLEAN
8827 
8828    , x_return_status    OUT NOCOPY VARCHAR2)
8829 
8830 IS
8831 
8832 BEGIN
8833 
8834    x_return_status := FND_API.G_RET_STS_SUCCESS;
8835 
8836 
8837 
8838    Purge_ScheduleEntries_Pvt
8839 
8840       ( p_schedule_id
8841 
8842       , TRUE
8843 
8844       , p_commit
8845 
8846       );
8847 
8848 
8849 
8850 EXCEPTION
8851 
8852    WHEN OTHERS THEN
8853 
8854       FND_MSG_PUB.ADD;
8855 
8856       x_return_status := FND_API.G_RET_STS_ERROR;
8857 
8858 END Purge_ScheduleEntries_Pub;
8859 
8860 
8861 
8862 PROCEDURE Validate_List_Pvt
8863 
8864    ( p_list_id               IN            NUMBER
8865 
8866    , p_campaign_schedule_id  IN            NUMBER
8867 
8868    , p_campaign_id           IN            NUMBER
8869 
8870    , p_source_type_view      IN            VARCHAR2
8871 
8872    , p_list_entry_csr        IN            ListEntryCsrType
8873 
8874    , p_commit_flag           IN            VARCHAR2
8875 
8876    )
8877 
8878 IS
8879 
8880    l_list_entry_id            NUMBER;
8881 
8882    l_postal_code              VARCHAR2(100);
8883 
8884    l_do_not_use_flag          VARCHAR2(1);
8885 
8886    l_do_not_use_reason        VARCHAR2(30);
8887 
8888    l_newly_updated_flag       VARCHAR2(1);
8889 
8890    l_prev_callable_zone_id    NUMBER(15);
8891 
8892    l_prev_subset_id           NUMBER(15);
8893 
8894 
8895 
8896    l_contact_points           ContactPointList := ContactPointList();
8897 
8898 
8899 
8900    l_curr_contact_point       ContactPoint;
8901 
8902    l_curr_contact_point_idx   NUMBER;
8903 
8904 
8905 
8906    l_prev_record_status       VARCHAR2(32);
8907 
8908 
8909 
8910    l_entry_count              NUMBER;
8911 
8912 
8913 
8914    l_subset_id_col            SYSTEM.number_tbl_type;
8915 
8916    l_subset_view_col          SYSTEM.varchar_tbl_type;
8917 
8918    l_subset_rec_loaded_col    SYSTEM.number_tbl_type;
8919 
8920 
8921 
8922    l_callable_zone_id_col       SYSTEM.number_tbl_type := SYSTEM.number_tbl_type();
8923 
8924    l_callable_zone_incr_col     SYSTEM.number_tbl_type := SYSTEM.number_tbl_type();
8925 
8926    l_subset_rec_loaded_id_col   SYSTEM.number_tbl_type := SYSTEM.number_tbl_type();
8927 
8928    l_subset_rec_loaded_incr_col SYSTEM.number_tbl_type := SYSTEM.number_tbl_type();
8929 
8930 
8931 
8932 BEGIN
8933 
8934    Init_SubsetRtInfo(p_list_id, p_source_type_view, l_subset_id_col, l_subset_view_col);
8935 
8936 
8937 
8938    l_contact_points.EXTEND(G_NUM_CONTACT_POINTS);
8939 
8940    LOOP
8941 
8942 
8943 
8944       l_callable_zone_id_col.DELETE;
8945 
8946       l_callable_zone_incr_col.DELETE;
8947 
8948       l_subset_rec_loaded_id_col.DELETE;
8949 
8950       l_subset_rec_loaded_incr_col.DELETE;
8951 
8952 
8953 
8954       FOR I IN 1..g_row_increment LOOP
8955 
8956 
8957 
8958          -- Initialize Contact Point Record Attributes
8959 
8960          Init_ContactPointRecord(l_curr_contact_point);
8961 
8962          l_curr_contact_point_idx := NULL;
8963 
8964 
8965 
8966          FOR i IN 1..G_NUM_CONTACT_POINTS LOOP
8967 
8968             Init_ContactPointRecord(l_contact_points(i));
8969 
8970          END LOOP;
8971 
8972 
8973 
8974          FETCH p_list_entry_csr INTO l_list_entry_id, l_postal_code, l_do_not_use_flag, l_do_not_use_reason, l_newly_updated_flag, l_prev_subset_id, l_prev_callable_zone_id, l_curr_contact_point_idx,
8975 
8976                l_contact_points(1).id, l_contact_points(1).time_zone, l_contact_points(1).phone_country_code, l_contact_points(1).phone_area_code, l_contact_points(1).phone_number,
8977 
8978 			   l_contact_points(1).raw_phone_number, l_contact_points(1).cc_tz_id, l_contact_points(1).phone_line_type, l_contact_points(1).purpose,
8979 
8980                l_contact_points(2).id, l_contact_points(2).time_zone, l_contact_points(2).phone_country_code, l_contact_points(2).phone_area_code, l_contact_points(2).phone_number,
8981 
8982 			   l_contact_points(2).raw_phone_number, l_contact_points(2).cc_tz_id, l_contact_points(2).phone_line_type, l_contact_points(2).purpose,
8983 
8984                l_contact_points(3).id, l_contact_points(3).time_zone, l_contact_points(3).phone_country_code, l_contact_points(3).phone_area_code, l_contact_points(3).phone_number,
8985 
8986 			   l_contact_points(3).raw_phone_number, l_contact_points(3).cc_tz_id, l_contact_points(3).phone_line_type, l_contact_points(3).purpose,
8987 
8988                l_contact_points(4).id, l_contact_points(4).time_zone, l_contact_points(4).phone_country_code, l_contact_points(4).phone_area_code, l_contact_points(4).phone_number,
8989 
8990 			   l_contact_points(4).raw_phone_number, l_contact_points(4).cc_tz_id, l_contact_points(4).phone_line_type, l_contact_points(4).purpose,
8991 
8992                l_contact_points(5).id, l_contact_points(5).time_zone, l_contact_points(5).phone_country_code, l_contact_points(5).phone_area_code, l_contact_points(5).phone_number,
8993 
8994 			   l_contact_points(5).raw_phone_number, l_contact_points(5).cc_tz_id, l_contact_points(5).phone_line_type, l_contact_points(5).purpose,
8995 
8996                l_contact_points(6).id, l_contact_points(6).time_zone, l_contact_points(6).phone_country_code, l_contact_points(6).phone_area_code, l_contact_points(6).phone_number,
8997 
8998 			   l_contact_points(6).raw_phone_number, l_contact_points(6).cc_tz_id, l_contact_points(6).phone_line_type, l_contact_points(6).purpose;
8999 
9000 
9001 
9002          EXIT WHEN p_list_entry_csr%NOTFOUND;
9003 
9004 
9005 
9006          BEGIN
9007 
9008 
9009 
9010             IF l_do_not_use_flag = 'Y' AND l_do_not_use_reason = 4 THEN
9011 
9012                l_prev_record_status := 'INVALID';           -- invalid record
9013 
9014             ELSIF l_do_not_use_flag = 'N' THEN
9015 
9016                l_prev_record_status := 'VALID_ALL';         -- valid record - all contact points valid
9017 
9018                FOR i IN 1..G_NUM_CONTACT_POINTS LOOP
9019 
9020                   IF  l_contact_points(i).cc_tz_id IS NULL AND
9021 
9022                      (l_contact_points(i).phone_number IS NOT NULL OR
9023 
9024                       l_contact_points(i).raw_phone_number IS NOT NULL)
9025 
9026                   THEN
9027 
9028                      l_prev_record_status := 'VALID_SOME';  -- valid record - at least one invalid contact point
9029 
9030                      EXIT;
9031 
9032                   END IF;
9033 
9034                END LOOP;
9035 
9036             ELSE
9037 
9038                l_prev_record_status := 'NEW';               -- new record (never been validated)
9039 
9040             END IF;
9041 
9042 
9043 
9044             -- If record was previously valid, we must decrement the
9045 
9046             -- records loaded report count for the previous subset id
9047 
9048             IF    (l_prev_record_status = 'VALID_ALL'
9049 
9050                OR l_prev_record_status = 'VALID_SOME')
9051 
9052                AND l_prev_subset_id IS NOT NULL
9053 
9054             THEN
9055 
9056                l_subset_rec_loaded_id_col.EXTEND;
9057 
9058                l_subset_rec_loaded_id_col(l_subset_rec_loaded_id_col.LAST) := l_prev_subset_id;
9059 
9060                l_subset_rec_loaded_incr_col.EXTEND;
9061 
9062                l_subset_rec_loaded_incr_col(l_subset_rec_loaded_incr_col.LAST) := -1;
9063 
9064             END IF;
9065 
9066 
9067 
9068             -- If record had a previous current contact point, we must
9069 
9070             -- decrement callable zone count for previous current contact point
9071 
9072             -- since current contact point may change if the record has been
9073 
9074             -- updated, the current contact point changes, or the subset is changed
9075 
9076             IF l_prev_callable_zone_id IS NOT NULL THEN
9077 
9078                l_callable_zone_id_col.EXTEND;
9079 
9080                l_callable_zone_id_col(l_callable_zone_id_col.LAST) := l_prev_callable_zone_id;
9081 
9082                l_callable_zone_incr_col.EXTEND;
9083 
9084                l_callable_zone_incr_col(l_callable_zone_incr_col.LAST) := -1;
9085 
9086             END IF;
9087 
9088 
9089 
9090             -- If record has been updated, nullify the current cc_tz_id to force
9091 
9092             -- revalidation of the contact point
9093 
9094             IF l_newly_updated_flag = 'Y' THEN
9095 
9096                FOR i IN 1..G_NUM_CONTACT_POINTS LOOP
9097 
9098                   l_contact_points(i).cc_tz_id := NULL;
9099 
9100                END LOOP;
9101 
9102             ELSE
9103 
9104                FOR i IN 1..G_NUM_CONTACT_POINTS LOOP
9105 
9106                   IF l_contact_points(i).cc_tz_id IS NOT NULL THEN
9107 
9108 
9109 
9110                      Get_CallableZoneDetail_Cache
9111 
9112                         ( l_contact_points(i).cc_tz_id
9113 
9114                         , l_contact_points(i).territory_code
9115 
9116                         , l_contact_points(i).region_id
9117 
9118                         , l_contact_points(i).time_zone
9119 
9120                         , l_contact_points(i).valid_flag
9121 
9122                         );
9123 
9124 
9125 
9126                      -- If the callable zone id is not associated with this list,
9127 
9128                      -- map the callable zone id to the territory_code, region_id,
9129 
9130                      -- and time_zone, then delete the callable zone id so
9131 
9132                      -- that record will be validated and assigned a new
9133 
9134                      -- callable zone id that is associated with this list
9135 
9136                      IF l_contact_points(i).valid_flag = 'N' THEN
9137 
9138                         Get_CallableZoneDetail
9139 
9140                            ( l_contact_points(i).cc_tz_id
9141 
9142                            , l_contact_points(i).territory_code
9143 
9144                            , l_contact_points(i).region_id
9145 
9146                            , l_contact_points(i).time_zone
9147 
9148                            , l_contact_points(i).valid_flag
9149 
9150                            );
9151 
9152                         l_contact_points(i).cc_tz_id := NULL;
9153 
9154                      END IF;
9155 
9156                   END IF;
9157 
9158                END LOOP;
9159 
9160             END IF;
9161 
9162 
9163 
9164             Validate_List_Entry ( l_list_entry_id
9165 
9166                                 , l_postal_code
9167 
9168                                 , l_contact_points
9169 
9170                                 , l_curr_contact_point
9171 
9172                                 , l_curr_contact_point_idx);
9173 
9174 
9175 
9176             IF l_curr_contact_point_idx IS NULL THEN
9177 
9178                -- Indicates entry failed validation
9179 
9180                l_do_not_use_flag := 'Y';
9181 
9182                l_do_not_use_reason := 4;
9183 
9184 
9185 
9186             ELSE
9187 
9188                -- Indicates entry passed validation
9189 
9190                l_do_not_use_flag := 'N';
9191 
9192                l_do_not_use_reason := NULL;
9193 
9194 
9195 
9196             END IF;
9197 
9198          EXCEPTION
9199 
9200             WHEN fnd_api.g_exc_error THEN
9201 
9202                GOTO Next_List_Entry;
9203 
9204             WHEN fnd_api.g_exc_unexpected_error THEN
9205 
9206                GOTO Next_List_Entry;
9207 
9208             WHEN OTHERS THEN
9209 
9210                RAISE;
9211 
9212          END;
9213 
9214 
9215 
9216          INSERT INTO IEC_VAL_ENTRY_CACHE
9217 
9218             ( LIST_ENTRY_ID
9219 
9220             , POSTAL_CODE
9221 
9222             , DO_NOT_USE_FLAG
9223 
9224             , DO_NOT_USE_REASON
9225 
9226             , PREV_STATUS_CODE
9227 
9228             , CURR_CP_INDEX
9229 
9230             , CURR_CP_ID
9231 
9232             , CURR_CP_TIME_ZONE
9233 
9234             , CURR_CP_COUNTRY_CODE
9235 
9236             , CURR_CP_AREA_CODE
9237 
9238             , CURR_CP_PHONE_NUMBER
9239 
9240             , CURR_CP_RAW_PHONE_NUMBER
9241 
9242             , CURR_CP_TERRITORY_CODE
9243 
9244             , CURR_CP_REGION_ID
9245 
9246             , CURR_CP_MKTG_ITEM_CC_TZS_ID
9247 
9248             , CURR_CP_PHONE_LINE_TYPE
9249 
9250             , CURR_CP_CONTACT_POINT_PURPOSE
9251 
9252             , CONTACT_POINT_ID_S1
9253 
9254             , TIME_ZONE_S1
9255 
9256             , PHONE_COUNTRY_CODE_S1
9257 
9258             , PHONE_AREA_CODE_S1
9259 
9260             , PHONE_NUMBER_S1
9261 
9262             , RAW_PHONE_NUMBER_S1
9263 
9264             , TERRITORY_CODE_S1
9265 
9266             , REGION_ID_S1
9267 
9268             , MKTG_ITEM_CC_TZS_ID_S1
9269 
9270             , VALID_FLAG_S1
9271 
9272             , DO_NOT_USE_REASON_S1
9273 
9274             , PHONE_LINE_TYPE_S1
9275 
9276             , CONTACT_POINT_PURPOSE_S1
9277 
9278             , CONTACT_POINT_ID_S2
9279 
9280             , TIME_ZONE_S2
9281 
9282             , PHONE_COUNTRY_CODE_S2
9283 
9284             , PHONE_AREA_CODE_S2
9285 
9286             , PHONE_NUMBER_S2
9287 
9288             , RAW_PHONE_NUMBER_S2
9289 
9290             , TERRITORY_CODE_S2
9291 
9292             , REGION_ID_S2
9293 
9294             , MKTG_ITEM_CC_TZS_ID_S2
9295 
9296             , VALID_FLAG_S2
9297 
9298             , DO_NOT_USE_REASON_S2
9299 
9300             , PHONE_LINE_TYPE_S2
9301 
9302             , CONTACT_POINT_PURPOSE_S2
9303 
9304             , CONTACT_POINT_ID_S3
9305 
9306             , TIME_ZONE_S3
9307 
9308             , PHONE_COUNTRY_CODE_S3
9309 
9310             , PHONE_AREA_CODE_S3
9311 
9312             , PHONE_NUMBER_S3
9313 
9314             , RAW_PHONE_NUMBER_S3
9315 
9316             , TERRITORY_CODE_S3
9317 
9318             , REGION_ID_S3
9319 
9320             , MKTG_ITEM_CC_TZS_ID_S3
9321 
9322             , VALID_FLAG_S3
9323 
9324             , DO_NOT_USE_REASON_S3
9325 
9326             , PHONE_LINE_TYPE_S3
9327 
9328             , CONTACT_POINT_PURPOSE_S3
9329 
9330             , CONTACT_POINT_ID_S4
9331 
9332             , TIME_ZONE_S4
9333 
9334             , PHONE_COUNTRY_CODE_S4
9335 
9336             , PHONE_AREA_CODE_S4
9337 
9338             , PHONE_NUMBER_S4
9339 
9340             , RAW_PHONE_NUMBER_S4
9341 
9342             , TERRITORY_CODE_S4
9343 
9344             , REGION_ID_S4
9345 
9346             , MKTG_ITEM_CC_TZS_ID_S4
9347 
9348             , VALID_FLAG_S4
9349 
9350             , DO_NOT_USE_REASON_S4
9351 
9352             , PHONE_LINE_TYPE_S4
9353 
9354             , CONTACT_POINT_PURPOSE_S4
9355 
9356             , CONTACT_POINT_ID_S5
9357 
9358             , TIME_ZONE_S5
9359 
9360             , PHONE_COUNTRY_CODE_S5
9361 
9362             , PHONE_AREA_CODE_S5
9363 
9364             , PHONE_NUMBER_S5
9365 
9366             , RAW_PHONE_NUMBER_S5
9367 
9368             , TERRITORY_CODE_S5
9369 
9370             , REGION_ID_S5
9371 
9372             , MKTG_ITEM_CC_TZS_ID_S5
9373 
9374             , VALID_FLAG_S5
9375 
9376             , DO_NOT_USE_REASON_S5
9377 
9378             , PHONE_LINE_TYPE_S5
9379 
9380             , CONTACT_POINT_PURPOSE_S5
9381 
9382             , CONTACT_POINT_ID_S6
9383 
9384             , TIME_ZONE_S6
9385 
9386             , PHONE_COUNTRY_CODE_S6
9387 
9388             , PHONE_AREA_CODE_S6
9389 
9390             , PHONE_NUMBER_S6
9391 
9392             , RAW_PHONE_NUMBER_S6
9393 
9394             , TERRITORY_CODE_S6
9395 
9396             , REGION_ID_S6
9397 
9398             , MKTG_ITEM_CC_TZS_ID_S6
9399 
9400             , VALID_FLAG_S6
9401 
9402             , DO_NOT_USE_REASON_S6
9403 
9404             , PHONE_LINE_TYPE_S6
9405 
9406             , CONTACT_POINT_PURPOSE_S6
9407 
9408             )
9409 
9410          VALUES
9411 
9412             ( l_list_entry_id
9413 
9414             , l_postal_code
9415 
9416             , l_do_not_use_flag
9417 
9418             , l_do_not_use_reason
9419 
9420             , l_prev_record_status
9421 
9422             , l_curr_contact_point_idx
9423 
9424             , l_curr_contact_point.id
9425 
9426             , l_curr_contact_point.time_zone
9427 
9428             , l_curr_contact_point.phone_country_code
9429 
9430             , l_curr_contact_point.phone_area_code
9431 
9432             , l_curr_contact_point.phone_number
9433 
9434             , l_curr_contact_point.raw_phone_number
9435 
9436             , l_curr_contact_point.territory_code
9437 
9438             , l_curr_contact_point.region_id
9439 
9440             , l_curr_contact_point.cc_tz_id
9441 
9442             , l_curr_contact_point.phone_line_type
9443 
9444             , l_curr_contact_point.purpose
9445 
9446             , l_contact_points(1).id
9447 
9448             , l_contact_points(1).time_zone
9449 
9450             , l_contact_points(1).phone_country_code
9451 
9452             , l_contact_points(1).phone_area_code
9453 
9454             , l_contact_points(1).phone_number
9455 
9456             , l_contact_points(1).raw_phone_number
9457 
9458             , l_contact_points(1).territory_code
9459 
9460             , l_contact_points(1).region_id
9461 
9462             , l_contact_points(1).cc_tz_id
9463 
9464             , l_contact_points(1).valid_flag
9465 
9466             , l_contact_points(1).dnu_reason
9467 
9468             , l_contact_points(1).phone_line_type
9469 
9470             , l_contact_points(1).purpose
9471 
9472             , l_contact_points(2).id
9473 
9474             , l_contact_points(2).time_zone
9475 
9476             , l_contact_points(2).phone_country_code
9477 
9478             , l_contact_points(2).phone_area_code
9479 
9480             , l_contact_points(2).phone_number
9481 
9482             , l_contact_points(2).raw_phone_number
9483 
9484             , l_contact_points(2).territory_code
9485 
9486             , l_contact_points(2).region_id
9487 
9488             , l_contact_points(2).cc_tz_id
9489 
9490             , l_contact_points(2).valid_flag
9491 
9492             , l_contact_points(2).dnu_reason
9493 
9494             , l_contact_points(2).phone_line_type
9495 
9496             , l_contact_points(2).purpose
9497 
9498             , l_contact_points(3).id
9499 
9500             , l_contact_points(3).time_zone
9501 
9502             , l_contact_points(3).phone_country_code
9503 
9504             , l_contact_points(3).phone_area_code
9505 
9506             , l_contact_points(3).phone_number
9507 
9508             , l_contact_points(3).raw_phone_number
9509 
9510             , l_contact_points(3).territory_code
9511 
9512             , l_contact_points(3).region_id
9513 
9514             , l_contact_points(3).cc_tz_id
9515 
9516             , l_contact_points(3).valid_flag
9517 
9518             , l_contact_points(3).dnu_reason
9519 
9520             , l_contact_points(3).phone_line_type
9521 
9522             , l_contact_points(3).purpose
9523 
9524             , l_contact_points(4).id
9525 
9526             , l_contact_points(4).time_zone
9527 
9528             , l_contact_points(4).phone_country_code
9529 
9530             , l_contact_points(4).phone_area_code
9531 
9532             , l_contact_points(4).phone_number
9533 
9534             , l_contact_points(4).raw_phone_number
9535 
9536             , l_contact_points(4).territory_code
9537 
9538             , l_contact_points(4).region_id
9539 
9540             , l_contact_points(4).cc_tz_id
9541 
9542             , l_contact_points(4).valid_flag
9543 
9544             , l_contact_points(4).dnu_reason
9545 
9546             , l_contact_points(4).phone_line_type
9547 
9548             , l_contact_points(4).purpose
9549 
9550             , l_contact_points(5).id
9551 
9552             , l_contact_points(5).time_zone
9553 
9554             , l_contact_points(5).phone_country_code
9555 
9556             , l_contact_points(5).phone_area_code
9557 
9558             , l_contact_points(5).phone_number
9559 
9560             , l_contact_points(5).raw_phone_number
9561 
9562             , l_contact_points(5).territory_code
9563 
9564             , l_contact_points(5).region_id
9565 
9566             , l_contact_points(5).cc_tz_id
9567 
9568             , l_contact_points(5).valid_flag
9569 
9570             , l_contact_points(5).dnu_reason
9571 
9572             , l_contact_points(5).phone_line_type
9573 
9574             , l_contact_points(5).purpose
9575 
9576             , l_contact_points(6).id
9577 
9578             , l_contact_points(6).time_zone
9579 
9580             , l_contact_points(6).phone_country_code
9581 
9582             , l_contact_points(6).phone_area_code
9583 
9584             , l_contact_points(6).phone_number
9585 
9586             , l_contact_points(6).raw_phone_number
9587 
9588             , l_contact_points(6).territory_code
9589 
9590             , l_contact_points(6).region_id
9591 
9592             , l_contact_points(6).cc_tz_id
9593 
9594             , l_contact_points(6).valid_flag
9595 
9596             , l_contact_points(6).dnu_reason
9597 
9598             , l_contact_points(6).phone_line_type
9599 
9600             , l_contact_points(6).purpose
9601 
9602             );
9603 
9604 
9605 
9606       <<Next_List_Entry>>
9607 
9608          NULL;
9609 
9610 
9611 
9612       END LOOP;
9613 
9614 
9615 
9616       EXECUTE IMMEDIATE
9617 
9618          'SELECT COUNT(*)
9619 
9620           FROM IEC_VAL_ENTRY_CACHE'
9621 
9622       INTO l_entry_count;
9623 
9624 
9625 
9626       EXIT WHEN l_entry_count = 0;
9627 
9628 
9629 
9630       -- Decrement callable zone counts for all previous contact point callable zones
9631 
9632       -- Required to maintain correct report counts when current contact point or subset
9633 
9634       -- changes
9635 
9636       Incr_CallableZoneCounts_Cache(l_callable_zone_id_col, l_callable_zone_incr_col);
9637 
9638 
9639 
9640       -- Decrement record loaded counts for any entries that were previously assigned
9641 
9642       -- to subsets
9643 
9644       Incr_RecordsLoadedCounts(p_campaign_schedule_id, p_list_id, l_subset_rec_loaded_id_col, l_subset_rec_loaded_incr_col);
9645 
9646 
9647 
9648       -- Assign entries to subsets before updating ALE and Return Entries
9649 
9650       Partition_SubsetEntries(p_list_id, l_subset_id_col, l_subset_view_col, l_subset_rec_loaded_col);
9651 
9652 
9653 
9654       -- Compile data on callable zones and initialize counts
9655 
9656       Update_CallableZones(p_list_id);
9657 
9658 
9659 
9660       Update_AmsListEntries(p_list_id, p_source_type_view);
9661 
9662       Update_ValidationReportDetails(p_list_id);
9663 
9664       Update_IecReturnEntries(p_list_id, p_campaign_schedule_id, p_campaign_id, p_source_type_view);
9665 
9666 
9667 
9668       Update_ReportCounts( p_campaign_id
9669 
9670                          , p_campaign_schedule_id
9671 
9672                          , p_list_id
9673 
9674                          , l_subset_id_col
9675 
9676                          , l_subset_rec_loaded_col);
9677 
9678 
9679 
9680       Purge_CallableZones(p_list_id, p_campaign_schedule_id);
9681 
9682 
9683 
9684       Truncate_IecValEntryCache;
9685 
9686 
9687 
9688       IF p_commit_flag = 'Y' THEN
9689 
9690          COMMIT;
9691 
9692       END IF;
9693 
9694 
9695 
9696    END LOOP;
9697 
9698 
9699 
9700 EXCEPTION
9701 
9702    WHEN fnd_api.g_exc_error THEN
9703 
9704       RAISE;
9705 
9706    WHEN fnd_api.g_exc_unexpected_error THEN
9707 
9708       RAISE;
9709 
9710    WHEN OTHERS THEN
9711 
9712       Log( 'Validate_List_Pvt'
9713 
9714          , 'MAIN'
9715 
9716          , SQLERRM
9717 
9718          );
9719 
9720       RAISE fnd_api.g_exc_unexpected_error;
9721 
9722 
9723 
9724 END Validate_List_Pvt;
9725 
9726 
9727 
9728 FUNCTION Get_CampaignId
9729 
9730    (p_list_id IN NUMBER)
9731 
9732 RETURN NUMBER
9733 
9734 IS
9735 
9736    l_campaign_id NUMBER(15);
9737 
9738 BEGIN
9739 
9740    -- Get Campaign Id
9741 
9742    BEGIN
9743 
9744       EXECUTE IMMEDIATE
9745 
9746          'SELECT B.CAMPAIGN_ID
9747 
9748           FROM AMS_ACT_LISTS A, AMS_CAMPAIGN_SCHEDULES_B B
9749 
9750           WHERE A.LIST_HEADER_ID = :list_id
9751 
9752           AND A.LIST_USED_BY = ''CSCH''
9753 
9754           AND A.LIST_ACT_TYPE = ''TARGET''
9755 
9756           AND A.LIST_USED_BY_ID = B.SCHEDULE_ID'
9757 
9758       INTO l_campaign_id
9759 
9760       USING p_list_id;
9761 
9762    EXCEPTION
9763 
9764       WHEN OTHERS THEN
9765 
9766           Log( 'Get_CampaignScheduleId'
9767 
9768              , 'MAIN'
9769 
9770              , SQLERRM
9771 
9772              );
9773 
9774          RAISE fnd_api.g_exc_unexpected_error;
9775 
9776    END;
9777 
9778 
9779 
9780    RETURN l_campaign_id;
9781 
9782 
9783 
9784 END Get_CampaignId;
9785 
9786 
9787 
9788 FUNCTION Get_ScheduleId
9789 
9790    (p_list_id IN NUMBER)
9791 
9792 RETURN NUMBER
9793 
9794 IS
9795 
9796    l_campaign_schedule_id NUMBER(15);
9797 
9798 BEGIN
9799 
9800 
9801 
9802    IEC_COMMON_UTIL_PVT.Get_ScheduleId(p_list_id, l_campaign_schedule_id);
9803 
9804    RETURN l_campaign_schedule_id;
9805 
9806 
9807 
9808 EXCEPTION
9809 
9810    WHEN OTHERS THEN
9811 
9812       Log('Get_ScheduleId', 'MAIN');
9813 
9814       RAISE fnd_api.g_exc_unexpected_error;
9815 
9816 
9817 
9818 END Get_ScheduleId;
9819 
9820 
9821 
9822 FUNCTION Get_ScheduleSourceCode
9823 
9824    (p_list_id IN NUMBER)
9825 
9826 RETURN VARCHAR2
9827 
9828 IS
9829 
9830    l_source_code VARCHAR2(30);
9831 
9832 BEGIN
9833 
9834 
9835 
9836    BEGIN
9837 
9838       EXECUTE IMMEDIATE
9839 
9840          'SELECT B.SOURCE_CODE
9841 
9842           FROM AMS_ACT_LISTS A, AMS_CAMPAIGN_SCHEDULES_B B
9843 
9844           WHERE A.LIST_USED_BY_ID = B.SCHEDULE_ID
9845 
9846           AND A.LIST_HEADER_ID = :list_id'
9847 
9848       INTO l_source_code
9849 
9850       USING p_list_id;
9851 
9852    EXCEPTION
9853 
9854       WHEN OTHERS THEN
9855 
9856           Log( 'Get_ScheduleSourceCode'
9857 
9858              , 'MAIN'
9859 
9860              , SQLERRM
9861 
9862              );
9863 
9864          RAISE fnd_api.g_exc_unexpected_error;
9865 
9866    END;
9867 
9868 
9869 
9870    RETURN l_source_code;
9871 
9872 
9873 
9874 END Get_ScheduleSourceCode;
9875 
9876 
9877 
9878 PROCEDURE Validate_List_Pre
9879 
9880    ( p_list_id          IN                NUMBER
9881 
9882    , p_use_rules_flag   IN                VARCHAR2
9883 
9884    , x_campaign_id             OUT NOCOPY NUMBER
9885 
9886    , x_campaign_schedule_id    OUT NOCOPY NUMBER
9887 
9888    , x_source_type_view        OUT NOCOPY VARCHAR2 )
9889 
9890 IS
9891 
9892    PRAGMA AUTONOMOUS_TRANSACTION;
9893 
9894 BEGIN
9895 
9896 
9897 
9898    x_campaign_id := Get_CampaignId(p_list_id);
9899 
9900    x_campaign_schedule_id := Get_ScheduleId(p_list_id);
9901 
9902    x_source_type_view := Get_SourceTypeView(p_list_id);
9903 
9904 
9905 
9906    Truncate_Temporary_Tables;
9907 
9908    Init_GlobalVariables;
9909 
9910    Init_LookupTables;
9911 
9912    Load_CallableZones(p_list_id);
9913 
9914 
9915 
9916    IF p_use_rules_flag = 'Y' THEN
9917 
9918       Init_Rules(p_list_id);
9919 
9920    END IF;
9921 
9922 
9923 
9924    COMMIT;
9925 
9926 
9927 
9928 EXCEPTION
9929 
9930    WHEN OTHERS THEN
9931 
9932       Log( 'Validate_List_Pre'
9933 
9934          , 'MAIN'
9935 
9936          , SQLERRM
9937 
9938          );
9939 
9940       ROLLBACK;
9941 
9942       RAISE fnd_api.g_exc_unexpected_error;
9943 
9944 END Validate_List_Pre;
9945 
9946 
9947 
9948 PROCEDURE Validate_List_Post
9949 
9950    ( p_list_id          IN                NUMBER)
9951 
9952 IS
9953 
9954    PRAGMA AUTONOMOUS_TRANSACTION;
9955 
9956 BEGIN
9957 
9958 
9959 
9960    Truncate_Temporary_Tables;
9961 
9962    Refresh_MViews;
9963 
9964    COMMIT;
9965 
9966 
9967 
9968 EXCEPTION
9969 
9970    WHEN OTHERS THEN
9971 
9972       Log( 'Validate_List_Post'
9973 
9974          , 'MAIN'
9975 
9976          , SQLERRM
9977 
9978          );
9979 
9980       ROLLBACK;
9981 
9982       RAISE fnd_api.g_exc_unexpected_error;
9983 
9984 END Validate_List_Post;
9985 
9986 
9987 
9988 /* No longer checking for required columns preemptively
9989 
9990    due to 8i/9i compatibility problems using ALL_TAB_COLS
9991 
9992    Since we must use ALL_TAB_COLUMNS to check for columns
9993 
9994    and we don't want to impact the performance of validation,
9995 
9996    we will only find the missing columns if the error occurs
9997 
9998    see the Log_MissingSourceTypeColumns for implementation.
9999 
10000 
10001 
10002 FUNCTION Verify_SourceTypeColumns
10003 
10004    ( p_list_id          IN            NUMBER
10005 
10006    , p_source_type_view IN            VARCHAR2
10007 
10008    , p_source_type_code IN            VARCHAR2
10009 
10010    )
10011 
10012 RETURN BOOLEAN
10013 
10014 IS
10015 
10016    l_curr         VARCHAR2(32);
10017 
10018    l_view_ok      BOOLEAN := TRUE;
10019 
10020    l_columns      SYSTEM.varchar_tbl_type;
10021 
10022    l_missing_cols VARCHAR2(4000);
10023 
10024    l_table_owner  VARCHAR2(30);
10025 
10026 BEGIN
10027 
10028 
10029 
10030    l_table_owner := Get_AppsSchemaName;
10031 
10032 
10033 
10034    -- Change to ALL_TAB_COLS for performance reasons when 9i db becomes prereq
10035 
10036    SELECT COLUMN_NAME
10037 
10038    BULK COLLECT INTO l_columns
10039 
10040    FROM ALL_TAB_COLUMNS
10041 
10042    WHERE TABLE_NAME = p_source_type_view
10043 
10044    AND OWNER = l_table_owner;
10045 
10046 
10047 
10048    l_curr := 'LIST_ENTRY_ID';
10049 
10050    IF NOT Contains(l_columns, l_curr) THEN
10051 
10052       l_missing_cols := l_missing_cols || ' ' || l_curr;
10053 
10054    END IF;
10055 
10056    l_curr := 'POSTAL_CODE';
10057 
10058    IF NOT Contains(l_columns, l_curr) THEN
10059 
10060       l_missing_cols := l_missing_cols || ' ' || l_curr;
10061 
10062    END IF;
10063 
10064    l_curr := 'DO_NOT_USE_FLAG';
10065 
10066    IF NOT Contains(l_columns, l_curr) THEN
10067 
10068       l_missing_cols := l_missing_cols || ' ' || l_curr;
10069 
10070    END IF;
10071 
10072    l_curr := 'DO_NOT_USE_REASON';
10073 
10074    IF NOT Contains(l_columns, l_curr) THEN
10075 
10076       l_missing_cols := l_missing_cols || ' ' || l_curr;
10077 
10078    END IF;
10079 
10080    l_curr := 'NEWLY_UPDATED_FLAG';
10081 
10082    IF NOT Contains(l_columns, l_curr) THEN
10083 
10084       l_missing_cols := l_missing_cols || ' ' || l_curr;
10085 
10086    END IF;
10087 
10088    l_curr := 'CONTACT_POINT_ID_S1';
10089 
10090    IF NOT Contains(l_columns, l_curr) THEN
10091 
10092       l_missing_cols := l_missing_cols || ' ' || l_curr;
10093 
10094    END IF;
10095 
10096    l_curr := 'TIME_ZONE_S1';
10097 
10098    IF NOT Contains(l_columns, l_curr) THEN
10099 
10100       l_missing_cols := l_missing_cols || ' ' || l_curr;
10101 
10102    END IF;
10103 
10104    l_curr := 'PHONE_COUNTRY_CODE_S1';
10105 
10106    IF NOT Contains(l_columns, l_curr) THEN
10107 
10108       l_missing_cols := l_missing_cols || ' ' || l_curr;
10109 
10110    END IF;
10111 
10112    l_curr := 'PHONE_AREA_CODE_S1';
10113 
10114    IF NOT Contains(l_columns, l_curr) THEN
10115 
10116       l_missing_cols := l_missing_cols || ' ' || l_curr;
10117 
10118    END IF;
10119 
10120    l_curr := 'PHONE_NUMBER_S1';
10121 
10122    IF NOT Contains(l_columns, l_curr) THEN
10123 
10124       l_missing_cols := l_missing_cols || ' ' || l_curr;
10125 
10126    END IF;
10127 
10128    l_curr := 'RAW_PHONE_NUMBER_S1';
10129 
10130    IF NOT Contains(l_columns, l_curr) THEN
10131 
10132       l_missing_cols := l_missing_cols || ' ' || l_curr;
10133 
10134    END IF;
10135 
10136    l_curr := 'REASON_CODE_S1';
10137 
10138    IF NOT Contains(l_columns, l_curr) THEN
10139 
10140       l_missing_cols := l_missing_cols || ' ' || l_curr;
10141 
10142    END IF;
10143 
10144    l_curr := 'PHONE_LINE_TYPE_S1';
10145 
10146    IF NOT Contains(l_columns, l_curr) THEN
10147 
10148       l_missing_cols := l_missing_cols || ' ' || l_curr;
10149 
10150    END IF;
10151 
10152    l_curr := 'CONTACT_POINT_ID_S2';
10153 
10154    IF NOT Contains(l_columns, l_curr) THEN
10155 
10156       l_missing_cols := l_missing_cols || ' ' || l_curr;
10157 
10158    END IF;
10159 
10160    l_curr := 'TIME_ZONE_S2';
10161 
10162    IF NOT Contains(l_columns, l_curr) THEN
10163 
10164       l_missing_cols := l_missing_cols || ' ' || l_curr;
10165 
10166    END IF;
10167 
10168    l_curr := 'PHONE_COUNTRY_CODE_S2';
10169 
10170    IF NOT Contains(l_columns, l_curr) THEN
10171 
10172       l_missing_cols := l_missing_cols || ' ' || l_curr;
10173 
10174    END IF;
10175 
10176    l_curr := 'PHONE_AREA_CODE_S2';
10177 
10178    IF NOT Contains(l_columns, l_curr) THEN
10179 
10180       l_missing_cols := l_missing_cols || ' ' || l_curr;
10181 
10182    END IF;
10183 
10184    l_curr := 'PHONE_NUMBER_S2';
10185 
10186    IF NOT Contains(l_columns, l_curr) THEN
10187 
10188       l_missing_cols := l_missing_cols || ' ' || l_curr;
10189 
10190    END IF;
10191 
10192    l_curr := 'RAW_PHONE_NUMBER_S2';
10193 
10194    IF NOT Contains(l_columns, l_curr) THEN
10195 
10196       l_missing_cols := l_missing_cols || ' ' || l_curr;
10197 
10198    END IF;
10199 
10200    l_curr := 'REASON_CODE_S2';
10201 
10202    IF NOT Contains(l_columns, l_curr) THEN
10203 
10204       l_missing_cols := l_missing_cols || ' ' || l_curr;
10205 
10206    END IF;
10207 
10208    l_curr := 'PHONE_LINE_TYPE_S2';
10209 
10210    IF NOT Contains(l_columns, l_curr) THEN
10211 
10212       l_missing_cols := l_missing_cols || ' ' || l_curr;
10213 
10214    END IF;
10215 
10216    l_curr := 'CONTACT_POINT_ID_S3';
10217 
10218    IF NOT Contains(l_columns, l_curr) THEN
10219 
10220       l_missing_cols := l_missing_cols || ' ' || l_curr;
10221 
10222    END IF;
10223 
10224    l_curr := 'TIME_ZONE_S3';
10225 
10226    IF NOT Contains(l_columns, l_curr) THEN
10227 
10228       l_missing_cols := l_missing_cols || ' ' || l_curr;
10229 
10230    END IF;
10231 
10232    l_curr := 'PHONE_COUNTRY_CODE_S3';
10233 
10234    IF NOT Contains(l_columns, l_curr) THEN
10235 
10236       l_missing_cols := l_missing_cols || ' ' || l_curr;
10237 
10238    END IF;
10239 
10240    l_curr := 'PHONE_AREA_CODE_S3';
10241 
10242    IF NOT Contains(l_columns, l_curr) THEN
10243 
10244       l_missing_cols := l_missing_cols || ' ' || l_curr;
10245 
10246    END IF;
10247 
10248    l_curr := 'PHONE_NUMBER_S3';
10249 
10250    IF NOT Contains(l_columns, l_curr) THEN
10251 
10252       l_missing_cols := l_missing_cols || ' ' || l_curr;
10253 
10254    END IF;
10255 
10256    l_curr := 'RAW_PHONE_NUMBER_S3';
10257 
10258    IF NOT Contains(l_columns, l_curr) THEN
10259 
10260       l_missing_cols := l_missing_cols || ' ' || l_curr;
10261 
10262    END IF;
10263 
10264    l_curr := 'REASON_CODE_S3';
10265 
10266    IF NOT Contains(l_columns, l_curr) THEN
10267 
10268       l_missing_cols := l_missing_cols || ' ' || l_curr;
10269 
10270    END IF;
10271 
10272    l_curr := 'PHONE_LINE_TYPE_S3';
10273 
10274    IF NOT Contains(l_columns, l_curr) THEN
10275 
10276       l_missing_cols := l_missing_cols || ' ' || l_curr;
10277 
10278    END IF;
10279 
10280    l_curr := 'CONTACT_POINT_ID_S4';
10281 
10282    IF NOT Contains(l_columns, l_curr) THEN
10283 
10284       l_missing_cols := l_missing_cols || ' ' || l_curr;
10285 
10286    END IF;
10287 
10288    l_curr := 'TIME_ZONE_S4';
10289 
10290    IF NOT Contains(l_columns, l_curr) THEN
10291 
10292       l_missing_cols := l_missing_cols || ' ' || l_curr;
10293 
10294    END IF;
10295 
10296    l_curr := 'PHONE_COUNTRY_CODE_S4';
10297 
10298    IF NOT Contains(l_columns, l_curr) THEN
10299 
10300       l_missing_cols := l_missing_cols || ' ' || l_curr;
10301 
10302    END IF;
10303 
10304    l_curr := 'PHONE_AREA_CODE_S4';
10305 
10306    IF NOT Contains(l_columns, l_curr) THEN
10307 
10308       l_missing_cols := l_missing_cols || ' ' || l_curr;
10309 
10310    END IF;
10311 
10312    l_curr := 'PHONE_NUMBER_S4';
10313 
10314    IF NOT Contains(l_columns, l_curr) THEN
10315 
10316       l_missing_cols := l_missing_cols || ' ' || l_curr;
10317 
10318    END IF;
10319 
10320    l_curr := 'RAW_PHONE_NUMBER_S4';
10321 
10322    IF NOT Contains(l_columns, l_curr) THEN
10323 
10324       l_missing_cols := l_missing_cols || ' ' || l_curr;
10325 
10326    END IF;
10327 
10328    l_curr := 'REASON_CODE_S4';
10329 
10330    IF NOT Contains(l_columns, l_curr) THEN
10331 
10332       l_missing_cols := l_missing_cols || ' ' || l_curr;
10333 
10334    END IF;
10335 
10336    l_curr := 'PHONE_LINE_TYPE_S4';
10337 
10338    IF NOT Contains(l_columns, l_curr) THEN
10339 
10340       l_missing_cols := l_missing_cols || ' ' || l_curr;
10341 
10342    END IF;
10343 
10344    l_curr := 'CONTACT_POINT_ID_S5';
10345 
10346    IF NOT Contains(l_columns, l_curr) THEN
10347 
10348       l_missing_cols := l_missing_cols || ' ' || l_curr;
10349 
10350    END IF;
10351 
10352    l_curr := 'TIME_ZONE_S5';
10353 
10354    IF NOT Contains(l_columns, l_curr) THEN
10355 
10356       l_missing_cols := l_missing_cols || ' ' || l_curr;
10357 
10358    END IF;
10359 
10360    l_curr := 'PHONE_COUNTRY_CODE_S5';
10361 
10362    IF NOT Contains(l_columns, l_curr) THEN
10363 
10364       l_missing_cols := l_missing_cols || ' ' || l_curr;
10365 
10366    END IF;
10367 
10368    l_curr := 'PHONE_AREA_CODE_S5';
10369 
10370    IF NOT Contains(l_columns, l_curr) THEN
10371 
10372       l_missing_cols := l_missing_cols || ' ' || l_curr;
10373 
10374    END IF;
10375 
10376    l_curr := 'PHONE_NUMBER_S5';
10377 
10378    IF NOT Contains(l_columns, l_curr) THEN
10379 
10380       l_missing_cols := l_missing_cols || ' ' || l_curr;
10381 
10382    END IF;
10383 
10384    l_curr := 'RAW_PHONE_NUMBER_S5';
10385 
10386    IF NOT Contains(l_columns, l_curr) THEN
10387 
10388       l_missing_cols := l_missing_cols || ' ' || l_curr;
10389 
10390    END IF;
10391 
10392    l_curr := 'REASON_CODE_S5';
10393 
10394    IF NOT Contains(l_columns, l_curr) THEN
10395 
10396       l_missing_cols := l_missing_cols || ' ' || l_curr;
10397 
10398    END IF;
10399 
10400    l_curr := 'PHONE_LINE_TYPE_S5';
10401 
10402    IF NOT Contains(l_columns, l_curr) THEN
10403 
10404       l_missing_cols := l_missing_cols || ' ' || l_curr;
10405 
10406    END IF;
10407 
10408    l_curr := 'CONTACT_POINT_ID_S6';
10409 
10410    IF NOT Contains(l_columns, l_curr) THEN
10411 
10412       l_missing_cols := l_missing_cols || ' ' || l_curr;
10413 
10414    END IF;
10415 
10416    l_curr := 'TIME_ZONE_S6';
10417 
10418    IF NOT Contains(l_columns, l_curr) THEN
10419 
10420       l_missing_cols := l_missing_cols || ' ' || l_curr;
10421 
10422    END IF;
10423 
10424    l_curr := 'PHONE_COUNTRY_CODE_S6';
10425 
10426    IF NOT Contains(l_columns, l_curr) THEN
10427 
10428       l_missing_cols := l_missing_cols || ' ' || l_curr;
10429 
10430    END IF;
10431 
10432    l_curr := 'PHONE_AREA_CODE_S6';
10433 
10434    IF NOT Contains(l_columns, l_curr) THEN
10435 
10436       l_missing_cols := l_missing_cols || ' ' || l_curr;
10437 
10438    END IF;
10439 
10440    l_curr := 'PHONE_NUMBER_S6';
10441 
10442    IF NOT Contains(l_columns, l_curr) THEN
10443 
10444       l_missing_cols := l_missing_cols || ' ' || l_curr;
10445 
10446    END IF;
10447 
10448    l_curr := 'RAW_PHONE_NUMBER_S6';
10449 
10450    IF NOT Contains(l_columns, l_curr) THEN
10451 
10452       l_missing_cols := l_missing_cols || ' ' || l_curr;
10453 
10454    END IF;
10455 
10456    l_curr := 'REASON_CODE_S6';
10457 
10458    IF NOT Contains(l_columns, l_curr) THEN
10459 
10460       l_missing_cols := l_missing_cols || ' ' || l_curr;
10461 
10462    END IF;
10463 
10464    l_curr := 'PHONE_LINE_TYPE_S6';
10465 
10466    IF NOT Contains(l_columns, l_curr) THEN
10467 
10468       l_missing_cols := l_missing_cols || ' ' || l_curr;
10469 
10470    END IF;
10471 
10472 
10473 
10474    IF l_missing_cols IS NOT NULL THEN
10475 
10476       l_view_ok := FALSE;
10477 
10478 
10479 
10480       FND_MESSAGE.SET_NAME( 'IEC'
10481 
10482                           , 'IEC_VAL_STV_MISSING_COLUMNS');
10483 
10484       FND_MESSAGE.SET_TOKEN( 'SOURCE_TYPE_CODE'
10485 
10486                            , NVL(p_source_type_code, 'UNKNOWN')
10487 
10488                            , TRUE);
10489 
10490       FND_MESSAGE.SET_TOKEN( 'MISSING_COLUMNS'
10491 
10492                            , NVL(l_missing_cols, 'UNKNOWN')
10493 
10494                            , TRUE);
10495 
10496 
10497 
10498       -- References FND_MESSAGE object initialized above
10499 
10500       Set_ValidationHistoryDetails('FAILED_VALIDATION', 'VERIFY_SOURCETYPECOLUMNS', 'MAIN', NULL);
10501 
10502 
10503 
10504    END IF;
10505 
10506 
10507 
10508    RETURN l_view_ok;
10509 
10510 
10511 
10512 END Verify_SourceTypeColumns;
10513 
10514 */
10515 
10516 FUNCTION Verify_EntrySourceTypes
10517 
10518    ( p_list_id     IN            NUMBER
10519 
10520    )
10521 
10522 RETURN BOOLEAN
10523 
10524 IS
10525 
10526    l_entries_ok             BOOLEAN := TRUE;
10527 
10528    l_str                    VARCHAR2(4000);
10529 
10530    l_found_list_source_type BOOLEAN := FALSE;
10531 
10532    l_source_type_col        SYSTEM.varchar_tbl_type;
10533 
10534    l_source_type_count_col  SYSTEM.number_tbl_type;
10535 
10536    l_list_source_type       VARCHAR2(32);
10537 
10538 BEGIN
10539 
10540 
10541 
10542    SELECT LIST_ENTRY_SOURCE_SYSTEM_TYPE, COUNT(*)
10543 
10544    BULK COLLECT INTO l_source_type_col, l_source_type_count_col
10545 
10546    FROM AMS_LIST_ENTRIES
10547 
10548    WHERE LIST_HEADER_ID = p_list_id
10549 
10550    GROUP BY LIST_ENTRY_SOURCE_SYSTEM_TYPE;
10551 
10552 
10553 
10554    SELECT LIST_SOURCE_TYPE
10555 
10556    INTO l_list_source_type
10557 
10558    FROM AMS_LIST_HEADERS_ALL
10559 
10560    WHERE LIST_HEADER_ID = p_list_id;
10561 
10562 
10563 
10564    IF l_source_type_col IS NOT NULL AND l_source_type_col.COUNT > 0 THEN
10565 
10566       FOR i IN l_source_type_col.FIRST..l_source_type_col.LAST LOOP
10567 
10568          IF l_source_type_col(i) = l_list_source_type THEN
10569 
10570             l_found_list_source_type := TRUE;
10571 
10572             IF l_source_type_col.COUNT = 1 THEN
10573 
10574                EXIT; -- all entries belong to list source type
10575 
10576             ELSE
10577 
10578                -- some entries belong to other source types, so document count for error message
10579 
10580                l_str := l_str || ' (' || l_source_type_col(i) || '=' || l_source_type_count_col(i) || ')';
10581 
10582             END IF;
10583 
10584          ELSE
10585 
10586             -- document counts for other source types for error message
10587 
10588             l_str := l_str || ' (' || l_source_type_col(i) || '=' || l_source_type_count_col(i) || ')';
10589 
10590          END IF;
10591 
10592       END LOOP;
10593 
10594 
10595 
10596       IF NOT l_found_list_source_type THEN
10597 
10598          l_entries_ok := FALSE;
10599 
10600          Log_SourceTypeMismatchAll('Verify_EntrySourceTypes', 'MAIN', l_list_source_type, l_str);
10601 
10602       ELSIF l_str IS NOT NULL THEN
10603 
10604          l_entries_ok := TRUE;
10605 
10606          Log_SourceTypeMismatchSome('Verify_EntrySourceTypes', 'MAIN', l_list_source_type, l_str);
10607 
10608       END IF;
10609 
10610 
10611 
10612    ELSE
10613 
10614       -- no entries exist in the list for any source types
10615 
10616       l_entries_ok := FALSE;
10617 
10618       Log_NoEntriesFound('Verify_EntrySourceTypes', 'MAIN');
10619 
10620 
10621 
10622    END IF;
10623 
10624 
10625 
10626    RETURN l_entries_ok;
10627 
10628 
10629 
10630 END Verify_EntrySourceTypes;
10631 
10632 
10633 
10634 PROCEDURE Insert_ValidationHistoryRec
10635 
10636    ( p_list_id    IN NUMBER
10637 
10638    )
10639 
10640 IS
10641 
10642    PRAGMA AUTONOMOUS_TRANSACTION;
10643 
10644 
10645 
10646    l_user_id NUMBER;
10647 
10648    l_login_id NUMBER;
10649 
10650 BEGIN
10651 
10652    l_user_id := nvl(FND_GLOBAL.user_id, -1);
10653 
10654    l_login_id := nvl(FND_GLOBAL.conc_login_id, -1);
10655 
10656    INSERT INTO IEC_O_VALIDATION_HISTORY
10657 
10658       ( VALIDATION_HISTORY_ID
10659 
10660       , LIST_HEADER_ID
10661 
10662       , STATUS
10663 
10664       , START_TIME
10665 
10666       , END_TIME
10667 
10668       , DESCRIPTION
10669 
10670       , CREATED_BY
10671 
10672       , CREATION_DATE
10673 
10674       , LAST_UPDATED_BY
10675 
10676       , LAST_UPDATE_DATE
10677 
10678       , LAST_UPDATE_LOGIN
10679 
10680       , OBJECT_VERSION_NUMBER
10681 
10682       )
10683 
10684    VALUES
10685 
10686       ( IEC_O_VALIDATION_HISTORY_S.NEXTVAL
10687 
10688       , p_list_id
10689 
10690       , g_status
10691 
10692       , g_start_time
10693 
10694       , g_end_time
10695 
10696       , g_encoded_message
10697 
10698       , l_user_id
10699 
10700       , SYSDATE
10701 
10702       , l_user_id
10703 
10704       , SYSDATE
10705 
10706       , l_login_id
10707 
10708       , 1
10709 
10710       );
10711 
10712 
10713 
10714    -- We can assume that FND_MESSAGE has been initialized b/c
10715 
10716    -- Set_ValidationHistoryDetails creates a message if message
10717 
10718    -- hasn't already been created
10719 
10720    IF g_status = 'FAILED_VALIDATION' THEN
10721 
10722       IEC_OCS_LOG_PVT.Log_Message(g_module);
10723 
10724    END IF;
10725 
10726 
10727 
10728    COMMIT;
10729 
10730 EXCEPTION
10731 
10732    WHEN OTHERS THEN
10733 
10734       Log( 'Insert_ValidationHistoryRec'
10735 
10736          , 'MAIN'
10737 
10738          , SQLERRM);
10739 
10740 END Insert_ValidationHistoryRec;
10741 
10742 
10743 
10744 PROCEDURE Validate_List
10745 
10746    ( p_list_id         IN            NUMBER
10747 
10748    , x_return_code        OUT NOCOPY VARCHAR2)   -- OUT
10749 
10750 IS
10751 
10752 
10753 
10754    l_campaign_id NUMBER(15);
10755 
10756    l_campaign_schedule_id NUMBER(15);
10757 
10758    l_source_type_view VARCHAR2(32);
10759 
10760    l_list_entry_csr ListEntryCsrType;
10761 
10762 
10763    l_record_invalid NUMBER := 0;
10764 
10765    l_valid_count NUMBER := 0;
10766 
10767    l_total_count NUMBER := 0;
10768 
10769 
10770 
10771 BEGIN
10772 
10773 
10774 
10775    x_return_code := FND_API.G_RET_STS_SUCCESS;
10776 
10777 
10778 
10779    -- Setup logging information
10780 
10781    Init_LoggingVariables;
10782 
10783    Disable_FndLogging;
10784 
10785    Set_MessagePrefix('validate_list_' || p_list_id);
10786 
10787 
10788 
10789    Update_Status(p_list_id, 'VALIDATING');
10790 
10791 
10792 
10793    Validate_List_Pre( p_list_id
10794 
10795                     , 'Y'       -- enable use of validation rules
10796 
10797                     , l_campaign_id
10798 
10799                     , l_campaign_schedule_id
10800 
10801                     , l_source_type_view
10802 
10803                     );
10804 
10805 
10806 
10807    -- Check to see if all entries are assigned to the list's source type
10808 
10809    IF NOT Verify_EntrySourceTypes(p_list_id) THEN
10810 
10811       RAISE fnd_api.g_exc_error;
10812 
10813    END IF;
10814 
10815 
10816 
10817    -- Validate records that have at least one invalid contact point that have not been
10818 
10819    -- marked as do not use for some reason other than failed validation
10820 
10821    -- also look for updated records
10822 
10823    -- FIX: NULL is placeholder for contact point purpose when it is added to the source type views
10824 
10825    BEGIN
10826 
10827       OPEN l_list_entry_csr FOR
10828 
10829            'SELECT A.LIST_ENTRY_ID, A.POSTAL_CODE, A.DO_NOT_USE_FLAG, A.DO_NOT_USE_REASON, A.NEWLY_UPDATED_FLAG, B.SUBSET_ID, B.ITM_CC_TZ_ID, B.CONTACT_POINT_INDEX,
10830 
10831             A.CONTACT_POINT_ID_S1, A.TIME_ZONE_S1, A.PHONE_COUNTRY_CODE_S1, A.PHONE_AREA_CODE_S1, A.PHONE_NUMBER_S1, A.RAW_PHONE_NUMBER_S1, A.REASON_CODE_S1, A.PHONE_LINE_TYPE_S1, NULL,
10832 
10833             A.CONTACT_POINT_ID_S2, A.TIME_ZONE_S2, A.PHONE_COUNTRY_CODE_S2, A.PHONE_AREA_CODE_S2, A.PHONE_NUMBER_S2, A.RAW_PHONE_NUMBER_S2, A.REASON_CODE_S2, A.PHONE_LINE_TYPE_S2, NULL,
10834 
10835             A.CONTACT_POINT_ID_S3, A.TIME_ZONE_S3, A.PHONE_COUNTRY_CODE_S3, A.PHONE_AREA_CODE_S3, A.PHONE_NUMBER_S3, A.RAW_PHONE_NUMBER_S3, A.REASON_CODE_S3, A.PHONE_LINE_TYPE_S3, NULL,
10836 
10837             A.CONTACT_POINT_ID_S4, A.TIME_ZONE_S4, A.PHONE_COUNTRY_CODE_S4, A.PHONE_AREA_CODE_S4, A.PHONE_NUMBER_S4, A.RAW_PHONE_NUMBER_S4, A.REASON_CODE_S4, A.PHONE_LINE_TYPE_S4, NULL,
10838 
10839             A.CONTACT_POINT_ID_S5, A.TIME_ZONE_S5, A.PHONE_COUNTRY_CODE_S5, A.PHONE_AREA_CODE_S5, A.PHONE_NUMBER_S5, A.RAW_PHONE_NUMBER_S5, A.REASON_CODE_S5, A.PHONE_LINE_TYPE_S5, NULL,
10840 
10841             A.CONTACT_POINT_ID_S6, A.TIME_ZONE_S6, A.PHONE_COUNTRY_CODE_S6, A.PHONE_AREA_CODE_S6, A.PHONE_NUMBER_S6, A.RAW_PHONE_NUMBER_S6, A.REASON_CODE_S6, A.PHONE_LINE_TYPE_S6, NULL
10842 
10843             FROM ' || l_source_type_view || ' A, IEC_G_RETURN_ENTRIES B
10844 
10845             WHERE A.LIST_HEADER_ID = B.LIST_HEADER_ID(+)
10846 
10847             AND A.LIST_ENTRY_ID = B.LIST_ENTRY_ID(+)
10848 
10849             AND A.LIST_HEADER_ID = :list_id
10850 
10851             AND A.ENABLED_FLAG = ''Y''
10852 
10853             AND (((
10854 
10855                     ((A.PHONE_NUMBER_S1 IS NOT NULL OR A.RAW_PHONE_NUMBER_S1 IS NOT NULL) AND A.REASON_CODE_S1 IS NULL)
10856 
10857                     OR
10858 
10859                     ((A.PHONE_NUMBER_S2 IS NOT NULL OR A.RAW_PHONE_NUMBER_S2 IS NOT NULL) AND A.REASON_CODE_S2 IS NULL)
10860 
10861                     OR
10862 
10863                     ((A.PHONE_NUMBER_S3 IS NOT NULL OR A.RAW_PHONE_NUMBER_S3 IS NOT NULL) AND A.REASON_CODE_S3 IS NULL)
10864 
10865                     OR
10866 
10867                     ((A.PHONE_NUMBER_S4 IS NOT NULL OR A.RAW_PHONE_NUMBER_S4 IS NOT NULL) AND A.REASON_CODE_S4 IS NULL)
10868 
10869                     OR
10870 
10871                     ((A.PHONE_NUMBER_S5 IS NOT NULL OR A.RAW_PHONE_NUMBER_S5 IS NOT NULL) AND A.REASON_CODE_S5 IS NULL)
10872 
10873                     OR
10874 
10875                     ((A.PHONE_NUMBER_S6 IS NOT NULL OR A.RAW_PHONE_NUMBER_S6 IS NOT NULL) AND A.REASON_CODE_S6 IS NULL)
10876 
10877                    )
10878 
10879                 AND (A.DO_NOT_USE_FLAG = ''N'' OR A.DO_NOT_USE_FLAG IS NULL OR A.DO_NOT_USE_REASON = 4)
10880 
10881                  )
10882 
10883                 OR A.NEWLY_UPDATED_FLAG = ''Y''
10884 
10885                 )'
10886 
10887       USING p_list_id;
10888 
10889    EXCEPTION
10890 
10891       WHEN OTHERS THEN
10892 
10893          IF SQLCODE = -904 THEN
10894 
10895             Log_MissingSourceTypeColumns(p_list_id, l_source_type_view, Get_SourceType(p_list_id), 'VALIDATE_LIST', 'SELECT_ENTRIES_FOR_VALIDATION');
10896 
10897             RAISE fnd_api.g_exc_error;
10898 
10899          ELSE
10900 
10901             RAISE;
10902 
10903          END IF;
10904 
10905    END;
10906 
10907 
10908 
10909    Validate_List_Pvt( p_list_id
10910 
10911                     , l_campaign_schedule_id
10912 
10913                     , l_campaign_id
10914 
10915                     , l_source_type_view
10916 
10917                     , l_list_entry_csr
10918 
10919                     , 'Y' -- commit each batch
10920 
10921                     );
10922 
10923 
10924 
10925    CLOSE l_list_entry_csr;
10926 
10927 
10928 
10929    Remove_DeletedRecords(p_list_id, l_campaign_schedule_id);
10930 
10931    COMMIT;
10932 
10933 
10934 
10935    Validate_List_Post(p_list_id);
10936 
10937 
10938 
10939    Update_Status(p_list_id, 'VALIDATED');
10940 
10941 -- fix bug 4260294 by Jean Zhu
10942 
10943 /*   SELECT (RECORD_VALID_ALL_CPS + RECORD_VALID_SOME_CPS)
10944 
10945         , (RECORD_VALID_ALL_CPS + RECORD_VALID_SOME_CPS + RECORD_INVALID)
10946 
10947    INTO l_valid_count
10948 
10949       , l_total_count
10950 
10951    FROM IEC_G_REP_LIST_DETAILS_V
10952 
10953    WHERE LIST_HEADER_ID = p_list_id; */
10954 
10955    SELECT COUNT(*) RECORDS_INVALID
10956 	into l_record_invalid
10957 	FROM IEC_O_VALIDATION_REPORT_DETS
10958 	WHERE ( DO_NOT_USE_REASON_S1 IS NOT NULL AND
10959 		DO_NOT_USE_REASON_S2 IS NOT NULL AND
10960 		DO_NOT_USE_REASON_S3 IS NOT NULL AND
10961 		DO_NOT_USE_REASON_S4 IS NOT NULL AND
10962 		DO_NOT_USE_REASON_S5 IS NOT NULL AND
10963 		DO_NOT_USE_REASON_S6 IS NOT NULL ) AND
10964 	 	LIST_HEADER_ID = p_list_id;
10965 
10966   SELECT SUM(NVL(A.RECORD_LOADED, 0))
10967 	into l_valid_count
10968 	FROM IEC_G_REP_SUBSET_COUNTS A,
10969 	     IEC_G_LIST_SUBSETS D
10970 	where A.SUBSET_ID = D.LIST_SUBSET_ID AND
10971 		D.LIST_HEADER_ID = p_list_id AND D.STATUS_CODE <> 'DELETED';
10972 
10973 
10974    l_total_count := l_valid_count + l_record_invalid;
10975 
10976    Log_ValidationSuccess('VALIDATE_LIST', 'MAIN', l_total_count, l_valid_count);
10977 
10978    Insert_ValidationHistoryRec(p_list_id);
10979 
10980 
10981 
10982 EXCEPTION
10983 
10984    WHEN fnd_api.g_exc_error THEN
10985 
10986       x_return_code := FND_API.G_RET_STS_ERROR;
10987 
10988       ROLLBACK;
10989 
10990       Validate_List_Post(p_list_id);
10991 
10992       Update_Status(p_list_id, 'FAILED_VALIDATION');
10993 
10994       Insert_ValidationHistoryRec(p_list_id);
10995 
10996       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
10997 
10998    WHEN fnd_api.g_exc_unexpected_error THEN
10999 
11000       x_return_code := FND_API.G_RET_STS_ERROR;
11001 
11002       ROLLBACK;
11003 
11004       Validate_List_Post(p_list_id);
11005 
11006       Update_Status(p_list_id, 'FAILED_VALIDATION');
11007 
11008       Insert_ValidationHistoryRec(p_list_id);
11009 
11010       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
11011 
11012    WHEN OTHERS THEN
11013 
11014       Log( 'Validate_List'
11015 
11016          , 'MAIN'
11017 
11018          , SQLERRM
11019 
11020          );
11021 
11022       x_return_code := FND_API.G_RET_STS_ERROR;
11023 
11024       ROLLBACK;
11025 
11026       Validate_List_Post(p_list_id);
11027 
11028       Update_Status(p_list_id, 'FAILED_VALIDATION');
11029 
11030       Insert_ValidationHistoryRec(p_list_id);
11031 
11032       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
11033 
11034 END Validate_List;
11035 
11036 
11037 
11038 PROCEDURE Copy_AmsListEntries
11039 
11040    ( p_from_list_entry_id_col  IN            SYSTEM.number_tbl_type
11041 
11042    , p_from_list_id_col        IN            SYSTEM.number_tbl_type
11043 
11044    , x_to_list_entry_id_col       OUT NOCOPY SYSTEM.number_tbl_type   -- OUT
11045 
11046    , p_to_list_id              IN            NUMBER)
11047 IS
11048     l_api_version     CONSTANT NUMBER   := 1.0;
11049     l_init_msg_list		VARCHAR2(1);
11050     l_return_status		VARCHAR2(1);
11051     l_msg_count			  NUMBER;
11052     l_msg_data			  VARCHAR2(2000);
11053     l_listentry_rec AMS_LISTENTRY_PVT.entry_rec_type;
11054 BEGIN
11055     l_init_msg_list		:=FND_API.G_TRUE;
11056 
11057     x_to_list_entry_id_col := SYSTEM.number_tbl_type();
11058 
11059     x_to_list_entry_id_col.EXTEND(p_from_list_entry_id_col.COUNT);
11060 
11061     FOR i IN 1..x_to_list_entry_id_col.COUNT
11062 
11063     LOOP
11064       SELECT  SYSDATE, LAST_UPDATED_BY, SYSDATE, CREATED_BY, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER
11065 
11066        , LIST_SELECT_ACTION_ID, ARC_LIST_SELECT_ACTION_FROM, LIST_SELECT_ACTION_FROM_NAME, SOURCE_CODE, ARC_LIST_USED_BY_SOURCE, SOURCE_CODE_FOR_ID
11067 
11068        , PIN_CODE, LIST_ENTRY_SOURCE_SYSTEM_ID, LIST_ENTRY_SOURCE_SYSTEM_TYPE, VIEW_APPLICATION_ID, MANUALLY_ENTERED_FLAG
11069 
11070        , MARKED_AS_DUPLICATE_FLAG, MARKED_AS_RANDOM_FLAG, PART_OF_CONTROL_GROUP_FLAG, EXCLUDE_IN_TRIGGERED_LIST_FLAG, ENABLED_FLAG, CELL_CODE, DEDUPE_KEY
11071 
11072        , RANDOMLY_GENERATED_NUMBER, CAMPAIGN_ID, MEDIA_ID, CHANNEL_ID, CHANNEL_SCHEDULE_ID, EVENT_OFFER_ID, CUSTOMER_ID, MARKET_SEGMENT_ID
11073 
11074        , PARTY_ID, PARENT_PARTY_ID, VENDOR_ID, TRANSFER_FLAG, TRANSFER_STATUS, LIST_SOURCE, DUPLICATE_MASTER_ENTRY_ID, MARKED_FLAG, LEAD_ID, LETTER_ID
11075 
11076        , PICKING_HEADER_ID, BATCH_ID, SUFFIX, FIRST_NAME, LAST_NAME, CUSTOMER_NAME, TITLE, ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE, ZIPCODE, COUNTRY, FAX, PHONE, EMAIL_ADDRESS
11077 
11078        , COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18
11079 
11080        , COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33, COL34, COL35
11081 
11082        , COL36, COL37, COL38, COL39, COL40, COL41, COL42, COL43, COL44, COL45, COL46, COL47, COL48, COL49, COL50, COL51, COL52
11083 
11084        , COL53, COL54, COL55, COL56, COL57, COL58, COL59, COL60, COL61, COL62, COL63, COL64, COL65, COL66, COL67, COL68, COL69
11085 
11086        , COL70, COL71, COL72, COL73, COL74, COL75, COL76, COL77, COL78, COL79, COL80, COL81, COL82, COL83, COL84, COL85, COL86
11087 
11088        , COL87, COL88, COL89, COL90, COL91, COL92, COL93, COL94, COL95, COL96, COL97, COL98, COL99, COL100, COL101, COL102, COL103
11089 
11090        , COL104, COL105, COL106, COL107, COL108, COL109, COL110, COL111, COL112, COL113, COL114, COL115, COL116, COL117, COL118, COL119
11091 
11092        , COL120, COL121, COL122, COL123, COL124, COL125, COL126, COL127, COL128, COL129, COL130, COL131, COL132, COL133, COL134, COL135
11093 
11094        , COL136, COL137, COL138, COL139, COL140, COL141, COL142, COL143, COL144, COL145, COL146, COL147, COL148, COL149, COL150, COL151
11095 
11096        , COL152, COL153, COL154, COL155, COL156, COL157, COL158, COL159, COL160, COL161, COL162, COL163, COL164, COL165, COL166, COL167
11097 
11098        , COL168, COL169, COL170, COL171, COL172, COL173, COL174, COL175, COL176, COL177, COL178, COL179, COL180, COL181, COL182, COL183
11099 
11100        , COL184, COL185, COL186, COL187, COL188, COL189, COL190, COL191, COL192, COL193, COL194, COL195, COL196, COL197, COL198, COL199
11101 
11102        , COL200, COL201, COL202, COL203, COL204, COL205, COL206, COL207, COL208, COL209, COL210, COL211, COL212, COL213, COL214, COL215
11103 
11104        , COL216, COL217, COL218, COL219, COL220, COL221, COL222, COL223, COL224, COL225, COL226, COL227, COL228, COL229, COL230, COL231
11105 
11106        , COL232, COL233, COL234, COL235, COL236, COL237, COL238, COL239, COL240, COL241, COL242, COL243, COL244, COL245, COL246, COL247
11107 
11108        , COL248, COL249, COL250, IMP_SOURCE_LINE_ID, USAGE_RESTRICTION, COL251, COL252, COL253, COL254, COL255, COL256, COL257, COL258
11109 
11110        , COL259, COL260, COL261, COL262, COL263, COL264, COL265, COL266, COL267, COL268, COL269, COL270, COL271, COL272, COL273, COL274
11111 
11112        , COL275, COL276, COL277, COL278, COL279, COL280, COL281, COL282, COL283, COL284, COL285, COL286, COL287, COL288, COL289, COL290
11113 
11114        , COL291, COL292, COL293, COL294, COL295, COL296, COL297, COL298, COL299, COL300 INTO
11115 
11116        l_listentry_rec.LAST_UPDATE_DATE, l_listentry_rec.LAST_UPDATED_BY, l_listentry_rec.CREATION_DATE, l_listentry_rec.CREATED_BY, l_listentry_rec.LAST_UPDATE_LOGIN
11117 
11118        , l_listentry_rec.OBJECT_VERSION_NUMBER, l_listentry_rec.LIST_SELECT_ACTION_ID, l_listentry_rec.ARC_LIST_SELECT_ACTION_FROM, l_listentry_rec.LIST_SELECT_ACTION_FROM_NAME
11119 
11120        , l_listentry_rec.SOURCE_CODE, l_listentry_rec.ARC_LIST_USED_BY_SOURCE, l_listentry_rec.SOURCE_CODE_FOR_ID, l_listentry_rec.PIN_CODE
11121 
11122        , l_listentry_rec.LIST_ENTRY_SOURCE_SYSTEM_ID, l_listentry_rec.LIST_ENTRY_SOURCE_SYSTEM_TYPE, l_listentry_rec.VIEW_APPLICATION_ID, l_listentry_rec.MANUALLY_ENTERED_FLAG
11123 
11124        , l_listentry_rec.MARKED_AS_DUPLICATE_FLAG, l_listentry_rec.MARKED_AS_RANDOM_FLAG, l_listentry_rec.PART_OF_CONTROL_GROUP_FLAG,l_listentry_rec.EXCLUDE_IN_TRIGGERED_LIST_FLAG
11125 
11126        , l_listentry_rec.ENABLED_FLAG, l_listentry_rec.CELL_CODE, l_listentry_rec.DEDUPE_KEY, l_listentry_rec.RANDOMLY_GENERATED_NUMBER, l_listentry_rec.CAMPAIGN_ID
11127 
11128        , l_listentry_rec.MEDIA_ID, l_listentry_rec.CHANNEL_ID, l_listentry_rec.CHANNEL_SCHEDULE_ID, l_listentry_rec.EVENT_OFFER_ID, l_listentry_rec.CUSTOMER_ID
11129 
11130        , l_listentry_rec.MARKET_SEGMENT_ID, l_listentry_rec.PARTY_ID, l_listentry_rec.PARENT_PARTY_ID, l_listentry_rec.VENDOR_ID, l_listentry_rec.TRANSFER_FLAG
11131 
11132        , l_listentry_rec.TRANSFER_STATUS, l_listentry_rec.LIST_SOURCE, l_listentry_rec.DUPLICATE_MASTER_ENTRY_ID, l_listentry_rec.MARKED_FLAG, l_listentry_rec.LEAD_ID
11133 
11134        , l_listentry_rec.LETTER_ID, l_listentry_rec.PICKING_HEADER_ID, l_listentry_rec.BATCH_ID, l_listentry_rec.SUFFIX, l_listentry_rec.FIRST_NAME, l_listentry_rec.LAST_NAME
11135 
11136        , l_listentry_rec.CUSTOMER_NAME, l_listentry_rec.TITLE, l_listentry_rec.ADDRESS_LINE1, l_listentry_rec.ADDRESS_LINE2, l_listentry_rec.CITY, l_listentry_rec.STATE
11137 
11138        , l_listentry_rec.ZIPCODE, l_listentry_rec.COUNTRY, l_listentry_rec.FAX, l_listentry_rec.PHONE, l_listentry_rec.EMAIL_ADDRESS
11139 
11140        , l_listentry_rec.COL1, l_listentry_rec.COL2, l_listentry_rec.COL3, l_listentry_rec.COL4, l_listentry_rec.COL5, l_listentry_rec.COL6, l_listentry_rec.COL7
11141 
11142        , l_listentry_rec.COL8,l_listentry_rec.COL9, l_listentry_rec.COL10, l_listentry_rec.COL11, l_listentry_rec.COL12, l_listentry_rec.COL13, l_listentry_rec.COL14
11143 
11144        , l_listentry_rec.COL15, l_listentry_rec.COL16, l_listentry_rec.COL17, l_listentry_rec.COL18, l_listentry_rec.COL19, l_listentry_rec.COL20, l_listentry_rec.COL21
11145 
11146        , l_listentry_rec.COL22, l_listentry_rec.COL23, l_listentry_rec.COL24, l_listentry_rec.COL25, l_listentry_rec.COL26, l_listentry_rec.COL27, l_listentry_rec.COL28
11147 
11148        , l_listentry_rec.COL29, l_listentry_rec.COL30, l_listentry_rec.COL31, l_listentry_rec.COL32, l_listentry_rec.COL33, l_listentry_rec.COL34, l_listentry_rec.COL35
11149 
11150        , l_listentry_rec.COL36, l_listentry_rec.COL37, l_listentry_rec.COL38, l_listentry_rec.COL39, l_listentry_rec.COL40, l_listentry_rec.COL41, l_listentry_rec.COL42
11151 
11152        , l_listentry_rec.COL43, l_listentry_rec.COL44, l_listentry_rec.COL45, l_listentry_rec.COL46, l_listentry_rec.COL47, l_listentry_rec.COL48, l_listentry_rec.COL49
11153 
11154        , l_listentry_rec.COL50, l_listentry_rec.COL51, l_listentry_rec.COL52, l_listentry_rec.COL53, l_listentry_rec.COL54, l_listentry_rec.COL55, l_listentry_rec.COL56
11155 
11156        , l_listentry_rec.COL57, l_listentry_rec.COL58, l_listentry_rec.COL59, l_listentry_rec.COL60, l_listentry_rec.COL61, l_listentry_rec.COL62, l_listentry_rec.COL63
11157 
11158        , l_listentry_rec.COL64, l_listentry_rec.COL65, l_listentry_rec.COL66, l_listentry_rec.COL67, l_listentry_rec.COL68, l_listentry_rec.COL69, l_listentry_rec.COL70
11159 
11160        , l_listentry_rec.COL71, l_listentry_rec.COL72, l_listentry_rec.COL73, l_listentry_rec.COL74, l_listentry_rec.COL75, l_listentry_rec.COL76, l_listentry_rec.COL77
11161 
11162        , l_listentry_rec.COL78, l_listentry_rec.COL79, l_listentry_rec.COL80, l_listentry_rec.COL81, l_listentry_rec.COL82, l_listentry_rec.COL83, l_listentry_rec.COL84
11163 
11164        , l_listentry_rec.COL85, l_listentry_rec.COL86, l_listentry_rec.COL87, l_listentry_rec.COL88, l_listentry_rec.COL89, l_listentry_rec.COL90, l_listentry_rec.COL91
11165 
11166        , l_listentry_rec.COL92, l_listentry_rec.COL93, l_listentry_rec.COL94, l_listentry_rec.COL95, l_listentry_rec.COL96, l_listentry_rec.COL97, l_listentry_rec.COL98
11167 
11168        , l_listentry_rec.COL99, l_listentry_rec.COL100, l_listentry_rec.COL101, l_listentry_rec.COL102, l_listentry_rec.COL103, l_listentry_rec.COL104, l_listentry_rec.COL105
11169 
11170        , l_listentry_rec.COL106, l_listentry_rec.COL107, l_listentry_rec.COL108, l_listentry_rec.COL109, l_listentry_rec.COL110, l_listentry_rec.COL111, l_listentry_rec.COL112
11171 
11172        , l_listentry_rec.COL113, l_listentry_rec.COL114, l_listentry_rec.COL115, l_listentry_rec.COL116, l_listentry_rec.COL117, l_listentry_rec.COL118, l_listentry_rec.COL119
11173 
11174        , l_listentry_rec.COL120, l_listentry_rec.COL121, l_listentry_rec.COL122, l_listentry_rec.COL123, l_listentry_rec.COL124, l_listentry_rec.COL125, l_listentry_rec.COL126
11175 
11176        , l_listentry_rec.COL127, l_listentry_rec.COL128, l_listentry_rec.COL129, l_listentry_rec.COL130, l_listentry_rec.COL131, l_listentry_rec.COL132, l_listentry_rec.COL133
11177 
11178        , l_listentry_rec.COL134, l_listentry_rec.COL135, l_listentry_rec.COL136, l_listentry_rec.COL137, l_listentry_rec.COL138, l_listentry_rec.COL139, l_listentry_rec.COL140
11179 
11180        , l_listentry_rec.COL141, l_listentry_rec.COL142, l_listentry_rec.COL143, l_listentry_rec.COL144, l_listentry_rec.COL145, l_listentry_rec.COL146, l_listentry_rec.COL147
11181 
11182        , l_listentry_rec.COL148, l_listentry_rec.COL149, l_listentry_rec.COL150, l_listentry_rec.COL151, l_listentry_rec.COL152, l_listentry_rec.COL153, l_listentry_rec.COL154
11183 
11184        , l_listentry_rec.COL155, l_listentry_rec.COL156, l_listentry_rec.COL157, l_listentry_rec.COL158, l_listentry_rec.COL159, l_listentry_rec.COL160, l_listentry_rec.COL161
11185 
11186        , l_listentry_rec.COL162, l_listentry_rec.COL163, l_listentry_rec.COL164, l_listentry_rec.COL165, l_listentry_rec.COL166, l_listentry_rec.COL167, l_listentry_rec.COL168
11187 
11188        , l_listentry_rec.COL169, l_listentry_rec.COL170, l_listentry_rec.COL171, l_listentry_rec.COL172, l_listentry_rec.COL173, l_listentry_rec.COL174, l_listentry_rec.COL175
11189 
11190        , l_listentry_rec.COL176, l_listentry_rec.COL177, l_listentry_rec.COL178, l_listentry_rec.COL179, l_listentry_rec.COL180, l_listentry_rec.COL181, l_listentry_rec.COL182
11191 
11192        , l_listentry_rec.COL183, l_listentry_rec.COL184, l_listentry_rec.COL185, l_listentry_rec.COL186, l_listentry_rec.COL187, l_listentry_rec.COL188, l_listentry_rec.COL189
11193 
11194        , l_listentry_rec.COL190, l_listentry_rec.COL191, l_listentry_rec.COL192, l_listentry_rec.COL193, l_listentry_rec.COL194, l_listentry_rec.COL195, l_listentry_rec.COL196
11195 
11196        , l_listentry_rec.COL197, l_listentry_rec.COL198, l_listentry_rec.COL199, l_listentry_rec.COL200, l_listentry_rec.COL201, l_listentry_rec.COL202, l_listentry_rec.COL203
11197 
11198        , l_listentry_rec.COL204, l_listentry_rec.COL205, l_listentry_rec.COL206, l_listentry_rec.COL207, l_listentry_rec.COL208, l_listentry_rec.COL209, l_listentry_rec.COL210
11199 
11200        , l_listentry_rec.COL211, l_listentry_rec.COL212, l_listentry_rec.COL213, l_listentry_rec.COL214, l_listentry_rec.COL215, l_listentry_rec.COL216, l_listentry_rec.COL217
11201 
11202        , l_listentry_rec.COL218, l_listentry_rec.COL219, l_listentry_rec.COL220, l_listentry_rec.COL221, l_listentry_rec.COL222, l_listentry_rec.COL223, l_listentry_rec.COL224
11203 
11204        , l_listentry_rec.COL225, l_listentry_rec.COL226, l_listentry_rec.COL227, l_listentry_rec.COL228, l_listentry_rec.COL229, l_listentry_rec.COL230, l_listentry_rec.COL231
11205 
11206        , l_listentry_rec.COL232, l_listentry_rec.COL233, l_listentry_rec.COL234, l_listentry_rec.COL235, l_listentry_rec.COL236, l_listentry_rec.COL237, l_listentry_rec.COL238
11207 
11208        , l_listentry_rec.COL239, l_listentry_rec.COL240, l_listentry_rec.COL241, l_listentry_rec.COL242, l_listentry_rec.COL243, l_listentry_rec.COL244, l_listentry_rec.COL245
11209 
11210        , l_listentry_rec.COL246, l_listentry_rec.COL247, l_listentry_rec.COL248, l_listentry_rec.COL249, l_listentry_rec.COL250, l_listentry_rec.IMP_SOURCE_LINE_ID
11211 
11212        , l_listentry_rec.USAGE_RESTRICTION, l_listentry_rec.COL251, l_listentry_rec.COL252, l_listentry_rec.COL253, l_listentry_rec.COL254, l_listentry_rec.COL255, l_listentry_rec.COL256
11213 
11214        , l_listentry_rec.COL257, l_listentry_rec.COL258, l_listentry_rec.COL259, l_listentry_rec.COL260, l_listentry_rec.COL261, l_listentry_rec.COL262, l_listentry_rec.COL263
11215 
11216        , l_listentry_rec.COL264, l_listentry_rec.COL265, l_listentry_rec.COL266, l_listentry_rec.COL267, l_listentry_rec.COL268, l_listentry_rec.COL269, l_listentry_rec.COL270
11217 
11218        , l_listentry_rec.COL271, l_listentry_rec.COL272, l_listentry_rec.COL273, l_listentry_rec.COL274, l_listentry_rec.COL275, l_listentry_rec.COL276, l_listentry_rec.COL277
11219 
11220        , l_listentry_rec.COL278, l_listentry_rec.COL279, l_listentry_rec.COL280, l_listentry_rec.COL281, l_listentry_rec.COL282, l_listentry_rec.COL283, l_listentry_rec.COL284
11221 
11222        , l_listentry_rec.COL285, l_listentry_rec.COL286, l_listentry_rec.COL287, l_listentry_rec.COL288, l_listentry_rec.COL289, l_listentry_rec.COL290, l_listentry_rec.COL291
11223 
11224        , l_listentry_rec.COL292, l_listentry_rec.COL293, l_listentry_rec.COL294, l_listentry_rec.COL295, l_listentry_rec.COL296, l_listentry_rec.COL297, l_listentry_rec.COL298
11225 
11226        , l_listentry_rec.COL299, l_listentry_rec.COL300
11227 
11228        FROM AMS_LIST_ENTRIES
11229 
11230        WHERE LIST_HEADER_ID = p_from_list_id_col(i) AND LIST_ENTRY_ID = p_from_list_entry_id_col(i);
11231 
11232        l_listentry_rec.list_header_id := p_to_list_id;
11233 
11234        AMS_LISTENTRY_PUB.create_listentry(
11235         p_api_version => l_api_version,
11236         p_init_msg_list => l_init_msg_list,
11237         x_return_status => l_return_status,
11238         x_msg_count => l_msg_count,
11239         x_msg_data => l_msg_data,
11240         p_entry_rec => l_listentry_rec,
11241         x_entry_id => x_to_list_entry_id_col(i) );
11242 
11243         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11244           Log_msg('AMS_LISTENTRY_PUB.create_listentry', l_msg_data);
11245         END IF;
11246     END LOOP;
11247  /*
11248    FOR i IN 1..x_to_list_entry_id_col.COUNT
11249 
11250    LOOP
11251 
11252       EXECUTE IMMEDIATE
11253 
11254          'SELECT AMS_LIST_ENTRIES_S.NEXTVAL FROM DUAL'
11255 
11256       INTO x_to_list_entry_id_col(i);
11257 
11258    END LOOP;
11259 
11260 
11261 
11262    EXECUTE IMMEDIATE
11263 
11264       'BEGIN
11265 
11266        FORALL i IN :first .. :last
11267 
11268        INSERT INTO AMS_LIST_ENTRIES
11269 
11270        ( LIST_ENTRY_ID, LIST_HEADER_ID, LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATION_DATE, CREATED_BY, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER
11271 
11272        , LIST_SELECT_ACTION_ID, ARC_LIST_SELECT_ACTION_FROM, LIST_SELECT_ACTION_FROM_NAME, SOURCE_CODE, ARC_LIST_USED_BY_SOURCE, SOURCE_CODE_FOR_ID
11273 
11274        , PIN_CODE, LIST_ENTRY_SOURCE_SYSTEM_ID, LIST_ENTRY_SOURCE_SYSTEM_TYPE, VIEW_APPLICATION_ID, MANUALLY_ENTERED_FLAG
11275 
11276        , MARKED_AS_DUPLICATE_FLAG, MARKED_AS_RANDOM_FLAG, PART_OF_CONTROL_GROUP_FLAG, EXCLUDE_IN_TRIGGERED_LIST_FLAG, ENABLED_FLAG, CELL_CODE, DEDUPE_KEY
11277 
11278        , RANDOMLY_GENERATED_NUMBER, CAMPAIGN_ID, MEDIA_ID, CHANNEL_ID, CHANNEL_SCHEDULE_ID, EVENT_OFFER_ID, CUSTOMER_ID, MARKET_SEGMENT_ID
11279 
11280        , PARTY_ID, PARENT_PARTY_ID, VENDOR_ID, TRANSFER_FLAG, TRANSFER_STATUS, LIST_SOURCE, DUPLICATE_MASTER_ENTRY_ID, MARKED_FLAG, LEAD_ID, LETTER_ID
11281 
11282        , PICKING_HEADER_ID, BATCH_ID, SUFFIX, FIRST_NAME, LAST_NAME, CUSTOMER_NAME, TITLE, ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE, ZIPCODE, COUNTRY, FAX, PHONE, EMAIL_ADDRESS
11283 
11284        , COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18
11285 
11286        , COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33, COL34, COL35
11287 
11288        , COL36, COL37, COL38, COL39, COL40, COL41, COL42, COL43, COL44, COL45, COL46, COL47, COL48, COL49, COL50, COL51, COL52
11289 
11290        , COL53, COL54, COL55, COL56, COL57, COL58, COL59, COL60, COL61, COL62, COL63, COL64, COL65, COL66, COL67, COL68, COL69
11291 
11292        , COL70, COL71, COL72, COL73, COL74, COL75, COL76, COL77, COL78, COL79, COL80, COL81, COL82, COL83, COL84, COL85, COL86
11293 
11294        , COL87, COL88, COL89, COL90, COL91, COL92, COL93, COL94, COL95, COL96, COL97, COL98, COL99, COL100, COL101, COL102, COL103
11295 
11296        , COL104, COL105, COL106, COL107, COL108, COL109, COL110, COL111, COL112, COL113, COL114, COL115, COL116, COL117, COL118, COL119
11297 
11298        , COL120, COL121, COL122, COL123, COL124, COL125, COL126, COL127, COL128, COL129, COL130, COL131, COL132, COL133, COL134, COL135
11299 
11300        , COL136, COL137, COL138, COL139, COL140, COL141, COL142, COL143, COL144, COL145, COL146, COL147, COL148, COL149, COL150, COL151
11301 
11302        , COL152, COL153, COL154, COL155, COL156, COL157, COL158, COL159, COL160, COL161, COL162, COL163, COL164, COL165, COL166, COL167
11303 
11304        , COL168, COL169, COL170, COL171, COL172, COL173, COL174, COL175, COL176, COL177, COL178, COL179, COL180, COL181, COL182, COL183
11305 
11306        , COL184, COL185, COL186, COL187, COL188, COL189, COL190, COL191, COL192, COL193, COL194, COL195, COL196, COL197, COL198, COL199
11307 
11308        , COL200, COL201, COL202, COL203, COL204, COL205, COL206, COL207, COL208, COL209, COL210, COL211, COL212, COL213, COL214, COL215
11309 
11310        , COL216, COL217, COL218, COL219, COL220, COL221, COL222, COL223, COL224, COL225, COL226, COL227, COL228, COL229, COL230, COL231
11311 
11312        , COL232, COL233, COL234, COL235, COL236, COL237, COL238, COL239, COL240, COL241, COL242, COL243, COL244, COL245, COL246, COL247
11313 
11314        , COL248, COL249, COL250, IMP_SOURCE_LINE_ID, USAGE_RESTRICTION, COL251, COL252, COL253, COL254, COL255, COL256, COL257, COL258
11315 
11316        , COL259, COL260, COL261, COL262, COL263, COL264, COL265, COL266, COL267, COL268, COL269, COL270, COL271, COL272, COL273, COL274
11317 
11318        , COL275, COL276, COL277, COL278, COL279, COL280, COL281, COL282, COL283, COL284, COL285, COL286, COL287, COL288, COL289, COL290
11319 
11320        , COL291, COL292, COL293, COL294, COL295, COL296, COL297, COL298, COL299, COL300
11321 
11322        )
11323 
11324        (SELECT
11325 
11326          :new_list_entry_id(i), :to_list_id, SYSDATE, LAST_UPDATED_BY, SYSDATE, CREATED_BY, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER
11327 
11328        , LIST_SELECT_ACTION_ID, ARC_LIST_SELECT_ACTION_FROM, LIST_SELECT_ACTION_FROM_NAME, SOURCE_CODE, ARC_LIST_USED_BY_SOURCE, SOURCE_CODE_FOR_ID
11329 
11330        , PIN_CODE, LIST_ENTRY_SOURCE_SYSTEM_ID, LIST_ENTRY_SOURCE_SYSTEM_TYPE, VIEW_APPLICATION_ID, MANUALLY_ENTERED_FLAG
11331 
11332        , MARKED_AS_DUPLICATE_FLAG, MARKED_AS_RANDOM_FLAG, PART_OF_CONTROL_GROUP_FLAG, EXCLUDE_IN_TRIGGERED_LIST_FLAG, ENABLED_FLAG, CELL_CODE, DEDUPE_KEY
11333 
11334        , RANDOMLY_GENERATED_NUMBER, CAMPAIGN_ID, MEDIA_ID, CHANNEL_ID, CHANNEL_SCHEDULE_ID, EVENT_OFFER_ID, CUSTOMER_ID, MARKET_SEGMENT_ID
11335 
11336        , PARTY_ID, PARENT_PARTY_ID, VENDOR_ID, TRANSFER_FLAG, TRANSFER_STATUS, LIST_SOURCE, DUPLICATE_MASTER_ENTRY_ID, MARKED_FLAG, LEAD_ID, LETTER_ID
11337 
11338        , PICKING_HEADER_ID, BATCH_ID, SUFFIX, FIRST_NAME, LAST_NAME, CUSTOMER_NAME, TITLE, ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE, ZIPCODE, COUNTRY, FAX, PHONE, EMAIL_ADDRESS
11339 
11340        , COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18
11341 
11342        , COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33, COL34, COL35
11343 
11344        , COL36, COL37, COL38, COL39, COL40, COL41, COL42, COL43, COL44, COL45, COL46, COL47, COL48, COL49, COL50, COL51, COL52
11345 
11346        , COL53, COL54, COL55, COL56, COL57, COL58, COL59, COL60, COL61, COL62, COL63, COL64, COL65, COL66, COL67, COL68, COL69
11347 
11348        , COL70, COL71, COL72, COL73, COL74, COL75, COL76, COL77, COL78, COL79, COL80, COL81, COL82, COL83, COL84, COL85, COL86
11349 
11350        , COL87, COL88, COL89, COL90, COL91, COL92, COL93, COL94, COL95, COL96, COL97, COL98, COL99, COL100, COL101, COL102, COL103
11351 
11352        , COL104, COL105, COL106, COL107, COL108, COL109, COL110, COL111, COL112, COL113, COL114, COL115, COL116, COL117, COL118, COL119
11353 
11354        , COL120, COL121, COL122, COL123, COL124, COL125, COL126, COL127, COL128, COL129, COL130, COL131, COL132, COL133, COL134, COL135
11355 
11356        , COL136, COL137, COL138, COL139, COL140, COL141, COL142, COL143, COL144, COL145, COL146, COL147, COL148, COL149, COL150, COL151
11357 
11358        , COL152, COL153, COL154, COL155, COL156, COL157, COL158, COL159, COL160, COL161, COL162, COL163, COL164, COL165, COL166, COL167
11359 
11360        , COL168, COL169, COL170, COL171, COL172, COL173, COL174, COL175, COL176, COL177, COL178, COL179, COL180, COL181, COL182, COL183
11361 
11362        , COL184, COL185, COL186, COL187, COL188, COL189, COL190, COL191, COL192, COL193, COL194, COL195, COL196, COL197, COL198, COL199
11363 
11364        , COL200, COL201, COL202, COL203, COL204, COL205, COL206, COL207, COL208, COL209, COL210, COL211, COL212, COL213, COL214, COL215
11365 
11366        , COL216, COL217, COL218, COL219, COL220, COL221, COL222, COL223, COL224, COL225, COL226, COL227, COL228, COL229, COL230, COL231
11367 
11368        , COL232, COL233, COL234, COL235, COL236, COL237, COL238, COL239, COL240, COL241, COL242, COL243, COL244, COL245, COL246, COL247
11369 
11370        , COL248, COL249, COL250, IMP_SOURCE_LINE_ID, USAGE_RESTRICTION, COL251, COL252, COL253, COL254, COL255, COL256, COL257, COL258
11371 
11372        , COL259, COL260, COL261, COL262, COL263, COL264, COL265, COL266, COL267, COL268, COL269, COL270, COL271, COL272, COL273, COL274
11373 
11374        , COL275, COL276, COL277, COL278, COL279, COL280, COL281, COL282, COL283, COL284, COL285, COL286, COL287, COL288, COL289, COL290
11375 
11376        , COL291, COL292, COL293, COL294, COL295, COL296, COL297, COL298, COL299, COL300
11377 
11378        FROM AMS_LIST_ENTRIES
11379 
11380        WHERE LIST_HEADER_ID = :list_id_col(i) AND LIST_ENTRY_ID = :list_entry_id_col(i));
11381 
11382        END;'
11383 
11384    USING IN p_from_list_entry_id_col.FIRST
11385 
11386        , IN p_from_list_entry_id_col.LAST
11387 
11388        , IN x_to_list_entry_id_col
11389 
11390        , IN p_to_list_id
11391 
11392        , IN p_from_list_id_col
11393 
11394        , IN p_from_list_entry_id_col;
11395 
11396 */
11397 
11398    Update_AmsListHeaderCounts( p_to_list_id
11399 
11400                              , x_to_list_entry_id_col.COUNT
11401 
11402                              , x_to_list_entry_id_col.COUNT
11403 
11404                              );
11405 
11406 EXCEPTION
11407 
11408    WHEN OTHERS THEN
11409 
11410       x_to_list_entry_id_col := NULL;
11411 
11412       Log( 'Copy_AmsListEntries'
11413 
11414          , 'MAIN'
11415 
11416          , SQLERRM
11417 
11418          );
11419 
11420       RAISE fnd_api.g_exc_unexpected_error;
11421 
11422 
11423 
11424 END Copy_AmsListEntries;
11425 
11426 
11427 
11428 
11429 
11430 PROCEDURE Mark_EntriesDoNotUse
11431 
11432    ( p_returns_id_col  IN            SYSTEM.number_tbl_type
11433 
11434    , x_returns_id_col     OUT NOCOPY SYSTEM.number_tbl_type
11435 
11436    , x_list_entry_id_col  OUT NOCOPY SYSTEM.number_tbl_type
11437 
11438    , x_list_id_col        OUT NOCOPY SYSTEM.number_tbl_type
11439 
11440    )
11441 
11442 IS
11443 
11444    l_callable_zone_id_col SYSTEM.number_tbl_type;
11445 
11446    l_do_not_use_col       SYSTEM.varchar_tbl_type;
11447 
11448    l_decr_count_col       SYSTEM.number_tbl_type;
11449 
11450 BEGIN
11451 
11452 
11453 
11454    x_returns_id_col := SYSTEM.number_tbl_type();
11455 
11456    x_list_entry_id_col := SYSTEM.number_tbl_type();
11457 
11458    x_list_id_col := SYSTEM.number_tbl_type();
11459 
11460    l_callable_zone_id_col := SYSTEM.number_tbl_type();
11461 
11462    l_do_not_use_col := SYSTEM.varchar_tbl_type();
11463 
11464    l_decr_count_col := SYSTEM.number_tbl_type();
11465 
11466 
11467 
11468    -- Get all records that need to be marked as dnu
11469 
11470    -- Need to do this prior to updating them as dnu so that we
11471 
11472    -- can retrieve the previous dnu status - don't want to decrement
11473 
11474    -- callable zone counts if was already marked as dnu
11475 
11476    EXECUTE IMMEDIATE
11477 
11478       'BEGIN
11479 
11480        SELECT RETURNS_ID, LIST_ENTRY_ID, LIST_HEADER_ID, ITM_CC_TZ_ID, DO_NOT_USE_FLAG
11481 
11482        BULK COLLECT INTO :returns_id_col, :list_entry_id_col, :list_id_col, :callable_zone_id_col, :do_not_use_col
11483 
11484        FROM IEC_G_RETURN_ENTRIES
11485 
11486        WHERE RETURNS_ID IN (SELECT * FROM TABLE(CAST(:p_returns_id_col AS SYSTEM.NUMBER_TBL_TYPE)));
11487 
11488        END;'
11489 
11490    USING OUT x_returns_id_col
11491 
11492        , OUT x_list_entry_id_col
11493 
11494        , OUT x_list_id_col
11495 
11496        , OUT l_callable_zone_id_col
11497 
11498        , OUT l_do_not_use_col
11499 
11500        , IN p_returns_id_col;
11501 
11502 
11503 
11504    IF x_returns_id_col IS NOT NULL AND x_returns_id_col.COUNT > 0 THEN
11505 
11506 
11507 
11508       EXECUTE IMMEDIATE
11509 
11510          'BEGIN
11511 
11512           FORALL i IN :first .. :last
11513 
11514              UPDATE IEC_G_RETURN_ENTRIES A
11515 
11516              SET A.DO_NOT_USE_FLAG = ''Y''
11517 
11518                , A.DO_NOT_USE_REASON = 5
11519 
11520              WHERE A.RETURNS_ID = :returns_id(i);
11521 
11522           END;'
11523 
11524       USING IN x_returns_id_col.FIRST
11525 
11526           , IN x_returns_id_col.LAST
11527 
11528           , IN x_returns_id_col;
11529 
11530 
11531 
11532       FOR i IN 1..l_do_not_use_col.LAST LOOP
11533 
11534          l_decr_count_col.EXTEND;
11535 
11536          IF l_do_not_use_col(i) = 'N' THEN
11537 
11538             l_decr_count_col(i) := -1;
11539 
11540          ELSE
11541 
11542             l_decr_count_col(i) := 0;
11543 
11544          END IF;
11545 
11546       END LOOP;
11547 
11548 
11549 
11550       Incr_CallableZoneCounts( l_callable_zone_id_col
11551 
11552                              , l_decr_count_col);
11553 
11554 
11555 
11556    END IF;
11557 
11558 
11559 
11560 END Mark_EntriesDoNotUse;
11561 
11562 
11563 
11564 PROCEDURE Mark_EntriesDoNotUse
11565 
11566    ( p_returns_id_col    IN            SYSTEM.number_tbl_type
11567 
11568    , p_to_list_id        IN            NUMBER
11569 
11570    , x_returns_id_col       OUT NOCOPY SYSTEM.number_tbl_type   -- OUT
11571 
11572    , x_list_entry_id_col    OUT NOCOPY SYSTEM.number_tbl_type   -- OUT
11573 
11574    , x_list_id_col          OUT NOCOPY SYSTEM.number_tbl_type)  -- OUT
11575 
11576 IS
11577 
11578    l_temp_returns_id_col SYSTEM.number_tbl_type;
11579 
11580 BEGIN
11581 
11582 
11583 
11584    -- Get all records that need to be marked as dnu
11585 
11586    -- Excludes for all duplicate party ids
11587 
11588    EXECUTE IMMEDIATE
11589 
11590       'BEGIN
11591 
11592        SELECT A.RETURNS_ID
11593 
11594        BULK COLLECT INTO :returns_id_col
11595 
11596        FROM IEC_G_RETURN_ENTRIES A
11597 
11598        WHERE A.RETURNS_ID IN (SELECT * FROM TABLE(CAST(:p_returns_id_col AS SYSTEM.NUMBER_TBL_TYPE)))
11599 
11600        AND A.LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID
11601 
11602                                FROM AMS_LIST_ENTRIES
11603 
11604                                WHERE A.LIST_HEADER_ID = LIST_HEADER_ID
11605 
11606                                AND A.LIST_ENTRY_ID = LIST_ENTRY_ID
11607 
11608                                AND PARTY_ID NOT IN (SELECT PARTY_ID FROM AMS_LIST_ENTRIES WHERE LIST_HEADER_ID = :to_list_id));
11609 
11610        END;'
11611 
11612    USING OUT l_temp_returns_id_col
11613 
11614        , IN p_returns_id_col
11615 
11616        , IN p_to_list_id;
11617 
11618 
11619 
11620    IF l_temp_returns_id_col IS NOT NULL AND l_temp_returns_id_col.COUNT > 0 THEN
11621 
11622       Mark_EntriesDoNotUse
11623 
11624          ( l_temp_returns_id_col
11625 
11626          , x_returns_id_col
11627 
11628          , x_list_entry_id_col
11629 
11630          , x_list_id_col
11631 
11632          );
11633 
11634    END IF;
11635 
11636 
11637 
11638 EXCEPTION
11639 
11640    WHEN OTHERS THEN
11641 
11642       Log( 'Mark_EntriesDoNotUse'
11643 
11644          , 'MAIN'
11645 
11646          , SQLERRM
11647 
11648          );
11649 
11650       RAISE fnd_api.g_exc_unexpected_error;
11651 
11652 
11653 
11654 END Mark_EntriesDoNotUse;
11655 
11656 
11657 
11658 PROCEDURE Move_CallHistory
11659 
11660    ( p_from_returns_id_col    IN  SYSTEM.number_tbl_type
11661 
11662    , p_to_list_entry_id_col   IN  SYSTEM.number_tbl_type
11663 
11664    , p_to_list_id             IN  NUMBER)
11665 
11666 IS
11667 
11668 
11669 
11670    l_new_returns_id_col SYSTEM.number_tbl_type := SYSTEM.number_tbl_type();
11671 
11672 
11673 
11674    l_cp_index_col SYSTEM.number_tbl_type := SYSTEM.number_tbl_type();
11675 
11676    l_cp_postfix_col SYSTEM.varchar_tbl_type := SYSTEM.varchar_tbl_type();
11677 
11678    l_callback_flag_col SYSTEM.varchar_tbl_type := SYSTEM.varchar_tbl_type();
11679 
11680    l_next_call_time_col SYSTEM.date_tbl_type := SYSTEM.date_tbl_type();
11681 
11682 
11683 
11684 BEGIN
11685 
11686 
11687 
11688    l_cp_index_col.EXTEND(p_from_returns_id_col.COUNT);
11689 
11690    l_cp_postfix_col.EXTEND(p_from_returns_id_col.COUNT);
11691 
11692    l_callback_flag_col.EXTEND(p_from_returns_id_col.COUNT);
11693 
11694    l_next_call_time_col.EXTEND(p_from_returns_id_col.COUNT);
11695 
11696 
11697 
11698    IF p_from_returns_id_col IS NOT NULL AND p_from_returns_id_col.COUNT > 0 THEN
11699 
11700 
11701 
11702       FOR i IN 1..p_from_returns_id_col.COUNT
11703 
11704       LOOP
11705 
11706          EXECUTE IMMEDIATE
11707 
11708             'SELECT CALLBACK_FLAG
11709 
11710                   , NEXT_CALL_TIME
11711 
11712                   , CONTACT_POINT_INDEX
11713 
11714                   , DECODE(CONTACT_POINT_INDEX, 1, ''_S1''
11715 
11716                                               , 2, ''_S2''
11717 
11718                                               , 3, ''_S3''
11719 
11720                                               , 4, ''_S4''
11721 
11722                                               , 5, ''_S5''
11723 
11724                                               , 6, ''_S6''
11725 
11726                                                  , ''_S1'')
11727 
11728              FROM IEC_G_RETURN_ENTRIES
11729 
11730              WHERE RETURNS_ID = :returns_id'
11731 
11732          INTO l_callback_flag_col(i)
11733 
11734             , l_next_call_time_col(i)
11735 
11736             , l_cp_index_col(i)
11737 
11738             , l_cp_postfix_col(i)
11739 
11740          USING p_from_returns_id_col(i);
11741 
11742       END LOOP;
11743 
11744 
11745 
11746       l_new_returns_id_col.EXTEND(p_to_list_entry_id_col.COUNT);
11747 
11748       FOR i IN 1..p_to_list_entry_id_col.COUNT
11749 
11750       LOOP
11751 
11752          EXECUTE IMMEDIATE
11753 
11754             'UPDATE IEC_G_RETURN_ENTRIES
11755 
11756              SET CALLBACK_FLAG = :callback_flag
11757 
11758                , NEXT_CALL_TIME = :next_call_time
11759 
11760                , ( CONTACT_POINT_ID
11761 
11762                  , ITM_CC_TZ_ID
11763 
11764                  , CONTACT_POINT_INDEX
11765 
11766                  , COUNTRY_CODE
11767 
11768                  , AREA_CODE
11769 
11770                  , PHONE_NUMBER
11771 
11772                  , RAW_PHONE_NUMBER
11773 
11774                  , TIME_ZONE ) =
11775 
11776                  (SELECT CONTACT_POINT_ID' || l_cp_postfix_col(i) || '
11777 
11778                        , MKTG_ITEM_CC_TZS_ID' || l_cp_postfix_col(i) || '
11779 
11780                        , :cp_index
11781 
11782                        , PHONE_COUNTRY_CODE' || l_cp_postfix_col(i) || '
11783 
11784                        , PHONE_AREA_CODE' || l_cp_postfix_col(i) || '
11785 
11786                        , PHONE_NUMBER' || l_cp_postfix_col(i) || '
11787 
11788                        , RAW_PHONE_NUMBER' || l_cp_postfix_col(i) || '
11789 
11790                        , TIME_ZONE' || l_cp_postfix_col(i) || '
11791 
11792                   FROM IEC_VAL_ENTRY_CACHE
11793 
11794                   WHERE LIST_ENTRY_ID = :list_entry_id)
11795 
11796              WHERE  LIST_HEADER_ID = :to_list_id AND LIST_ENTRY_ID = :list_entry_id
11797 
11798              RETURNING RETURNS_ID INTO :returns_id'
11799 
11800          USING IN l_callback_flag_col(i)
11801 
11802              , IN l_next_call_time_col(i)
11803 
11804              , IN l_cp_index_col(i)
11805 
11806              , IN p_to_list_entry_id_col(i)
11807 
11808              , IN p_to_list_id
11809 
11810              , IN p_to_list_entry_id_col(i)
11811 
11812              , OUT l_new_returns_id_col(i);
11813 
11814       END LOOP;
11815 
11816 
11817 
11818       -- Delete call history on destination list
11819 
11820       -- so that it can be replaced by call history
11821 
11822       -- from source list
11823 
11824       EXECUTE IMMEDIATE
11825 
11826          'BEGIN
11827 
11828           FORALL i IN :first .. :last
11829 
11830              DELETE IEC_O_RCY_CALL_HISTORIES
11831 
11832              WHERE RETURNS_ID = :new_returns_id(i);
11833 
11834           END;'
11835 
11836       USING IN l_new_returns_id_col.FIRST
11837 
11838           , IN l_new_returns_id_col.LAST
11839 
11840           , IN l_new_returns_id_col;
11841 
11842 
11843 
11844       -- Move call history from source list to destination list
11845 
11846       EXECUTE IMMEDIATE
11847 
11848          'BEGIN
11849 
11850           FORALL i IN :first .. :last
11851 
11852              UPDATE IEC_O_RCY_CALL_HISTORIES
11853 
11854              SET RETURNS_ID = :new_returns_id(i)
11855 
11856              WHERE RETURNS_ID = :old_returns_id(i);
11857 
11858           END;'
11859 
11860       USING IN l_new_returns_id_col.FIRST
11861 
11862           , IN l_new_returns_id_col.LAST
11863 
11864           , IN l_new_returns_id_col
11865 
11866           , IN p_from_returns_id_col;
11867 
11868 
11869 
11870    END IF;
11871 
11872 
11873 
11874 EXCEPTION
11875 
11876    WHEN OTHERS THEN
11877 
11878       Log( 'Move_CallHistory'
11879 
11880          , 'MAIN'
11881 
11882          , SQLERRM
11883 
11884          );
11885 
11886       RAISE fnd_api.g_exc_unexpected_error;
11887 
11888 
11889 
11890 END Move_CallHistory;
11891 
11892 
11893 
11894 -- Loads a collection of new/recycled entries into AO system
11895 
11896 PROCEDURE Load_Entries_Pvt
11897 
11898    ( p_list_entry_id_col     IN SYSTEM.number_tbl_type
11899 
11900    , p_list_id               IN NUMBER
11901 
11902    , p_enable_val_rules_flag IN VARCHAR2
11903 
11904    )
11905 
11906 IS
11907 
11908    l_list_entry_csr       ListEntryCsrType;
11909 
11910 
11911 
11912    l_campaign_id          NUMBER(15);
11913 
11914    l_campaign_schedule_id NUMBER(15);
11915 
11916    l_source_type_view     VARCHAR2(32);
11917 
11918 
11919 
11920 BEGIN
11921 
11922 
11923 
11924    Validate_List_Pre( p_list_id
11925 
11926                     , p_enable_val_rules_flag
11927 
11928                     , l_campaign_id
11929 
11930                     , l_campaign_schedule_id
11931 
11932                     , l_source_type_view
11933 
11934                     );
11935 
11936 
11937 
11938    -- FIX: NULL is placeholder for contact point purpose when it is added to the source type views
11939 
11940    BEGIN
11941 
11942       OPEN l_list_entry_csr FOR
11943 
11944            'SELECT A.LIST_ENTRY_ID, A.POSTAL_CODE, A.DO_NOT_USE_FLAG, A.DO_NOT_USE_REASON, A.NEWLY_UPDATED_FLAG, B.SUBSET_ID, B.ITM_CC_TZ_ID, B.CONTACT_POINT_INDEX,
11945 
11946             A.CONTACT_POINT_ID_S1, A.TIME_ZONE_S1, A.PHONE_COUNTRY_CODE_S1, A.PHONE_AREA_CODE_S1, A.PHONE_NUMBER_S1, A.RAW_PHONE_NUMBER_S1, A.REASON_CODE_S1, A.PHONE_LINE_TYPE_S1, NULL,
11947 
11948             A.CONTACT_POINT_ID_S2, A.TIME_ZONE_S2, A.PHONE_COUNTRY_CODE_S2, A.PHONE_AREA_CODE_S2, A.PHONE_NUMBER_S2, A.RAW_PHONE_NUMBER_S2, A.REASON_CODE_S2, A.PHONE_LINE_TYPE_S2, NULL,
11949 
11950             A.CONTACT_POINT_ID_S3, A.TIME_ZONE_S3, A.PHONE_COUNTRY_CODE_S3, A.PHONE_AREA_CODE_S3, A.PHONE_NUMBER_S3, A.RAW_PHONE_NUMBER_S3, A.REASON_CODE_S3, A.PHONE_LINE_TYPE_S3, NULL,
11951 
11952             A.CONTACT_POINT_ID_S4, A.TIME_ZONE_S4, A.PHONE_COUNTRY_CODE_S4, A.PHONE_AREA_CODE_S4, A.PHONE_NUMBER_S4, A.RAW_PHONE_NUMBER_S4, A.REASON_CODE_S4, A.PHONE_LINE_TYPE_S4, NULL,
11953 
11954             A.CONTACT_POINT_ID_S5, A.TIME_ZONE_S5, A.PHONE_COUNTRY_CODE_S5, A.PHONE_AREA_CODE_S5, A.PHONE_NUMBER_S5, A.RAW_PHONE_NUMBER_S5, A.REASON_CODE_S5, A.PHONE_LINE_TYPE_S5, NULL,
11955 
11956             A.CONTACT_POINT_ID_S6, A.TIME_ZONE_S6, A.PHONE_COUNTRY_CODE_S6, A.PHONE_AREA_CODE_S6, A.PHONE_NUMBER_S6, A.RAW_PHONE_NUMBER_S6, A.REASON_CODE_S6, A.PHONE_LINE_TYPE_S6, NULL
11957 
11958             FROM ' || l_source_type_view || ' A, IEC_G_RETURN_ENTRIES B
11959 
11960             WHERE A.LIST_HEADER_ID = B.LIST_HEADER_ID(+)
11961 
11962             AND A.LIST_ENTRY_ID = B.LIST_ENTRY_ID(+)
11963 
11964             AND A.LIST_HEADER_ID = :list_id
11965 
11966             AND A.LIST_ENTRY_ID IN (SELECT * FROM TABLE(CAST(:list_entry_id_col AS SYSTEM.NUMBER_TBL_TYPE)))'
11967       USING p_list_id, p_list_entry_id_col;
11968    EXCEPTION
11969       WHEN OTHERS THEN
11970          IF SQLCODE = -904 THEN
11971             Log_MissingSourceTypeColumns(p_list_id, l_source_type_view, Get_SourceType(p_list_id), 'LOAD_ENTRIES_PVT', 'SELECT_ENTRIES_FOR_LOAD');
11972             RAISE fnd_api.g_exc_error;
11973          ELSE
11974             RAISE;
11975          END IF;
11976    END;
11977 
11978 
11979 
11980    Validate_List_Pvt( p_list_id
11981 
11982                     , l_campaign_schedule_id
11983 
11984                     , l_campaign_id
11985 
11986                     , l_source_type_view
11987 
11988                     , l_list_entry_csr
11989 
11990                     , 'N' -- do not commit each batch (handled by calling program)
11991 
11992                     );
11993 
11994 
11995 
11996    CLOSE l_list_entry_csr;
11997 
11998 
11999 
12000    Validate_List_Post(p_list_id);
12001 
12002 
12003 
12004 EXCEPTION
12005 
12006    WHEN fnd_api.g_exc_error THEN
12007 
12008       RAISE;
12009 
12010    WHEN OTHERS THEN
12011 
12012       Log( 'Load_Entries_Pvt'
12013 
12014          , 'MAIN'
12015 
12016          , SQLERRM
12017 
12018          );
12019 
12020       RAISE fnd_api.g_exc_unexpected_error;
12021 
12022 
12023 
12024 END Load_Entries_Pvt;
12025 
12026 
12027 
12028 PROCEDURE Update_DuplicateEntries
12029 
12030    ( p_from_list_id    IN            NUMBER
12031 
12032    , p_to_list_id      IN            NUMBER
12033 
12034    , p_mark_do_not_use IN            BOOLEAN
12035 
12036    , x_records_updated    OUT NOCOPY NUMBER
12037 
12038    )
12039 
12040 IS
12041    l_to_list_entry_id_col SYSTEM.number_tbl_type := SYSTEM.number_tbl_type(0);
12042    l_from_returns_id_col SYSTEM.number_tbl_type;
12043    l_ignore1 SYSTEM.number_tbl_type;
12044    l_ignore2 SYSTEM.number_tbl_type;
12045    l_ignore3 SYSTEM.number_tbl_type;
12046    l_num  NUMBER := 1;
12047 
12048    Cursor c_listentryrec IS
12049       SELECT B.list_entry_id, B.list_header_id, A.LAST_UPDATE_DATE, A.LAST_UPDATED_BY, A.CREATION_DATE, A.CREATED_BY, A.LAST_UPDATE_LOGIN, A.OBJECT_VERSION_NUMBER
12050 
12051        , A.LIST_SELECT_ACTION_ID, A.ARC_LIST_SELECT_ACTION_FROM, A.LIST_SELECT_ACTION_FROM_NAME, A.SOURCE_CODE, A.ARC_LIST_USED_BY_SOURCE, A.SOURCE_CODE_FOR_ID
12052 
12053        , A.PIN_CODE, A.LIST_ENTRY_SOURCE_SYSTEM_ID, A.LIST_ENTRY_SOURCE_SYSTEM_TYPE, A.VIEW_APPLICATION_ID, A.MANUALLY_ENTERED_FLAG
12054 
12055        , A.MARKED_AS_DUPLICATE_FLAG, A.MARKED_AS_RANDOM_FLAG, A.PART_OF_CONTROL_GROUP_FLAG, A.EXCLUDE_IN_TRIGGERED_LIST_FLAG, A.ENABLED_FLAG, A.CELL_CODE, A.DEDUPE_KEY
12056 
12057        , A.RANDOMLY_GENERATED_NUMBER, A.CAMPAIGN_ID, A.MEDIA_ID, A.CHANNEL_ID, A.CHANNEL_SCHEDULE_ID, A.EVENT_OFFER_ID, A.CUSTOMER_ID, A.MARKET_SEGMENT_ID
12058 
12059        , A.PARTY_ID, A.PARENT_PARTY_ID, A.VENDOR_ID, A.TRANSFER_FLAG, A.TRANSFER_STATUS, A.LIST_SOURCE, A.DUPLICATE_MASTER_ENTRY_ID, A.MARKED_FLAG, A.LEAD_ID, A.LETTER_ID
12060 
12061        , A.PICKING_HEADER_ID, A.BATCH_ID, A.SUFFIX, A.FIRST_NAME, A.LAST_NAME, A.CUSTOMER_NAME, A.TITLE, A.ADDRESS_LINE1, A.ADDRESS_LINE2, A.CITY, A.STATE, A.ZIPCODE
12062 
12063        , A.COUNTRY, A.FAX, A.PHONE, A.EMAIL_ADDRESS
12064 
12065        , A.COL1, A.COL2, A.COL3, A.COL4, A.COL5, A.COL6, A.COL7, A.COL8, A.COL9, A.COL10, A.COL11, A.COL12, A.COL13, A.COL14, A.COL15, A.COL16, A.COL17, A.COL18
12066 
12067        , A.COL19, A.COL20, A.COL21, A.COL22, A.COL23, A.COL24, A.COL25, A.COL26, A.COL27, A.COL28, A.COL29, A.COL30, A.COL31, A.COL32, A.COL33, A.COL34, A.COL35
12068 
12069        , A.COL36, A.COL37, A.COL38, A.COL39, A.COL40, A.COL41, A.COL42, A.COL43, A.COL44, A.COL45, A.COL46, A.COL47, A.COL48, A.COL49, A.COL50, A.COL51, A.COL52
12070 
12071        , A.COL53, A.COL54, A.COL55, A.COL56, A.COL57, A.COL58, A.COL59, A.COL60, A.COL61, A.COL62, A.COL63, A.COL64, A.COL65, A.COL66, A.COL67, A.COL68, A.COL69
12072 
12073        , A.COL70, A.COL71, A.COL72, A.COL73, A.COL74, A.COL75, A.COL76, A.COL77, A.COL78, A.COL79, A.COL80, A.COL81, A.COL82, A.COL83, A.COL84, A.COL85, A.COL86
12074 
12075        , A.COL87, A.COL88, A.COL89, A.COL90, A.COL91, A.COL92, A.COL93, A.COL94, A.COL95, A.COL96, A.COL97, A.COL98, A.COL99, A.COL100, A.COL101, A.COL102, A.COL103
12076 
12077        , A.COL104, A.COL105, A.COL106, A.COL107, A.COL108, A.COL109, A.COL110, A.COL111, A.COL112, A.COL113, A.COL114, A.COL115, A.COL116, A.COL117, A.COL118, A.COL119
12078 
12079        , A.COL120, A.COL121, A.COL122, A.COL123, A.COL124, A.COL125, A.COL126, A.COL127, A.COL128, A.COL129, A.COL130, A.COL131, A.COL132, A.COL133, A.COL134, A.COL135
12080 
12081        , A.COL136, A.COL137, A.COL138, A.COL139, A.COL140, A.COL141, A.COL142, A.COL143, A.COL144, A.COL145, A.COL146, A.COL147, A.COL148, A.COL149, A.COL150, A.COL151
12082 
12083        , A.COL152, A.COL153, A.COL154, A.COL155, A.COL156, A.COL157, A.COL158, A.COL159, A.COL160, A.COL161, A.COL162, A.COL163, A.COL164, A.COL165, A.COL166, A.COL167
12084 
12085        , A.COL168, A.COL169, A.COL170, A.COL171, A.COL172, A.COL173, A.COL174, A.COL175, A.COL176, A.COL177, A.COL178, A.COL179, A.COL180, A.COL181, A.COL182, A.COL183
12086 
12087        , A.COL184, A.COL185, A.COL186, A.COL187, A.COL188, A.COL189, A.COL190, A.COL191, A.COL192, A.COL193, A.COL194, A.COL195, A.COL196, A.COL197, A.COL198, A.COL199
12088 
12089        , A.COL200, A.COL201, A.COL202, A.COL203, A.COL204, A.COL205, A.COL206, A.COL207, A.COL208, A.COL209, A.COL210, A.COL211, A.COL212, A.COL213, A.COL214, A.COL215
12090 
12091        , A.COL216, A.COL217, A.COL218, A.COL219, A.COL220, A.COL221, A.COL222, A.COL223, A.COL224, A.COL225, A.COL226, A.COL227, A.COL228, A.COL229, A.COL230, A.COL231
12092 
12093        , A.COL232, A.COL233, A.COL234, A.COL235, A.COL236, A.COL237, A.COL238, A.COL239, A.COL240, A.COL241, A.COL242, A.COL243, A.COL244, A.COL245, A.COL246, A.COL247
12094 
12095        , A.COL248, A.COL249, A.COL250, A.IMP_SOURCE_LINE_ID, A.USAGE_RESTRICTION, A.COL251, A.COL252, A.COL253, A.COL254, A.COL255, A.COL256, A.COL257, A.COL258
12096 
12097        , A.COL259, A.COL260, A.COL261, A.COL262, A.COL263, A.COL264, A.COL265, A.COL266, A.COL267, A.COL268, A.COL269, A.COL270, A.COL271, A.COL272, A.COL273, A.COL274
12098 
12099        , A.COL275, A.COL276, A.COL277, A.COL278, A.COL279, A.COL280, A.COL281, A.COL282, A.COL283, A.COL284, A.COL285, A.COL286, A.COL287, A.COL288, A.COL289, A.COL290
12100 
12101        , A.COL291, A.COL292, A.COL293, A.COL294, A.COL295, A.COL296, A.COL297, A.COL298, A.COL299, A.COL300, A.NEWLY_UPDATED_FLAG
12102 
12103          FROM AMS_LIST_ENTRIES A, AMS_LIST_ENTRIES B
12104 
12105          WHERE A.LIST_HEADER_ID = p_from_list_id AND B.LIST_HEADER_ID = p_to_list_id AND A.PARTY_ID = B.PARTY_ID AND A.ENABLED_FLAG = 'Y' AND B.ENABLED_FLAG = 'Y';
12106 
12107     l_api_version     CONSTANT NUMBER   := 1.0;
12108     l_init_msg_list		VARCHAR2(1);
12109     l_return_status		VARCHAR2(1);
12110     l_msg_count			  NUMBER;
12111     l_msg_data			  VARCHAR2(2000);
12112     l_listentry_rec AMS_LISTENTRY_PVT.entry_rec_type;
12113 BEGIN
12114     l_init_msg_list		:=FND_API.G_TRUE;
12115 
12116    -- Update duplicate records in ams list entries
12117 
12118    -- From Source List to Destination List
12119     FOR v_listentryrec IN c_listentryrec LOOP
12120       l_to_list_entry_id_col(l_num) := v_listentryrec.list_entry_id;
12121 
12122       l_listentry_rec.list_entry_id := v_listentryrec.list_entry_id;
12123       l_listentry_rec.list_header_id := v_listentryrec.list_header_id;
12124       l_listentry_rec.last_update_date := v_listentryrec.last_update_date;
12125       l_listentry_rec.last_updated_by := v_listentryrec.last_updated_by;
12126       l_listentry_rec.creation_date := v_listentryrec.creation_date;
12127       l_listentry_rec.created_by := v_listentryrec.created_by;
12128       l_listentry_rec.last_update_login := v_listentryrec.last_update_login;
12129       l_listentry_rec.object_version_number := v_listentryrec.object_version_number;
12130       l_listentry_rec.list_select_action_id := v_listentryrec.list_select_action_id;
12131       l_listentry_rec.arc_list_select_action_from := v_listentryrec.arc_list_select_action_from;
12132       l_listentry_rec.list_select_action_from_name := v_listentryrec.list_select_action_from_name;
12133       l_listentry_rec.source_code := v_listentryrec.source_code;
12134       l_listentry_rec.arc_list_used_by_source := v_listentryrec.arc_list_used_by_source;
12135       l_listentry_rec.source_code_for_id := v_listentryrec.source_code_for_id;
12136       l_listentry_rec.pin_code := v_listentryrec.pin_code;
12137       l_listentry_rec.list_entry_source_system_id := v_listentryrec.list_entry_source_system_id;
12138       l_listentry_rec.list_entry_source_system_type := v_listentryrec.list_entry_source_system_type;
12139       l_listentry_rec.view_application_id := v_listentryrec.view_application_id;
12140       l_listentry_rec.manually_entered_flag := v_listentryrec.manually_entered_flag;
12141       l_listentry_rec.marked_as_duplicate_flag := v_listentryrec.marked_as_duplicate_flag;
12142       l_listentry_rec.marked_as_random_flag := v_listentryrec.marked_as_random_flag;
12143       l_listentry_rec.part_of_control_group_flag := v_listentryrec.part_of_control_group_flag;
12144       l_listentry_rec.exclude_in_triggered_list_flag := v_listentryrec.exclude_in_triggered_list_flag;
12145       l_listentry_rec.enabled_flag := v_listentryrec.enabled_flag;
12146       l_listentry_rec.cell_code := v_listentryrec.cell_code;
12147       l_listentry_rec.dedupe_key := v_listentryrec.dedupe_key;
12148       l_listentry_rec.randomly_generated_number := v_listentryrec.randomly_generated_number;
12149       l_listentry_rec.campaign_id := v_listentryrec.campaign_id;
12150       l_listentry_rec.media_id := v_listentryrec.media_id;
12151       l_listentry_rec.channel_id := v_listentryrec.channel_id;
12152       l_listentry_rec.channel_schedule_id := v_listentryrec.channel_schedule_id;
12153       l_listentry_rec.event_offer_id := v_listentryrec.event_offer_id;
12154       l_listentry_rec.customer_id := v_listentryrec.customer_id;
12155       l_listentry_rec.market_segment_id := v_listentryrec.market_segment_id;
12156       l_listentry_rec.vendor_id := v_listentryrec.vendor_id;
12157       l_listentry_rec.transfer_flag := v_listentryrec.transfer_flag;
12158       l_listentry_rec.transfer_status := v_listentryrec.transfer_status;
12159       l_listentry_rec.list_source := v_listentryrec.list_source;
12160       l_listentry_rec.duplicate_master_entry_id := v_listentryrec.duplicate_master_entry_id;
12161       l_listentry_rec.marked_flag := v_listentryrec.marked_flag;
12162       l_listentry_rec.lead_id := v_listentryrec.lead_id;
12163       l_listentry_rec.letter_id := v_listentryrec.letter_id;
12164       l_listentry_rec.picking_header_id := v_listentryrec.picking_header_id;
12165       l_listentry_rec.batch_id := v_listentryrec.batch_id;
12166       l_listentry_rec.first_name := v_listentryrec.first_name;
12167       l_listentry_rec.last_name := v_listentryrec.last_name;
12168       l_listentry_rec.customer_name := v_listentryrec.customer_name;
12169       l_listentry_rec.col1 := v_listentryrec.col1;
12170       l_listentry_rec.col2 := v_listentryrec.col2;
12171       l_listentry_rec.col3 := v_listentryrec.col3;
12172       l_listentry_rec.col4 := v_listentryrec.col4;
12173       l_listentry_rec.col5 := v_listentryrec.col5;
12174       l_listentry_rec.col6 := v_listentryrec.col6;
12175       l_listentry_rec.col7 := v_listentryrec.col7;
12176       l_listentry_rec.col8 := v_listentryrec.col8;
12177       l_listentry_rec.col9 := v_listentryrec.col9;
12178       l_listentry_rec.col10 := v_listentryrec.col10;
12179       l_listentry_rec.col11 := v_listentryrec.col11;
12180       l_listentry_rec.col12 := v_listentryrec.col12;
12181       l_listentry_rec.col13 := v_listentryrec.col13;
12182       l_listentry_rec.col14 := v_listentryrec.col14;
12183       l_listentry_rec.col15 := v_listentryrec.col15;
12184       l_listentry_rec.col16 := v_listentryrec.col16;
12185       l_listentry_rec.col17 := v_listentryrec.col17;
12186       l_listentry_rec.col18 := v_listentryrec.col18;
12187       l_listentry_rec.col19 := v_listentryrec.col19;
12188       l_listentry_rec.col20 := v_listentryrec.col20;
12189       l_listentry_rec.col21 := v_listentryrec.col21;
12190       l_listentry_rec.col22 := v_listentryrec.col22;
12191       l_listentry_rec.col23 := v_listentryrec.col23;
12192       l_listentry_rec.col24 := v_listentryrec.col24;
12193       l_listentry_rec.col25 := v_listentryrec.col25;
12194       l_listentry_rec.col26 := v_listentryrec.col26;
12195       l_listentry_rec.col27 := v_listentryrec.col27;
12196       l_listentry_rec.col28 := v_listentryrec.col28;
12197       l_listentry_rec.col29 := v_listentryrec.col29;
12198       l_listentry_rec.col30 := v_listentryrec.col30;
12199       l_listentry_rec.col31 := v_listentryrec.col31;
12200       l_listentry_rec.col32 := v_listentryrec.col32;
12201       l_listentry_rec.col33 := v_listentryrec.col33;
12202       l_listentry_rec.col34 := v_listentryrec.col34;
12203       l_listentry_rec.col35 := v_listentryrec.col35;
12204       l_listentry_rec.col36 := v_listentryrec.col36;
12205       l_listentry_rec.col37 := v_listentryrec.col37;
12206       l_listentry_rec.col38 := v_listentryrec.col38;
12207       l_listentry_rec.col39 := v_listentryrec.col39;
12208       l_listentry_rec.col40 := v_listentryrec.col40;
12209       l_listentry_rec.col41 := v_listentryrec.col41;
12210       l_listentry_rec.col42 := v_listentryrec.col42;
12211       l_listentry_rec.col43 := v_listentryrec.col43;
12212       l_listentry_rec.col44 := v_listentryrec.col44;
12213       l_listentry_rec.col45 := v_listentryrec.col45;
12214       l_listentry_rec.col46 := v_listentryrec.col46;
12215       l_listentry_rec.col47 := v_listentryrec.col47;
12216       l_listentry_rec.col48 := v_listentryrec.col48;
12217       l_listentry_rec.col49 := v_listentryrec.col49;
12218       l_listentry_rec.col50 := v_listentryrec.col50;
12219       l_listentry_rec.col51 := v_listentryrec.col51;
12220       l_listentry_rec.col52 := v_listentryrec.col52;
12221       l_listentry_rec.col53 := v_listentryrec.col53;
12222       l_listentry_rec.col54 := v_listentryrec.col54;
12223       l_listentry_rec.col55 := v_listentryrec.col55;
12224       l_listentry_rec.col56 := v_listentryrec.col56;
12225       l_listentry_rec.col57 := v_listentryrec.col57;
12226       l_listentry_rec.col58 := v_listentryrec.col58;
12227       l_listentry_rec.col59 := v_listentryrec.col59;
12228       l_listentry_rec.col60 := v_listentryrec.col60;
12229       l_listentry_rec.col61 := v_listentryrec.col61;
12230       l_listentry_rec.col62 := v_listentryrec.col62;
12231       l_listentry_rec.col63 := v_listentryrec.col63;
12232       l_listentry_rec.col64 := v_listentryrec.col64;
12233       l_listentry_rec.col65 := v_listentryrec.col65;
12234       l_listentry_rec.col66 := v_listentryrec.col66;
12235       l_listentry_rec.col67 := v_listentryrec.col67;
12236       l_listentry_rec.col68 := v_listentryrec.col68;
12237       l_listentry_rec.col69 := v_listentryrec.col69;
12238       l_listentry_rec.col70 := v_listentryrec.col70;
12239       l_listentry_rec.col71 := v_listentryrec.col71;
12240       l_listentry_rec.col72 := v_listentryrec.col72;
12241       l_listentry_rec.col73 := v_listentryrec.col73;
12242       l_listentry_rec.col74 := v_listentryrec.col74;
12243       l_listentry_rec.col75 := v_listentryrec.col75;
12244       l_listentry_rec.col76 := v_listentryrec.col76;
12245       l_listentry_rec.col77 := v_listentryrec.col77;
12246       l_listentry_rec.col78 := v_listentryrec.col78;
12247       l_listentry_rec.col79 := v_listentryrec.col79;
12248       l_listentry_rec.col80 := v_listentryrec.col80;
12249       l_listentry_rec.col81 := v_listentryrec.col81;
12250       l_listentry_rec.col82 := v_listentryrec.col82;
12251       l_listentry_rec.col83 := v_listentryrec.col83;
12252       l_listentry_rec.col84 := v_listentryrec.col84;
12253       l_listentry_rec.col85 := v_listentryrec.col85;
12254       l_listentry_rec.col86 := v_listentryrec.col86;
12255       l_listentry_rec.col87 := v_listentryrec.col87;
12256       l_listentry_rec.col88 := v_listentryrec.col88;
12257       l_listentry_rec.col89 := v_listentryrec.col89;
12258       l_listentry_rec.col90 := v_listentryrec.col90;
12259       l_listentry_rec.col91 := v_listentryrec.col91;
12260       l_listentry_rec.col92 := v_listentryrec.col92;
12261       l_listentry_rec.col93 := v_listentryrec.col93;
12262       l_listentry_rec.col94 := v_listentryrec.col94;
12263       l_listentry_rec.col95 := v_listentryrec.col95;
12264       l_listentry_rec.col96 := v_listentryrec.col96;
12265       l_listentry_rec.col97 := v_listentryrec.col97;
12266       l_listentry_rec.col98 := v_listentryrec.col98;
12267       l_listentry_rec.col99 := v_listentryrec.col99;
12268       l_listentry_rec.col100 := v_listentryrec.col100;
12269       l_listentry_rec.col101 := v_listentryrec.col101;
12270       l_listentry_rec.col102 := v_listentryrec.col102;
12271       l_listentry_rec.col103 := v_listentryrec.col103;
12272       l_listentry_rec.col104 := v_listentryrec.col104;
12273       l_listentry_rec.col105 := v_listentryrec.col105;
12274       l_listentry_rec.col106 := v_listentryrec.col106;
12275       l_listentry_rec.col107 := v_listentryrec.col107;
12276       l_listentry_rec.col108 := v_listentryrec.col108;
12277       l_listentry_rec.col109 := v_listentryrec.col109;
12278       l_listentry_rec.col110 := v_listentryrec.col110;
12279       l_listentry_rec.col111 := v_listentryrec.col111;
12280       l_listentry_rec.col112 := v_listentryrec.col112;
12281       l_listentry_rec.col113 := v_listentryrec.col113;
12282       l_listentry_rec.col114 := v_listentryrec.col114;
12283       l_listentry_rec.col115 := v_listentryrec.col115;
12284       l_listentry_rec.col116 := v_listentryrec.col116;
12285       l_listentry_rec.col117 := v_listentryrec.col117;
12286       l_listentry_rec.col118 := v_listentryrec.col118;
12287       l_listentry_rec.col119 := v_listentryrec.col119;
12288       l_listentry_rec.col120 := v_listentryrec.col120;
12289       l_listentry_rec.col121 := v_listentryrec.col121;
12290       l_listentry_rec.col122 := v_listentryrec.col122;
12291       l_listentry_rec.col123 := v_listentryrec.col123;
12292       l_listentry_rec.col124 := v_listentryrec.col124;
12293       l_listentry_rec.col125 := v_listentryrec.col125;
12294       l_listentry_rec.col126 := v_listentryrec.col126;
12295       l_listentry_rec.col127 := v_listentryrec.col127;
12296       l_listentry_rec.col128 := v_listentryrec.col128;
12297       l_listentry_rec.col129 := v_listentryrec.col129;
12298       l_listentry_rec.col130 := v_listentryrec.col130;
12299       l_listentry_rec.col131 := v_listentryrec.col131;
12300       l_listentry_rec.col132 := v_listentryrec.col132;
12301       l_listentry_rec.col133 := v_listentryrec.col133;
12302       l_listentry_rec.col134 := v_listentryrec.col134;
12303       l_listentry_rec.col135 := v_listentryrec.col135;
12304       l_listentry_rec.col136 := v_listentryrec.col136;
12305       l_listentry_rec.col137 := v_listentryrec.col137;
12306       l_listentry_rec.col138 := v_listentryrec.col138;
12307       l_listentry_rec.col139 := v_listentryrec.col139;
12308       l_listentry_rec.col140 := v_listentryrec.col140;
12309       l_listentry_rec.col141 := v_listentryrec.col141;
12310       l_listentry_rec.col142 := v_listentryrec.col142;
12311       l_listentry_rec.col143 := v_listentryrec.col143;
12312       l_listentry_rec.col144 := v_listentryrec.col144;
12313       l_listentry_rec.col145 := v_listentryrec.col145;
12314       l_listentry_rec.col146 := v_listentryrec.col146;
12315       l_listentry_rec.col147 := v_listentryrec.col147;
12316       l_listentry_rec.col148 := v_listentryrec.col148;
12317       l_listentry_rec.col149 := v_listentryrec.col149;
12318       l_listentry_rec.col150 := v_listentryrec.col150;
12319       l_listentry_rec.col151 := v_listentryrec.col151;
12320       l_listentry_rec.col152 := v_listentryrec.col152;
12321       l_listentry_rec.col153 := v_listentryrec.col153;
12322       l_listentry_rec.col154 := v_listentryrec.col154;
12323       l_listentry_rec.col155 := v_listentryrec.col155;
12324       l_listentry_rec.col156 := v_listentryrec.col156;
12325       l_listentry_rec.col157 := v_listentryrec.col157;
12326       l_listentry_rec.col158 := v_listentryrec.col158;
12327       l_listentry_rec.col159 := v_listentryrec.col159;
12328       l_listentry_rec.col160 := v_listentryrec.col160;
12329       l_listentry_rec.col161 := v_listentryrec.col161;
12330       l_listentry_rec.col162 := v_listentryrec.col162;
12331       l_listentry_rec.col163 := v_listentryrec.col163;
12332       l_listentry_rec.col164 := v_listentryrec.col164;
12333       l_listentry_rec.col165 := v_listentryrec.col165;
12334       l_listentry_rec.col166 := v_listentryrec.col166;
12335       l_listentry_rec.col167 := v_listentryrec.col167;
12336       l_listentry_rec.col168 := v_listentryrec.col168;
12337       l_listentry_rec.col169 := v_listentryrec.col169;
12338       l_listentry_rec.col170 := v_listentryrec.col170;
12339       l_listentry_rec.col171 := v_listentryrec.col171;
12340       l_listentry_rec.col172 := v_listentryrec.col172;
12341       l_listentry_rec.col173 := v_listentryrec.col173;
12342       l_listentry_rec.col174 := v_listentryrec.col174;
12343       l_listentry_rec.col175 := v_listentryrec.col175;
12344       l_listentry_rec.col176 := v_listentryrec.col176;
12345       l_listentry_rec.col177 := v_listentryrec.col177;
12346       l_listentry_rec.col178 := v_listentryrec.col178;
12347       l_listentry_rec.col179 := v_listentryrec.col179;
12348       l_listentry_rec.col180 := v_listentryrec.col180;
12349       l_listentry_rec.col181 := v_listentryrec.col181;
12350       l_listentry_rec.col182 := v_listentryrec.col182;
12351       l_listentry_rec.col183 := v_listentryrec.col183;
12352       l_listentry_rec.col184 := v_listentryrec.col184;
12353       l_listentry_rec.col185 := v_listentryrec.col185;
12354       l_listentry_rec.col186 := v_listentryrec.col186;
12355       l_listentry_rec.col187 := v_listentryrec.col187;
12356       l_listentry_rec.col188 := v_listentryrec.col188;
12357       l_listentry_rec.col189 := v_listentryrec.col189;
12358       l_listentry_rec.col190 := v_listentryrec.col190;
12359       l_listentry_rec.col191 := v_listentryrec.col191;
12360       l_listentry_rec.col192 := v_listentryrec.col192;
12361       l_listentry_rec.col193 := v_listentryrec.col193;
12362       l_listentry_rec.col194 := v_listentryrec.col194;
12363       l_listentry_rec.col195 := v_listentryrec.col195;
12364       l_listentry_rec.col196 := v_listentryrec.col196;
12365       l_listentry_rec.col197 := v_listentryrec.col197;
12366       l_listentry_rec.col198 := v_listentryrec.col198;
12367       l_listentry_rec.col199 := v_listentryrec.col199;
12368       l_listentry_rec.col200 := v_listentryrec.col200;
12369       l_listentry_rec.col201 := v_listentryrec.col201;
12370       l_listentry_rec.col202 := v_listentryrec.col202;
12371       l_listentry_rec.col203 := v_listentryrec.col203;
12372       l_listentry_rec.col204 := v_listentryrec.col204;
12373       l_listentry_rec.col205 := v_listentryrec.col205;
12374       l_listentry_rec.col206 := v_listentryrec.col206;
12375       l_listentry_rec.col207 := v_listentryrec.col207;
12376       l_listentry_rec.col208 := v_listentryrec.col208;
12377       l_listentry_rec.col209 := v_listentryrec.col209;
12378       l_listentry_rec.col210 := v_listentryrec.col210;
12379       l_listentry_rec.col211 := v_listentryrec.col211;
12380       l_listentry_rec.col212 := v_listentryrec.col212;
12381       l_listentry_rec.col213 := v_listentryrec.col213;
12382       l_listentry_rec.col214 := v_listentryrec.col214;
12383       l_listentry_rec.col215 := v_listentryrec.col215;
12384       l_listentry_rec.col216 := v_listentryrec.col216;
12385       l_listentry_rec.col217 := v_listentryrec.col217;
12386       l_listentry_rec.col218 := v_listentryrec.col218;
12387       l_listentry_rec.col219 := v_listentryrec.col219;
12388       l_listentry_rec.col220 := v_listentryrec.col220;
12389       l_listentry_rec.col221 := v_listentryrec.col221;
12390       l_listentry_rec.col222 := v_listentryrec.col222;
12391       l_listentry_rec.col223 := v_listentryrec.col223;
12392       l_listentry_rec.col224 := v_listentryrec.col224;
12393       l_listentry_rec.col225 := v_listentryrec.col225;
12394       l_listentry_rec.col226 := v_listentryrec.col226;
12395       l_listentry_rec.col227 := v_listentryrec.col227;
12396       l_listentry_rec.col228 := v_listentryrec.col228;
12397       l_listentry_rec.col229 := v_listentryrec.col229;
12398       l_listentry_rec.col230 := v_listentryrec.col230;
12399       l_listentry_rec.col231 := v_listentryrec.col231;
12400       l_listentry_rec.col232 := v_listentryrec.col232;
12401       l_listentry_rec.col233 := v_listentryrec.col233;
12402       l_listentry_rec.col234 := v_listentryrec.col234;
12403       l_listentry_rec.col235 := v_listentryrec.col235;
12404       l_listentry_rec.col236 := v_listentryrec.col236;
12405       l_listentry_rec.col237 := v_listentryrec.col237;
12406       l_listentry_rec.col238 := v_listentryrec.col238;
12407       l_listentry_rec.col239 := v_listentryrec.col239;
12408       l_listentry_rec.col240 := v_listentryrec.col240;
12409       l_listentry_rec.col241 := v_listentryrec.col241;
12410       l_listentry_rec.col242 := v_listentryrec.col242;
12411       l_listentry_rec.col243 := v_listentryrec.col243;
12412       l_listentry_rec.col244 := v_listentryrec.col244;
12413       l_listentry_rec.col245 := v_listentryrec.col245;
12414       l_listentry_rec.col246 := v_listentryrec.col246;
12415       l_listentry_rec.col247 := v_listentryrec.col247;
12416       l_listentry_rec.col248 := v_listentryrec.col248;
12417       l_listentry_rec.col249 := v_listentryrec.col249;
12418       l_listentry_rec.col250 := v_listentryrec.col250;
12419       l_listentry_rec.col251 := v_listentryrec.col251;
12420       l_listentry_rec.col252 := v_listentryrec.col252;
12421       l_listentry_rec.col253 := v_listentryrec.col253;
12422       l_listentry_rec.col254 := v_listentryrec.col254;
12423       l_listentry_rec.col255 := v_listentryrec.col255;
12424       l_listentry_rec.col256 := v_listentryrec.col256;
12425       l_listentry_rec.col257 := v_listentryrec.col257;
12426       l_listentry_rec.col258 := v_listentryrec.col258;
12427       l_listentry_rec.col259 := v_listentryrec.col259;
12428       l_listentry_rec.col260 := v_listentryrec.col260;
12429       l_listentry_rec.col261 := v_listentryrec.col261;
12430       l_listentry_rec.col262 := v_listentryrec.col262;
12431       l_listentry_rec.col263 := v_listentryrec.col263;
12432       l_listentry_rec.col264 := v_listentryrec.col264;
12433       l_listentry_rec.col265 := v_listentryrec.col265;
12434       l_listentry_rec.col266 := v_listentryrec.col266;
12435       l_listentry_rec.col267 := v_listentryrec.col267;
12436       l_listentry_rec.col268 := v_listentryrec.col268;
12437       l_listentry_rec.col269 := v_listentryrec.col269;
12438       l_listentry_rec.col270 := v_listentryrec.col270;
12439       l_listentry_rec.col271 := v_listentryrec.col271;
12440       l_listentry_rec.col272 := v_listentryrec.col272;
12441       l_listentry_rec.col273 := v_listentryrec.col273;
12442       l_listentry_rec.col274 := v_listentryrec.col274;
12443       l_listentry_rec.col275 := v_listentryrec.col275;
12444       l_listentry_rec.col276 := v_listentryrec.col276;
12445       l_listentry_rec.col277 := v_listentryrec.col277;
12446       l_listentry_rec.col278 := v_listentryrec.col278;
12447       l_listentry_rec.col279 := v_listentryrec.col279;
12448       l_listentry_rec.col280 := v_listentryrec.col280;
12449       l_listentry_rec.col281 := v_listentryrec.col281;
12450       l_listentry_rec.col282 := v_listentryrec.col282;
12451       l_listentry_rec.col283 := v_listentryrec.col283;
12452       l_listentry_rec.col284 := v_listentryrec.col284;
12453       l_listentry_rec.col285 := v_listentryrec.col285;
12454       l_listentry_rec.col286 := v_listentryrec.col286;
12455       l_listentry_rec.col287 := v_listentryrec.col287;
12456       l_listentry_rec.col288 := v_listentryrec.col288;
12457       l_listentry_rec.col289 := v_listentryrec.col289;
12458       l_listentry_rec.col290 := v_listentryrec.col290;
12459       l_listentry_rec.col291 := v_listentryrec.col291;
12460       l_listentry_rec.col292 := v_listentryrec.col292;
12461       l_listentry_rec.col293 := v_listentryrec.col293;
12462       l_listentry_rec.col294 := v_listentryrec.col294;
12463       l_listentry_rec.col295 := v_listentryrec.col295;
12464       l_listentry_rec.col296 := v_listentryrec.col296;
12465       l_listentry_rec.col297 := v_listentryrec.col297;
12466       l_listentry_rec.col298 := v_listentryrec.col298;
12467       l_listentry_rec.col299 := v_listentryrec.col299;
12468       l_listentry_rec.col300 := v_listentryrec.col300;
12469       l_listentry_rec.address_line1 := v_listentryrec.address_line1;
12470       l_listentry_rec.address_line2 := v_listentryrec.address_line2;
12471      	l_listentry_rec.callback_flag := FND_API.g_miss_char;
12472       l_listentry_rec.city := v_listentryrec.city;
12473       l_listentry_rec.country := v_listentryrec.country;
12474       l_listentry_rec.do_not_use_flag := FND_API.g_miss_char;
12475       l_listentry_rec.do_not_use_reason := FND_API.g_miss_char;
12476       l_listentry_rec.email_address := v_listentryrec.email_address;
12477       l_listentry_rec.fax := v_listentryrec.fax;
12478       l_listentry_rec.phone := v_listentryrec.phone;
12479       l_listentry_rec.record_out_flag := FND_API.g_miss_char;
12480       l_listentry_rec.state := v_listentryrec.state;
12481       l_listentry_rec.suffix := v_listentryrec.suffix;
12482       l_listentry_rec.title := v_listentryrec.title;
12483       l_listentry_rec.usage_restriction := FND_API.g_miss_char;
12484       l_listentry_rec.zipcode := v_listentryrec.zipcode;
12485       l_listentry_rec.curr_cp_country_code := FND_API.g_miss_char;
12486       l_listentry_rec.curr_cp_phone_number := FND_API.g_miss_char;
12487       l_listentry_rec.curr_cp_raw_phone_number := FND_API.g_miss_char;
12488       l_listentry_rec.curr_cp_area_code := FND_API.g_miss_num;
12489       l_listentry_rec.curr_cp_id := FND_API.g_miss_num;
12490       l_listentry_rec.curr_cp_index := FND_API.g_miss_num;
12491       l_listentry_rec.curr_cp_time_zone := FND_API.g_miss_num;
12492       l_listentry_rec.curr_cp_time_zone_aux := FND_API.g_miss_num;
12493       l_listentry_rec.imp_source_line_id := v_listentryrec.imp_source_line_id;
12494       l_listentry_rec.next_call_time := FND_API.g_miss_date;
12495       l_listentry_rec.record_release_time := FND_API.g_miss_date;
12496       l_listentry_rec.party_id := v_listentryrec.party_id;
12497       l_listentry_rec.parent_party_id := v_listentryrec.parent_party_id;
12498 
12499       AMS_LISTENTRY_PUB.update_listentry(
12500         p_api_version => l_api_version,
12501         p_init_msg_list => l_init_msg_list,
12502         x_return_status => l_return_status,
12503         x_msg_count => l_msg_count,
12504         x_msg_data => l_msg_data,
12505         p_entry_rec => l_listentry_rec);
12506 
12507       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12508         Log_msg('AMS_LISTENTRY_PUB.update_listentry', l_msg_data);
12509       END IF;
12510 
12511       UPDATE AMS_LIST_ENTRIES
12512       SET NEWLY_UPDATED_FLAG = v_listentryrec.NEWLY_UPDATED_FLAG
12513       WHERE LIST_ENTRY_ID = v_listentryrec.list_entry_id
12514       AND LIST_HEADER_ID= v_listentryrec.list_header_id;
12515 
12516       l_to_list_entry_id_col.extend(1,1);
12517       l_num := l_num + 1;
12518 
12519     END LOOP;
12520 
12521 /*
12522        UPDATE AMS_LIST_ENTRIES A
12523 
12524        SET ( LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATION_DATE, CREATED_BY, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER
12525 
12526        , LIST_SELECT_ACTION_ID, ARC_LIST_SELECT_ACTION_FROM, LIST_SELECT_ACTION_FROM_NAME, SOURCE_CODE, ARC_LIST_USED_BY_SOURCE, SOURCE_CODE_FOR_ID
12527 
12528        , PIN_CODE, LIST_ENTRY_SOURCE_SYSTEM_ID, LIST_ENTRY_SOURCE_SYSTEM_TYPE, VIEW_APPLICATION_ID, MANUALLY_ENTERED_FLAG
12529 
12530        , MARKED_AS_DUPLICATE_FLAG, MARKED_AS_RANDOM_FLAG, PART_OF_CONTROL_GROUP_FLAG, EXCLUDE_IN_TRIGGERED_LIST_FLAG, ENABLED_FLAG, CELL_CODE, DEDUPE_KEY
12531 
12532        , RANDOMLY_GENERATED_NUMBER, CAMPAIGN_ID, MEDIA_ID, CHANNEL_ID, CHANNEL_SCHEDULE_ID, EVENT_OFFER_ID, CUSTOMER_ID, MARKET_SEGMENT_ID
12533 
12534        , PARTY_ID, PARENT_PARTY_ID, VENDOR_ID, TRANSFER_FLAG, TRANSFER_STATUS, LIST_SOURCE, DUPLICATE_MASTER_ENTRY_ID, MARKED_FLAG, LEAD_ID, LETTER_ID
12535 
12536        , PICKING_HEADER_ID, BATCH_ID, SUFFIX, FIRST_NAME, LAST_NAME, CUSTOMER_NAME, TITLE, ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE, ZIPCODE, COUNTRY, FAX, PHONE, EMAIL_ADDRESS
12537 
12538        , COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18
12539 
12540        , COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33, COL34, COL35
12541 
12542        , COL36, COL37, COL38, COL39, COL40, COL41, COL42, COL43, COL44, COL45, COL46, COL47, COL48, COL49, COL50, COL51, COL52
12543 
12544        , COL53, COL54, COL55, COL56, COL57, COL58, COL59, COL60, COL61, COL62, COL63, COL64, COL65, COL66, COL67, COL68, COL69
12545 
12546        , COL70, COL71, COL72, COL73, COL74, COL75, COL76, COL77, COL78, COL79, COL80, COL81, COL82, COL83, COL84, COL85, COL86
12547 
12548        , COL87, COL88, COL89, COL90, COL91, COL92, COL93, COL94, COL95, COL96, COL97, COL98, COL99, COL100, COL101, COL102, COL103
12549 
12550        , COL104, COL105, COL106, COL107, COL108, COL109, COL110, COL111, COL112, COL113, COL114, COL115, COL116, COL117, COL118, COL119
12551 
12552        , COL120, COL121, COL122, COL123, COL124, COL125, COL126, COL127, COL128, COL129, COL130, COL131, COL132, COL133, COL134, COL135
12553 
12554        , COL136, COL137, COL138, COL139, COL140, COL141, COL142, COL143, COL144, COL145, COL146, COL147, COL148, COL149, COL150, COL151
12555 
12556        , COL152, COL153, COL154, COL155, COL156, COL157, COL158, COL159, COL160, COL161, COL162, COL163, COL164, COL165, COL166, COL167
12557 
12558        , COL168, COL169, COL170, COL171, COL172, COL173, COL174, COL175, COL176, COL177, COL178, COL179, COL180, COL181, COL182, COL183
12559 
12560        , COL184, COL185, COL186, COL187, COL188, COL189, COL190, COL191, COL192, COL193, COL194, COL195, COL196, COL197, COL198, COL199
12561 
12562        , COL200, COL201, COL202, COL203, COL204, COL205, COL206, COL207, COL208, COL209, COL210, COL211, COL212, COL213, COL214, COL215
12563 
12564        , COL216, COL217, COL218, COL219, COL220, COL221, COL222, COL223, COL224, COL225, COL226, COL227, COL228, COL229, COL230, COL231
12565 
12566        , COL232, COL233, COL234, COL235, COL236, COL237, COL238, COL239, COL240, COL241, COL242, COL243, COL244, COL245, COL246, COL247
12567 
12568        , COL248, COL249, COL250, IMP_SOURCE_LINE_ID, USAGE_RESTRICTION, COL251, COL252, COL253, COL254, COL255, COL256, COL257, COL258
12569 
12570        , COL259, COL260, COL261, COL262, COL263, COL264, COL265, COL266, COL267, COL268, COL269, COL270, COL271, COL272, COL273, COL274
12571 
12572        , COL275, COL276, COL277, COL278, COL279, COL280, COL281, COL282, COL283, COL284, COL285, COL286, COL287, COL288, COL289, COL290
12573 
12574        , COL291, COL292, COL293, COL294, COL295, COL296, COL297, COL298, COL299, COL300, NEWLY_UPDATED_FLAG
12575 
12576        ) =
12577 
12578        (SELECT
12579 
12580          LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATION_DATE, CREATED_BY, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER
12581 
12582        , LIST_SELECT_ACTION_ID, ARC_LIST_SELECT_ACTION_FROM, LIST_SELECT_ACTION_FROM_NAME, SOURCE_CODE, ARC_LIST_USED_BY_SOURCE, SOURCE_CODE_FOR_ID
12583 
12584        , PIN_CODE, LIST_ENTRY_SOURCE_SYSTEM_ID, LIST_ENTRY_SOURCE_SYSTEM_TYPE, VIEW_APPLICATION_ID, MANUALLY_ENTERED_FLAG
12585 
12586        , MARKED_AS_DUPLICATE_FLAG, MARKED_AS_RANDOM_FLAG, PART_OF_CONTROL_GROUP_FLAG, EXCLUDE_IN_TRIGGERED_LIST_FLAG, ENABLED_FLAG, CELL_CODE, DEDUPE_KEY
12587 
12588        , RANDOMLY_GENERATED_NUMBER, CAMPAIGN_ID, MEDIA_ID, CHANNEL_ID, CHANNEL_SCHEDULE_ID, EVENT_OFFER_ID, CUSTOMER_ID, MARKET_SEGMENT_ID
12589 
12590        , PARTY_ID, PARENT_PARTY_ID, VENDOR_ID, TRANSFER_FLAG, TRANSFER_STATUS, LIST_SOURCE, DUPLICATE_MASTER_ENTRY_ID, MARKED_FLAG, LEAD_ID, LETTER_ID
12591 
12592        , PICKING_HEADER_ID, BATCH_ID, SUFFIX, FIRST_NAME, LAST_NAME, CUSTOMER_NAME, TITLE, ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE, ZIPCODE, COUNTRY, FAX, PHONE, EMAIL_ADDRESS
12593 
12594        , COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18
12595 
12596        , COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33, COL34, COL35
12597 
12598        , COL36, COL37, COL38, COL39, COL40, COL41, COL42, COL43, COL44, COL45, COL46, COL47, COL48, COL49, COL50, COL51, COL52
12599 
12600        , COL53, COL54, COL55, COL56, COL57, COL58, COL59, COL60, COL61, COL62, COL63, COL64, COL65, COL66, COL67, COL68, COL69
12601 
12602        , COL70, COL71, COL72, COL73, COL74, COL75, COL76, COL77, COL78, COL79, COL80, COL81, COL82, COL83, COL84, COL85, COL86
12603 
12604        , COL87, COL88, COL89, COL90, COL91, COL92, COL93, COL94, COL95, COL96, COL97, COL98, COL99, COL100, COL101, COL102, COL103
12605 
12606        , COL104, COL105, COL106, COL107, COL108, COL109, COL110, COL111, COL112, COL113, COL114, COL115, COL116, COL117, COL118, COL119
12607 
12608        , COL120, COL121, COL122, COL123, COL124, COL125, COL126, COL127, COL128, COL129, COL130, COL131, COL132, COL133, COL134, COL135
12609 
12610        , COL136, COL137, COL138, COL139, COL140, COL141, COL142, COL143, COL144, COL145, COL146, COL147, COL148, COL149, COL150, COL151
12611 
12612        , COL152, COL153, COL154, COL155, COL156, COL157, COL158, COL159, COL160, COL161, COL162, COL163, COL164, COL165, COL166, COL167
12613 
12614        , COL168, COL169, COL170, COL171, COL172, COL173, COL174, COL175, COL176, COL177, COL178, COL179, COL180, COL181, COL182, COL183
12615 
12616        , COL184, COL185, COL186, COL187, COL188, COL189, COL190, COL191, COL192, COL193, COL194, COL195, COL196, COL197, COL198, COL199
12617 
12618        , COL200, COL201, COL202, COL203, COL204, COL205, COL206, COL207, COL208, COL209, COL210, COL211, COL212, COL213, COL214, COL215
12619 
12620        , COL216, COL217, COL218, COL219, COL220, COL221, COL222, COL223, COL224, COL225, COL226, COL227, COL228, COL229, COL230, COL231
12621 
12622        , COL232, COL233, COL234, COL235, COL236, COL237, COL238, COL239, COL240, COL241, COL242, COL243, COL244, COL245, COL246, COL247
12623 
12624        , COL248, COL249, COL250, IMP_SOURCE_LINE_ID, USAGE_RESTRICTION, COL251, COL252, COL253, COL254, COL255, COL256, COL257, COL258
12625 
12626        , COL259, COL260, COL261, COL262, COL263, COL264, COL265, COL266, COL267, COL268, COL269, COL270, COL271, COL272, COL273, COL274
12627 
12628        , COL275, COL276, COL277, COL278, COL279, COL280, COL281, COL282, COL283, COL284, COL285, COL286, COL287, COL288, COL289, COL290
12629 
12630        , COL291, COL292, COL293, COL294, COL295, COL296, COL297, COL298, COL299, COL300, NEWLY_UPDATED_FLAG
12631 
12632          FROM AMS_LIST_ENTRIES
12633 
12634          WHERE LIST_HEADER_ID = p_from_list_id AND PARTY_ID = A.PARTY_ID AND ENABLED_FLAG = 'Y')
12635 
12636        WHERE LIST_HEADER_ID = p_to_list_id
12637 
12638        AND ENABLED_FLAG = 'Y'
12639 
12640        AND PARTY_ID IN (SELECT PARTY_ID
12641 
12642                         FROM AMS_LIST_ENTRIES
12643 
12644                         WHERE LIST_HEADER_ID = p_from_list_id
12645 
12646                         AND ENABLED_FLAG = 'Y')
12647 
12648        RETURNING LIST_ENTRY_ID BULK COLLECT INTO l_to_list_entry_id_col;
12649 
12650 */
12651    l_to_list_entry_id_col.delete(l_num);
12652    x_records_updated := l_to_list_entry_id_col.COUNT;
12653 
12654 
12655    IF p_mark_do_not_use THEN
12656 
12657 
12658 
12659       SELECT RETURNS_ID
12660 
12661       BULK COLLECT INTO l_from_returns_id_col
12662 
12663       FROM IEC_G_RETURN_ENTRIES
12664 
12665       WHERE LIST_HEADER_ID = p_from_list_id
12666 
12667       AND LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID
12668 
12669                             FROM AMS_LIST_ENTRIES
12670 
12671                             WHERE LIST_HEADER_ID = p_from_list_id
12672 
12673                             AND ENABLED_FLAG = 'Y'
12674 
12675                             AND PARTY_ID IN (SELECT PARTY_ID
12676 
12677                                              FROM AMS_LIST_ENTRIES
12678 
12679                                              WHERE LIST_HEADER_ID = p_to_list_id
12680 
12681                                              AND ENABLED_FLAG = 'Y'));
12682 
12683 
12684       Mark_EntriesDoNotUse
12685 
12686          ( l_from_returns_id_col
12687 
12688          , l_ignore1
12689 
12690          , l_ignore2
12691 
12692          , l_ignore3
12693 
12694          );
12695 
12696 
12697    END IF;
12698 
12699 
12700    Load_Entries_Pvt( l_to_list_entry_id_col
12701 
12702                    , p_to_list_id
12703 
12704                    , 'Y'    -- enable validation rules
12705 
12706                    );
12707 
12708 EXCEPTION
12709 
12710    WHEN fnd_api.g_exc_error THEN
12711 
12712       RAISE;
12713 
12714    WHEN fnd_api.g_exc_unexpected_error THEN
12715 
12716       RAISE;
12717 
12718    WHEN OTHERS THEN
12719 
12720       Log( 'Update_DuplicateEntries'
12721 
12722          , 'MAIN'
12723 
12724          , SQLERRM
12725 
12726          );
12727 
12728       RAISE fnd_api.g_exc_unexpected_error;
12729 
12730 
12731 
12732 END Update_DuplicateEntries;
12733 
12734 
12735 PROCEDURE Log_DuplicateEntries
12736 
12737    ( p_from_returns_id_col IN SYSTEM.number_tbl_type
12738 
12739    , p_to_list_id          IN NUMBER
12740 
12741    , p_to_schedule_id      IN NUMBER
12742 
12743    , x_duplicate_incr_count    OUT NOCOPY NUMBER
12744 
12745    )
12746 
12747 IS
12748 
12749    l_from_returns_id_col    SYSTEM.number_tbl_type;   -- will only contain duplicates
12750 
12751    l_from_list_id_col       SYSTEM.number_tbl_type;
12752 
12753    l_from_list_entry_id_col SYSTEM.number_tbl_type;
12754 
12755    l_from_schedule_id_col   SYSTEM.number_tbl_type;
12756 
12757    l_party_id_col           SYSTEM.number_tbl_type;
12758 
12759 
12760 
12761    l_error_msg              VARCHAR2(4000);
12762    l_duplicate_incr_count NUMBER :=0;
12763 BEGIN
12764 
12765 
12766 
12767    -- Find duplicate record ids in order to log them
12768 
12769    SELECT A.RETURNS_ID, A.LIST_HEADER_ID, A.LIST_ENTRY_ID, A.CAMPAIGN_SCHEDULE_ID, B.PARTY_ID
12770 
12771    BULK COLLECT INTO l_from_returns_id_col, l_from_list_id_col, l_from_list_entry_id_col, l_from_schedule_id_col, l_party_id_col
12772 
12773    FROM IEC_G_RETURN_ENTRIES A, AMS_LIST_ENTRIES B
12774 
12775    WHERE A.LIST_HEADER_ID = B.LIST_HEADER_ID
12776 
12777    AND A.LIST_ENTRY_ID = B.LIST_ENTRY_ID
12778 
12779    AND A.RETURNS_ID IN (SELECT * FROM TABLE(CAST(p_from_returns_id_col AS SYSTEM.NUMBER_TBL_TYPE)))
12780 
12781    AND B.PARTY_ID IN (SELECT PARTY_ID FROM AMS_LIST_ENTRIES WHERE LIST_HEADER_ID = p_to_list_id);
12782 
12783 
12784 
12785    IF l_from_returns_id_col IS NOT NULL AND l_from_returns_id_col.COUNT > 0 THEN
12786 
12787       l_duplicate_incr_count := l_from_returns_id_col.COUNT;
12788 
12789       FOR i IN l_from_returns_id_col.FIRST..l_from_returns_id_col.LAST LOOP
12790 
12791          IEC_OCS_LOG_PVT.LOG_RECYCLE_MV_DUP_REC_STMT
12792 
12793             ( 'Iec_Validate_Pvt'
12794 
12795             , 'Move_RecycledEntries'
12796 
12797             , 'FOUND_DUPLICATE_RECORD'
12798 
12799             , l_from_schedule_id_col(i)
12800 
12801             , l_from_list_id_col(i)
12802 
12803             , l_from_list_entry_id_col(i)
12804 
12805             , l_from_returns_id_col(i)
12806 
12807             , l_party_id_col(i)
12808 
12809             , p_to_schedule_id
12810 
12811             , l_error_msg
12812 
12813             );
12814 
12815       END LOOP;
12816 
12817    END IF;
12818 
12819   x_duplicate_incr_count := l_duplicate_incr_count;
12820 
12821 EXCEPTION
12822 
12823    WHEN OTHERS THEN
12824 
12825       Log( 'Log_DuplicateEntries'
12826 
12827          , 'MAIN'
12828 
12829          , SQLERRM
12830 
12831          );
12832 
12833       RAISE fnd_api.g_exc_unexpected_error;
12834 
12835 
12836 
12837 END Log_DuplicateEntries;
12838 
12839 
12840 
12841 
12842 -- Called by Recycling plugin to move recycled entry
12843 
12844 PROCEDURE Move_RecycledEntry
12845 
12846    ( p_returns_id            IN  NUMBER
12847 
12848    , p_to_list_id            IN  NUMBER)
12849 
12850 IS
12851 
12852    l_returns_id_col SYSTEM.number_tbl_type := SYSTEM.number_tbl_type();
12853 
12854 BEGIN
12855 
12856    IF p_returns_id IS NULL OR p_to_list_id IS NULL THEN
12857 
12858       RETURN;
12859 
12860    END IF;
12861 
12862 
12863 
12864    l_returns_id_col.EXTEND(1);
12865 
12866    l_returns_id_col(1) := p_returns_id;
12867 
12868 
12869 
12870    Move_RecycledEntries( l_returns_id_col
12871 
12872                        , p_to_list_id);
12873 
12874 
12875 
12876 END Move_RecycledEntry;
12877 
12878 
12879 
12880 -- Called by Recycling plugin to move recycled entries
12881 
12882 PROCEDURE Move_RecycledEntries
12883 
12884    ( p_returns_id_col         IN  SYSTEM.number_tbl_type
12885 
12886    , p_to_list_id             IN  NUMBER)
12887 
12888 IS
12889 
12890    l_from_returns_id_col    SYSTEM.number_tbl_type;
12891 
12892    l_from_list_entry_id_col SYSTEM.number_tbl_type;
12893 
12894    l_from_list_id_col       SYSTEM.number_tbl_type;
12895 
12896    l_to_list_entry_id_col   SYSTEM.number_tbl_type;
12897 
12898    l_schedule_id  NUMBER(15) := 0;
12899 
12900    l_list_duplicate_incr NUMBER := 0;
12901 BEGIN
12902 
12903 
12904 
12905    IF p_returns_id_col IS NULL OR p_to_list_id IS NULL THEN
12906 
12907       RETURN;
12908 
12909    END IF;
12910 
12911 
12912 
12913    -- Log duplicate records
12914 
12915    -- Must do this before move non-duplicate records b/c they will become
12916 
12917    -- duplicates after the move
12918 
12919    SELECT LIST_USED_BY_ID into l_schedule_id FROM AMS_ACT_LISTS
12920    WHERE LIST_HEADER_ID = p_to_list_id AND LIST_ACT_TYPE = 'TARGET';
12921 
12922    Log_DuplicateEntries
12923 
12924       ( p_returns_id_col
12925 
12926       , p_to_list_id
12927 
12928       , l_schedule_id
12929 
12930       ,l_list_duplicate_incr
12931 
12932       );
12933 
12934 
12935     EXECUTE IMMEDIATE
12936 
12937       'UPDATE AMS_LIST_HEADERS_ALL
12938 
12939        SET NO_OF_ROWS_DUPLICATES = NVL(NO_OF_ROWS_DUPLICATES, 0) + :rows_incr
12940 
12941        WHERE LIST_HEADER_ID = :list_id'
12942 
12943    USING IN l_list_duplicate_incr, IN p_to_list_id;
12944 
12945    -- Mark entries as do not use in source list
12946 
12947    -- Retrieve the list_entry_id and list_header_id corresponding to the returns_id
12948 
12949    Mark_EntriesDoNotUse( p_returns_id_col
12950 
12951                        , l_from_returns_id_col
12952 
12953                        , l_from_list_entry_id_col
12954 
12955                        , l_from_list_id_col
12956 
12957                        );
12958 
12959 
12960 
12961    IF l_from_returns_id_col IS NOT NULL AND l_from_returns_id_col.COUNT > 0 THEN
12962 
12963 
12964       Copy_AmsListEntries( l_from_list_entry_id_col
12965 
12966                          , l_from_list_id_col
12967 
12968                          , l_to_list_entry_id_col
12969 
12970                          , p_to_list_id);
12971 
12972 
12973 
12974       -- Load non-duplicate records into destination list
12975 /*
12976       Load_Entries_Pvt( l_to_list_entry_id_col
12977 
12978                       , p_to_list_id
12979 
12980                       , 'N'    -- disable validation rules
12981 
12982                       );
12983 
12984 */
12985 
12986       -- Move call history for non-duplicate records
12987 /*
12988       Move_CallHistory( l_from_returns_id_col
12989 
12990                       , l_to_list_entry_id_col
12991 
12992                       , p_to_list_id);
12993 
12994 
12995 
12996       Truncate_Temporary_Tables;
12997 */
12998    END IF;
12999 
13000 
13001 
13002 EXCEPTION
13003 
13004    WHEN fnd_api.g_exc_error THEN
13005 
13006       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
13007 
13008    WHEN fnd_api.g_exc_unexpected_error THEN
13009 
13010       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
13011 
13012 
13013 
13014 END Move_RecycledEntries;
13015 
13016 
13017 -- Procedure to be called by public api to move schedule
13018 
13019 -- entries
13020 
13021 PROCEDURE Move_ScheduleEntries_Pub
13022 
13023    ( p_src_schedule_id  IN            NUMBER
13024 
13025    , p_dest_schedule_id IN            NUMBER
13026 
13027    , p_commit           IN            BOOLEAN
13028 
13029    , x_return_status       OUT NOCOPY VARCHAR2)
13030 
13031 IS
13032 
13033    l_src_list_id  NUMBER(15);
13034 
13035    l_dest_list_id NUMBER(15);
13036 
13037 
13038 
13039    l_call_center_ready_flag VARCHAR2(1);
13040 
13041    l_status_code VARCHAR2(30);
13042 
13043    l_validated_once_flag VARCHAR2(1);
13044 
13045 
13046 
13047    l_records_updated NUMBER;
13048 
13049 
13050 
13051    l_returns_id_col         SYSTEM.number_tbl_type;
13052 
13053 
13054 
13055    l_src_returns_id_col     SYSTEM.number_tbl_type;
13056 
13057    l_src_list_entry_id_col  SYSTEM.number_tbl_type;
13058 
13059    l_src_list_id_col        SYSTEM.number_tbl_type;
13060 
13061    l_dest_list_entry_id_col SYSTEM.number_tbl_type;
13062 
13063 
13064 
13065    -- Cursor to retrieve non-duplicate records
13066 
13067    CURSOR c1(src_list_id NUMBER, dest_list_id NUMBER) IS
13068 
13069       SELECT B.RETURNS_ID
13070 
13071       FROM IEC_G_RETURN_ENTRIES B
13072 
13073       WHERE B.LIST_HEADER_ID = src_list_id
13074 
13075       AND B.LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID
13076 
13077                               FROM AMS_LIST_ENTRIES
13078 
13079                               WHERE B.LIST_HEADER_ID = LIST_HEADER_ID
13080 
13081                               AND B.LIST_ENTRY_ID = LIST_ENTRY_ID
13082 
13083                               AND PARTY_ID NOT IN (SELECT PARTY_ID
13084 
13085                                                    FROM AMS_LIST_ENTRIES
13086 
13087                                                    WHERE LIST_HEADER_ID = dest_list_id));
13088 
13089 
13090 
13091 BEGIN
13092 
13093 
13094 
13095    x_return_status := FND_API.G_RET_STS_SUCCESS;
13096 
13097 
13098 
13099    SAVEPOINT move_entry;
13100 
13101 
13102 
13103    Init_LoggingVariables;
13104 
13105    Set_MessagePrefix('move_schedule_' || p_src_schedule_id || '_to_' || p_dest_schedule_id);
13106 
13107 
13108 
13109    IF p_src_schedule_id IS NULL THEN
13110 
13111       Log_CopySrcListNullMsg('Move_ScheduleEntries_Pub','CHECK_SRC_SCHED_NULL', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13112 
13113       RAISE fnd_api.g_exc_error;
13114 
13115    END IF;
13116 
13117 
13118 
13119    IF p_dest_schedule_id IS NULL THEN
13120 
13121       Log_CopyDestListNullMsg('Move_ScheduleEntries_Pub','CHECK_DEST_SCHED_NULL', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13122 
13123       RAISE fnd_api.g_exc_error;
13124 
13125    END IF;
13126 
13127 
13128 
13129    -- get list header ids corresponding to schedule ids
13130 
13131    BEGIN
13132 
13133       IEC_COMMON_UTIL_PVT.Get_ListId(p_src_schedule_id, l_src_list_id);
13134 
13135       IEC_COMMON_UTIL_PVT.Get_ListId(p_dest_schedule_id, l_dest_list_id);
13136 
13137    EXCEPTION
13138 
13139       WHEN OTHERS THEN
13140 
13141          Log( 'Move_ScheduleEntries_Pub'
13142 
13143             , 'GET_LIST_HEADER_ID'
13144 
13145             );
13146 
13147    END;
13148 
13149 
13150 
13151    -- There is no work to be done if source and destination
13152 
13153    -- lists are the same
13154 
13155    IF l_src_list_id = l_dest_list_id THEN
13156 
13157       RETURN;
13158 
13159    END IF;
13160 
13161 
13162 
13163    -- Perform prerequisite status checks.
13164 
13165    EXECUTE IMMEDIATE
13166 
13167       'SELECT A.CALL_CENTER_READY_FLAG
13168 
13169             , A.STATUS_CODE
13170 
13171             , B.VALIDATED_ONCE_FLAG
13172 
13173        FROM IEC_G_AO_LISTS_V A
13174 
13175             , IEC_O_VALIDATION_STATUS B
13176 
13177        WHERE A.LIST_HEADER_ID = B.LIST_HEADER_ID
13178 
13179        AND A.LIST_HEADER_ID = :list_id
13180 
13181        AND LANGUAGE = USERENV(''LANG'')'
13182 
13183    INTO l_call_center_ready_flag
13184 
13185       , l_status_code
13186 
13187       , l_validated_once_flag
13188 
13189    USING l_src_list_id;
13190 
13191 
13192 
13193    IF l_call_center_ready_flag <> 'Y' THEN
13194 
13195       Log_CopySrcListNotCCRMsg('Move_ScheduleEntries_Pub','CHECK_SRC_SCHED_CCR', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13196 
13197       RAISE fnd_api.g_exc_error;
13198 
13199    END IF;
13200 
13201    IF l_validated_once_flag <> 'Y' THEN
13202 
13203       Log_CopySrcListNotValMsg('Move_ScheduleEntries_Pub','CHECK_SRC_SCHED_VAL_ONCE', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13204 
13205       RAISE fnd_api.g_exc_error;
13206 
13207    END IF;
13208 
13209    -- not sure if we can do a move unless the list is stopped
13210 
13211    -- what if record is checked out and we mark it dnu?
13212 
13213    IF l_status_code <> 'ACTIVE' AND
13214 
13215       l_status_code <> 'INACTIVE' AND
13216 
13217       l_status_code <> 'VALIDATED'
13218 
13219    THEN
13220 
13221       Log_CopySrcListInvalidStatMsg('Move_ScheduleEntries_Pub','CHECK_SRC_SCHED_STATUS', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13222 
13223       RAISE fnd_api.g_exc_error;
13224 
13225    END IF;
13226 
13227 
13228 
13229    EXECUTE IMMEDIATE
13230 
13231       'SELECT A.CALL_CENTER_READY_FLAG
13232 
13233             , A.STATUS_CODE
13234 
13235             , B.VALIDATED_ONCE_FLAG
13236 
13237        FROM IEC_G_AO_LISTS_V A
13238 
13239           , IEC_O_VALIDATION_STATUS B
13240 
13241        WHERE A.LIST_HEADER_ID = B.LIST_HEADER_ID
13242 
13243        AND A.LIST_HEADER_ID = :list_id
13244 
13245        AND LANGUAGE = USERENV(''LANG'')'
13246 
13247    INTO l_call_center_ready_flag
13248 
13249       , l_status_code
13250 
13251       , l_validated_once_flag
13252 
13253    USING l_dest_list_id;
13254 
13255 
13256 
13257    IF l_call_center_ready_flag <> 'Y' THEN
13258 
13259       Log_CopyDestListNotCCRMsg('Move_ScheduleEntries_Pub','CHECK_DEST_SCHED_CCR', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13260 
13261       RAISE fnd_api.g_exc_error;
13262 
13263    END IF;
13264 
13265    IF l_validated_once_flag <> 'Y' THEN
13266 
13267       Log_CopyDestListNotValMsg('Move_ScheduleEntries_Pub','CHECK_DEST_SCHED_VAL_ONCE', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13268 
13269       RAISE fnd_api.g_exc_error;
13270 
13271    END IF;
13272 
13273    -- maybe want to ensure that list is shut down
13274 
13275    IF l_status_code <> 'ACTIVE' AND
13276 
13277       l_status_code <> 'INACTIVE' AND
13278 
13279       l_status_code <> 'VALIDATED'
13280 
13281    THEN
13282 
13283       Log_CopyDestListInvalidStaMsg('Move_ScheduleEntries_Pub','CHECK_DEST_SCHED_STATUS', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13284 
13285       RAISE fnd_api.g_exc_error;
13286 
13287    END IF;
13288 
13289 
13290 
13291    -- Update duplicate records
13292 
13293    -- Must do this before move non-duplicate records b/c they will become
13294 
13295    -- duplicates after the move
13296 
13297    Update_DuplicateEntries
13298 
13299       ( l_src_list_id
13300 
13301       , l_dest_list_id
13302 
13303       , TRUE            -- p_mark_do_not_use
13304 
13305       , l_records_updated
13306 
13307       );
13308 
13309 
13310 
13311    -- Fetch non-duplicate records
13312 
13313    OPEN c1(l_src_list_id, l_dest_list_id);
13314 
13315    LOOP
13316 
13317       FETCH c1
13318 
13319       BULK COLLECT INTO l_returns_id_col
13320 
13321       LIMIT g_row_increment;
13322 
13323 
13324 
13325       EXIT WHEN l_returns_id_col.COUNT = 0;
13326 
13327 
13328 
13329       IF l_returns_id_col IS NOT NULL AND l_returns_id_col.COUNT > 0 THEN
13330 
13331 
13332 
13333          -- Mark entries as do not use in source list
13334 
13335          -- Retrieve the list_entry_id and list_header_id corresponding to the returns_id
13336 
13337          -- Excludes duplicate party ids
13338 
13339          Mark_EntriesDoNotUse( l_returns_id_col
13340 
13341                              , l_dest_list_id
13342 
13343                              , l_src_returns_id_col
13344 
13345                              , l_src_list_entry_id_col
13346 
13347                              , l_src_list_id_col
13348 
13349                              );
13350 
13351 
13352 
13353          IF l_src_returns_id_col IS NOT NULL AND l_src_returns_id_col.COUNT > 0 THEN
13354 
13355 
13356 
13357             -- Copy non-duplicate records into destination list
13358 
13359             Copy_AmsListEntries( l_src_list_entry_id_col
13360 
13361                                , l_src_list_id_col
13362 
13363                                , l_dest_list_entry_id_col
13364 
13365                                , l_dest_list_id);
13366 
13367 
13368 
13369             -- Load non-duplicate records into destination list
13370 
13371             Load_Entries_Pvt( l_dest_list_entry_id_col
13372 
13373                             , l_dest_list_id
13374 
13375                             , 'Y'    -- enable validation rules
13376 
13377                             );
13378 
13379 
13380 
13381             -- Move call history for non-duplicate records
13382 
13383             Move_CallHistory( l_src_returns_id_col
13384 
13385                             , l_dest_list_entry_id_col
13386 
13387                             , l_dest_list_id);
13388 
13389 
13390 
13391             Truncate_Temporary_Tables;
13392 
13393          END IF;
13394 
13395 
13396 
13397       END IF;
13398 
13399 
13400 
13401       IF p_commit THEN
13402 
13403          COMMIT;
13404 
13405       END IF;
13406 
13407 
13408 
13409       EXIT WHEN l_returns_id_col.COUNT < g_row_increment;
13410 
13411 
13412 
13413    END LOOP;
13414 
13415    CLOSE c1;
13416 
13417 
13418 
13419 EXCEPTION
13420 
13421    WHEN OTHERS THEN
13422 
13423       FND_MSG_PUB.ADD;
13424 
13425       x_return_status := FND_API.G_RET_STS_ERROR;
13426 
13427 
13428 
13429 END Move_ScheduleEntries_Pub;
13430 
13431 
13432 
13433 PROCEDURE Copy_ScheduleEntries_Pvt
13434 
13435    ( p_from_list_id       IN NUMBER
13436 
13437    , p_from_schedule_id   IN NUMBER
13438 
13439    , p_to_list_id         IN NUMBER
13440 
13441    , p_to_schedule_id     IN NUMBER
13442 
13443    , p_api_initiated      IN BOOLEAN
13444 
13445    , p_commit_flag        IN BOOLEAN)
13446 
13447 IS
13448 
13449    l_from_returns_id_col    SYSTEM.number_tbl_type;
13450 
13451    l_from_list_entry_id_col SYSTEM.number_tbl_type;
13452 
13453    l_from_list_id_col       SYSTEM.number_tbl_type;
13454 
13455    l_to_list_entry_id_col   SYSTEM.number_tbl_type;
13456 
13457 
13458 
13459    l_api_initiated BOOLEAN;
13460 
13461 
13462 
13463    l_call_center_ready_flag VARCHAR2(1);
13464 
13465    l_status_code VARCHAR2(30);
13466 
13467    l_validated_once_flag VARCHAR2(1);
13468 
13469 
13470 
13471    l_records_moved   NUMBER := 0;
13472 
13473    l_records_updated NUMBER := 0;
13474 
13475 
13476 
13477    -- Cursor to retrieve non-duplicate records
13478 
13479    CURSOR c1(from_list_id NUMBER) IS
13480 
13481       SELECT B.RETURNS_ID, B.LIST_ENTRY_ID, B.LIST_HEADER_ID
13482 
13483       FROM IEC_G_RETURN_ENTRIES B
13484 
13485       WHERE B.LIST_HEADER_ID = from_list_id
13486 
13487       AND B.LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID
13488 
13489                               FROM AMS_LIST_ENTRIES
13490 
13491                               WHERE B.LIST_HEADER_ID = LIST_HEADER_ID
13492 
13493                               AND B.LIST_ENTRY_ID = LIST_ENTRY_ID
13494 
13495                               AND PARTY_ID NOT IN (SELECT PARTY_ID
13496 
13497                                                    FROM AMS_LIST_ENTRIES
13498 
13499                                                    WHERE LIST_HEADER_ID = p_to_list_id));
13500 
13501 
13502 
13503 BEGIN
13504 
13505 
13506 
13507    SAVEPOINT move_entry;
13508 
13509 
13510 
13511    Init_LoggingVariables;
13512 
13513    Set_MessagePrefix('copy_schedule_' || p_from_schedule_id || '_to_' || p_to_schedule_id);
13514 
13515 
13516 
13517    -- There is no work to be done if source and destination
13518 
13519    -- lists are the same
13520 
13521    IF p_to_list_id = p_from_list_id THEN
13522 
13523       RETURN;
13524 
13525    END IF;
13526 
13527 
13528 
13529    IF p_from_list_id IS NULL THEN
13530 
13531       Log_CopySrcListNullMsg('Copy_ScheduleEntries_Pvt','CHECK_SRC_SCHED_NULL', Get_ScheduleName(p_from_schedule_id), Get_ScheduleName(p_to_schedule_id));
13532 
13533       RAISE fnd_api.g_exc_error;
13534 
13535    END IF;
13536 
13537 
13538 
13539    IF p_to_list_id IS NULL THEN
13540 
13541       Log_CopyDestListNullMsg('Copy_ScheduleEntries_Pvt','CHECK_DEST_SCHED_NULL', Get_ScheduleName(p_from_schedule_id), Get_ScheduleName(p_to_schedule_id));
13542 
13543       RAISE fnd_api.g_exc_error;
13544 
13545    END IF;
13546 
13547 
13548 
13549    l_api_initiated := FALSE; -- Default value
13550 
13551    IF p_api_initiated IS NOT NULL THEN
13552 
13553       l_api_initiated := p_api_initiated;
13554 
13555    END IF;
13556 
13557 
13558 
13559    -- Perform prerequisite status checks.  This is only
13560 
13561    -- necessary when we initiate the copy via the public api
13562 
13563    -- b/c this is handled via plugin and view IEC_O_LISTS_TO_COPY_V
13564 
13565    -- when the copy is initiated via the admin screens.
13566 
13567    IF l_api_initiated THEN
13568 
13569       EXECUTE IMMEDIATE
13570 
13571          'SELECT A.CALL_CENTER_READY_FLAG
13572 
13573                , A.STATUS_CODE
13574 
13575                , B.VALIDATED_ONCE_FLAG
13576 
13577           FROM IEC_G_AO_LISTS_V A
13578 
13579                , IEC_O_VALIDATION_STATUS B
13580 
13581           WHERE A.LIST_HEADER_ID = B.LIST_HEADER_ID
13582 
13583           AND A.LIST_HEADER_ID = :list_id
13584 
13585           AND LANGUAGE = USERENV(''LANG'')'
13586 
13587       INTO l_call_center_ready_flag
13588 
13589          , l_status_code
13590 
13591          , l_validated_once_flag
13592 
13593       USING p_from_list_id;
13594 
13595 
13596 
13597       IF l_call_center_ready_flag <> 'Y' THEN
13598 
13599          Log_CopySrcListNotCCRMsg('Copy_ScheduleEntries_Pvt','CHECK_SRC_SCHED_CCR', Get_ScheduleName(p_from_schedule_id), Get_ScheduleName(p_to_schedule_id));
13600 
13601          RAISE fnd_api.g_exc_error;
13602 
13603       END IF;
13604 
13605       IF l_validated_once_flag <> 'Y' THEN
13606 
13607          Log_CopySrcListNotValMsg('Copy_ScheduleEntries_Pvt','CHECK_SRC_SCHED_VAL_ONCE', Get_ScheduleName(p_from_schedule_id), Get_ScheduleName(p_to_schedule_id));
13608 
13609          RAISE fnd_api.g_exc_error;
13610 
13611       END IF;
13612 
13613       IF l_status_code <> 'ACTIVE' AND
13614 
13615          l_status_code <> 'INACTIVE' AND
13616 
13617          l_status_code <> 'VALIDATED'
13618 
13619       THEN
13620 
13621          Log_CopySrcListInvalidStatMsg('Copy_ScheduleEntries_Pvt','CHECK_SRC_SCHED_STATUS', Get_ScheduleName(p_from_schedule_id), Get_ScheduleName(p_to_schedule_id));
13622 
13623          RAISE fnd_api.g_exc_error;
13624 
13625       END IF;
13626 
13627 
13628 
13629       EXECUTE IMMEDIATE
13630 
13631          'SELECT A.CALL_CENTER_READY_FLAG
13632 
13633                , A.STATUS_CODE
13634 
13635                , B.VALIDATED_ONCE_FLAG
13636 
13637           FROM IEC_G_AO_LISTS_V A
13638 
13639              , IEC_O_VALIDATION_STATUS B
13640 
13641           WHERE A.LIST_HEADER_ID = B.LIST_HEADER_ID
13642 
13643           AND A.LIST_HEADER_ID = :list_id
13644 
13645           AND LANGUAGE = USERENV(''LANG'')'
13646 
13647       INTO l_call_center_ready_flag
13648 
13649          , l_status_code
13650 
13651          , l_validated_once_flag
13652 
13653       USING p_to_list_id;
13654 
13655 
13656 
13657       IF l_call_center_ready_flag <> 'Y' THEN
13658 
13659          Log_CopyDestListNotCCRMsg('Copy_ScheduleEntries_Pvt','CHECK_DEST_SCHED_CCR', Get_ScheduleName(p_from_schedule_id), Get_ScheduleName(p_to_schedule_id));
13660 
13661          RAISE fnd_api.g_exc_error;
13662 
13663       END IF;
13664 
13665       IF l_validated_once_flag <> 'Y' THEN
13666 
13667          Log_CopyDestListNotValMsg('Copy_ScheduleEntries_Pvt','CHECK_DEST_SCHED_VAL_ONCE', Get_ScheduleName(p_from_schedule_id), Get_ScheduleName(p_to_schedule_id));
13668 
13669          RAISE fnd_api.g_exc_error;
13670 
13671       END IF;
13672 
13673       IF l_status_code <> 'ACTIVE' AND
13674 
13675          l_status_code <> 'INACTIVE' AND
13676 
13677          l_status_code <> 'VALIDATED'
13678 
13679       THEN
13680 
13681          Log_CopyDestListInvalidStaMsg('Copy_ScheduleEntries_Pvt','CHECK_DEST_SCHED_STATUS', Get_ScheduleName(p_from_schedule_id), Get_ScheduleName(p_to_schedule_id));
13682 
13683          RAISE fnd_api.g_exc_error;
13684 
13685       END IF;
13686 
13687 
13688 
13689    END IF;
13690 
13691 
13692 
13693    Update_MoveEntriesStatus(p_from_list_id, p_to_list_id, 'MOVING', l_api_initiated);
13694 
13695 
13696 
13697     -- Update party/contact point data for duplicate records in destination list
13698 
13699    Update_DuplicateEntries( P_from_list_id
13700 
13701                           , p_to_list_id
13702 
13703                           , FALSE
13704 
13705                           , l_records_updated);
13706 
13707 
13708 
13709    Update_MoveEntriesStatusCounts(p_from_list_id, 0, l_records_updated);
13710 
13711 
13712 
13713    IF p_commit_flag THEN
13714 
13715       COMMIT;
13716 
13717    END IF;
13718 
13719 
13720 
13721    -- Fetch non-duplicate records
13722 
13723    OPEN c1(p_from_list_id);
13724 
13725    LOOP
13726 
13727       FETCH c1
13728 
13729       BULK COLLECT INTO l_from_returns_id_col
13730 
13731                       , l_from_list_entry_id_col
13732 
13733                       , l_from_list_id_col
13734 
13735       LIMIT g_row_increment;
13736 
13737 
13738 
13739       EXIT WHEN l_from_returns_id_col.COUNT = 0;
13740 
13741 
13742 
13743       l_records_moved := l_from_returns_id_col.COUNT;
13744 
13745 
13746 
13747       IF l_from_returns_id_col IS NOT NULL AND l_from_returns_id_col.COUNT > 0 THEN
13748 
13749 
13750 
13751          -- Copy non-duplicate records into destination list
13752 
13753          Copy_AmsListEntries( l_from_list_entry_id_col
13754 
13755                             , l_from_list_id_col
13756 
13757                             , l_to_list_entry_id_col
13758 
13759                             , p_to_list_id);
13760 
13761 
13762 
13763          -- Load non-duplicate records into destination list
13764 
13765          Load_Entries_Pvt( l_to_list_entry_id_col
13766 
13767                          , p_to_list_id
13768 
13769                          , 'Y'    -- enable validation rules
13770 
13771                          );
13772 
13773 
13774 
13775          Update_MoveEntriesStatusCounts(p_from_list_id, l_records_moved, 0);
13776 
13777       END IF;
13778 
13779 
13780 
13781       IF p_commit_flag THEN
13782 
13783          COMMIT;
13784 
13785       END IF;
13786 
13787 
13788 
13789       EXIT WHEN l_from_returns_id_col.COUNT < g_row_increment;
13790 
13791 
13792 
13793    END LOOP;
13794 
13795    CLOSE c1;
13796 
13797 
13798 
13799    Update_MoveEntriesStatus(p_from_list_id, p_to_list_id, 'MOVED', l_api_initiated);
13800 
13801 
13802 
13803    IF p_commit_flag THEN
13804 
13805       COMMIT;
13806 
13807    END IF;
13808 
13809 
13810 
13811 EXCEPTION
13812 
13813    WHEN fnd_api.g_exc_error THEN
13814 
13815       ROLLBACK TO move_entry;
13816 
13817       Update_MoveEntriesStatus(p_from_list_id, p_to_list_id, 'FAILED_MOVE', l_api_initiated);
13818 
13819       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
13820 
13821    WHEN fnd_api.g_exc_unexpected_error THEN
13822 
13823       ROLLBACK TO move_entry;
13824 
13825       Update_MoveEntriesStatus(p_from_list_id, p_to_list_id, 'FAILED_MOVE', l_api_initiated);
13826 
13827       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
13828 
13829    WHEN OTHERS THEN
13830 
13831       ROLLBACK TO move_entry;
13832 
13833       Log( 'Copy_ScheduleEntries'
13834 
13835          , 'MAIN'
13836 
13837          , SQLERRM
13838 
13839          );
13840 
13841       Update_MoveEntriesStatus(p_from_list_id, p_to_list_id, 'FAILED_MOVE', l_api_initiated);
13842 
13843       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
13844 
13845 
13846 
13847 END Copy_ScheduleEntries_Pvt;
13848 
13849 
13850 
13851 -- Procedure to be called by public api to copy schedule
13852 
13853 -- entries
13854 
13855 PROCEDURE Copy_ScheduleEntries_Pub
13856 
13857    ( p_src_schedule_id  IN            NUMBER
13858 
13859    , p_dest_schedule_id IN            NUMBER
13860 
13861    , p_commit           IN            BOOLEAN
13862 
13863    , x_return_status       OUT NOCOPY VARCHAR2)
13864 
13865 IS
13866 
13867    l_src_list_id NUMBER(15);
13868 
13869    l_dest_list_id NUMBER(15);
13870 
13871 BEGIN
13872 
13873 
13874 
13875    x_return_status := FND_API.G_RET_STS_SUCCESS;
13876 
13877 
13878 
13879    IF p_src_schedule_id IS NULL THEN
13880 
13881       Log_CopySrcListNullMsg('Copy_ScheduleEntries_Pub','CHECK_SRC_SCHED_NULL', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13882 
13883       RAISE fnd_api.g_exc_error;
13884 
13885    END IF;
13886 
13887 
13888 
13889    IF p_dest_schedule_id IS NULL THEN
13890 
13891       Log_CopyDestListNullMsg('Copy_ScheduleEntries_Pub','CHECK_DEST_SCHED_NULL', Get_ScheduleName(p_src_schedule_id), Get_ScheduleName(p_dest_schedule_id));
13892 
13893       RAISE fnd_api.g_exc_error;
13894 
13895    END IF;
13896 
13897 
13898 
13899    -- get list header ids corresponding to schedule ids
13900 
13901    BEGIN
13902 
13903       IEC_COMMON_UTIL_PVT.Get_ListId(p_src_schedule_id, l_src_list_id);
13904 
13905       IEC_COMMON_UTIL_PVT.Get_ListId(p_dest_schedule_id, l_dest_list_id);
13906 
13907    EXCEPTION
13908 
13909       WHEN OTHERS THEN
13910 
13911          Log( 'Copy_ScheduleEntries_Pub'
13912 
13913             , 'GET_LIST_HEADER_ID'
13914 
13915             );
13916 
13917          RAISE fnd_api.g_exc_error;
13918 
13919    END;
13920 
13921 
13922 
13923    Copy_ScheduleEntries_Pvt
13924 
13925       ( l_src_list_id
13926 
13927       , p_src_schedule_id
13928 
13929       , l_dest_list_id
13930 
13931       , p_dest_schedule_id
13932 
13933       , TRUE                 -- p_api_initiated
13934 
13935       , p_commit
13936 
13937       );
13938 
13939 
13940 
13941 EXCEPTION
13942 
13943    WHEN OTHERS THEN
13944 
13945       FND_MSG_PUB.ADD;
13946 
13947       x_return_status := FND_API.G_RET_STS_ERROR;
13948 
13949 
13950 
13951 END Copy_ScheduleEntries_Pub;
13952 
13953 
13954 
13955 -- Procedure to be called by plugin to copy schedule
13956 
13957 -- entries (leaving name as Copy_TargetGroupEntries so
13958 
13959 -- that existing calls will still be valid)
13960 
13961 PROCEDURE Copy_TargetGroupEntries
13962 
13963    ( p_from_list_id  IN  NUMBER
13964 
13965    , p_to_list_id    IN  NUMBER)
13966 
13967 IS
13968 
13969 BEGIN
13970 
13971 
13972 
13973    Copy_ScheduleEntries_Pvt
13974 
13975       ( p_from_list_id
13976 
13977       , Get_ScheduleId(p_from_list_id)
13978 
13979       , p_to_list_id
13980 
13981       , Get_ScheduleId(p_to_list_id)
13982 
13983       , FALSE               -- p_api_initiated
13984 
13985       , TRUE                -- p_commit_flag
13986 
13987       );
13988 
13989 
13990 
13991 EXCEPTION
13992 
13993    WHEN OTHERS THEN
13994 
13995       RAISE;
13996 
13997 END Copy_TargetGroupEntries;
13998 
13999 
14000 
14001 PROCEDURE Load_NewEntry
14002 
14003    ( p_list_entry_id         IN  NUMBER
14004 
14005    , p_list_id               IN  NUMBER)
14006 
14007 IS
14008 
14009    l_list_entry_id_col SYSTEM.NUMBER_TBL_TYPE := SYSTEM.NUMBER_TBL_TYPE();
14010 
14011 BEGIN
14012 
14013 
14014 
14015    SAVEPOINT load_entry;
14016 
14017 
14018 
14019    l_list_entry_id_col.EXTEND;
14020 
14021    l_list_entry_id_col(1) := p_list_entry_id;
14022 
14023 
14024 
14025    Load_Entries_Pvt( l_list_entry_id_col
14026 
14027                    , p_list_id
14028 
14029                    , 'N'    -- disable validation rules
14030 
14031                    );
14032 
14033 
14034 
14035 EXCEPTION
14036 
14037    WHEN fnd_api.g_exc_error THEN
14038 
14039       ROLLBACK TO load_entry;
14040 
14041       Truncate_Temporary_Tables;
14042 
14043       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
14044 
14045    WHEN fnd_api.g_exc_unexpected_error THEN
14046 
14047       ROLLBACK TO load_entry;
14048 
14049       Truncate_Temporary_Tables;
14050 
14051       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
14052 
14053    WHEN OTHERS THEN
14054 
14055       Log( 'Load_NewEntry'
14056 
14057          , 'MAIN'
14058 
14059          , SQLERRM
14060 
14061          );
14062 
14063       ROLLBACK TO load_entry;
14064 
14065       Truncate_Temporary_Tables;
14066 
14067       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
14068 
14069 
14070 
14071 END Load_NewEntry;
14072 
14073 
14074 
14075 PROCEDURE Load_NewEntries
14076 
14077    ( p_list_entry_id_col     IN  SYSTEM.number_tbl_type
14078 
14079    , p_list_id               IN  NUMBER)
14080 
14081 IS
14082 
14083 BEGIN
14084 
14085 
14086 
14087    SAVEPOINT load_entry;
14088 
14089 
14090 
14091    Load_Entries_Pvt( p_list_entry_id_col
14092 
14093                    , p_list_id
14094 
14095                    , 'N'    -- disable validation rules
14096 
14097                    );
14098 
14099 
14100 
14101 EXCEPTION
14102 
14103    WHEN fnd_api.g_exc_error THEN
14104 
14105       ROLLBACK TO load_entry;
14106 
14107       Truncate_Temporary_Tables;
14108 
14109       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
14110 
14111    WHEN fnd_api.g_exc_unexpected_error THEN
14112 
14113       ROLLBACK TO load_entry;
14114 
14115       Truncate_Temporary_Tables;
14116 
14117       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
14118 
14119    WHEN OTHERS THEN
14120 
14121       Log( 'Load_NewEntries'
14122 
14123          , 'MAIN'
14124 
14125          , SQLERRM
14126 
14127          );
14128 
14129       ROLLBACK TO load_entry;
14130 
14131       Truncate_Temporary_Tables;
14132 
14133       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
14134 
14135 
14136 
14137 END Load_NewEntries;
14138 
14139 
14140 
14141 PROCEDURE Insert_AmsListEntries
14142 
14143    ( p_list_id            IN            NUMBER
14144 
14145    , p_list_source_type   IN            VARCHAR2
14146 
14147    , p_list_source_code   IN            VARCHAR2
14148 
14149    , p_schedule_id        IN            NUMBER
14150 
14151    , p_party_id           IN            NUMBER
14152 
14153    , x_list_entry_id         OUT NOCOPY NUMBER
14154 
14155    )
14156 IS
14157   l_api_version     CONSTANT NUMBER   := 1.0;
14158   l_init_msg_list		VARCHAR2(1);
14159   l_return_status		VARCHAR2(1);
14160   l_msg_count			  NUMBER;
14161   l_msg_data			  VARCHAR2(2000);
14162   l_listentry_rec AMS_LISTENTRY_PVT.entry_rec_type;
14163 BEGIN
14164   l_init_msg_list		:=FND_API.G_TRUE;
14165 
14166    IF p_party_id IS NOT NULL THEN
14167 
14168     l_listentry_rec.LIST_HEADER_ID := p_list_id;
14169 
14170     l_listentry_rec.LAST_UPDATE_DATE := sysdate;
14171 
14172     l_listentry_rec.LAST_UPDATED_BY := 1;
14173 
14174     l_listentry_rec.CREATION_DATE := sysdate;
14175 
14176     l_listentry_rec.CREATED_BY := 1;
14177 
14178     l_listentry_rec.LIST_SELECT_ACTION_ID := 0;
14179 
14180     l_listentry_rec.ARC_LIST_SELECT_ACTION_FROM :='NONE';
14181 
14182     l_listentry_rec.SOURCE_CODE := p_list_source_code;
14183 
14184     l_listentry_rec.ARC_LIST_USED_BY_SOURCE := 'CSCH';
14185 
14186     l_listentry_rec.SOURCE_CODE_FOR_ID := p_schedule_id;
14187 
14188     l_listentry_rec.LIST_ENTRY_SOURCE_SYSTEM_ID := p_party_id;
14189 
14190     l_listentry_rec.LIST_ENTRY_SOURCE_SYSTEM_TYPE := p_list_source_type;
14191 
14192     l_listentry_rec.VIEW_APPLICATION_ID := 545;
14193 
14194     l_listentry_rec.MANUALLY_ENTERED_FLAG := 'N';
14195 
14196     l_listentry_rec.MARKED_AS_DUPLICATE_FLAG := 'N';
14197 
14198     l_listentry_rec.MARKED_AS_RANDOM_FLAG := 'N';
14199 
14200     l_listentry_rec.PART_OF_CONTROL_GROUP_FLAG := 'N';
14201 
14202     l_listentry_rec.EXCLUDE_IN_TRIGGERED_LIST_FLAG := 'N';
14203 
14204     l_listentry_rec.ENABLED_FLAG := 'Y';
14205 
14206     AMS_LISTENTRY_PUB.create_listentry(
14207       p_api_version => l_api_version,
14208       p_init_msg_list => l_init_msg_list,
14209       x_return_status => l_return_status,
14210       x_msg_count => l_msg_count,
14211       x_msg_data => l_msg_data,
14212       p_entry_rec => l_listentry_rec,
14213       x_entry_id => x_list_entry_id );
14214 
14215   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
14216     Log_msg('AMS_LISTENTRY_PUB.create_listentry', l_msg_data);
14217   END IF;
14218 
14219 /*
14220       EXECUTE IMMEDIATE
14221 
14222          'SELECT AMS_LIST_ENTRIES_S.NEXTVAL FROM DUAL'
14223 
14224       INTO x_list_entry_id;
14225 
14226 
14227 
14228       EXECUTE IMMEDIATE
14229 
14230          'INSERT INTO AMS_LIST_ENTRIES
14231 
14232                   ( LIST_ENTRY_ID
14233 
14234                   , LIST_HEADER_ID
14235 
14236                   , LAST_UPDATE_DATE
14237 
14238                   , LAST_UPDATED_BY
14239 
14240                   , CREATION_DATE
14241 
14242                   , CREATED_BY
14243 
14244                   , LIST_SELECT_ACTION_ID
14245 
14246                   , ARC_LIST_SELECT_ACTION_FROM
14247 
14248                   , SOURCE_CODE
14249 
14250                   , ARC_LIST_USED_BY_SOURCE
14251 
14252                   , SOURCE_CODE_FOR_ID
14253 
14254                   , PIN_CODE
14255 
14256                   , LIST_ENTRY_SOURCE_SYSTEM_ID
14257 
14258                   , LIST_ENTRY_SOURCE_SYSTEM_TYPE
14259 
14260                   , VIEW_APPLICATION_ID
14261 
14262                   , MANUALLY_ENTERED_FLAG
14263 
14264                   , MARKED_AS_DUPLICATE_FLAG
14265 
14266                   , MARKED_AS_RANDOM_FLAG
14267 
14268                   , PART_OF_CONTROL_GROUP_FLAG
14269 
14270                   , EXCLUDE_IN_TRIGGERED_LIST_FLAG
14271 
14272                   , ENABLED_FLAG
14273 
14274                   )
14275 
14276                VALUES
14277 
14278                   ( :list_entry_id
14279 
14280                   , :list_header_id
14281 
14282                   , SYSDATE
14283 
14284                   , 1
14285 
14286                   , SYSDATE
14287 
14288                   , 1
14289 
14290                   , 0
14291 
14292                   , ''NONE''
14293 
14294                   , :list_source_code
14295 
14296                   , ''CSCH''
14297 
14298                   , :schedule_id
14299 
14300                   , :list_entry_id
14301 
14302                   , :party_id
14303 
14304                   , :list_source_type
14305 
14306                   , 545
14307 
14308                   , ''N''
14309 
14310                   , ''N''
14311 
14312                   , ''N''
14313 
14314                   , ''N''
14315 
14316                   , ''N''
14317 
14318                   , ''Y''
14319 
14320                   )'
14321 
14322          USING IN x_list_entry_id
14323 
14324              , IN p_list_id
14325 
14326              , IN p_list_source_code
14327 
14328              , IN p_schedule_id
14329 
14330              , IN x_list_entry_id
14331 
14332              , IN p_party_id
14333 
14334              , IN p_list_source_type;
14335 */
14336     END IF;
14337 
14338 EXCEPTION
14339 
14340    WHEN OTHERS THEN
14341 
14342       Log( 'Insert_AmsListEntries'
14343 
14344          , 'MAIN'
14345 
14346          , SQLERRM
14347 
14348          );
14349 
14350       RAISE fnd_api.g_exc_unexpected_error;
14351 
14352 
14353 
14354 END Insert_AmsListEntries;
14355 
14356 
14357 
14358 PROCEDURE Update_AmsListEntries
14359 
14360    ( p_list_id            IN            NUMBER
14361 
14362    , p_list_entry_id      IN            NUMBER
14363 
14364    , p_source_type_view   IN            VARCHAR2
14365 
14366    , p_col_names          IN            SYSTEM.varchar_tbl_type
14367 
14368    , p_col_values         IN            SYSTEM.varchar_tbl_type
14369 
14370    )
14371 
14372 IS
14373 
14374    l_sql VARCHAR2(4000);
14375 
14376    l_first_col_idx NUMBER;
14377 
14378 BEGIN
14379 
14380    l_first_col_idx := -1;
14381 
14382 
14383 
14384    IF p_list_entry_id IS NOT NULL THEN
14385 
14386 
14387 
14388       l_sql := 'UPDATE ' || p_source_type_view;
14389 
14390 
14391 
14392       l_sql := l_sql || ' SET LIST_ENTRY_ID = ''' || p_list_entry_id || '''';
14393 
14394 
14395 
14396       IF p_col_names.COUNT > 0 THEN
14397 
14398          FOR i IN 1..p_col_names.LAST LOOP
14399 
14400             IF p_col_names(i) IS NOT NULL THEN
14401 
14402                l_sql := l_sql || ', ' || p_col_names(i) || ' = ''' || p_col_values(i) || '''';
14403 
14404             END IF;
14405 
14406          END LOOP;
14407 
14408       END IF;
14409 
14410 
14411 
14412       l_sql := l_sql || ' WHERE LIST_HEADER_ID = ' || p_list_id;
14413 
14414       l_sql := l_sql || ' AND LIST_ENTRY_ID = ' || p_list_entry_id;
14415 
14416 
14417 
14418       EXECUTE IMMEDIATE l_sql;
14419 
14420 
14421 
14422     END IF;
14423 
14424 
14425 
14426 EXCEPTION
14427 
14428    WHEN OTHERS THEN
14429 
14430       Log( 'Updating_AmsListEntries'
14431 
14432          , 'MAIN'
14433 
14434          , SQLERRM
14435 
14436          );
14437 
14438       RAISE fnd_api.g_exc_unexpected_error;
14439 
14440 
14441 
14442 END Update_AmsListEntries;
14443 
14444 /*
14445 
14446 PROCEDURE Init_RequiredColumns
14447 
14448    ( x_col_names       OUT NOCOPY SYSTEM.varchar_tbl_type
14449 
14450    , x_col_exists_flag OUT NOCOPY SYSTEM.varchar_tbl_type
14451 
14452    )
14453 
14454 IS
14455 
14456 BEGIN
14457 
14458    x_col_names := SYSTEM.varchar_tbl_type();
14459 
14460    x_col_exists_flag := SYSTEM.varchar_tbl_type();
14461 
14462 
14463 
14464    x_col_names.EXTEND(9);
14465 
14466    x_col_names(1) := 'PARTY_ID';
14467 
14468    x_col_names(2) := 'PERSON_FIRST_NAME';
14469 
14470    x_col_names(3) := 'PERSON_LAST_NAME';
14471 
14472    x_col_names(4) := 'CONTACT_POINT_ID_S1';
14473 
14474    x_col_names(5) := 'PHONE_COUNTRY_CODE_S1';
14475 
14476    x_col_names(6) := 'PHONE_AREA_CODE_S1';
14477 
14478    x_col_names(7) := 'PHONE_NUMBER_S1';
14479 
14480    x_col_names(8) := 'TIME_ZONE_S1';
14481 
14482    x_col_names(9) := 'PHONE_LINE_TYPE_S1';
14483 
14484 
14485 
14486    x_col_exists_flag.EXTEND(1);
14487 
14488    x_col_exists_flag(1) := 'N';
14489 
14490    x_col_exists_flag.EXTEND(8,1);
14491 
14492 
14493 
14494 END Init_RequiredColumns;
14495 
14496 
14497 
14498 PROCEDURE Verify_RequiredColumns
14499 
14500    ( p_col_names         IN            SYSTEM.varchar_tbl_type
14501 
14502      x_missing_col_names    OUT NOCOPY SYSTEM.varchar_tbl_type
14503 
14504      x_failure_code         OUT NOCOPY VARCHAR2
14505 
14506    )
14507 
14508 IS
14509 
14510    l_req_col_names       SYSTEM.varchar_tbl_type;
14511 
14512    l_req_col_exists_flag SYSTEM.varchar_tbl_type;
14513 
14514 BEGIN
14515 
14516 
14517 
14518    Init_RequiredColumns(l_req_col_names, l_req_col_exists_flag);
14519 
14520 
14521 
14522    IF p_col_names IS NOT NULL AND p_col_names.COUNT > 0 THEN
14523 
14524       FOR i IN p_col_names.FIRST .. p_col_names.LAST LOOP
14525 
14526          FOR j IN l_req_col_names.FIRST .. l_req_col_names.LAST LOOP
14527 
14528             IF p_col_names(i) = l_req_col_names(j) THEN
14529 
14530                l_req_col_exists_flag(j) := 'Y';
14531 
14532                BREAK;
14533 
14534             END IF;
14535 
14536          END LOOP;
14537 
14538       END LOOP;
14539 
14540    END IF;
14541 
14542 
14543 
14544    FOR i IN l_req_col_exists_flag.FIRST..l_req_col_exists_flag.LAST LOOP
14545 
14546       IF l_req_col_exists_flag(i) <> 'Y' THEN
14547 
14548          IF x_missing_col_names IS NULL THEN
14549 
14550             x_missing_col_names := SYSTEM.varchar_tbl_type();
14551 
14552          END IF;
14553 
14554          x_missing_col_names.EXTEND;
14555 
14556          x_missing_col_names(x_missing_col_names.LAST) := l_req_col_names(i);
14557 
14558       END IF;
14559 
14560    END LOOP;
14561 
14562 
14563 
14564 END Verify_RequiredColumns;
14565 
14566 */
14567 
14568 
14569 
14570 FUNCTION ToString_ColumnValuePairs
14571 
14572    ( p_col_names  IN            SYSTEM.varchar_tbl_type
14573 
14574    , p_col_values IN            SYSTEM.varchar_tbl_type
14575 
14576    )
14577 
14578 RETURN VARCHAR2
14579 
14580 IS
14581 
14582    l_string VARCHAR2(4000);
14583 
14584 BEGIN
14585 
14586 
14587 
14588    IF p_col_names IS NOT NULL AND p_col_names.COUNT > 0 THEN
14589 
14590       FOR i IN p_col_names.FIRST .. p_col_names.LAST LOOP
14591 
14592          l_string := l_string || '(' || p_col_names(i) || '=' || p_col_values(i) || ')';
14593 
14594       END LOOP;
14595 
14596    END IF;
14597 
14598    RETURN l_string;
14599 
14600 
14601 
14602 END ToString_ColumnValuePairs;
14603 
14604 
14605 
14606 -- Verify the parameters necessary to insert a record
14607 
14608 -- into AMS_LIST_ENTRIES with one contact point, and to
14609 
14610 -- validate the record
14611 
14612 PROCEDURE Verify_AllRequiredColumns
14613 
14614    ( p_col_names    IN            SYSTEM.varchar_tbl_type
14615 
14616    , p_col_values   IN            SYSTEM.varchar_tbl_type
14617 
14618    , x_party_id        OUT NOCOPY NUMBER
14619 
14620    , x_failure_code    OUT NOCOPY VARCHAR2
14621 
14622    )
14623 
14624 IS
14625 
14626 BEGIN
14627 
14628 
14629 
14630    IF p_col_names IS NOT NULL AND p_col_names.COUNT > 0 THEN
14631 
14632 
14633 
14634       -- assume that no party id is provided until found
14635 
14636       x_failure_code := 490;
14637 
14638 
14639 
14640 <<verify_party_id>>
14641 
14642       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14643 
14644          IF p_col_names(i) = 'PARTY_ID' AND p_col_values(i) IS NOT NULL THEN
14645 
14646             x_party_id := p_col_values(i);
14647 
14648             x_failure_code := 491;
14649 
14650             GOTO verify_first_name;
14651 
14652          END IF;
14653 
14654       END LOOP;
14655 
14656       RETURN;
14657 
14658 
14659 
14660 <<verify_first_name>>
14661 
14662       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14663 
14664          IF p_col_names(i) = 'PERSON_FIRST_NAME' AND p_col_values(i) IS NOT NULL THEN
14665 
14666             x_failure_code := 492;
14667 
14668             GOTO verify_last_name;
14669 
14670          END IF;
14671 
14672       END LOOP;
14673 
14674       RETURN;
14675 
14676 
14677 
14678 <<verify_last_name>>
14679 
14680       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14681 
14682         IF p_col_names(i) = 'PERSON_LAST_NAME' AND p_col_values(i) IS NOT NULL THEN
14683 
14684             x_failure_code := 493;
14685 
14686             GOTO verify_contact_point_id;
14687 
14688          END IF;
14689 
14690       END LOOP;
14691 
14692       RETURN;
14693 
14694 
14695 
14696 <<verify_contact_point_id>>
14697 
14698       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14699 
14700          IF p_col_names(i) = 'CONTACT_POINT_ID_S1' AND p_col_values(i) IS NOT NULL THEN
14701 
14702             x_failure_code := 494;
14703 
14704             GOTO verify_country_code;
14705 
14706          END IF;
14707 
14708       END LOOP;
14709 
14710       RETURN;
14711 
14712 
14713 
14714 <<verify_country_code>>
14715 
14716       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14717 
14718          IF p_col_names(i) = 'PHONE_COUNTRY_CODE_S1' AND p_col_values(i) IS NOT NULL THEN
14719 
14720             x_failure_code := 495;
14721 
14722             GOTO verify_area_code;
14723 
14724          END IF;
14725 
14726       END LOOP;
14727 
14728       RETURN;
14729 
14730 
14731 
14732 <<verify_area_code>>
14733 
14734       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14735 
14736          IF p_col_names(i) = 'PHONE_AREA_CODE_S1' AND p_col_values(i) IS NOT NULL THEN
14737 
14738             x_failure_code := 496;
14739 
14740             GOTO verify_phone_number;
14741 
14742          END IF;
14743 
14744       END LOOP;
14745 
14746       RETURN;
14747 
14748 
14749 
14750 <<verify_phone_number>>
14751 
14752       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14753 
14754          IF p_col_names(i) = 'PHONE_NUMBER_S1' AND p_col_values(i) IS NOT NULL THEN
14755 
14756             x_failure_code := 497;
14757 
14758             GOTO verify_time_zone;
14759 
14760          END IF;
14761 
14762       END LOOP;
14763 
14764       RETURN;
14765 
14766 
14767 
14768 <<verify_time_zone>>
14769 
14770       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14771 
14772          IF p_col_names(i) = 'TIME_ZONE_S1' AND p_col_values(i) IS NOT NULL THEN
14773 
14774             x_failure_code := NULL;
14775 
14776             EXIT;
14777 
14778          END IF;
14779 
14780       END LOOP;
14781 
14782       RETURN;
14783 
14784 
14785 
14786    ELSE
14787 
14788       -- if no columns provided, default to missing party id
14789 
14790       x_party_id := NULL;
14791 
14792       x_failure_code := 490;
14793 
14794    END IF;
14795 
14796 
14797 
14798 END Verify_AllRequiredColumns;
14799 
14800 
14801 
14802 -- Verify only the parameters necessary to insert a record
14803 
14804 -- into AMS_LIST_ENTRIES with one contact point
14805 
14806 PROCEDURE Verify_MinRequiredColumns
14807 
14808    ( p_col_names    IN            SYSTEM.varchar_tbl_type
14809 
14810    , p_col_values   IN            SYSTEM.varchar_tbl_type
14811 
14812    , x_party_id        OUT NOCOPY NUMBER
14813 
14814    , x_failure_code    OUT NOCOPY VARCHAR2
14815 
14816    )
14817 
14818 IS
14819 
14820 BEGIN
14821 
14822 
14823 
14824    IF p_col_names IS NOT NULL AND p_col_names.COUNT > 0 THEN
14825 
14826 
14827 
14828       x_failure_code := 490;
14829 
14830 
14831 
14832 <<verify_party_id>>
14833 
14834       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14835 
14836          IF p_col_names(i) = 'PARTY_ID' AND p_col_values(i) IS NOT NULL THEN
14837 
14838             x_party_id := p_col_values(i);
14839 
14840             x_failure_code := 496;
14841 
14842             GOTO verify_phone_number;
14843 
14844          END IF;
14845 
14846       END LOOP;
14847 
14848       RETURN;
14849 
14850 
14851 
14852 <<verify_phone_number>>
14853 
14854       FOR i IN p_col_names.FIRST..p_col_names.LAST LOOP
14855 
14856          IF p_col_names(i) = 'PHONE_NUMBER_S1' AND p_col_values(i) IS NOT NULL THEN
14857 
14858             x_failure_code := NULL;
14859 
14860             EXIT;
14861 
14862          END IF;
14863 
14864       END LOOP;
14865 
14866       RETURN;
14867 
14868 
14869 
14870    ELSE
14871 
14872       -- if no columns provided, default to missing party id
14873 
14874       x_party_id := NULL;
14875 
14876       x_failure_code := 490;
14877 
14878    END IF;
14879 
14880 
14881 
14882 END Verify_MinRequiredColumns;
14883 
14884 
14885 
14886 PROCEDURE Create_NewEntry
14887 
14888    ( p_list_id	        IN            NUMBER
14889 
14890    , p_column_name	    IN            SYSTEM.varchar_tbl_type
14891 
14892    , p_column_value     IN            SYSTEM.varchar_tbl_type
14893 
14894    , x_party_id            OUT NOCOPY NUMBER
14895 
14896    , x_list_entry_id       OUT NOCOPY NUMBER
14897 
14898    , x_failure_code        OUT NOCOPY VARCHAR2
14899 
14900    )
14901 
14902 IS
14903 
14904    l_count         NUMBER;
14905 
14906 BEGIN
14907 
14908 
14909 
14910    x_failure_code := NULL;
14911 
14912 
14913 
14914    -- Check for minimum columns required for insert into AMS_LIST_ENTRIES
14915 
14916    Verify_MinRequiredColumns( p_column_name
14917 
14918                             , p_column_value
14919 
14920                             , x_party_id
14921 
14922                             , x_failure_code);
14923 
14924 
14925 
14926    IF x_failure_code IS NOT NULL THEN
14927 
14928       RETURN;
14929 
14930    END IF;
14931 
14932 
14933 
14934    -- Check for duplicate party id
14935 
14936    BEGIN
14937 
14938       EXECUTE IMMEDIATE
14939 
14940          'SELECT COUNT(*)
14941 
14942           FROM AMS_LIST_ENTRIES
14943 
14944           WHERE LIST_HEADER_ID = :list_id
14945 
14946           AND PARTY_ID = :party_id'
14947 
14948       INTO l_count
14949 
14950       USING IN p_list_id, IN x_party_id;
14951 
14952    EXCEPTION
14953 
14954       WHEN OTHERS THEN
14955 
14956          Log( 'Add_Record_To_List'
14957 
14958             , 'CHECK_DUPLICATE_PARTY_IN_LIST'
14959 
14960             , SQLERRM
14961 
14962             );
14963 
14964    END;
14965 
14966 
14967 
14968    -- If party already exists in list, then cannot add record
14969 
14970    IF l_count > 0 THEN
14971 
14972       x_failure_code := '499';
14973 
14974       RETURN;
14975 
14976    END IF;
14977 
14978 
14979 
14980    -- Create record in AMS_LIST_ENTRIES
14981 
14982    Insert_AmsListEntries( p_list_id
14983 
14984                         , Get_SourceType(p_list_id)
14985 
14986                         , Get_ScheduleSourceCode(p_list_id)
14987 
14988                         , Get_ScheduleId(p_list_id)
14989 
14990                         , x_party_id
14991 
14992                         , x_list_entry_id
14993 
14994                         );
14995 
14996 
14997 
14998    -- Update record details in AMS_LIST_ENTRIES using Source Type Views
14999 
15000    Update_AmsListEntries( p_list_id
15001 
15002                         , x_list_entry_id
15003 
15004                         , Get_SourceTypeView(p_list_id)
15005 
15006                         , p_column_name
15007 
15008                         , p_column_value
15009 
15010                         );
15011 
15012 
15013 
15014    -- Update List Header Counts
15015 
15016    Update_AmsListHeaderCounts( p_list_id
15017 
15018                              , 1
15019 
15020                              , 1
15021 
15022                              );
15023 
15024 
15025 
15026 EXCEPTION
15027 
15028    WHEN fnd_api.g_exc_error THEN
15029 
15030       RAISE;
15031 
15032    WHEN fnd_api.g_exc_unexpected_error THEN
15033 
15034       RAISE;
15035 
15036    WHEN OTHERS THEN
15037 
15038       Log( 'Create_NewEntry'
15039 
15040          , 'MAIN'
15041 
15042          , SQLERRM
15043 
15044          );
15045 
15046       RAISE fnd_api.g_exc_unexpected_error;
15047 
15048 END Create_NewEntry;
15049 
15050 
15051 
15052 PROCEDURE Get_ValidationFailureCode
15053 
15054    ( p_list_id	        IN            NUMBER
15055 
15056    , p_list_entry_id    IN            NUMBER
15057 
15058    , x_failure_code        OUT NOCOPY VARCHAR2
15059 
15060    )
15061 
15062 IS
15063 
15064 BEGIN
15065 
15066 
15067 
15068    x_failure_code := NULL;
15069 
15070 
15071 
15072    EXECUTE IMMEDIATE
15073 
15074       'SELECT DO_NOT_USE_REASON_S1
15075 
15076        FROM IEC_O_VALIDATION_REPORT_DETS
15077 
15078        WHERE LIST_HEADER_ID = :list_id
15079 
15080        AND LIST_ENTRY_ID = :list_entry_id'
15081 
15082    INTO x_failure_code
15083 
15084    USING IN p_list_id, IN p_list_entry_id;
15085 
15086 
15087 
15088 EXCEPTION
15089 
15090     WHEN NO_DATA_FOUND THEN
15091 
15092        x_failure_code := NULL;
15093 
15094     WHEN OTHERS THEN
15095 
15096       Log( 'Get_ValidationFailureCode'
15097 
15098          , 'MAIN'
15099 
15100          , SQLERRM
15101 
15102          );
15103 
15104       RAISE fnd_api.g_exc_unexpected_error;
15105 
15106 END Get_ValidationFailureCode;
15107 
15108 
15109 
15110 PROCEDURE Update_CallbackTime
15111 
15112    ( p_list_id	        IN            NUMBER
15113 
15114    , p_list_entry_id    IN            NUMBER
15115 
15116    , p_callback_time    IN            DATE
15117 
15118    )
15119 
15120 IS
15121 
15122    l_callback_flag VARCHAR2(1);
15123 
15124 BEGIN
15125 
15126 
15127 
15128    IF p_callback_time IS NOT NULL THEN
15129 
15130 
15131 
15132       EXECUTE IMMEDIATE
15133 
15134          'UPDATE IEC_G_RETURN_ENTRIES
15135 
15136           SET CALLBACK_FLAG = ''Y''
15137 
15138             , NEXT_CALL_TIME = :callback_time
15139 
15140           WHERE LIST_HEADER_ID = :list_id
15141 
15142           AND LIST_ENTRY_ID = :list_entry_id'
15143 
15144       USING IN p_callback_time
15145 
15146           , IN p_list_id
15147 
15148           , IN p_list_entry_id;
15149 
15150    END IF;
15151 
15152 
15153 
15154 EXCEPTION
15155 
15156    WHEN OTHERS THEN
15157 
15158       Log( 'Update_CallbackTime'
15159 
15160          , 'MAIN'
15161 
15162          , SQLERRM
15163 
15164          );
15165 
15166       RAISE fnd_api.g_exc_unexpected_error;
15167 
15168 END Update_CallbackTime;
15169 
15170 
15171 
15172 PROCEDURE Add_Record_To_List_Pvt
15173 
15174    ( p_list_id	                 IN            NUMBER
15175 
15176    , p_column_name	             IN            SYSTEM.varchar_tbl_type
15177 
15178    , p_column_value              IN            SYSTEM.varchar_tbl_type
15179 
15180    , p_callback_time             IN            DATE
15181 
15182    , p_interactive_mode          IN            BOOLEAN
15183 
15184    , x_failure_code                 OUT NOCOPY VARCHAR2
15185 
15186    )
15187 
15188 IS
15189 
15190    PRAGMA AUTONOMOUS_TRANSACTION;
15191 
15192 
15193 
15194    l_list_entry_id NUMBER(15);
15195 
15196    l_party_id      NUMBER(15);
15197 
15198    l_list_entry_id_col SYSTEM.NUMBER_TBL_TYPE := SYSTEM.NUMBER_TBL_TYPE();
15199 
15200 
15201 
15202 BEGIN
15203 
15204 
15205 
15206    x_failure_code := NULL;
15207 
15208 
15209 
15210    -- Setup logging information
15211 
15212    Init_LoggingVariables;
15213 
15214 --   FND_MESSAGE.SET_NAME( 'IEC'
15215 
15216 --                       , 'IEC_LOG_ADD_PARTY_EXCEPTION');
15217 
15218 --   FND_MESSAGE.SET_TOKEN( 'RECORD'
15219 
15220 --                        , NVL(ToString_ColumnValuePairs(p_column_name,p_column_value), 'UNKNOWN')
15221 
15222 --                        , TRUE);
15223 
15224 --   FND_MESSAGE.SET_TOKEN( 'TARGET_GROUP_NAME'
15225 
15226 --                        , NVL(Get_ListName(p_list_id), 'UNKNOWN')
15227 
15228 --                        , TRUE);
15229 
15230 --   FND_MESSAGE.SET_TOKEN( 'LIST_HEADER_ID'
15231 
15232 --                        , NVL(TO_CHAR(p_list_id), 'UNKNOWN')
15233 
15234 --                        , TRUE);
15235 
15236 --   Set_MessagePrefix(FND_MESSAGE.GET);
15237 
15238    Set_MessagePrefix('add_list_entry');
15239 
15240 
15241 
15242    -- In interactive mode, require all parameters for first contact point
15243 
15244    -- Requirements may be relaxed in future, but this makes sense for now
15245 
15246    -- since validation rules are not used in to validate this record.
15247 
15248    -- In batch mode, we do not require all parameters - we only require
15249 
15250    -- enough parameters to insert the record into AMS_LIST_ENTRIES since
15251 
15252    -- it doesn't matter if the record fails validation.
15253 
15254    IF p_interactive_mode THEN
15255 
15256       Verify_AllRequiredColumns( p_column_name
15257 
15258                                , p_column_value
15259 
15260                                , l_party_id
15261 
15262                                , x_failure_code
15263 
15264                                );
15265 
15266       IF x_failure_code IS NOT NULL THEN
15267 
15268          ROLLBACK;
15269 
15270          RETURN;
15271 
15272       END IF;
15273 
15274    END IF;
15275 
15276 
15277 
15278    -- Create the new entry in AMS_LIST_ENTRIES
15279 
15280    Create_NewEntry( p_list_id
15281 
15282                   , p_column_name
15283 
15284                   , p_column_value
15285 
15286                   , l_party_id
15287 
15288                   , l_list_entry_id
15289 
15290                   , x_failure_code
15291 
15292                   );
15293 
15294 
15295 
15296    -- Must rollback if unable to insert entry into AMS_LIST_ENTRIES
15297 
15298    -- Possible reasons include missing parameters, or duplicate party id
15299 
15300    IF x_failure_code IS NOT NULL THEN
15301 
15302       ROLLBACK;
15303 
15304       RETURN;
15305 
15306    END IF;
15307 
15308 
15309 
15310    -- Load the new entry into the system
15311 
15312    l_list_entry_id_col.EXTEND;
15313 
15314    l_list_entry_id_col(1) := l_list_entry_id;
15315 
15316 
15317 
15318    Load_Entries_Pvt( l_list_entry_id_col
15319 
15320                    , p_list_id
15321 
15322                    , 'N'    -- disable validation rules
15323 
15324                    );
15325 
15326 
15327 
15328    -- Need to get feedback about whether or not entry passed validation
15329 
15330    Get_ValidationFailureCode( p_list_id
15331 
15332                             , l_list_entry_id
15333 
15334                             , x_failure_code
15335 
15336                             );
15337 
15338 
15339 
15340    -- In interactive mode, if the record fails validation,
15341 
15342    -- we rollback the entire transaction.  User will have
15343 
15344    -- to resubmit request with updated customer information.
15345 
15346    -- In batch mode, do not rollback b/c we want to leave
15347 
15348    -- the entry as invalid in the system.  User will have
15349 
15350    -- to "fix" the data in our system and revalidate using
15351 
15352    -- the standard validation process.
15353 
15354    IF x_failure_code IS NOT NULL THEN
15355 
15356       IF p_interactive_mode THEN
15357 
15358          ROLLBACK;
15359 
15360          RETURN;
15361 
15362       END IF;
15363 
15364    ELSE
15365 
15366       -- If record was successfully inserted, update callback time
15367 
15368       Update_CallbackTime(p_list_id, l_list_entry_id, p_callback_time);
15369 
15370    END IF;
15371 
15372 
15373 
15374    COMMIT;
15375 
15376 
15377 
15378 EXCEPTION
15379 
15380    WHEN fnd_api.g_exc_error THEN
15381 
15382       ROLLBACK;
15383 
15384       RAISE;
15385 
15386    WHEN fnd_api.g_exc_unexpected_error THEN
15387 
15388       ROLLBACK;
15389 
15390       RAISE;
15391 
15392    WHEN OTHERS THEN
15393 
15394       Log( 'Add_Record_To_List_Pvt'
15395 
15396          , 'MAIN'
15397 
15398          , SQLERRM
15399 
15400          );
15401 
15402       ROLLBACK;
15403 
15404       RAISE fnd_api.g_exc_unexpected_error;
15405 
15406 END Add_Record_To_List_Pvt;
15407 
15408 
15409 
15410 PROCEDURE Add_Record_To_List
15411 
15412    ( p_list_id	                 IN            NUMBER
15413 
15414    , p_column_name	             IN            SYSTEM.varchar_tbl_type
15415 
15416    , p_column_value              IN            SYSTEM.varchar_tbl_type
15417 
15418    , p_callback_time             IN            DATE DEFAULT NULL
15419 
15420    , x_failure_code                 OUT NOCOPY VARCHAR2
15421 
15422    )
15423 
15424 IS
15425 
15426 BEGIN
15427 
15428 
15429 
15430    Add_Record_To_List_Pvt( p_list_id
15431 
15432                          , p_column_name
15433 
15434                          , p_column_value
15435 
15436                          , p_callback_time
15437 
15438                          , FALSE  -- batch mode
15439 
15440                          , x_failure_code
15441 
15442                          );
15443 
15444 
15445 
15446 EXCEPTION
15447 
15448    WHEN OTHERS THEN
15449 
15450       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
15451 
15452 END Add_Record_To_List;
15453 
15454 
15455 
15456 PROCEDURE Add_Record_To_List_Interactive
15457 
15458    ( p_list_id	                 IN            NUMBER
15459 
15460    , p_column_name	             IN            SYSTEM.varchar_tbl_type
15461 
15462    , p_column_value              IN            SYSTEM.varchar_tbl_type
15463 
15464    , p_callback_time             IN            DATE DEFAULT NULL
15465 
15466    , x_failure_code                 OUT NOCOPY VARCHAR2
15467 
15468    )
15469 
15470 IS
15471 
15472 BEGIN
15473 
15474 
15475 
15476    Add_Record_To_List_Pvt( p_list_id
15477 
15478                          , p_column_name
15479 
15480                          , p_column_value
15481 
15482                          , p_callback_time
15483 
15484                          , TRUE  -- interactive mode
15485 
15486                          , x_failure_code
15487 
15488                          );
15489 
15490 
15491 
15492 EXCEPTION
15493 
15494    WHEN OTHERS THEN
15495 
15496       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
15497 
15498 
15499 
15500 END Add_Record_To_List_Interactive;
15501 
15502 
15503 
15504 FUNCTION Get_Postfix
15505 
15506    ( p_index IN NUMBER)
15507 
15508 RETURN VARCHAR2
15509 
15510 IS
15511 
15512    l_postfix VARCHAR2(3);
15513 
15514 BEGIN
15515 
15516 
15517 
15518    SELECT DECODE( p_index
15519 
15520                 , 1, '_S1'
15521 
15522                 , 2, '_S2'
15523 
15524                 , 3, '_S3'
15525 
15526                 , 4, '_S4'
15527 
15528                 , 5, '_S5'
15529 
15530                 , 6, '_S6'
15531 
15532                 , NULL)
15533 
15534    INTO l_postfix
15535 
15536    FROM DUAL;
15537 
15538 
15539 
15540    RETURN l_postfix;
15541 
15542 
15543 
15544 END Get_Postfix;
15545 
15546 
15547 
15548 PROCEDURE Update_ContactPoint
15549 
15550    ( p_list_id	        IN            NUMBER
15551 
15552    , p_list_entry_id    IN            NUMBER
15553 
15554    , p_party_id         IN            NUMBER
15555 
15556    , p_contact_point_id IN            NUMBER
15557 
15558    , p_index            IN            NUMBER
15559 
15560    , p_country_code	    IN            VARCHAR2
15561 
15562    , p_area_code        IN            VARCHAR2
15563 
15564    , p_phone_number     IN            VARCHAR2
15565 
15566    , p_time_zone        IN            NUMBER
15567 
15568    , p_update_tca_flag  IN            VARCHAR2
15569 
15570    )
15571 
15572 IS
15573 
15574    l_source_type_view      VARCHAR2(32);
15575 
15576    l_postfix               VARCHAR2(3);
15577 
15578 
15579 
15580    l_contact_point_rec     HZ_CONTACT_POINT_V2PUB.contact_point_rec_type;
15581 
15582    l_phone_rec             HZ_CONTACT_POINT_V2PUB.phone_rec_type;
15583 
15584 
15585 
15586    l_object_version_number NUMBER;
15587 
15588    l_return_status         VARCHAR2(1);
15589 
15590    l_msg_count             NUMBER;
15591 
15592    l_msg_data              VARCHAR2(4000);
15593 
15594    l_error_msg             VARCHAR2(4000);
15595 
15596 BEGIN
15597 
15598 
15599 
15600    -- Update TCA contact point record
15601 
15602    IF p_update_tca_flag = 'Y' THEN
15603 
15604       l_contact_point_rec.contact_point_id := p_contact_point_id;
15605 
15606 
15607 
15608       l_phone_rec.phone_country_code := p_country_code;
15609 
15610       l_phone_rec.phone_area_code := p_area_code;
15611 
15612       l_phone_rec.phone_number := p_phone_number;
15613 
15614       l_phone_rec.timezone_id := p_time_zone;
15615 
15616 
15617 
15618       -- Get object version number
15619 
15620       SELECT OBJECT_VERSION_NUMBER
15621 
15622       INTO l_object_version_number
15623 
15624       FROM HZ_CONTACT_POINTS
15625 
15626       WHERE CONTACT_POINT_ID = p_contact_point_id;
15627 
15628 
15629 
15630       HZ_CONTACT_POINT_V2PUB.update_phone_contact_point
15631 
15632          ( fnd_api.g_true            -- init msg list
15633 
15634          , l_contact_point_rec
15635 
15636          , l_phone_rec
15637 
15638          , l_object_version_number   -- object version number
15639 
15640          , l_return_status
15641 
15642          , l_msg_count
15643 
15644          , l_msg_data
15645 
15646          );
15647 
15648 
15649 
15650       ----------------------------------------------------------------
15651 
15652       -- If the call to the ams api did not complete successfully then write
15653 
15654       -- a log and stop the update list procedure.
15655 
15656       ----------------------------------------------------------------
15657 
15658       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
15659 
15660          BEGIN
15661 
15662             -- Get Marketing API Error Message
15663 
15664             FOR i IN 1..FND_MSG_PUB.count_msg LOOP
15665 
15666                l_msg_data := LTRIM(RTRIM(FND_MSG_PUB.GET(i, FND_API.G_FALSE)));
15667 
15668                IF (NVL(LENGTH(l_error_msg), 0) + NVL(LENGTH(l_msg_data), 0) < 1000) THEN
15669 
15670                   l_error_msg := l_error_msg || l_msg_data;
15671 
15672                ELSIF (NVL(LENGTH(l_error_msg), 0) = 0) THEN
15673 
15674                   l_error_msg := SUBSTR(l_msg_data, 1000);
15675 
15676                END IF;
15677 
15678             END LOOP;
15679 
15680          EXCEPTION
15681 
15682             WHEN OTHERS THEN
15683 
15684                l_error_msg := NULL;
15685 
15686          END;
15687 
15688 
15689 
15690          Log( 'Update_ContactPoint'
15691 
15692             , 'UPDATE_HZ_CONTACT_POINTS'
15693 
15694             , l_error_msg
15695 
15696             );
15697 
15698 
15699 
15700          IF l_return_status = FND_API.G_RET_STS_ERROR THEN
15701 
15702             RAISE FND_API.G_EXC_ERROR;
15703 
15704          ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
15705 
15706             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
15707 
15708          END IF;
15709 
15710       END IF;
15711 
15712 
15713 
15714    END IF;
15715 
15716 
15717 
15718    -- Update AMS_LIST_ENTRIES contact point
15719 
15720    BEGIN
15721 
15722       l_source_type_view := Get_SourceTypeView(p_list_id);
15723 
15724       l_postfix := Get_Postfix(p_index);
15725 
15726       EXECUTE IMMEDIATE
15727 
15728          'UPDATE ' || l_source_type_view ||
15729 
15730          ' SET PHONE_COUNTRY_CODE' || l_postfix || ' = ' || p_country_code ||
15731 
15732          '  , PHONE_AREA_CODE' || l_postfix || ' = ' || p_area_code ||
15733 
15734          '  , PHONE_NUMBER' || l_postfix || ' = ' || p_phone_number ||
15735 
15736          '  , RAW_PHONE_NUMBER' || l_postfix || ' = NULL
15737 
15738             , TIME_ZONE' || l_postfix || ' = ' || p_time_zone ||
15739 
15740          'WHERE LIST_HEADER_ID = :list_id
15741 
15742           AND LIST_ENTRY_ID = :list_entry_id
15743 
15744           AND CONTACT_POINT_ID' || l_postfix || ' = ' || p_contact_point_id
15745 
15746       USING IN p_list_id, IN p_list_entry_id;
15747 
15748    EXCEPTION
15749 
15750       WHEN OTHERS THEN
15751 
15752          IF SQLCODE = -904 THEN
15753 
15754             Log_MissingSourceTypeColumns(p_list_id, l_source_type_view, Get_SourceType(p_list_id), 'Update_ContactPoint', 'UPDATE_AMS_LIST_ENTRIES');
15755 
15756             RAISE fnd_api.g_exc_unexpected_error;
15757 
15758          ELSE
15759 
15760             Log( 'Update_ContactPoint'
15761 
15762                , 'UPDATE_AMS_LIST_ENTRIES'
15763 
15764                , SQLERRM
15765 
15766                );
15767 
15768             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
15769 
15770          END IF;
15771 
15772    END;
15773 
15774 
15775 
15776 EXCEPTION
15777 
15778    WHEN OTHERS THEN
15779 
15780       RAISE_APPLICATION_ERROR(-20999, Get_TranslatedErrorMessage);
15781 
15782 END Update_ContactPoint;
15783 
15784 /*
15785 
15786 PROCEDURE SubsetTransition_List
15787 
15788    ( p_list_id         IN            NUMBER
15789 
15790    , p_schedule_id     IN            NUMBER
15791 
15792    , p_source_type_v   IN            VARCHAR2
15793 
15794    , x_return_code        OUT NOCOPY VARCHAR2)   -- OUT
15795 
15796 IS
15797 
15798 
15799 
15800    l_subset_id_col         SYSTEM.number_tbl_type;
15801 
15802    l_subset_view_col       SYSTEM.varchar_tbl_type;
15803 
15804    l_subset_rec_loaded_col SYSTEM.number_tbl_type;
15805 
15806 
15807 
15808    l_list_entry_csr        ListEntryCsrType;
15809 
15810    l_entry_count           PLS_INTEGER;
15811 
15812 
15813 
15814    l_list_entry_id         NUMBER(15);
15815 
15816    l_callback_flag         VARCHAR2(1);
15817 
15818    l_next_call_time        DATE;
15819 
15820    l_do_not_use_flag       VARCHAR2(1);
15821 
15822    l_do_not_use_reason     NUMBER;
15823 
15824    l_record_out_flag       VARCHAR2(1);
15825 
15826    l_record_release_time   DATE;
15827 
15828 
15829 
15830    l_cpc_id                NUMBER(15);
15831 
15832    l_cpc_index             NUMBER;
15833 
15834    l_cpc_cc                VARCHAR2(240);
15835 
15836    l_cpc_ac                NUMBER;
15837 
15838    l_cpc_pn                VARCHAR2(240);
15839 
15840    l_cpc_rpn               VARCHAR2(240);
15841 
15842 
15843 
15844    l_cpc_cc_tz_id          NUMBER(15);
15845 
15846    l_cc_tz_id_s1           NUMBER(15);
15847 
15848    l_cc_tz_id_s2           NUMBER(15);
15849 
15850    l_cc_tz_id_s3           NUMBER(15);
15851 
15852    l_cc_tz_id_s4           NUMBER(15);
15853 
15854    l_cc_tz_id_s5           NUMBER(15);
15855 
15856    l_cc_tz_id_s6           NUMBER(15);
15857 
15858 
15859 
15860    l_cpc_tz                NUMBER(15);
15861 
15862    l_tz_s1                 NUMBER(15);
15863 
15864    l_tz_s2                 NUMBER(15);
15865 
15866    l_tz_s3                 NUMBER(15);
15867 
15868    l_tz_s4                 NUMBER(15);
15869 
15870    l_tz_s5                 NUMBER(15);
15871 
15872    l_tz_s6                 NUMBER(15);
15873 
15874 
15875 
15876    l_cpc_tc                VARCHAR2(2);
15877 
15878    l_tc_s1                 VARCHAR2(2);
15879 
15880    l_tc_s2                 VARCHAR2(2);
15881 
15882    l_tc_s3                 VARCHAR2(2);
15883 
15884    l_tc_s4                 VARCHAR2(2);
15885 
15886    l_tc_s5                 VARCHAR2(2);
15887 
15888    l_tc_s6                 VARCHAR2(2);
15889 
15890 
15891 
15892    l_cpc_rc                NUMBER(15);
15893 
15894    l_rc_s1                 NUMBER(15);
15895 
15896    l_rc_s2                 NUMBER(15);
15897 
15898    l_rc_s3                 NUMBER(15);
15899 
15900    l_rc_s4                 NUMBER(15);
15901 
15902    l_rc_s5                 NUMBER(15);
15903 
15904    l_rc_s6                 NUMBER(15);
15905 
15906 
15907 
15908    l_cpc_valid_flag        VARCHAR2(1);
15909 
15910    l_valid_flag_s1         VARCHAR2(1);
15911 
15912    l_valid_flag_s2         VARCHAR2(1);
15913 
15914    l_valid_flag_s3         VARCHAR2(1);
15915 
15916    l_valid_flag_s4         VARCHAR2(1);
15917 
15918    l_valid_flag_s5         VARCHAR2(1);
15919 
15920    l_valid_flag_s6         VARCHAR2(1);
15921 
15922 
15923 
15924    l_records_passed        NUMBER(9) := 0;
15925 
15926    l_records_failed        NUMBER(9) := 0;
15927 
15928 
15929 
15930    l_count                 NUMBER(9);
15931 
15932 
15933 
15934 BEGIN
15935 
15936 
15937 
15938    x_return_code := FND_API.G_RET_STS_SUCCESS;
15939 
15940 
15941 
15942    SAVEPOINT subset_transition;
15943 
15944 
15945 
15946    -- Make sure that data hasn't already been transitioned
15947 
15948    EXECUTE IMMEDIATE
15949 
15950       'SELECT COUNT(*)
15951 
15952        FROM IEC_G_REP_SUBSET_COUNTS
15953 
15954        WHERE LIST_HEADER_ID = :list_id'
15955 
15956    INTO l_count
15957 
15958    USING p_list_id;
15959 
15960 
15961 
15962    IF l_count > 0 THEN
15963 
15964       GOTO Done;
15965 
15966    END IF;
15967 
15968 
15969 
15970    -- Ensure that marketing objects created prior to Minipack N are updated
15971 
15972    -- with the ITM_CC_TZ_ID populated in the REASON_CODE_S? column instead of 'Y' or 'N'
15973 
15974    EXECUTE IMMEDIATE
15975 
15976          'BEGIN
15977 
15978           UPDATE ' || p_source_type_v || ' A' || '
15979 
15980           SET
15981 
15982             REASON_CODE_S1 = (SELECT ITM_CC_TZ_ID FROM IEC_G_MKTG_ITEM_CC_TZS B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S1 AND B.TIMEZONE_ID = A.TIME_ZONE_S1 AND B.LIST_HEADER_ID = :1 AND B.REGION_ID IS NULL)
15983 
15984           , REASON_CODE_S2 = (SELECT ITM_CC_TZ_ID FROM IEC_G_MKTG_ITEM_CC_TZS B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S2 AND B.TIMEZONE_ID = A.TIME_ZONE_S2 AND B.LIST_HEADER_ID = :2 AND B.REGION_ID IS NULL)
15985 
15986           , REASON_CODE_S3 = (SELECT ITM_CC_TZ_ID FROM IEC_G_MKTG_ITEM_CC_TZS B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S3 AND B.TIMEZONE_ID = A.TIME_ZONE_S3 AND B.LIST_HEADER_ID = :3 AND B.REGION_ID IS NULL)
15987 
15988           , REASON_CODE_S4 = (SELECT ITM_CC_TZ_ID FROM IEC_G_MKTG_ITEM_CC_TZS B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S4 AND B.TIMEZONE_ID = A.TIME_ZONE_S4 AND B.LIST_HEADER_ID = :4 AND B.REGION_ID IS NULL)
15989 
15990           , REASON_CODE_S5 = (SELECT ITM_CC_TZ_ID FROM IEC_G_MKTG_ITEM_CC_TZS B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S5 AND B.TIMEZONE_ID = A.TIME_ZONE_S5 AND B.LIST_HEADER_ID = :5 AND B.REGION_ID IS NULL)
15991 
15992           , REASON_CODE_S6 = (SELECT ITM_CC_TZ_ID FROM IEC_G_MKTG_ITEM_CC_TZS B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S6 AND B.TIMEZONE_ID = A.TIME_ZONE_S6 AND B.LIST_HEADER_ID = :6 AND B.REGION_ID IS NULL)
15993 
15994           WHERE LIST_HEADER_ID = :list_header_id
15995 
15996           AND TRANSLATE(UPPER(CURR_CP_COUNTRY_CODE), ''0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'', ''0123456789'') IS NULL
15997 
15998           AND (DO_NOT_USE_FLAG = ''N'' OR (DO_NOT_USE_FLAG = ''Y'' AND DO_NOT_USE_REASON <> 4));
15999 
16000           END;'
16001 
16002    USING p_list_id
16003 
16004    ,     p_list_id
16005 
16006    ,     p_list_id
16007 
16008    ,     p_list_id
16009 
16010    ,     p_list_id
16011 
16012    ,     p_list_id
16013 
16014    ,     p_list_id;
16015 
16016 
16017 
16018    EXECUTE IMMEDIATE
16019 
16020          'BEGIN
16021 
16022           UPDATE ' || p_source_type_v || ' A' || '
16023 
16024           SET
16025 
16026             CURR_CP_COUNTRY_CODE = (SELECT PHONE_COUNTRY_CODE FROM HZ_PHONE_COUNTRY_CODES B WHERE B.TERRITORY_CODE = A.CURR_CP_COUNTRY_CODE)
16027 
16028           , PHONE_COUNTRY_CODE_S1 = (SELECT PHONE_COUNTRY_CODE FROM HZ_PHONE_COUNTRY_CODES B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S1)
16029 
16030           , PHONE_COUNTRY_CODE_S2 = (SELECT PHONE_COUNTRY_CODE FROM HZ_PHONE_COUNTRY_CODES B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S2)
16031 
16032           , PHONE_COUNTRY_CODE_S3 = (SELECT PHONE_COUNTRY_CODE FROM HZ_PHONE_COUNTRY_CODES B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S3)
16033 
16034           , PHONE_COUNTRY_CODE_S4 = (SELECT PHONE_COUNTRY_CODE FROM HZ_PHONE_COUNTRY_CODES B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S4)
16035 
16036           , PHONE_COUNTRY_CODE_S5 = (SELECT PHONE_COUNTRY_CODE FROM HZ_PHONE_COUNTRY_CODES B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S5)
16037 
16038           , PHONE_COUNTRY_CODE_S6 = (SELECT PHONE_COUNTRY_CODE FROM HZ_PHONE_COUNTRY_CODES B WHERE B.TERRITORY_CODE = A.PHONE_COUNTRY_CODE_S6)
16039 
16040           WHERE LIST_HEADER_ID = :list_header_id
16041 
16042           AND TRANSLATE(UPPER(CURR_CP_COUNTRY_CODE), ''0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'', ''0123456789'') IS NULL
16043 
16044           AND (DO_NOT_USE_FLAG = ''N'' OR (DO_NOT_USE_FLAG = ''Y'' AND DO_NOT_USE_REASON <> 4));
16045 
16046           END;'
16047 
16048    USING p_list_id;
16049 
16050 
16051 
16052 
16053 
16054    -- Assign load priorities to subsets
16055 
16056    EXECUTE IMMEDIATE
16057 
16058       'UPDATE IEC_G_LIST_SUBSETS
16059 
16060        SET LOAD_PRIORITY = ROWNUM
16061 
16062        WHERE LIST_HEADER_ID = :1
16063 
16064        AND (DEFAULT_SUBSET_FLAG IS NULL OR DEFAULT_SUBSET_FLAG = ''N'')
16065 
16066        AND LOAD_PRIORITY IS NULL'
16067 
16068    USING p_list_id;
16069 
16070 
16071 
16072    Init_SubsetRtInfo(p_list_id, p_source_type_v, l_subset_id_col, l_subset_view_col);
16073 
16074 
16075 
16076    -- Load current callable zones into cache with special flag 'O' to indicate that they should not be
16077 
16078    -- used when assigning new callable zones (with subsets) to entries
16079 
16080    EXECUTE IMMEDIATE
16081 
16082          'INSERT INTO IEC_TC_TZ_PAIRS_CACHE (SUBSET_ID, TERRITORY_CODE, REGION_ID, TIMEZONE_ID, TC_TZ_PAIR_ID, RECORD_COUNT, CACHE_ONLY_FLAG)
16083 
16084           SELECT SUBSET_ID, TERRITORY_CODE, REGION_ID, TIMEZONE_ID, ITM_CC_TZ_ID, RECORD_COUNT, ''O''
16085 
16086           FROM IEC_G_MKTG_ITEM_CC_TZS
16087 
16088           WHERE LIST_HEADER_ID = :list_id'
16089 
16090    USING p_list_id;
16091 
16092 
16093 
16094    -- Need to delete them from IEC_G_MKTG_ITEM_CC_TZS to avoid unique constraint violation on purge
16095 
16096    EXECUTE IMMEDIATE
16097 
16098       'DELETE FROM IEC_G_MKTG_ITEM_CC_TZS
16099 
16100        WHERE LIST_HEADER_ID = :list_id'
16101 
16102    USING p_list_id;
16103 
16104 
16105 
16106    -- Load entries into IEC_VAL_ENTRY_CACHE
16107 
16108    BEGIN
16109 
16110       OPEN l_list_entry_csr FOR
16111 
16112            'SELECT LIST_ENTRY_ID
16113 
16114                  , CALLBACK_FLAG
16115 
16116                  , NEXT_CALL_TIME
16117 
16118                  , DO_NOT_USE_FLAG
16119 
16120                  , DO_NOT_USE_REASON
16121 
16122                  , RECORD_OUT_FLAG
16123 
16124                  , RECORD_RELEASE_TIME
16125 
16126                  , CURR_CP_ID
16127 
16128                  , CURR_CP_INDEX
16129 
16130                  , CURR_CP_COUNTRY_CODE
16131 
16132                  , CURR_CP_AREA_CODE
16133 
16134                  , CURR_CP_PHONE_NUMBER
16135 
16136                  , CURR_CP_RAW_PHONE_NUMBER
16137 
16138                  , CURR_CP_TIME_ZONE_AUX
16139 
16140                  , REASON_CODE_S1
16141 
16142                  , REASON_CODE_S2
16143 
16144                  , REASON_CODE_S3
16145 
16146                  , REASON_CODE_S4
16147 
16148                  , REASON_CODE_S5
16149 
16150                  , REASON_CODE_S6
16151 
16152             FROM ' || p_source_type_v || '
16153 
16154             WHERE LIST_HEADER_ID = :list_id' || '
16155 
16156             AND ( DO_NOT_USE_FLAG = ''N''
16157 
16158                   OR
16159 
16160                   (DO_NOT_USE_FLAG = ''Y'' AND DO_NOT_USE_REASON <> 4 AND (DO_NOT_USE_REASON < 400 OR DO_NOT_USE_REASON > 499))
16161 
16162                 )'
16163 
16164       USING p_list_id;
16165 
16166    EXCEPTION
16167 
16168       WHEN OTHERS THEN
16169 
16170          IF SQLCODE = -904 THEN
16171 
16172             g_error_msg := 'Source type view ' || p_source_type_v || ' is missing at least one of the following columns: ' ||
16173 
16174                            'REASON_CODE_S1, REASON_CODE_S2, REASON_CODE_S3, REASON_CODE_S4, REASON_CODE_S5, REASON_CODE_S6';
16175 
16176             RAISE fnd_api.g_exc_unexpected_error;
16177 
16178          ELSE
16179 
16180             RAISE;
16181 
16182          END IF;
16183 
16184    END;
16185 
16186 
16187 
16188    LOOP
16189 
16190 
16191 
16192       FOR I IN 1..g_row_increment LOOP
16193 
16194 
16195 
16196          FETCH l_list_entry_csr INTO
16197 
16198                l_list_entry_id,
16199 
16200                l_callback_flag,
16201 
16202                l_next_call_time,
16203 
16204                l_do_not_use_flag,
16205 
16206                l_do_not_use_reason,
16207 
16208                l_record_out_flag,
16209 
16210                l_record_release_time,
16211 
16212                l_cpc_id,
16213 
16214                l_cpc_index,
16215 
16216                l_cpc_cc,
16217 
16218                l_cpc_ac,
16219 
16220                l_cpc_pn,
16221 
16222                l_cpc_rpn,
16223 
16224                l_cpc_cc_tz_id,
16225 
16226                l_cc_tz_id_s1,
16227 
16228                l_cc_tz_id_s2,
16229 
16230                l_cc_tz_id_s3,
16231 
16232                l_cc_tz_id_s4,
16233 
16234                l_cc_tz_id_s5,
16235 
16236                l_cc_tz_id_s6;
16237 
16238 
16239 
16240          EXIT WHEN l_list_entry_csr%NOTFOUND;
16241 
16242 
16243 
16244          -- Map CC_TZ_ID to territory code, region code, and time zone
16245 
16246          Get_CallableZoneDetail_Cache(l_cpc_cc_tz_id, l_cpc_tc, l_cpc_rc, l_cpc_tz, l_cpc_valid_flag);
16247 
16248          Get_CallableZoneDetail_Cache(l_cc_tz_id_s1, l_tc_s1, l_rc_s1, l_tz_s1, l_valid_flag_s1);
16249 
16250          Get_CallableZoneDetail_Cache(l_cc_tz_id_s2, l_tc_s2, l_rc_s2, l_tz_s2, l_valid_flag_s2);
16251 
16252          Get_CallableZoneDetail_Cache(l_cc_tz_id_s3, l_tc_s3, l_rc_s3, l_tz_s3, l_valid_flag_s3);
16253 
16254          Get_CallableZoneDetail_Cache(l_cc_tz_id_s4, l_tc_s4, l_rc_s4, l_tz_s4, l_valid_flag_s4);
16255 
16256          Get_CallableZoneDetail_Cache(l_cc_tz_id_s5, l_tc_s5, l_rc_s5, l_tz_s5, l_valid_flag_s5);
16257 
16258          Get_CallableZoneDetail_Cache(l_cc_tz_id_s6, l_tc_s6, l_rc_s6, l_tz_s6, l_valid_flag_s6);
16259 
16260 
16261 
16262          INSERT INTO IEC_VAL_ENTRY_CACHE
16263 
16264             ( LIST_ENTRY_ID
16265 
16266             , CALLBACK_FLAG
16267 
16268             , NEXT_CALL_TIME
16269 
16270             , DO_NOT_USE_FLAG
16271 
16272             , PREV_STATUS_CODE
16273 
16274             , DO_NOT_USE_REASON
16275 
16276             , RECORD_OUT_FLAG
16277 
16278             , RECORD_RELEASE_TIME
16279 
16280             , CURR_CP_ID
16281 
16282             , CURR_CP_INDEX
16283 
16284             , CURR_CP_COUNTRY_CODE
16285 
16286             , CURR_CP_AREA_CODE
16287 
16288             , CURR_CP_PHONE_NUMBER
16289 
16290             , CURR_CP_RAW_PHONE_NUMBER
16291 
16292             , CURR_CP_TIME_ZONE
16293 
16294             , CURR_CP_TERRITORY_CODE
16295 
16296             , CURR_CP_REGION_ID
16297 
16298             , TIME_ZONE_S1, TERRITORY_CODE_S1, REGION_ID_S1, VALID_FLAG_S1
16299 
16300             , TIME_ZONE_S2, TERRITORY_CODE_S2, REGION_ID_S2, VALID_FLAG_S2
16301 
16302             , TIME_ZONE_S3, TERRITORY_CODE_S3, REGION_ID_S3, VALID_FLAG_S3
16303 
16304             , TIME_ZONE_S4, TERRITORY_CODE_S4, REGION_ID_S4, VALID_FLAG_S4
16305 
16306             , TIME_ZONE_S5, TERRITORY_CODE_S5, REGION_ID_S5, VALID_FLAG_S5
16307 
16308             , TIME_ZONE_S6, TERRITORY_CODE_S6, REGION_ID_S6, VALID_FLAG_S6
16309 
16310             )
16311 
16312          VALUES
16313 
16314             ( l_list_entry_id
16315 
16316             , l_callback_flag
16317 
16318             , l_next_call_time
16319 
16320             , 'N'                      -- Default DO_NOT_USE_FLAG in temp table to 'N' for processing
16321 
16322             , l_do_not_use_flag        -- Store actual value of DO_NOT_USE_FLAG in PREV_STATUS_CODE column of temp table
16323 
16324             , l_do_not_use_reason
16325 
16326             , l_record_out_flag
16327 
16328             , l_record_release_time
16329 
16330             , l_cpc_id
16331 
16332             , l_cpc_index
16333 
16334             , l_cpc_cc
16335 
16336             , l_cpc_ac
16337 
16338             , l_cpc_pn
16339 
16340             , l_cpc_rpn
16341 
16342             , l_cpc_tz
16343 
16344             , l_cpc_tc
16345 
16346             , l_cpc_rc
16347 
16348             , l_tz_s1, l_tc_s1, l_rc_s1, l_valid_flag_s1
16349 
16350             , l_tz_s2, l_tc_s2, l_rc_s2, l_valid_flag_s2
16351 
16352             , l_tz_s3, l_tc_s3, l_rc_s3, l_valid_flag_s3
16353 
16354             , l_tz_s4, l_tc_s4, l_rc_s4, l_valid_flag_s4
16355 
16356             , l_tz_s5, l_tc_s5, l_rc_s5, l_valid_flag_s5
16357 
16358             , l_tz_s6, l_tc_s6, l_rc_s6, l_valid_flag_s6
16359 
16360             );
16361 
16362 
16363 
16364       END LOOP;
16365 
16366 
16367 
16368       EXECUTE IMMEDIATE
16369 
16370          'SELECT COUNT(*)
16371 
16372           FROM IEC_VAL_ENTRY_CACHE'
16373 
16374       INTO l_entry_count;
16375 
16376 
16377 
16378       EXIT WHEN l_entry_count = 0;
16379 
16380 
16381 
16382       l_records_passed := l_records_passed + l_entry_count;
16383 
16384 
16385 
16386       -- Assign subsets
16387 
16388       Partition_SubsetEntries( p_list_id
16389 
16390                              , l_subset_id_col
16391 
16392                              , l_subset_view_col
16393 
16394                              , l_subset_rec_loaded_col);
16395 
16396 
16397 
16398       -- Compile data on callable zones (incorporating subsets) and initialize counts
16399 
16400       Update_CallableZones(p_list_id);
16401 
16402 
16403 
16404       -- Update AMS_LIST_ENTRIES and IEC_G_RETURN_ENTRIES
16405 
16406       EXECUTE IMMEDIATE
16407 
16408          'BEGIN
16409 
16410              UPDATE ' || p_source_type_v || ' A' ||
16411 
16412              ' SET ( REASON_CODE_S1
16413 
16414                    , REASON_CODE_S2
16415 
16416                    , REASON_CODE_S3
16417 
16418                    , REASON_CODE_S4
16419 
16420                    , REASON_CODE_S5
16421 
16422                    , REASON_CODE_S6 )
16423 
16424                =
16425 
16426                    ( SELECT MKTG_ITEM_CC_TZS_ID_S1
16427 
16428                           , MKTG_ITEM_CC_TZS_ID_S2
16429 
16430                           , MKTG_ITEM_CC_TZS_ID_S3
16431 
16432                           , MKTG_ITEM_CC_TZS_ID_S4
16433 
16434                           , MKTG_ITEM_CC_TZS_ID_S5
16435 
16436                           , MKTG_ITEM_CC_TZS_ID_S6
16437 
16438                      FROM IEC_VAL_ENTRY_CACHE B WHERE A.LIST_ENTRY_ID = B.LIST_ENTRY_ID )
16439 
16440           WHERE LIST_HEADER_ID = :list_id AND LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID FROM IEC_VAL_ENTRY_CACHE);
16441 
16442           END;'
16443 
16444       USING p_list_id;
16445 
16446 
16447 
16448       EXECUTE IMMEDIATE
16449 
16450          'BEGIN
16451 
16452           UPDATE IEC_G_RETURN_ENTRIES A
16453 
16454           SET ( SUBSET_ID
16455 
16456               , ITM_CC_TZ_ID
16457 
16458               , CALLBACK_FLAG
16459 
16460               , NEXT_CALL_TIME
16461 
16462               , DO_NOT_USE_FLAG
16463 
16464               , DO_NOT_USE_REASON
16465 
16466               , RECORD_OUT_FLAG
16467 
16468               , RECORD_RELEASE_TIME
16469 
16470               , CONTACT_POINT_ID
16471 
16472               , CONTACT_POINT_INDEX
16473 
16474               , COUNTRY_CODE
16475 
16476               , AREA_CODE
16477 
16478               , PHONE_NUMBER
16479 
16480               , RAW_PHONE_NUMBER
16481 
16482               , TIME_ZONE )
16483 
16484               =
16485 
16486               ( SELECT SUBSET_ID
16487 
16488                      , CURR_CP_MKTG_ITEM_CC_TZS_ID
16489 
16490                      , CALLBACK_FLAG
16491 
16492                      , NEXT_CALL_TIME
16493 
16494                      , PREV_STATUS_CODE    -- ACTUAL DO_NOT_USE_FLAG VALUE FROM ALE
16495 
16496                      , DO_NOT_USE_REASON
16497 
16498                      , RECORD_OUT_FLAG
16499 
16500                      , RECORD_RELEASE_TIME
16501 
16502                      , CURR_CP_ID
16503 
16504                      , CURR_CP_INDEX
16505 
16506                      , CURR_CP_COUNTRY_CODE
16507 
16508                      , CURR_CP_AREA_CODE
16509 
16510                      , CURR_CP_PHONE_NUMBER
16511 
16512                      , CURR_CP_RAW_PHONE_NUMBER
16513 
16514                      , CURR_CP_TIME_ZONE
16515 
16516                 FROM IEC_VAL_ENTRY_CACHE B
16517 
16518                 WHERE A.LIST_ENTRY_ID = B.LIST_ENTRY_ID )
16519 
16520           WHERE LIST_HEADER_ID = :list_id AND LIST_ENTRY_ID IN (SELECT LIST_ENTRY_ID FROM IEC_VAL_ENTRY_CACHE);
16521 
16522           END;'
16523 
16524       USING p_list_id;
16525 
16526 
16527 
16528       Update_ReportCounts( p_campaign_id
16529 
16530                          , p_schedule_id
16531 
16532                          , p_list_id
16533 
16534                          , l_subset_id_col
16535 
16536                          , l_subset_rec_loaded_col);
16537 
16538 
16539 
16540       Purge_CallableZones(p_list_id, p_schedule_id);
16541 
16542 
16543 
16544       Truncate_IecValEntryCache;
16545 
16546 
16547 
16548    END LOOP;
16549 
16550 
16551 
16552    CLOSE l_list_entry_csr;
16553 
16554 
16555 
16556    l_count := NULL;
16557 
16558 
16559 
16560    -- Check for existence of record in IEC_O_VALIDATION_STATUS
16561 
16562    EXECUTE IMMEDIATE
16563 
16564       'SELECT COUNT(*)
16565 
16566        FROM IEC_O_VALIDATION_STATUS
16567 
16568        WHERE LIST_HEADER_ID = :list_id'
16569 
16570    INTO l_count
16571 
16572    USING p_list_id;
16573 
16574 
16575 
16576    IF l_count = 0 THEN
16577 
16578       EXECUTE IMMEDIATE
16579 
16580          'INSERT INTO IEC_O_VALIDATION_STATUS
16581 
16582           ( VALIDATION_STATUS_ID
16583 
16584           , LIST_HEADER_ID
16585 
16586           , VALIDATED_ONCE_FLAG
16587 
16588           , CREATED_BY
16589 
16590           , CREATION_DATE
16591 
16592           , LAST_UPDATED_BY
16593 
16594           , LAST_UPDATE_DATE
16595 
16596           , OBJECT_VERSION_NUMBER)
16597 
16598           VALUES
16599 
16600           ( IEC_O_VALIDATION_STATUS_S.NEXTVAL
16601 
16602           , :list_id
16603 
16604           , ''Y''
16605 
16606           , 1
16607 
16608           , SYSDATE
16609 
16610           , 1
16611 
16612           , SYSDATE
16613 
16614           , 0)'
16615 
16616       USING p_list_id;
16617 
16618    END IF;
16619 
16620 
16621 
16622    l_count := NULL;
16623 
16624 
16625 
16626    -- Update execution start time for list
16627 
16628    EXECUTE IMMEDIATE
16629 
16630       'UPDATE IEC_G_LIST_RT_INFO
16631 
16632        SET EXECUTION_START_TIME = SYSDATE
16633 
16634          , LAST_UPDATED_BY = 0
16635 
16636          , LAST_UPDATE_DATE = SYSDATE
16637 
16638        WHERE LIST_HEADER_ID IN (SELECT LIST_HEADER_ID FROM AMS_LIST_HEADERS_ALL WHERE LIST_HEADER_ID = :list_id AND STATUS_CODE = ''EXECUTING'')
16639 
16640        AND EXECUTION_START_TIME IS NULL'
16641 
16642    USING p_list_id;
16643 
16644 
16645 
16646    Truncate_Temporary_Tables;
16647 
16648 
16649 
16650 <<Done>>
16651 
16652 
16653 
16654    Update_Status(p_list_id, 'VALIDATED');
16655 
16656    COMMIT;
16657 
16658 
16659 
16660 EXCEPTION
16661 
16662    WHEN fnd_api.g_exc_unexpected_error THEN
16663 
16664       x_return_code := FND_API.G_RET_STS_ERROR;
16665 
16666       ROLLBACK TO subset_transition;
16667 
16668       Truncate_Temporary_Tables;
16669 
16670       RAISE_APPLICATION_ERROR(-20999, g_error_msg);
16671 
16672    WHEN OTHERS THEN
16673 
16674       x_return_code := FND_API.G_RET_STS_ERROR;
16675 
16676       Log( 'SubsetTransition_list'
16677 
16678          , 'MAIN'
16679 
16680          , SQLERRM
16681 
16682          );
16683 
16684       ROLLBACK TO subset_transition;
16685 
16686       Truncate_Temporary_Tables;
16687 
16688       RAISE_APPLICATION_ERROR(-20999, g_error_msg);
16689 
16690 
16691 
16692 END SubsetTransition_List;
16693 
16694 */
16695 
16696 PROCEDURE UPDATE_TZ_MAPPINGS
16697 
16698 IS
16699 
16700    L_COUNT NUMBER(9);
16701 
16702    L_TERRITORY_CODE VARCHAR2(2);
16703 
16704    L_TIMEZONE_ID NUMBER(15);
16705 
16706 
16707 
16708    CURSOR AREA_CODE_LIST IS
16709 
16710       SELECT DISTINCT PHONE_AREA_CODE FROM IEC_G_TIMEZONE_MAPPINGS;
16711 
16712 
16713 
16714 BEGIN
16715 
16716 
16717 
16718    FOR REC IN AREA_CODE_LIST LOOP
16719 
16720 
16721 
16722       SELECT COUNT(*) INTO L_COUNT FROM
16723 
16724              (SELECT DISTINCT TIMEZONE_ID FROM IEC_G_TIMEZONE_MAPPINGS WHERE PHONE_AREA_CODE = REC.PHONE_AREA_CODE);
16725 
16726 
16727 
16728       IF L_COUNT = 1 THEN
16729 
16730 
16731 
16732          SELECT DISTINCT TERRITORY_CODE INTO L_TERRITORY_CODE
16733 
16734                 FROM IEC_G_TIMEZONE_MAPPINGS
16735 
16736                 WHERE PHONE_AREA_CODE = REC.PHONE_AREA_CODE;
16737 
16738 
16739 
16740          SELECT DISTINCT TIMEZONE_ID INTO L_TIMEZONE_ID
16741 
16742                 FROM IEC_G_TIMEZONE_MAPPINGS
16743 
16744                 WHERE PHONE_AREA_CODE = REC.PHONE_AREA_CODE;
16745 
16746 
16747 
16748          DELETE IEC_G_TIMEZONE_MAPPINGS WHERE PHONE_AREA_CODE = REC.PHONE_AREA_CODE;
16749 
16750 
16751 
16752          INSERT INTO IEC_G_TIMEZONE_MAPPINGS
16753 
16754                 (TIMEZONE_MAPPING_ID, TERRITORY_CODE, PHONE_AREA_CODE, POSTAL_CODE, TIMEZONE_ID, CREATED_BY,
16755 
16756                  CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER)
16757 
16758                 VALUES
16759 
16760                 (IEC_G_TIMEZONE_MAPPINGS_S.NEXTVAL, L_TERRITORY_CODE, REC.PHONE_AREA_CODE, NULL, L_TIMEZONE_ID, 0,
16761 
16762                  SYSDATE, 0, SYSDATE, 0, 1);
16763 
16764       END IF;
16765 
16766       COMMIT;
16767 
16768    END LOOP;
16769 
16770 END UPDATE_TZ_MAPPINGS;
16771 
16772 
16773 
16774 
16775 
16776 END IEC_VALIDATE_PVT;
16777