[Home] [Help]
PACKAGE BODY: APPS.AMS_SCHEDULER_PVT
Source
1 PACKAGE BODY AMS_SCHEDULER_PVT AS
2 /* $Header: amsvrptb.pls 120.3.12000000.3 2007/07/18 06:06:27 amlal ship $*/
3 --
4
5 G_PKG_NAME CONSTANT VARCHAR2(30):='AMS_SCHEDULER_PVT';
6 G_FILE_NAME CONSTANT VARCHAR2(15):='amsvrptb.pls';
7 g_log_level CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
8
9 --========================================================================
10 -- PROCEDURE
11 -- WRITE_LOG
12 -- Purpose
13 -- This method will be used to write logs for this api
14 -- HISTORY
15 -- 10-Oct-2000 dbiswas Created.
16 --
17 --========================================================================
18
19 PROCEDURE WRITE_LOG ( p_api_name IN VARCHAR2,
20 p_log_message IN VARCHAR2 )
21 IS
22
23 l_api_name VARCHAR2(30);
24 l_log_mesg VARCHAR2(2000);
25 l_return_status VARCHAR2(1);
26 BEGIN
27 l_api_name := p_api_name;
28 l_log_mesg := p_log_message;
29 AMS_Utility_PVT.debug_message (
30 p_log_level => g_log_level,
31 p_module_name => 'ams.plsql.'||'.'|| g_pkg_name||'.'||l_api_name,
32 p_text => p_log_message
33 );
34
35 AMS_Utility_PVT.Create_Log (
36 x_return_status => l_return_status,
37 p_arc_log_used_by => 'CSCH',
38 p_log_used_by_id => 1,
39 p_msg_data => 'amsvrptb.pls: '||p_log_message,
40 p_msg_type => 'DEBUG'
41 );
42 END WRITE_LOG;
43
44
45 FUNCTION Target_Group_Exist (p_schedule_id IN NUMBER --)
46 , p_obj_type IN VARCHAR2 :='CSCH')
47 RETURN VARCHAR2
48 IS
49 CURSOR c_target_det
50 IS SELECT 1
51 FROM ams_act_lists la
52 WHERE list_act_type = 'TARGET'
53 AND list_used_by = p_obj_type --'CSCH'
54 AND list_used_by_id = p_schedule_id
55 AND EXISTS (SELECT *
56 FROM ams_list_entries le
57 WHERE le.list_header_id = la.list_header_id) ;
58 l_dummy NUMBER ;
59 BEGIN
60 OPEN c_target_det ;
61 FETCH c_target_det INTO l_dummy ;
62 CLOSE c_target_det ;
63
64 IF l_dummy IS NULL THEN
65 RETURN FND_API.g_false ;
66 ELSE
67 RETURN FND_API.g_true;
68 END IF;
69
70 END Target_Group_Exist ;
71
72
73 --========================================================================
74 --PROCEDURE
75 -- Schedule_Repeat
76 -- Purpose
77 -- This package calculates next run for repeating schedules
78 -- HISTORY
79 -- 10-Oct-2000 dbiswas Created.
80 -- 29-aug-2005 soagrawa Modified to add debug component for R12 Monitors / Rpt Sch
81 --========================================================================
82
83 PROCEDURE Schedule_Repeat ( p_last_run_date IN DATE,
84 p_frequency IN NUMBER,
85 p_frequency_type IN VARCHAR2,
86 x_next_run_date OUT NOCOPY DATE,
87 x_return_status OUT NOCOPY VARCHAR2,
88 x_msg_count OUT NOCOPY NUMBER,
89 x_msg_data OUT NOCOPY VARCHAR2)
90 IS
91
92 l_last_run_date DATE ;
93 l_frequency NUMBER;
94 l_frequency_type VARCHAR2(30);
95 l_next_run_date DATE ;
96 l_api_name VARCHAR2(30);
97 l_msg_count NUMBER;
98 l_msg_data VARCHAR2(2000);
99 l_debug_mode VARCHAR2(30);
100 --
101 BEGIN
102 x_return_status := FND_API.G_RET_STS_SUCCESS;
103 l_api_name :='Schedule_Repeat';
104 l_last_run_date := p_last_run_date;
105 l_frequency := p_frequency;
106 l_frequency_type := p_frequency_type;
107
108 WRITE_LOG(l_api_name, 'Schedule_Repeat: Start'||'.'||p_last_run_date);
109 WRITE_LOG(l_api_name, 'Schedule_Repeat: Frequency type is '||l_frequency_type);
110 WRITE_LOG(l_api_name, 'Schedule_Repeat: Frequency is '||l_frequency);
111 WRITE_LOG(l_api_name, 'Schedule_Repeat: Last run date is '||l_last_run_date);
112
113 l_debug_mode := FND_PROFILE.value('AMS_MONITOR_DEBUG_INTERVAL');
114
115 WRITE_LOG(l_api_name, 'Schedule_Repeat: Debug Mode is '||l_debug_mode);
116
117 IF l_debug_mode IS NOT NULL THEN
118 l_next_run_date := l_last_run_date + (to_number(l_debug_mode)/(24*60)) ;
119 ELSIF l_frequency_type = 'DAILY' THEN
120 l_next_run_date := l_last_run_date + l_frequency;
121 ELSIF l_frequency_type = 'WEEKLY' THEN
122 l_next_run_date := l_last_run_date + (7 * l_frequency) ;
123 ELSIF l_frequency_type = 'MONTHLY' THEN
124 l_next_run_date := add_months(l_last_run_date , l_frequency) ;
125 ELSIF l_frequency_type = 'YEARLY' THEN
126 l_next_run_date := add_months(l_last_run_date , (12*l_frequency)) ;
127 ElSIF l_frequency_type = 'HOURLY' THEN
128 l_next_run_date := l_last_run_date + (l_frequency/24) ;
129 END IF;
130
131 WRITE_LOG(l_api_name, 'Schedule_Repeat: Next run date is '||l_next_run_date);
132 x_next_run_date := l_next_run_date ;
133
134 WRITE_LOG (l_api_name, 'Schedule_Repeat: Success'||'.'||p_last_run_date);
135
136 EXCEPTION
137 WHEN FND_API.G_EXC_ERROR THEN
138 x_return_status := FND_API.G_RET_STS_ERROR ;
139 FND_MSG_PUB.count_and_get (
140 p_count => x_msg_count,
141 p_data => x_msg_data,
142 p_encoded => FND_API.G_FALSE
143 );
144 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
145 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
146 FND_MSG_PUB.count_and_get (
147 p_count => x_msg_count,
148 p_data => x_msg_data,
149 p_encoded => FND_API.G_FALSE
150 );
151 WHEN OTHERS THEN
152 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
153 FND_MSG_PUB.count_and_get (
154 p_count => x_msg_count,
155 p_data => x_msg_data,
156 p_encoded => FND_API.G_FALSE
157 );
158 END Schedule_Repeat;
159
160 --=============================================================================================================
161 --PROCEDURE
162 -- Create_Next_Schedule
163 -- Purpose
164 -- This package creates the next schedule to be used by the workflow
165 -- HISTORY
166 -- 10-Oct-2000 dbiswas Created.
167 -- 18-feb-2004 soagrawa Fixed bug# 3452264
168 -- 23-mar-2004 soagrawa Now creating association with OCM item conditionally
169 -- 21-apr-2004 soagrawa Made changes to fix bug# 3570234
170 -- 28-jan-2005 spendem fix for bug # 4145845. Added to_char function to the schedule_id
171 -- 17-Mar-2005 spendem call the API to raise business event on status change as per enh # 3805347
172 --==============================================================================================================
173
174 PROCEDURE Create_Next_Schedule ( p_parent_sched_id IN NUMBER,
175 p_child_sched_st_date IN DATE,
176 p_child_sched_en_date IN DATE,
177 x_child_sched_id OUT NOCOPY NUMBER,
178 -- soagrawa added on 18-feb-2004 for bug# 3452264
179 p_orig_sch_name IN VARCHAR2 ,
180 p_trig_repeat_flag IN VARCHAR2,
181 x_msg_count OUT NOCOPY NUMBER,
182 x_msg_data OUT NOCOPY VARCHAR2,
183 x_return_status OUT NOCOPY VARCHAR2
184 )
185 IS
186 l_parent_sched_id NUMBER;
187 l_child_sched_st_date DATE;
188 l_child_sched_en_date DATE;
189
190 l_next_run_date DATE ;
191 l_api_name VARCHAR2(30);
192
193 l_date_suffix VARCHAR2(25);
194 l_dummy NUMBER;
195 l_msg_count NUMBER ;
196 l_msg_data VARCHAR2(2000);
197 l_schedule_rec AMS_Camp_Schedule_PVT.schedule_rec_type;
198 l_new_sched_id NUMBER := NULL;
199
200 CURSOR c_sched(p_orig_sched_id IN NUMBER) IS
201 SELECT *
202 FROM ams_campaign_schedules_vl
203 WHERE schedule_id = p_orig_sched_id;
204
205 l_parent_rec c_sched%ROWTYPE;
206
207 CURSOR c_channel_media(p_medium_id NUMBER, p_activity_id NUMBER) IS
208 SELECT 1
209 FROM ams_media_channels
210 WHERE channel_id = p_medium_id
211 AND media_id = p_activity_id
212 AND ACTIVE_TO_DATE > SYSDATE;
213
214 CURSOR c_def_status(p_status_code VARCHAR2) IS
215 SELECT user_status_id
216 FROM ams_user_statuses_b
217 WHERE system_status_type = 'AMS_CAMPAIGN_SCHEDULE_STATUS'
218 AND system_status_code = p_status_code
219 AND default_flag = 'Y'
220 AND enabled_flag = 'Y';
221
222 -- soagrawa added on 21-apr-2004 for bug# 3570234
223 CURSOR c_max_sch_det(p_schedule_id NUMBER) IS
224 select schedule_id
225 from ams_campaign_schedules_b
226 where creation_date = (select max(creation_date)
227 from ams_campaign_schedules_b
228 where nvl(orig_csch_id, schedule_id) = p_schedule_id);
229
230 l_tgrp_copy_from_csch_id NUMBER;
231
232 l_def_avail_status NUMBER;
233 l_def_new_status NUMBER;
234 l_return_status VARCHAR2(1);
235
236 l_errnum NUMBER;
237 l_errmsg VARCHAR2(3000);
238 l_errcode VARCHAR2(80);
239
240 CURSOR c_get_assoc IS
241 SELECT content_item_id
242 FROM ibc_associations
243 WHERE association_type_code = 'AMS_CSCH'
244 AND ASSOCIATED_OBJECT_VAL1 = to_char(p_parent_sched_id); -- fix for bug # 4145845
245 l_content_item_id NUMBER;
246
247
248 BEGIN
249 x_return_status := FND_API.G_RET_STS_SUCCESS;
250 l_api_name :='Create_Next_Schedule';
251
252 l_parent_sched_id := p_parent_sched_id;
253 l_child_sched_st_date := p_child_sched_st_date;
254 l_child_sched_en_date := p_child_sched_en_date;
255
256 OPEN c_sched(p_parent_sched_id);
257 FETCH c_sched INTO l_parent_rec ;
258 CLOSE c_sched;
259
260
261 l_schedule_rec.start_date_time := l_child_sched_st_date;
262 l_schedule_rec.end_date_time := l_child_sched_en_date;
263 l_schedule_rec.timezone_id := l_parent_rec.timezone_id;
264 l_schedule_rec.campaign_id := l_parent_rec.campaign_id;
265 l_schedule_rec.use_parent_code_flag:= l_parent_rec.use_parent_code_flag;
266 l_schedule_rec.use_parent_code_flag:= l_parent_rec.use_parent_code_flag;
267 l_schedule_rec.source_code := NULL;
268 l_schedule_rec.activity_type_code := l_parent_rec.activity_type_code;
269 l_schedule_rec.activity_id := l_parent_rec.activity_id;
270 l_schedule_rec.marketing_medium_id := null;
271 -- validate media channel id
272 IF l_parent_rec.marketing_medium_id IS NOT NULL
273 THEN
274 WRITE_LOG (l_api_name, 'Create_Next_Schedule: Orig csch mktmg med is not null'||'.'||l_parent_rec.marketing_medium_id);
275
276 OPEN c_channel_media(l_parent_rec.marketing_medium_id, l_parent_rec.activity_id);
277 FETCH c_channel_media INTO l_dummy;
278 CLOSE c_channel_media;
279
280 IF l_dummy IS NULL
281 THEN
282 l_schedule_rec.marketing_medium_id := null;
283 ELSE
284 l_schedule_rec.marketing_medium_id := l_parent_rec.marketing_medium_id;
285 END IF;
286 END IF;
287 WRITE_LOG (l_api_name, 'Create_Next_Schedule: Activity id is '|| l_schedule_rec.activity_id||'; Mktg Med is '||l_schedule_rec.marketing_medium_id);
288
289
290 OPEN c_def_status('NEW');
291 FETCH c_def_status INTO l_def_new_status;
292 CLOSE c_def_status;
293
294 l_schedule_rec.user_status_id := l_def_new_status;
295 l_schedule_rec.status_code := 'NEW';
296
297 -- -------------------------- COPY COVER LETTER ----------------------------------------
298
299 l_date_suffix := ' - ' || TO_CHAR(SYSDATE,'DD-MON-RRRR HH24:MI:SS');
300 -- to be completed later
301
302 -- ------------------------- END COPY COVER LETTER -------------------------------------
303
304 -- Set the attribs for the child rec
305 -- soagrawa modified on 18-feb-2004 for bug# 3452264
306
307 WRITE_LOG (l_api_name, 'CSCH name passed is p_orig_sch_name '||p_orig_sch_name);
308 IF p_orig_sch_name is NOT null
309 THEN
310 -- use this name instead
311 IF length(p_orig_sch_name || l_date_suffix) <= 240
312 THEN
313 l_schedule_rec.schedule_name := p_orig_sch_name || l_date_suffix;
314 ELSE
315 l_schedule_rec.schedule_name := substr(p_orig_sch_name,1,240-length(l_date_suffix)) || l_date_suffix;
316 END IF;
317 ELSE
318 IF length(l_parent_rec.schedule_name || l_date_suffix) <= 240
319 THEN
320 l_schedule_rec.schedule_name := l_parent_rec.schedule_name || l_date_suffix;
321 ELSE
322 l_schedule_rec.schedule_name := substr(l_parent_rec.schedule_name,1,240-length(l_date_suffix)) || l_date_suffix;
323 END IF;
324 END IF;
325
326 l_schedule_rec.reply_to_mail := l_parent_rec.reply_to_mail;
327 l_schedule_rec.mail_sender_name := l_parent_rec.mail_sender_name;
328 l_schedule_rec.mail_subject := l_parent_rec.mail_subject;
329 l_schedule_rec.from_fax_no := l_parent_rec.from_fax_no;
330 l_schedule_rec.campaign_calendar := l_parent_rec.campaign_calendar;
331
332 l_schedule_rec.accounts_closed_flag := l_parent_rec.accounts_closed_flag;
333 l_schedule_rec.org_id := l_parent_rec.org_id;
334 l_schedule_rec.objective_code := l_parent_rec.objective_code;
335 l_schedule_rec.country_id := l_parent_rec.country_id;
336 l_schedule_rec.priority := l_parent_rec.priority;
337 l_schedule_rec.transaction_currency_code := l_parent_rec.transaction_currency_code;
338 l_schedule_rec.functional_currency_code := l_parent_rec.functional_currency_code;
339 l_schedule_rec.language_code := l_parent_rec.language_code;
340 l_schedule_rec.task_id := l_parent_rec.task_id;
341 l_schedule_rec.attribute_category := l_parent_rec.attribute_category;
342 l_schedule_rec.attribute1 := l_parent_rec.attribute1;
343 l_schedule_rec.attribute2 := l_parent_rec.attribute2;
344 l_schedule_rec.attribute3 := l_parent_rec.attribute3;
345 l_schedule_rec.attribute4 := l_parent_rec.attribute4;
346 l_schedule_rec.attribute5 := l_parent_rec.attribute5;
347 l_schedule_rec.attribute6 := l_parent_rec.attribute6;
348 l_schedule_rec.attribute7 := l_parent_rec.attribute7;
349 l_schedule_rec.attribute8 := l_parent_rec.attribute8;
350 l_schedule_rec.attribute9 := l_parent_rec.attribute9;
351 l_schedule_rec.attribute10 := l_parent_rec.attribute10;
352 l_schedule_rec.attribute11 := l_parent_rec.attribute11;
353 l_schedule_rec.attribute12 := l_parent_rec.attribute12;
354 l_schedule_rec.attribute13 := l_parent_rec.attribute13;
355 l_schedule_rec.attribute14 := l_parent_rec.attribute14;
356 l_schedule_rec.attribute15 := l_parent_rec.attribute15;
357 l_schedule_rec.activity_attribute_category := l_parent_rec.activity_attribute_category;
358 l_schedule_rec.activity_attribute1 := l_parent_rec.activity_attribute1;
359 l_schedule_rec.activity_attribute2 := l_parent_rec.activity_attribute2;
360 l_schedule_rec.activity_attribute3 := l_parent_rec.activity_attribute3;
361 l_schedule_rec.activity_attribute4 := l_parent_rec.activity_attribute4;
362 l_schedule_rec.activity_attribute5 := l_parent_rec.activity_attribute5;
363 l_schedule_rec.activity_attribute6 := l_parent_rec.activity_attribute6;
364 l_schedule_rec.activity_attribute7 := l_parent_rec.activity_attribute7;
365 l_schedule_rec.activity_attribute8 := l_parent_rec.activity_attribute8;
366 l_schedule_rec.activity_attribute9 := l_parent_rec.activity_attribute9;
367 l_schedule_rec.activity_attribute10 := l_parent_rec.activity_attribute10;
368 l_schedule_rec.activity_attribute11 := l_parent_rec.activity_attribute11;
369 l_schedule_rec.activity_attribute12 := l_parent_rec.activity_attribute12;
370 l_schedule_rec.activity_attribute13 := l_parent_rec.activity_attribute13;
371 l_schedule_rec.activity_attribute14 := l_parent_rec.activity_attribute14;
372 l_schedule_rec.activity_attribute15 := l_parent_rec.activity_attribute15;
373 l_schedule_rec.custom_setup_id := l_parent_rec.custom_setup_id; -- copy the same, even if disabled
374 l_schedule_rec.triggerable_flag := l_parent_rec.triggerable_flag;
375 l_schedule_rec.trigger_id := l_parent_rec.trigger_id;
376 -- soagrawa added on 18-feb-2004 for bug# 3452264
377 l_schedule_rec.trig_repeat_flag := p_trig_repeat_flag;
378 l_schedule_rec.tgrp_exclude_prev_flag := l_parent_rec.tgrp_exclude_prev_flag;
379 l_schedule_rec.notify_user_id := l_parent_rec.notify_user_id;
380 l_schedule_rec.approver_user_id := l_parent_rec.approver_user_id;
381 l_schedule_rec.owner_user_id := l_parent_rec.owner_user_id;
382 -- l_schedule_rec.active_flag := l_parent_rec.active_flag;
383 l_schedule_rec.description := l_parent_rec.description;
384 l_schedule_rec.test_email_address := l_parent_rec.test_email_address;
385 --l_schedule_rec.ORIG_CSCH_ID := l_parent_rec.schedule_id;
386
387 -- Added by AMLAL : Bug 5611404
388 l_schedule_rec.delivery_mode := l_parent_rec.delivery_mode;
389
390 -- Added by AMLAL : Bug 5738978
391 l_schedule_rec.printer_address := l_parent_rec.printer_address;
392
393 l_schedule_rec.NOTIFY_ON_ACTIVATION_FLAG := l_parent_rec.NOTIFY_ON_ACTIVATION_FLAG; --anchaud added, sept'05.
394
395 IF l_parent_rec.ORIG_CSCH_ID IS NOT null
396 THEN
397 l_schedule_rec.ORIG_CSCH_ID := l_parent_rec.ORIG_CSCH_ID;
398 ELSE
399 l_schedule_rec.ORIG_CSCH_ID := l_parent_rec.schedule_id;
400 END IF;
401
402 l_schedule_rec.usage := l_parent_rec.usage;
403 l_schedule_rec.purpose := l_parent_rec.purpose;
404 l_schedule_rec.sales_methodology_id := l_parent_rec.sales_methodology_id;
405
406 WRITE_LOG (l_api_name, 'Create_Next_Schedule: Before creating schedule');
407
408 -- soagrawa made this change on 21-apr-2003 for bug# 3570234
409 OPEN c_max_sch_det(l_parent_rec.schedule_id);
410 FETCH c_max_sch_det INTO l_tgrp_copy_from_csch_id;
411 CLOSE c_max_sch_det;
412
413 AMS_Camp_Schedule_PVT.Create_Camp_Schedule(
414 p_api_version_number => 1.0,
415 p_init_msg_list => FND_API.G_FALSE,
416 p_commit => FND_API.G_FALSE,
417 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
418 x_return_status => l_return_status,
419 x_msg_count => l_msg_count,
420 x_msg_data => l_msg_data,
421 p_schedule_rec => l_schedule_rec,
422 x_schedule_id => l_new_sched_id);
423
424 IF l_return_status <> FND_API.g_ret_sts_success
425 THEN
426 WRITE_LOG(l_api_name, 'Create_Next_Schedule: ERROR: After create schedule'||l_return_status||'New Schedule name '||l_schedule_rec.schedule_name);
427 l_return_status := FND_API.g_ret_sts_error;
428
429 FOR i IN 1 .. FND_MSG_PUB.count_msg LOOP
430 WRITE_LOG(l_api_name, 'Create_Next_Schedule : (' || i || ') ' || FND_MSG_PUB.get(i, FND_API.g_false));
431 END LOOP;
432
433 -- schedule creation was not successful
434 x_child_sched_id := null;
435 x_msg_data := l_msg_data;
436 x_msg_count := l_msg_count;
437 x_return_status := l_return_status;
438 RETURN;
439
440 ELSE
441 WRITE_LOG(l_api_name, 'Create_Next_Schedule: SUCCESS: After create schedule'||l_return_status||'New Schedule name '||l_schedule_rec.schedule_name);
442 END IF;
443
444
445 -- if Schedule creation was successful
446
447 --Associate Cover letter
448 WRITE_LOG(l_api_name, 'Create_Next_Schedule: Start Copy cover letter '||l_schedule_rec.schedule_name);
449 OPEN c_get_assoc;
450 FETCH c_get_assoc INTO l_content_item_id;
451 CLOSE c_get_assoc;
452
453
454 IF FND_API.G_TRUE = Target_Group_Exist(p_parent_sched_id)
455 THEN
456 -- this if statement added by soagrawa on 23-mar-2004
457 IF l_content_item_id IS NOT null
458 THEN
459 IBC_ASSOCIATIONS_GRP.Create_Association (
460 p_api_version => 1.0,
461 p_assoc_type_code => 'AMS_CSCH',
462 p_assoc_object1 => l_new_sched_id,
463 p_content_item_id => l_content_item_id,
464 x_return_status => l_return_status,
465 x_msg_count => l_msg_count,
466 x_msg_data => l_msg_data
467 );
468
469 IF l_return_status <> FND_API.g_ret_sts_success
470 THEN
471 WRITE_LOG(l_api_name, 'Create_Next_Schedule: ERROR: After content association'||l_return_status||'New Schedule name '||l_schedule_rec.schedule_name);
472 l_return_status := FND_API.g_ret_sts_error;
473
474 FOR i IN 1 .. FND_MSG_PUB.count_msg LOOP
475 WRITE_LOG(l_api_name, 'Create_Next_Schedule : (' || i || ') ' || FND_MSG_PUB.get(i, FND_API.g_false));
476 END LOOP;
477
478 -- association creation was not successful
479 x_child_sched_id := null;
480 x_msg_data := l_msg_data;
481 x_msg_count := l_msg_count;
482 x_return_status := l_return_status;
483 RETURN;
484
485 ELSE
486 WRITE_LOG(l_api_name, 'Create_Next_Schedule: SUCCESS: Aftercontent association'||l_return_status||'New Schedule name '||l_schedule_rec.schedule_name);
487 END IF;
488 END IF;
489 END IF;
490
491
492 -- anchaudh : added for copy of collateral contents attached to the non-direct marketing activities for R12 .
493 ams_copyelements_pvt.copy_act_collateral(
494 p_src_act_type => 'AMS_COLLAT',
495 p_src_act_id => l_parent_rec.schedule_id,
496 p_new_act_id => l_new_sched_id,
497 p_errnum => l_errnum,
498 p_errcode => l_errcode,
499 p_errmsg => l_errmsg);
500
501
502 -- copy metrices
503 WRITE_LOG(l_api_name, 'Create_Next_Schedule: Start Copy metrics for New Schedule name '||l_schedule_rec.schedule_name);
504 Ams_ActMetric_Pvt.copy_act_metrics (
505 p_api_version => 1.0,
506 p_init_msg_list => FND_API.G_FALSE,
507 p_commit => FND_API.G_FALSE,
508 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
509 p_source_object_type => 'CSCH',
510 p_source_object_id => l_parent_rec.schedule_id,
511 p_target_object_id => l_new_sched_id,
512 x_return_status => l_return_status,
513 x_msg_count => l_msg_count,
514 x_msg_data => l_msg_data);
515
516 IF l_return_status <> FND_API.g_ret_sts_success
517 THEN
518 WRITE_LOG(l_api_name, 'Create_Next_Schedule: ERROR: After copy metrics'||l_return_status||'for new schedule name '||l_schedule_rec.schedule_name);
519 l_return_status := FND_API.g_ret_sts_error;
520 FOR i IN 1 .. FND_MSG_PUB.count_msg LOOP
521 WRITE_LOG(l_api_name, 'Create_Next_Schedule : (' || i || ') ' || FND_MSG_PUB.get(i, FND_API.g_false));
522 END LOOP;
523
524 -- metrics copying was not successful
525 x_child_sched_id := null;
526 x_msg_data := l_msg_data;
527 x_msg_count := l_msg_count;
528 x_return_status := l_return_status;
529 RETURN;
530
531 ELSE
532 WRITE_LOG(l_api_name, 'Create_Next_Schedule: SUCCESS: After copy metrics'||l_return_status||'for new schedule name '||l_schedule_rec.schedule_name);
533 END IF;
534
535 WRITE_LOG (l_api_name, 'Create_Next_Schedule: Before copying TGRP, being copied from CSCH id '||l_tgrp_copy_from_csch_id);
536
537 IF FND_API.G_TRUE = Target_Group_Exist(p_parent_sched_id)
538 THEN
539 -- copy target group
540 AMS_ACT_LIST_PVT.copy_target_group(
541 p_from_schedule_id => l_tgrp_copy_from_csch_id,
542 p_to_schedule_id => l_new_sched_id,
543 p_list_used_by => 'CSCH',
544 -- soagrawa made this change on 21-apr-2003 for bug# 3570234
545 p_repeat_flag => FND_API.G_TRUE,
546 x_msg_count => l_msg_count,
547 x_msg_data => l_msg_data,
548 x_return_status => l_return_status
549 ) ;
550
551 IF l_return_status <> FND_API.g_ret_sts_success
552 THEN
553 WRITE_LOG(l_api_name, 'Create_Next_Schedule: ERROR: After copy target group'||l_return_status||'for new schedule name '||l_schedule_rec.schedule_name);
554 l_return_status := FND_API.g_ret_sts_error;
555 FOR i IN 1 .. FND_MSG_PUB.count_msg LOOP
556 WRITE_LOG(l_api_name, 'Create_Next_Schedule : (' || i || ') ' || FND_MSG_PUB.get(i, FND_API.g_false));
557 END LOOP;
558
559 -- target group copying was not successful
560 x_child_sched_id := null;
561 x_msg_data := l_msg_data;
562 x_msg_count := l_msg_count;
563 x_return_status := l_return_status;
564 RETURN;
565
566 ELSE
567 WRITE_LOG(l_api_name, 'Create_Next_Schedule: SUCCESS: After copy target group'||l_return_status||'for new schedule name '||l_schedule_rec.schedule_name);
568 END IF;
569 END IF;
570
571
572
573 -- Update status of new schedule to available
574 OPEN c_def_status('AVAILABLE');
575 FETCH c_def_status INTO l_def_avail_status;
576 CLOSE c_def_status;
577
578 UPDATE AMS_CAMPAIGN_SCHEDULES_B
579 SET STATUS_CODE = 'AVAILABLE' ,
580 status_date = sysdate,
581 user_status_id = l_def_avail_status
582 WHERE SCHEDULE_ID = l_new_sched_id;
583
584 -- call to api to raise business event, as per enh # 3805347
585 AMS_SCHEDULERULES_PVT.RAISE_BE_ON_STATUS_CHANGE(p_obj_id => l_new_sched_id,
586 p_obj_type => 'CSCH',
587 p_old_status_code => 'NEW',
588 p_new_status_code => 'AVAILABLE');
589
590 -- set return status
591 x_child_sched_id := l_new_sched_id;
592 x_msg_data := l_msg_data;
593 x_msg_count := l_msg_count;
594 x_return_status := l_return_status;
595
596 END Create_Next_Schedule;
597
598
599 --========================================================================
600 --PROCEDURE
601 -- Create_Scheduler
602 -- Purpose
603 -- This procedure creates a row in the ams_scheduler table using the table handler package
604 -- HISTORY
605 -- 04-may-2005 soagrawa Created.
606 --
607 --========================================================================
608
609 PROCEDURE Create_Scheduler ( p_obj_type VARCHAR2,
610 p_obj_id NUMBER,
611 p_freq NUMBER,
612 p_freq_type VARCHAR2,
613 x_msg_count OUT NOCOPY NUMBER,
614 x_msg_data OUT NOCOPY VARCHAR2,
615 x_return_status OUT NOCOPY VARCHAR2,
616 x_scheduler_id OUT NOCOPY NUMBER
617 )
618 IS
619 l_scheduler_id NUMBER;
620 l_object_version_number NUMBER := 1;
621 CURSOR c_id IS
622 SELECT ams_scheduler_s.NEXTVAL
623 FROM dual;
624
625
626 BEGIN
627
628 x_return_status := FND_API.G_RET_STS_SUCCESS;
629
630 OPEN c_id;
631 FETCH c_id INTO l_scheduler_id;
632 CLOSE c_id;
633
634 AMS_SCHEDULER_B_PKG.Insert_Row(
635 px_scheduler_id => l_scheduler_id,
636 p_created_by => FND_GLOBAL.USER_ID,
637 p_creation_date => SYSDATE,
638 p_last_updated_by => FND_GLOBAL.USER_ID,
639 p_last_update_date => SYSDATE,
640 p_last_update_login => FND_GLOBAL.LOGIN_ID,
641 px_object_version_number => l_object_version_number,
642 p_object_type => p_obj_type,
643 p_object_id => p_obj_id,
644 p_frequency => p_freq,
645 p_frequency_type => p_freq_type
646 );
647
648 x_scheduler_id := l_scheduler_id;
649
650 END Create_Scheduler;
651
652 END AMS_Scheduler_PVT ;