[Home] [Help]
PACKAGE BODY: APPS.IEC_ADMIN_PVT
Source
1 PACKAGE BODY IEC_ADMIN_PVT as
2 /* $Header: IECADMB.pls 120.1 2005/06/16 09:10:41 appldev $ */
3
4
5
6 -- ===============================================================
7
8 -- Start of Comments
9
10 -- Package name
11
12 -- IEC_ADMIN_PVT
13
14 -- Purpose
15
16 -- Private api created for use by the Admin utility
17
18 -- History
19
20 -- 30-Apr-2001 msista Created.
21
22 -- 21-May-2001 msista Modified to work better.
23
24 -- 09-Jul-2001 gpagadal Removed Dialing Method.
25
26 -- 20-Jul-2001 gpagadal fnd_msg_pub.delete_msg() added.
27
28 -- 02-Aug-2001 gpagadal Fields added.
29
30 --
31
32 -- NOTE
33
34 --
35
36 -- End of Comments
37
38 -- ===============================================================
39
40
41
42
43
44 G_PKG_NAME CONSTANT VARCHAR2(30):= 'IEC_ADMIN_PVT';
45
46 G_FILE_NAME CONSTANT VARCHAR2(12) := 'iecadmb.pls';
47
48
49
50 -- don't know if need these
51
52 --G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
53
54 --G_LOGIN_ID NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
55
56
57
58 --===================================================================
59
60 -- NAME
61
62 -- Update_Camp_Schedule
63
64 --
65
66 -- PURPOSE
67
68 -- Private api to Update Campaign schedules.
69
70 --
71
72 -- NOTES
73
74 -- 1. AO Admin will use this procedure to update Campaign Schedule
75
76 -- parameters.
77
78 --
79
80 -- HISTORY
81
82 -- 15-May-2001 MSISTA Created
83
84 -- 09-Jul-2001 GPAGADAL Modified
85
86 --===================================================================
87
88 PROCEDURE Update_Camp_Schedule(
89
90
91
92 p_campaign_schedule_id IN NUMBER,
93
94 -- dialing_method used for CTI disabled
95
96 p_dialing_method IN VARCHAR2,
97
98 p_calendar_id IN NUMBER,
99
100 p_abandon_limit IN NUMBER,
101
102
103
104 -- predictive timeout
105
106 p_predictive_timeout IN NUMBER,
107
108 p_user_status_id IN NUMBER,
109
110
111
112 p_user_id IN NUMBER,
113
114
115
116 x_msg_data OUT NOCOPY VARCHAR2,
117
118 x_return_value OUT NOCOPY NUMBER
119
120
121
122 )
123
124 IS
125
126
127
128 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Camp_Schedule';
129
130 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
131
132
133
134 l_camp_schedule_rec AMS_Camp_Schedule_PUB.schedule_rec_type;
135
136
137
138 l_msg_count NUMBER;
139
140 l_msg_data VARCHAR2(240);
141
142 l_one_msg VARCHAR2(100);
143
144 l_object_version_number NUMBER;
145
146
147
148 x_return_status VARCHAR2(10);
149
150
151
152 BEGIN
153
154
155
156 fnd_msg_pub.delete_msg();
157
158
159
160 -- Standard Start of API savepoint
161
162 SAVEPOINT UPDATE_camp_schedule;
163
164
165
166 -- Initialize outgoing parameters
167
168 x_msg_data := '';
169
170 x_return_value := 1;
171
172
173
174 -- Initialize API return status to SUCCESS
175
176 x_return_status := FND_API.G_RET_STS_SUCCESS;
177
178
179
180 l_camp_schedule_rec.schedule_id := p_campaign_schedule_id;
181
182 -- CTI disabled
183
184 IF NOT (p_dialing_method IS NULL) THEN
185
186 l_camp_schedule_rec.activity_attribute4 := p_dialing_method;
187
188 END IF;
189
190
191
192 IF NOT (p_calendar_id IS NULL) THEN
193
194 l_camp_schedule_rec.activity_attribute1 := p_calendar_id;
195
196 END IF;
197
198
199
200 IF NOT (p_abandon_limit IS NULL) THEN
201
202 l_camp_schedule_rec.activity_attribute5 := p_abandon_limit;
203
204 END IF;
205
206
207
208 IF NOT (p_predictive_timeout IS NULL) THEN
209
210 l_camp_schedule_rec.activity_attribute8 := p_predictive_timeout;
211
212 END IF;
213
214
215
216 IF NOT (p_user_status_id IS NULL ) THEN
217
218 IF l_camp_schedule_rec.user_status_id <> p_user_status_id THEN
219
220 l_camp_schedule_rec.user_status_id := p_user_status_id;
221
222 l_camp_schedule_rec.status_date := sysdate;
223
224 END IF;
225
226 END IF;
227
228
229
230 l_camp_schedule_rec.last_update_date := sysdate;
231
232 l_camp_schedule_rec.last_updated_by := p_user_id;
233
234
235
236 -- fetch the object_version_number from db
237
238 SELECT
239
240 OBJECT_VERSION_NUMBER, SOURCE_CODE into
241
242 l_camp_schedule_rec.object_version_number, l_camp_schedule_rec.source_code
243
244 from AMS_CAMPAIGN_SCHEDULES_B
245
246 WHERE SCHEDULE_ID = p_campaign_schedule_id;
247
248
249
250 AMS_Camp_Schedule_PUB.Update_Camp_Schedule( L_API_VERSION_NUMBER,
251
252 FND_API.G_FALSE,
253
254 FND_API.G_TRUE,
255
256 FND_API.G_VALID_LEVEL_FULL,
257
258 x_return_status,
259
260 l_msg_count,
261
262 l_msg_data,
263
264 l_camp_schedule_rec,
265
266 l_object_version_number
267
268 );
269
270
271
272 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
273
274 UPDATE AMS_CAMPAIGN_SCHEDULES_B
275
276 SET
277
278 ACTIVITY_ATTRIBUTE6 = 'Y'
279
280 WHERE
281
282 SCHEDULE_ID = p_campaign_schedule_id;
283
284 -- msista 11/29
285
286 COMMIT;
287
288 ELSE
289
290 FOR i in 1..fnd_msg_pub.COUNT_MSG() LOOP
291
292 FND_MSG_PUB.Get(i, fnd_api.g_true, l_msg_data, l_msg_count);
293
294 x_msg_data := x_msg_data || ',' || l_msg_data;
295
296 END LOOP;
297
298 x_return_value := 0;
299
300 END IF;
301
302
303
304 EXCEPTION
305
306 WHEN OTHERS THEN
307
308 FOR i in 1..fnd_msg_pub.COUNT_MSG() LOOP
309
310 FND_MSG_PUB.Get(i, fnd_api.g_true, l_msg_data, l_msg_count);
311
312 x_msg_data := x_msg_data || ',' || l_msg_data;
313
314 END LOOP;
315
316 x_msg_data := x_msg_data || ',' || 'IEC_ERR_UPD_CAMP_FAIL';
317
318 x_return_value := 0;
319
320
321
322 END Update_Camp_Schedule;
323
324
325
326
327
328
329
330
331
332
333
334 --===================================================================
335
336 -- NAME
337
338 -- Update_List_DialingMethod
339
340 --
341
342 -- PURPOSE
343
344 -- Private api to Update List headers.
345
346 --
347
348 -- NOTES
349
350 -- 1. AO Admin will use this procedure to update List Header
351
352 -- parameters.
353
354 --
355
356 -- HISTORY
357
358 -- 03-Aug-2001 GPAGADAL Created
359
360
361
362 --===================================================================
363
364 PROCEDURE Update_List_DialingMethod(
365
366
367
368 p_campaign_schedule_id IN NUMBER,
369
370 -- dialing_method used for CTI disabled
371
372 p_dialing_method IN VARCHAR2,
373
374
375
376 p_user_id IN NUMBER,
377
378
379
380 x_msg_data OUT NOCOPY VARCHAR2,
381
382 x_return_value OUT NOCOPY NUMBER
383
384
385
386 )
387
388 IS
389
390
391
392 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_List_DialingMethod';
393
394 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
395
396
397
398
399
400 l_list_header_rec AMS_LISTHEADER_PVT.list_header_rec_type;
401
402
403
404 l_msg_count NUMBER;
405
406 l_msg_data VARCHAR2(240);
407
408 l_one_msg VARCHAR2(100);
409
410 l_object_version_number NUMBER;
411
412
413
414 x_return_status VARCHAR2(10);
415
416
417
418 CURSOR l_list_headers(campaign_schedule_id NUMBER) IS
419
420 SELECT LIST_HEADER_ID FROM AMS_ACT_LISTS WHERE LIST_USED_BY_ID = campaign_schedule_id;
421
422
423
424 BEGIN
425
426
427
428 fnd_msg_pub.delete_msg();
429
430
431
432 -- Standard Start of API savepoint
433
434 SAVEPOINT UPDATE_list_header;
435
436
437
438 -- Initialize outgoing parameters
439
440 x_msg_data := '';
441
442 x_return_value := 1;
443
444
445
446 -- Initialize API return status to SUCCESS
447
448 x_return_status := FND_API.G_RET_STS_SUCCESS;
449
450
451
452 IF p_dialing_method = 'MAN' THEN
453
454
455
456 FOR l_list_header_id_rec IN l_list_headers(p_campaign_schedule_id) LOOP
457
458
459
460 -- Initialize list header rec
461
462 AMS_ListHeader_PVT.Init_ListHeader_Rec(l_list_header_rec);
463
464
465
466 l_list_header_rec.list_header_id := l_list_header_id_rec.LIST_HEADER_ID;
467
468
469
470 l_list_header_rec.dialing_method := 'MAN';
471
472 l_list_header_rec.last_update_date := sysdate;
473
474 l_list_header_rec.last_updated_by := p_user_id;
475
476
477
478 -- fetch the object_version_number from db
479
480 SELECT
481
482 OBJECT_VERSION_NUMBER into l_list_header_rec.object_version_number
483
484 FROM AMS_LIST_HEADERS_ALL
485
486 WHERE LIST_HEADER_ID = l_list_header_rec.list_header_id;
487
488
489
490 AMS_ListHeader_PUB.Update_ListHeader( l_api_version_number,
491
492 FND_API.G_FALSE,
493
494 FND_API.G_TRUE,
495
496 FND_API.G_VALID_LEVEL_FULL,
497
498 x_return_status,
499
500 l_msg_count,
501
502 l_msg_data,
503
504 l_list_header_rec
505
506 );
507
508
509
510 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
511
512 FOR i in 1..fnd_msg_pub.COUNT_MSG() LOOP
513
514 FND_MSG_PUB.Get(i, fnd_api.g_true, l_msg_data, l_msg_count);
515
516 x_msg_data := x_msg_data || ',' || l_msg_data;
517
518 END LOOP;
519
520 x_return_value := 0;
521
522 END IF;
523
524
525
526 END LOOP;
527
528
529
530 END IF;
531
532
533
534 EXCEPTION
535
536 WHEN OTHERS THEN
537
538 FOR i in 1..fnd_msg_pub.COUNT_MSG() LOOP
539
540 FND_MSG_PUB.Get(i, fnd_api.g_true, l_msg_data, l_msg_count);
541
542 x_msg_data := x_msg_data || ',' || l_msg_data;
543
544 END LOOP;
545
546 x_msg_data := x_msg_data || ',' || 'IEC_ERR_UPD_CAMP_FAIL';
547
548 x_return_value := 0;
549
550
551
552 END Update_List_DialingMethod;
553
554
555
556
557
558 --===================================================================
559
560 -- NAME
561
562 -- Update_List_Header
563
564 --
565
566 -- PURPOSE
567
568 -- Private api to Update List headers.
569
570 --
571
572 -- NOTES
573
574 -- 1. AO Admin will use this procedure to update List Header
575
576 -- parameters.
577
578 --
579
580 -- HISTORY
581
582 -- 30-Apr-2001 MSISTA Created
583
584 --===================================================================
585
586 PROCEDURE Update_List_Header(
587
588 p_list_header_id IN NUMBER,
589
590 p_dialing_method IN VARCHAR2,
591
592 p_list_priority IN NUMBER,
593
594 p_recycling_alg_id IN NUMBER,
595
596 p_release_control_alg_id IN NUMBER,
597
598 p_calendar_id IN NUMBER,
599
600 p_release_strategy IN VARCHAR2,
601
602 p_quantum IN NUMBER,
603
604 p_quota IN NUMBER := null,
605
606 p_quota_reset IN NUMBER := null,
607
608
609
610 p_user_id IN NUMBER,
611
612
613
614 x_msg_data OUT NOCOPY VARCHAR2,
615
616 x_return_value OUT NOCOPY NUMBER
617
618 )
619
620
621
622 IS
623
624
625
626 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_List_Header';
627
628 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
629
630
631
632 l_list_header_rec AMS_LISTHEADER_PVT.list_header_rec_type;
633
634
635
636 l_msg_count NUMBER;
637
638 l_msg_data VARCHAR2(240);
639
640 l_one_msg VARCHAR2(100);
641
642 l_object_version_number NUMBER;
643
644
645
646 x_return_status VARCHAR2(10);
647
648
649
650 BEGIN
651
652
653
654 fnd_msg_pub.delete_msg();
655
656
657
658
659
660 -- Standard Start of API savepoint
661
662 SAVEPOINT UPDATE_list_header;
663
664
665
666 -- Initialize outgoing parameter values
667
668 x_msg_data := '';
669
670 x_return_value := 1;
671
672
673
674 -- Initialize API return status to SUCCESS
675
676 x_return_status := FND_API.G_RET_STS_SUCCESS;
677
678
679
680 -- Initialize list header rec
681
682 AMS_ListHeader_PVT.Init_ListHeader_Rec(l_list_header_rec);
683
684
685
686 l_list_header_rec.list_header_id := p_list_header_id;
687
688 l_list_header_rec.dialing_method := p_dialing_method;
689
690 l_list_header_rec.list_priority := p_list_priority;
691
692 l_list_header_rec.release_control_alg_id := p_release_control_alg_id;
693
694 l_list_header_rec.release_strategy := p_release_strategy;
695
696 l_list_header_rec.quantum := p_quantum;
697
698 l_list_header_rec.calling_calendar_id := p_calendar_id;
699
700 --l_list_header_rec.recycling_alg_id := p_recycling_alg_id;
701
702 --l_list_header_rec.quota := p_quota;
703
704 --l_list_header_rec.quota_reset := p_quota_reset;
705
706
707
708 l_list_header_rec.last_update_date := sysdate;
709
710 l_list_header_rec.last_updated_by := p_user_id;
711
712
713
714 AMS_ListHeader_PVT.Update_ListHeader( l_api_version_number,
715
716 FND_API.G_FALSE,
717
718 FND_API.G_TRUE,
719
720 FND_API.G_VALID_LEVEL_FULL,
721
722 x_return_status,
723
724 l_msg_count,
725
726 l_msg_data,
727
728 l_list_header_rec
729
730 );
731
732
733
734 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
735
736 UPDATE AMS_LIST_HEADERS_ALL
737
738 SET
739
740 RECYCLING_ALG_ID = p_recycling_alg_id,
741
742 QUOTA = p_quota,
743
744 QUOTA_RESET = p_quota_reset,
745
746 CALL_CENTER_READY_FLAG = 'Y'
747
748 WHERE
749
750 LIST_HEADER_ID = p_list_header_id;
751
752 -- msista 11/29
753
754 COMMIT;
755
756 ELSE
757
758 FOR i in 1..fnd_msg_pub.COUNT_MSG() LOOP
759
760 FND_MSG_PUB.Get(i, fnd_api.g_true, l_msg_data, l_msg_count);
761
762 x_msg_data := x_msg_data || ',' || l_msg_data;
763
764 END LOOP;
765
766 x_return_value := 0;
767
768 END IF;
769
770
771
772 EXCEPTION
773
774
775
776 WHEN OTHERS THEN
777
778 FOR i in 1..fnd_msg_pub.COUNT_MSG() LOOP
779
780 FND_MSG_PUB.Get(i, fnd_api.g_true, l_msg_data, l_msg_count);
781
782 x_msg_data := x_msg_data || ',' || l_msg_data;
783
784 END LOOP;
785
786 x_msg_data := x_msg_data || ',' || 'IEC_ERR_UPD_LIST_FAIL';
787
788 x_return_value := 0;
789
790
791
792 END Update_List_Header;
793
794
795
796 --===================================================================
797
798 -- NAME
799
800 -- Delete_List_Subset
801
802 --
803
804 -- PURPOSE
805
806 -- Private api to delete a list subset and all dependent data in a cascading fashion.
807
808 --
809
810 -- NOTES
811
812 -- 1. AO Admin will use this procedure to delete a List subset.
813
814 --
815
816 -- HISTORY
817
818 -- 09-May-2001 MSISTA Created
819
820 --===================================================================
821
822 PROCEDURE Delete_List_Subset(
823
824 p_list_subset_id IN NUMBER,
825
826 p_user_id IN NUMBER,
827
828 x_msg_data OUT NOCOPY VARCHAR2,
829
830 x_return_value OUT NOCOPY NUMBER
831
832 )
833
834 IS
835
836
837
838 L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_List_Subset';
839
840 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
841
842
843
844 BEGIN
845
846
847
848 -- Standard Start of API savepoint
849
850 SAVEPOINT Delete_List_Subset;
851
852
853
854 -- Initialize outgoing parameters
855
856 x_msg_data := '';
857
858 x_return_value := 1;
859
860
861
862 UPDATE IEC_G_LIST_SUBSETS SET STATUS_CODE='DELETED'
863
864 WHERE LIST_SUBSET_ID = p_list_subset_id;
865
866
867
868 COMMIT;
869
870
871
872 EXCEPTION
873
874
875
876 WHEN OTHERS THEN
877
878 x_msg_data := 'IEC_ERR_DEL_SUBSET_FAIL';
879
880 x_return_value := 0;
881
882
883
884 END Delete_List_Subset;
885
886
887
888
889
890 -- ===============================================================
891
892 -- Start of Comments
893
894 -- ===============================================================
895
896 -- API Name
897
898 -- GET_TG_ENTRY_LIST
899
900 --
901
902 -- Used by Target Group Entry List Page to show the list
903
904 -- of entries belonging to a certain target group.
905
906 -- This procedure also gathers data for the page header and footer.
907
908 --
909
910 -- Type: Private
911
912 --
913
914 -- Parameters
915
916 -- IN
917
918 -- P_LIST_HEADER_ID IN NUMBER
919
920 -- , P_SEARCH_COLUMN IN VARCHAR2
921
922 -- , P_SEARCH_OPERATOR IN VARCHAR2
923
924 -- , P_SEARCH_PARAM IN VARCHAR2
925
926 -- , P_ORDER_BY IN NUMBER
927
928 -- , P_NEXT_ROW IN NUMBER
929
930 -- , P_MAX_ROWS IN NUMBER
931
932 -- , P_ORDER IN VARCHAR2
933
934 --
935
936 -- OUT
937
938 -- X_HEADER_DATA OUT NOCOPY TG_ENTRY_CURSOR
939
940 -- , X_CONTACT_POINT_DATA OUT NOCOPY TG_ENTRY_CURSOR
941
942 -- , X_TOTAL_ENTRIES OUT NUMBER
943
944 --
945
946 -- Version : Current version 1.0
947
948 --
949
950 -- End of Comments
951
952 -- ===============================================================
953
954 PROCEDURE GET_TG_ENTRY_LIST
955
956 ( P_LIST_HEADER_ID IN NUMBER
957
958 , P_SEARCH_COLUMN IN VARCHAR2
959
960 , P_SEARCH_OPERATOR IN VARCHAR2
961
962 , P_SEARCH_PARAM IN VARCHAR2
963
964 , P_ORDER_BY IN NUMBER
965
966 , P_NEXT_ROW IN NUMBER
967
968 , P_MAX_ROWS IN NUMBER
969
970 , P_ORDER IN VARCHAR2
971
972 , X_HEADER_DATA OUT NOCOPY TG_ENTRY_CURSOR
973
974 , X_ENTRY_DATA OUT NOCOPY TG_ENTRY_CURSOR
975
976 , X_TOTAL_ENTRIES OUT NOCOPY NUMBER )
977
978 AS
979
980 l_header_cursor TG_ENTRY_CURSOR;
981
982 l_entries_cursor TG_ENTRY_CURSOR;
983
984
985
986 l_source_type_view VARCHAR2(500);
987
988
989
990 l_header_stmt VARCHAR2(2000);
991
992 l_footer_stmt VARCHAR2(2000);
993
994
995
996 l_row_count NUMBER(10);
997
998 l_cp_count_stmt VARCHAR2(1000);
999
1000 l_cp_valid_count_stmt VARCHAR2(1000);
1001
1002 l_cp_invalid_count_stmt VARCHAR2(2000);
1003
1004 l_entries_stmt_temp VARCHAR2(3000);
1005
1006 l_entries_stmt VARCHAR2(6000);
1007
1008
1009
1010 l_search_clause VARCHAR2(3000);
1011
1012
1013
1014 BEGIN
1015
1016
1017
1018 -- get the source type view for this list
1019
1020 IEC_COMMON_UTIL_PVT.Get_SourceTypeView(P_LIST_HEADER_ID, l_source_type_view);
1021
1022
1023
1024 -- First get the header data: campaign, schedule, and target group names
1025
1026 l_header_stmt := ' SELECT ' ||
1027
1028 ' campaigns.CAMPAIGN_NAME, schedules.SCHEDULE_NAME, lists_vl.LIST_NAME ' ||
1029
1030 ' FROM ' ||
1031
1032 ' AMS_LIST_HEADERS_VL lists_vl, AMS_ACT_LISTS act_lists, AMS_CAMPAIGN_SCHEDULES_VL schedules, AMS_CAMPAIGNS_VL campaigns ' ||
1033
1034 ' WHERE ' ||
1035
1036 ' lists_vl.LIST_HEADER_ID = :1 ' ||
1037
1038 ' AND lists_vl.LIST_HEADER_ID = act_lists.LIST_HEADER_ID ' ||
1039
1040 ' AND act_lists.LIST_USED_BY_ID = schedules.SCHEDULE_ID ' ||
1041
1042 ' AND schedules.CAMPAIGN_ID = campaigns.CAMPAIGN_ID ';
1043
1044
1045
1046 -- Populate cursor
1047
1048 OPEN l_header_cursor for l_header_stmt using P_LIST_HEADER_ID;
1049
1050 X_HEADER_DATA := l_header_cursor;
1051
1052
1053
1054 -- Next get the list of target group entries
1055
1056
1057
1058 -- Get the max row count
1059
1060 l_row_count := P_NEXT_ROW + P_MAX_ROWS;
1061
1062
1063
1064 -- temporary strings that will be used to build the final query
1065
1066 l_cp_count_stmt := ' Get_Contact_Point_Count( ' ||
1067
1068 ' NVL(PHONE_NUMBER_S1, RAW_PHONE_NUMBER_S1), ' ||
1069
1070 ' NVL(PHONE_NUMBER_S2, RAW_PHONE_NUMBER_S2), ' ||
1071
1072 ' NVL(PHONE_NUMBER_S3, RAW_PHONE_NUMBER_S3), ' ||
1073
1074 ' NVL(PHONE_NUMBER_S4, RAW_PHONE_NUMBER_S4), ' ||
1075
1076 ' NVL(PHONE_NUMBER_S5, RAW_PHONE_NUMBER_S5), ' ||
1077
1078 ' NVL(PHONE_NUMBER_S6, RAW_PHONE_NUMBER_S6) ) ';
1079
1080
1081
1082 l_cp_invalid_count_stmt := ' Get_Invalid_CP_Count( ' ||
1083
1084 ' NVL(PHONE_NUMBER_S1, RAW_PHONE_NUMBER_S1), REASON_CODE_S1, ' ||
1085
1086 ' NVL(PHONE_NUMBER_S2, RAW_PHONE_NUMBER_S2), REASON_CODE_S2, ' ||
1087
1088 ' NVL(PHONE_NUMBER_S3, RAW_PHONE_NUMBER_S3), REASON_CODE_S3, ' ||
1089
1090 ' NVL(PHONE_NUMBER_S4, RAW_PHONE_NUMBER_S4), REASON_CODE_S4, ' ||
1091
1092 ' NVL(PHONE_NUMBER_S5, RAW_PHONE_NUMBER_S5), REASON_CODE_S5, ' ||
1093
1094 ' NVL(PHONE_NUMBER_S6, RAW_PHONE_NUMBER_S6), REASON_CODE_S6 ) ';
1095
1096
1097
1098 l_cp_valid_count_stmt := ' ( ' || l_cp_count_stmt || ' - ' || l_cp_invalid_count_stmt || ' ) ';
1099
1100
1101
1102
1103
1104 l_search_clause := '';
1105
1106
1107
1108 IF P_SEARCH_PARAM IS NOT NULL THEN
1109
1110
1111
1112 IF P_SEARCH_COLUMN IN ('PERSON_FIRST_NAME', 'PERSON_LAST_NAME', 'LIST.LIST_ENTRY_ID', 'PARTY_ID' ) THEN
1113
1114 l_search_clause := ' AND ' || P_SEARCH_COLUMN || P_SEARCH_OPERATOR || '''' || P_SEARCH_PARAM || '''';
1115
1116 ELSE
1117
1118 IF P_SEARCH_COLUMN = 'NUM_CPS' THEN
1119
1120 l_search_clause := ' AND ' || l_cp_count_stmt || P_SEARCH_OPERATOR || P_SEARCH_PARAM;
1121
1122 ELSIF P_SEARCH_COLUMN = 'NUM_VALID_CPS' THEN
1123
1124 l_search_clause := ' AND ' || l_cp_valid_count_stmt || P_SEARCH_OPERATOR || P_SEARCH_PARAM;
1125
1126 ELSIF P_SEARCH_COLUMN = 'NUM_INVALID_CPS' THEN
1127
1128 l_search_clause := ' AND ' || l_cp_invalid_count_stmt || P_SEARCH_OPERATOR || P_SEARCH_PARAM;
1129
1130 END IF;
1131
1132 END IF;
1133
1134
1135
1136 END IF;
1137
1138
1139
1140 l_entries_stmt_temp := ' SELECT ' ||
1141
1142 ' PERSON_FIRST_NAME, PERSON_LAST_NAME, ' ||
1143
1144 ' LIST.LIST_ENTRY_ID LIST_ENTRY_ID, PARTY_ID, ' ||
1145
1146 l_cp_count_stmt || ' NUM_CPS, ' ||
1147
1148 l_cp_valid_count_stmt || ' NUM_VALID_CPS, ' ||
1149
1150 l_cp_invalid_count_stmt || ' NUM_INVALID_CPS ' ||
1151
1152 ' FROM ' ||
1153
1154 l_source_type_view || ' LIST, ' ||
1155
1156 ' IEC_O_VALIDATION_REPORT_DETS VAL ' ||
1157
1158 ' WHERE ' ||
1159
1160 ' LIST.LIST_HEADER_ID = :1 ' || -- P_LIST_HEADER_ID
1161
1162 ' AND LIST.ENABLED_FLAG = ''Y'' ' ||
1163
1164 ' AND LIST.LIST_HEADER_ID = VAL.LIST_HEADER_ID(+) ' ||
1165
1166 ' AND LIST.LIST_ENTRY_ID = VAL.LIST_ENTRY_ID(+) ' ||
1167
1168 l_search_clause ||
1169
1170 ' ORDER BY ' || P_ORDER_BY || ' ' || P_ORDER;
1171
1172
1173
1174 l_entries_stmt := ' SELECT ' ||
1175
1176 ' PERSON_FIRST_NAME, PERSON_LAST_NAME, ' ||
1177
1178 ' LIST_ENTRY_ID, PARTY_ID, ' ||
1179
1180 ' NUM_CPS, NUM_VALID_CPS, NUM_INVALID_CPS ' ||
1181
1182 ' FROM ' ||
1183
1184 ' ( SELECT PERSON_FIRST_NAME, PERSON_LAST_NAME, LIST_ENTRY_ID, PARTY_ID, NUM_CPS, NUM_VALID_CPS, NUM_INVALID_CPS ' ||
1185
1186 ' FROM ( ' || l_entries_stmt_temp || ' ) AA WHERE ROWNUM <= :2 ) A ' || -- l_row_count
1187
1188 ' WHERE ' ||
1189
1190 ' A.LIST_ENTRY_ID NOT IN ' ||
1191
1192 ' ( SELECT LIST_ENTRY_ID FROM ( ' || l_entries_stmt_temp || ' ) BB WHERE ROWNUM <= :4 ) ' || -- P_NEXT_ROW
1193
1194 ' ORDER BY ' || P_ORDER_BY || ' ' || P_ORDER;
1195
1196
1197
1198 -- Populate cursor
1199
1200 OPEN l_entries_cursor for l_entries_stmt using P_LIST_HEADER_ID, l_row_count,
1201
1202 P_LIST_HEADER_ID, P_NEXT_ROW;
1203
1204 X_ENTRY_DATA := l_entries_cursor;
1205
1206
1207
1208
1209
1210 -- Then get the footer data: number of entries in total
1211
1212 EXECUTE IMMEDIATE
1213
1214 ' SELECT COUNT(LIST_ENTRY_ID)
1215
1216 FROM ' || '( ' || l_entries_stmt_temp || ' ) A '
1217
1218 INTO X_TOTAL_ENTRIES
1219
1220 USING P_LIST_HEADER_ID;
1221
1222
1223
1224 return;
1225
1226
1227
1228 END GET_TG_ENTRY_LIST;
1229
1230
1231
1232
1233
1234 -- ===============================================================
1235
1236 -- Start of Comments
1237
1238 -- ===============================================================
1239
1240 -- API Name
1241
1242 -- GET_TG_ENTRY_DETAILS
1243
1244 --
1245
1246 -- Used by Target Group Entry Details Page to show the details
1247
1248 -- (including contact points) belonging to a certain entry.
1249
1250 -- This procedure also gathers data for the page header.
1251
1252 -- A list of timezones is also displayed on the page; their
1253
1254 -- translations are fetched here.
1255
1256 --
1257
1258 -- Type: Private
1259
1260 --
1261
1262 -- Parameters
1263
1264 -- IN
1265
1266 -- P_LIST_HEADER_ID IN NUMBER
1267
1268 -- , P_LIST_ENTRY_ID IN NUMBER
1269
1270 -- , P_LANGUAGE IN VARCHAR2
1271
1272 --
1273
1274 -- OUT
1275
1276 -- X_HEADER_DATA OUT NOCOPY TG_ENTRY_CURSOR
1277
1278 -- , X_CONTACT_POINT_DATA OUT NOCOPY TG_ENTRY_CURSOR
1279
1280 -- , X_TIME_ZONE_DATA OUT NOCOPY TG_ENTRY_CURSOR
1281
1282 --
1283
1284 -- Version : Current version 1.0
1285
1286 --
1287
1288 -- End of Comments
1289
1290 -- ===============================================================
1291
1292 PROCEDURE GET_TG_ENTRY_DETAILS
1293
1294 ( P_LIST_HEADER_ID IN NUMBER
1295
1296 , P_LIST_ENTRY_ID IN NUMBER
1297
1298 , P_LANGUAGE IN VARCHAR2
1299
1300 , X_HEADER_DATA OUT NOCOPY TG_ENTRY_CURSOR
1301
1302 , X_CONTACT_POINT_DATA OUT NOCOPY TG_ENTRY_CURSOR
1303
1304 , X_TIME_ZONE_DATA OUT NOCOPY TG_ENTRY_CURSOR )
1305
1306 AS
1307
1308 l_header_cursor TG_ENTRY_CURSOR;
1309
1310 l_contact_point_cursor TG_ENTRY_CURSOR;
1311
1312 l_time_zone_cursor TG_ENTRY_CURSOR;
1313
1314
1315
1316 l_header_stmt VARCHAR2(2000);
1317
1318 l_contact_point_stmt VARCHAR2(2000);
1319
1320 l_time_zone_stmt VARCHAR2(2000);
1321
1322 l_source_type_view VARCHAR2(500);
1323
1324
1325
1326 BEGIN
1327
1328
1329
1330 -- get the source type view for this list
1331
1332 IEC_COMMON_UTIL_PVT.Get_SourceTypeView(P_LIST_HEADER_ID, l_source_type_view);
1333
1334
1335
1336 -- First get the header data: campaign, schedule, and target group names
1337
1338 l_header_stmt := ' SELECT ' ||
1339
1340 ' campaigns.CAMPAIGN_NAME, schedules.SCHEDULE_NAME, lists_vl.LIST_NAME, ' ||
1341
1342 ' list_entries.PERSON_FIRST_NAME, list_entries.PERSON_LAST_NAME, list_entries.PARTY_ID ' ||
1343
1344 ' FROM ' ||
1345
1346 ' AMS_LIST_HEADERS_VL lists_vl, AMS_ACT_LISTS act_lists, AMS_CAMPAIGN_SCHEDULES_VL schedules, AMS_CAMPAIGNS_VL campaigns, ' ||
1347
1348 l_source_type_view || ' list_entries ' ||
1349
1350 ' WHERE ' ||
1351
1352 ' list_entries.LIST_ENTRY_ID = :1 ' ||
1353
1354 ' AND list_entries.LIST_HEADER_ID = :2 ' ||
1355
1356 ' AND list_entries.LIST_HEADER_ID = lists_vl.LIST_HEADER_ID ' ||
1357
1358 ' AND lists_vl.LIST_HEADER_ID = act_lists.LIST_HEADER_ID ' ||
1359
1360 ' AND act_lists.LIST_USED_BY_ID = schedules.SCHEDULE_ID ' ||
1361
1362 ' AND schedules.CAMPAIGN_ID = campaigns.CAMPAIGN_ID ';
1363
1364
1365
1366 -- Next get the list of contact points
1367
1368 l_contact_point_stmt := ' SELECT ' ||
1369
1370 ' CONTACT_POINT_ID_S1, PHONE_COUNTRY_CODE_S1, PHONE_AREA_CODE_S1, PHONE_NUMBER_S1, RAW_PHONE_NUMBER_S1, TIME_ZONE_S1, Get_Translated_DNU_Reason(DO_NOT_USE_REASON_S1), REASON_CODE_S1, ' ||
1371
1372 ' CONTACT_POINT_ID_S2, PHONE_COUNTRY_CODE_S2, PHONE_AREA_CODE_S2, PHONE_NUMBER_S2, RAW_PHONE_NUMBER_S2, TIME_ZONE_S2, Get_Translated_DNU_Reason(DO_NOT_USE_REASON_S2), REASON_CODE_S2, ' ||
1373
1374 ' CONTACT_POINT_ID_S3, PHONE_COUNTRY_CODE_S3, PHONE_AREA_CODE_S3, PHONE_NUMBER_S3, RAW_PHONE_NUMBER_S3, TIME_ZONE_S3, Get_Translated_DNU_Reason(DO_NOT_USE_REASON_S3), REASON_CODE_S3, ' ||
1375
1376 ' CONTACT_POINT_ID_S4, PHONE_COUNTRY_CODE_S4, PHONE_AREA_CODE_S4, PHONE_NUMBER_S4, RAW_PHONE_NUMBER_S4, TIME_ZONE_S4, Get_Translated_DNU_Reason(DO_NOT_USE_REASON_S4), REASON_CODE_S4, ' ||
1377
1378 ' CONTACT_POINT_ID_S5, PHONE_COUNTRY_CODE_S5, PHONE_AREA_CODE_S5, PHONE_NUMBER_S5, RAW_PHONE_NUMBER_S5, TIME_ZONE_S5, Get_Translated_DNU_Reason(DO_NOT_USE_REASON_S5), REASON_CODE_S5, ' ||
1379
1380 ' CONTACT_POINT_ID_S6, PHONE_COUNTRY_CODE_S6, PHONE_AREA_CODE_S6, PHONE_NUMBER_S6, RAW_PHONE_NUMBER_S6, TIME_ZONE_S6, Get_Translated_DNU_Reason(DO_NOT_USE_REASON_S6), REASON_CODE_S6 ' ||
1381
1382 ' FROM ' ||
1383
1384 l_source_type_view || ' LIST, ' ||
1385
1386 ' IEC_O_VALIDATION_REPORT_DETS VAL ' ||
1387
1388 ' WHERE ' ||
1389
1390 ' LIST.LIST_HEADER_ID = :1 ' ||
1391
1392 ' AND LIST.LIST_HEADER_ID = VAL.LIST_HEADER_ID(+) ' ||
1393
1394 ' AND LIST.LIST_ENTRY_ID = :2 ' ||
1395
1396 ' AND LIST.LIST_ENTRY_ID = VAL.LIST_ENTRY_ID(+) ';
1397
1398
1399
1400 -- Finally get the time zone info
1401
1402 l_time_zone_stmt := ' SELECT ' ||
1403
1404 ' B.UPGRADE_TZ_ID, T.TIMEZONE_CODE ' ||
1405
1406 ' FROM ' ||
1407
1408 ' FND_TIMEZONES_B B, FND_TIMEZONES_TL T ' ||
1409
1410 ' WHERE ' ||
1411
1412 ' B.TIMEZONE_CODE = T.TIMEZONE_CODE ' ||
1413
1414 ' AND T.LANGUAGE = :1 ' || -- P_LANGUAGE
1415
1416 ' ORDER BY T.TIMEZONE_CODE ASC ';
1417
1418
1419
1420 OPEN l_header_cursor for l_header_stmt using P_LIST_ENTRY_ID, P_LIST_HEADER_ID;
1421
1422 X_HEADER_DATA := l_header_cursor;
1423
1424
1425
1426 OPEN l_contact_point_cursor for l_contact_point_stmt using P_LIST_HEADER_ID, P_LIST_ENTRY_ID;
1427
1428 X_CONTACT_POINT_DATA := l_contact_point_cursor;
1429
1430
1431
1432 OPEN l_time_zone_cursor for l_time_zone_stmt using P_LANGUAGE;
1433
1434 X_TIME_ZONE_DATA := l_time_zone_cursor;
1435
1436
1437
1438 return;
1439
1440
1441
1442 END GET_TG_ENTRY_DETAILS;
1443
1444 PROCEDURE Copy_Calendar_Day(
1445
1446 p_calendar_id IN NUMBER,
1447 p_day_id IN NUMBER,
1448 p_copyto_code IN VARCHAR2,
1449 p_createdBy IN NUMBER,
1450 p_creationDate IN DATE,
1451 p_updatedBy IN NUMBER,
1452 p_updateDate IN DATE,
1453 p_updateLogin IN NUMBER,
1454 p_versionNumber IN NUMBER
1455 )
1456 AS
1457 l_day_copyto_id NUMBER;
1458 cursor c_copy is
1459 select CALLABLE_REGION_CODE, START_TIME, END_TIME, TYPE_CODE from iec_g_cal_callable_rgns
1460 where DAY_ID = p_day_id;
1461 BEGIN
1462 select day_id into l_day_copyto_id from iec_g_cal_days_b where CALENDAR_ID = p_calendar_id
1463 and DAY_CODE = 'DAY_OF_WEEK' and PATTERN_CODE = p_copyto_code;
1464
1465 delete from iec_g_cal_callable_rgns where DAY_ID = l_day_copyto_id;
1466 for v_copy in c_copy loop
1467 insert into iec_g_cal_callable_rgns(CALLABLE_REGION_ID, DAY_ID, CALLABLE_REGION_CODE,
1468 START_TIME, END_TIME, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN,
1469 OBJECT_VERSION_NUMBER, TYPE_CODE)
1470 values (IEC_G_CAL_CALLABLE_RGNS_S.NEXTVAL,l_day_copyto_id,v_copy.CALLABLE_REGION_CODE,
1471 v_copy.START_TIME, v_copy.END_TIME,p_createdBy, p_creationDate,p_updatedBy,p_updateDate,
1472 p_updateLogin, p_versionNumber,v_copy.TYPE_CODE);
1473 end loop;
1474 commit;
1475
1476 END Copy_Calendar_Day;
1477
1478 END IEC_ADMIN_PVT;
1479