DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEC_VALIDATE_PVT

Source


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