[Home] [Help]
PACKAGE BODY: APPS.JTF_TASK_REPEAT_APPT_PVT
Source
1 PACKAGE BODY JTF_TASK_REPEAT_APPT_PVT AS
2 /* $Header: jtfvtkob.pls 120.6 2006/04/27 05:01:19 sbarat ship $ */
3 /*======================================================================+
4 | Copyright (c) 1995 Oracle Corporation Redwood Shores, California, USA|
5 | All rights reserved. |
6 +=======================================================================+
7 | FILENAME |
8 | jtfvtkob.pls |
9 | |
10 | DESCRIPTION |
11 | This is used to process the change of repeating appointments |
12 | NOTES |
13 | |
14 | Date Developer Change |
15 |------ ------------- --------------------------------------- |
16 | 26-Mar-2002 cjang Created |
17 | 28-Mar-2002 cjang Modified the code for p_change_mode |
18 | Added jtf_task_utl.is_this_first_task(), |
19 | jtf_task_utl.get_new_first_taskid(),|
20 | jtf_task_utl.exist_syncid() |
21 | 01-Apr-2002 cjang Moved jtf_task_utl.is_this_first_task(), |
22 | jtf_task_utl.get_new_first_taskid(),|
23 | jtf_task_utl.exist_syncid() |
24 | to jtf_task_utl |
25 | 02-Apr-2002 cjang Fixed modify_time and |
26 | update_repeat_appointment |
27 | 03-Apr-2002 cjang Fixed so as to update last_update_date |
28 | 08-Apr-2002 cjang Added update_assignment_status |
29 | 09-Apr-2002 cjang Update object_changed_date with SYSDATE |
30 | in jtf_tasks_b |
31 | 24-Apr-2002 cjang Modified c_future and c_all |
32 | in update_repeat_appointment |
33 | to check deleted_flag |
34 | If chnage mode = ALL, do not check if it's|
35 | the first task or not |
36 | 02-May-2002 cjang Commented out update_assignment_status |
37 | 28-Apr-2002 cjang Modified the package name to refer the |
38 | followings: |
39 | - is_this_first_task |
40 | - get_new_first_taskid |
41 | - exist_syncid |
42 | from jtf_task_utl to jta_sync_task_utl |
43 | 03-Aug-2005 Swapan Barat Added location_id for Enh# 3691788 |
44 | 27-Jan-2006 Swapan Barat Fixed issue in modify_time for bug# 3850322|
45 | 24-Feb_2006 Twan fix issue in bug 4321360 |
46 | 12-Apr-2006 Swapan Barat Fixed occurs number issue for when |
47 | change_mode = G_FUTURE for new recurrrence |
48 | rule. Bug# 5119782. |
49 | 26-Apr-2006 Swapan Barat Fixed bug# 5153942 |
50 *=======================================================================*/
51
52 --PROCEDURE update_assignment_status(p_task_id IN NUMBER)
53 --IS
54 --BEGIN
55 -- UPDATE jtf_task_all_assignments
56 -- SET assignment_status_id = 18
57 -- WHERE assignee_role = 'ASSIGNEE'
58 -- AND task_id = p_task_id;
59 --END update_assignment_status;
60
61 PROCEDURE modify_time(p_old_calendar_start_date IN DATE,
62 p_old_calendar_end_date IN DATE,
63 p_updated_field_rec updated_field_rec,
64 x_planned_start_date OUT NOCOPY DATE,
65 x_planned_end_date OUT NOCOPY DATE,
66 x_scheduled_start_date OUT NOCOPY DATE,
67 x_scheduled_end_date OUT NOCOPY DATE,
68 x_actual_start_date OUT NOCOPY DATE,
69 x_actual_end_date OUT NOCOPY DATE
70 )
71 IS
72 l_start_date DATE;
73 l_end_date DATE;
74 BEGIN
75 x_planned_start_date := p_old_calendar_start_date;
76 x_planned_end_date := p_old_calendar_end_date;
77 x_scheduled_start_date := p_old_calendar_start_date;
78 x_scheduled_end_date := p_old_calendar_end_date;
79 x_actual_start_date := p_old_calendar_start_date;
80 x_actual_end_date := p_old_calendar_end_date;
81
82 ---------------------------------------------------
83 -- Check if start time is changed
84 ---------------------------------------------------
85 IF to_char(p_old_calendar_start_date,'HH24:MI:SS') <> to_char(p_updated_field_rec.new_calendar_start_date,'HH24:MI:SS')
86 THEN
87 l_start_date := to_date(to_char(p_old_calendar_start_date,'DD-MON-YYYY')||' '||
88 to_char(p_updated_field_rec.new_calendar_start_date,'HH24:MI:SS'),
89 'DD-MON-YYYY HH24:MI:SS');
90 x_planned_start_date := l_start_date;
91 x_scheduled_start_date := l_start_date;
92 x_actual_start_date := l_start_date;
93 END IF;
94
95 ---------------------------------------------------
96 -- Check if end time is changed
97 ---------------------------------------------------
98 IF to_char(p_old_calendar_end_date,'HH24:MI:SS') <> to_char(p_updated_field_rec.new_calendar_end_date,'HH24:MI:SS')
99 THEN
100 -- Commented out by SBARAT on 27/01/2006 for bug# 3850322
101 /*l_end_date := to_date(to_char(p_old_calendar_end_date,'DD-MON-YYYY')||' '||
102 to_char(p_updated_field_rec.new_calendar_end_date,'HH24:MI:SS'),
103 'DD-MON-YYYY HH24:MI:SS');*/
104
105 -- Added by SBARAT on 27/01/2006 for bug# 3850322
106 l_end_date := NVL(l_start_date, p_old_calendar_start_date) +
107 (p_updated_field_rec.new_calendar_end_date - p_updated_field_rec.new_calendar_start_date);
108
109 x_planned_end_date := l_end_date;
110 x_scheduled_end_date := l_end_date;
111 x_actual_end_date := l_end_date;
112
113 END IF;
114 END modify_time;
115
116 PROCEDURE update_repeat_appointment(
117 p_api_version IN NUMBER,
118 p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
119 p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
120 p_object_version_number IN OUT NOCOPY NUMBER,
121 p_updated_field_rec IN updated_field_rec,
122 x_return_status OUT NOCOPY VARCHAR2,
123 x_msg_count OUT NOCOPY NUMBER,
124 x_msg_data OUT NOCOPY VARCHAR2
125 )
126 IS
127
128 CURSOR c_recur (b_recurrence_rule_id NUMBER) IS
129 SELECT *
130 FROM jtf_task_recur_rules
131 WHERE recurrence_rule_id = b_recurrence_rule_id;
132
133 rec_recur c_recur%ROWTYPE;
134
135 CURSOR c_future (b_start_date DATE, b_recurrence_rule_id NUMBER) IS
136 SELECT task_id, calendar_start_date, calendar_end_date
137 FROM jtf_tasks_b
138 WHERE NVL(deleted_flag,'N') = 'N'
139 AND calendar_start_date >= b_start_date
140 AND recurrence_rule_id = b_recurrence_rule_id;
141
142 CURSOR c_all (b_recurrence_rule_id NUMBER) IS
143 SELECT task_id, calendar_start_date, calendar_end_date
144 FROM jtf_tasks_b
145 WHERE NVL(deleted_flag,'N') = 'N'
146 AND recurrence_rule_id = b_recurrence_rule_id;
147
148 l_new_minimum_task_id NUMBER;
149 l_task_exclusion_id jta_task_exclusions.task_exclusion_id%TYPE;
150 l_new_recurrence_rule_id NUMBER;
151 l_send_notification VARCHAR2(1);
152 l_rowid ROWID;
153 l_first BOOLEAN := FALSE;
154 l_exist_new_first_task BOOLEAN := FALSE;
155 l_start_date_changed BOOLEAN := FALSE;
156 l_start_time_changed BOOLEAN := FALSE;
157 l_end_time_changed BOOLEAN := FALSE;
158 l_object_version_number NUMBER;
159 l_sync_id NUMBER;
160
161 l_planned_start_date DATE;
162 l_planned_end_date DATE;
163 l_scheduled_start_date DATE;
164 l_scheduled_end_date DATE;
165 l_actual_start_date DATE;
166 l_actual_end_date DATE;
167
168 l_change_mode VARCHAR2(1) := p_updated_field_rec.change_mode;
169
170 l_occurs NUMBER:=0; -- Added by SBARAT on 12/04/2006 for bug# 5119782
171
172 BEGIN
173 SAVEPOINT update_repeat_appointment_pvt;
174
175 x_return_status := fnd_api.g_ret_sts_success;
176
177 IF fnd_api.to_boolean (p_init_msg_list)
178 THEN
179 fnd_msg_pub.initialize;
180 END IF;
181
182 -----------------------------------------------------------------------
183 -- l_first l_exist_new_first_task mapping_table exclusion_table
184 -- ======= ====================== ============= ===============
185 -- Y Y Update Insert
186 --
187 -- Y N l_change_mode is changed to G_ALL
188 --
189 -- N Any N/A Insert
190 -----------------------------------------------------------------------
191
192 IF l_change_mode <> G_ALL
193 THEN
194 ---------------------------------------------------
195 -- Check whether the current task_id is the first task_id
196 -- which has been synced
197 ---------------------------------------------------
198 l_first := jta_sync_task_utl.is_this_first_task(p_task_id => p_updated_field_rec.task_id);
199
200 -----------------------------------
201 -- Get new minimum task id
202 -----------------------------------
203 l_new_minimum_task_id := jta_sync_task_utl.get_new_first_taskid(
204 p_calendar_start_date => p_updated_field_rec.old_calendar_start_date,
205 p_recurrence_rule_id => p_updated_field_rec.recurrence_rule_id
206 );
207 IF l_new_minimum_task_id > 0
208 THEN
209 l_exist_new_first_task := TRUE;
210 END IF;
211
212 /*
213 -----------------------------------
214 -- Check if start date is changed
215 -----------------------------------
216 IF trunc(p_updated_field_rec.old_calendar_start_date) <>
217 trunc(p_updated_field_rec.new_calendar_start_date)
218 THEN
219 -- If start date is changed,
220 -- we update only the current appointment
221 l_change_mode := G_ONE;
222 END IF;
223 */
224
225 -----------------------------------
226 -- Check if this is the last one
227 -----------------------------------
228 IF (l_first AND NOT l_exist_new_first_task) OR
229 (l_first AND l_change_mode = G_FUTURE)
230 THEN
231 -- This repeating rule has only one appointment currently OR
232 -- A user selected the first task one and
233 -- chose the option "Update all the future appointments"
234 l_change_mode := G_ALL;
235 END IF;
236 END IF;
237
238 --------------------------------------------------------------
239 --
240 -- Process this update based on l_change_mode
241 --
242 --------------------------------------------------------------
243 IF l_change_mode = G_ONE
244 THEN
245 ---------------------------------------------------
246 -- Update mapping table with new minimum task id
247 -- if this is the first one and not the last one
248 ---------------------------------------------------
249 IF l_first and l_exist_new_first_task
250 THEN
251 IF jta_sync_task_utl.exist_syncid(
252 p_task_id => p_updated_field_rec.task_id,
253 x_sync_id => l_sync_id)
254 THEN
255 UPDATE jta_sync_task_mapping
256 SET task_id = l_new_minimum_task_id
257 , last_update_date = SYSDATE
258 WHERE task_id = p_updated_field_rec.task_id;
259 END IF;
260 END IF;
261
262 --------------------------------------------
263 -- Insert this appt into exclusion table
264 --------------------------------------------
265 SELECT jta_task_exclusions_s.NEXTVAL
266 INTO l_task_exclusion_id
267 FROM DUAL;
268
269 jta_task_exclusions_pkg.insert_row (
270 p_task_exclusion_id => l_task_exclusion_id,
271 p_task_id => p_updated_field_rec.task_id,
272 p_recurrence_rule_id => p_updated_field_rec.recurrence_rule_id,
273 p_exclusion_date => p_updated_field_rec.old_calendar_start_date
274 );
275
276 --------------------------------------------------------
277 -- Update this appointment
278 --------------------------------------------------------
279 jtf_tasks_pvt.update_task (
280 p_api_version => p_api_version,
281 p_init_msg_list => p_init_msg_list,
282 p_commit => p_commit,
283 p_object_version_number => p_object_version_number,
284 p_task_id => p_updated_field_rec.task_id, -- Current appt
285 p_task_name => p_updated_field_rec.task_name,
286 p_task_type_id => p_updated_field_rec.task_type_id,
287 p_description => p_updated_field_rec.description,
288 p_task_status_id => p_updated_field_rec.task_status_id,
289 p_task_priority_id => p_updated_field_rec.task_priority_id,
290 p_owner_type_code => p_updated_field_rec.owner_type_code,
291 p_owner_id => p_updated_field_rec.owner_id,
292 p_owner_territory_id => p_updated_field_rec.owner_territory_id,
293 p_assigned_by_id => p_updated_field_rec.assigned_by_id,
294 p_customer_id => p_updated_field_rec.customer_id,
295 p_cust_account_id => p_updated_field_rec.cust_account_id,
296 p_address_id => p_updated_field_rec.address_id,
297 p_planned_start_date => p_updated_field_rec.planned_start_date,
298 p_planned_end_date => p_updated_field_rec.planned_end_date,
299 p_scheduled_start_date => p_updated_field_rec.scheduled_start_date,
300 p_scheduled_end_date => p_updated_field_rec.scheduled_end_date,
301 p_actual_start_date => p_updated_field_rec.actual_start_date,
302 p_actual_end_date => p_updated_field_rec.actual_end_date,
303 p_timezone_id => p_updated_field_rec.timezone_id,
304 p_source_object_type_code => p_updated_field_rec.source_object_type_code,
305 p_source_object_id => p_updated_field_rec.source_object_id,
306 p_source_object_name => p_updated_field_rec.source_object_name,
307 p_duration => p_updated_field_rec.duration,
308 p_duration_uom => p_updated_field_rec.duration_uom,
309 p_planned_effort => p_updated_field_rec.planned_effort,
310 p_planned_effort_uom => p_updated_field_rec.planned_effort_uom,
311 p_actual_effort => p_updated_field_rec.actual_effort,
312 p_actual_effort_uom => p_updated_field_rec.actual_effort_uom,
313 p_percentage_complete => p_updated_field_rec.percentage_complete,
314 p_reason_code => p_updated_field_rec.reason_code,
315 p_private_flag => p_updated_field_rec.private_flag,
316 p_publish_flag => p_updated_field_rec.publish_flag,
317 p_restrict_closure_flag => p_updated_field_rec.restrict_closure_flag,
318 p_multi_booked_flag => p_updated_field_rec.multi_booked_flag,
319 p_milestone_flag => p_updated_field_rec.milestone_flag,
320 p_holiday_flag => p_updated_field_rec.holiday_flag,
321 p_billable_flag => p_updated_field_rec.billable_flag,
322 p_bound_mode_code => p_updated_field_rec.bound_mode_code,
323 p_soft_bound_flag => p_updated_field_rec.soft_bound_flag,
324 p_workflow_process_id => p_updated_field_rec.workflow_process_id,
325 p_notification_flag => p_updated_field_rec.notification_flag,
326 p_notification_period => p_updated_field_rec.notification_period,
327 p_notification_period_uom => p_updated_field_rec.notification_period_uom,
328 p_parent_task_id => p_updated_field_rec.parent_task_id,
329 p_alarm_start => p_updated_field_rec.alarm_start,
330 p_alarm_start_uom => p_updated_field_rec.alarm_start_uom,
331 p_alarm_on => p_updated_field_rec.alarm_on,
332 p_alarm_count => p_updated_field_rec.alarm_count,
333 p_alarm_fired_count => p_updated_field_rec.alarm_fired_count,
334 p_alarm_interval => p_updated_field_rec.alarm_interval,
335 p_alarm_interval_uom => p_updated_field_rec.alarm_interval_uom,
336 p_palm_flag => p_updated_field_rec.palm_flag,
337 p_wince_flag => p_updated_field_rec.wince_flag,
338 p_laptop_flag => p_updated_field_rec.laptop_flag,
339 p_device1_flag => p_updated_field_rec.device1_flag,
340 p_device2_flag => p_updated_field_rec.device2_flag,
341 p_device3_flag => p_updated_field_rec.device3_flag,
342 p_costs => p_updated_field_rec.costs,
343 p_currency_code => p_updated_field_rec.currency_code,
344 p_escalation_level => p_updated_field_rec.escalation_level,
345 x_return_status => x_return_status,
346 x_msg_count => x_msg_count,
347 x_msg_data => x_msg_data,
348 p_attribute1 => p_updated_field_rec.attribute1,
349 p_attribute2 => p_updated_field_rec.attribute2,
350 p_attribute3 => p_updated_field_rec.attribute3,
351 p_attribute4 => p_updated_field_rec.attribute4,
352 p_attribute5 => p_updated_field_rec.attribute5,
353 p_attribute6 => p_updated_field_rec.attribute6,
354 p_attribute7 => p_updated_field_rec.attribute7,
355 p_attribute8 => p_updated_field_rec.attribute8,
356 p_attribute9 => p_updated_field_rec.attribute9,
357 p_attribute10 => p_updated_field_rec.attribute10,
358 p_attribute11 => p_updated_field_rec.attribute11,
359 p_attribute12 => p_updated_field_rec.attribute12,
360 p_attribute13 => p_updated_field_rec.attribute13,
361 p_attribute14 => p_updated_field_rec.attribute14,
362 p_attribute15 => p_updated_field_rec.attribute15,
363 p_attribute_category => p_updated_field_rec.attribute_category,
364 p_date_selected => p_updated_field_rec.date_selected,
365 p_category_id => p_updated_field_rec.category_id,
366 p_show_on_calendar => p_updated_field_rec.show_on_calendar,
367 p_owner_status_id => p_updated_field_rec.owner_status_id,
368 p_enable_workflow => p_updated_field_rec.enable_workflow,
369 p_abort_workflow => p_updated_field_rec.abort_workflow,
370 p_change_mode => G_SKIP,
371 p_free_busy_type => p_updated_field_rec.free_busy_type, -- Bug No 4231616
372 p_task_confirmation_status => jtf_task_utl.g_miss_char,
373 p_task_confirmation_counter => jtf_task_utl.g_miss_number,
374 p_task_split_flag => jtf_task_utl.g_miss_char,
375 p_child_position => jtf_task_utl.g_miss_char,
376 p_child_sequence_num => jtf_task_utl.g_miss_number,
377 p_location_id => p_updated_field_rec.location_id
378 );
379
380 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
381 THEN
382 x_return_status := fnd_api.g_ret_sts_unexp_error;
383 RAISE fnd_api.g_exc_unexpected_error;
384 END IF;
385
386 --------------------------------------------------------
387 -- Nullify recurrence_rule_id for this appointment
388 --------------------------------------------------------
389 UPDATE jtf_tasks_b
390 SET recurrence_rule_id = NULL
391 , object_changed_date = SYSDATE
392 WHERE task_id = p_updated_field_rec.task_id;
393
394 IF l_first
395 THEN
396 UPDATE jtf_tasks_b
397 SET object_changed_date = SYSDATE
398 WHERE task_id = l_new_minimum_task_id;
399 END IF;
400
401 --------------------------------------------------------
402 -- Wipe out the assignment status for invitees
403 -- This will change the status back to 18 (Invited)
404 --------------------------------------------------------
405 --update_assignment_status(p_task_id => p_updated_field_rec.task_id);
406
407 ELSIF l_change_mode = G_FUTURE
408 THEN
409 -----------------------------------------------------------------
410 -- Create a new repeating rule (use recurrence table handler)
411 -----------------------------------------------------------------
412 OPEN c_recur (p_updated_field_rec.recurrence_rule_id);
413 FETCH c_recur INTO rec_recur;
414 IF c_recur%NOTFOUND
415 THEN
416 CLOSE c_recur;
417 fnd_message.set_name ('JTF', 'JTF_TK_INVALID_RECUR_RULE');
418 fnd_message.set_token ('P_TASK_RECURRENCE_RULE_ID', p_updated_field_rec.recurrence_rule_id);
419 fnd_msg_pub.add;
420
421 x_return_status := fnd_api.g_ret_sts_unexp_error;
422 RAISE fnd_api.g_exc_unexpected_error;
423 END IF;
424 CLOSE c_recur;
425
426 SELECT jtf_task_recur_rules_s.NEXTVAL
427 INTO l_new_recurrence_rule_id
428 FROM dual;
429
430 jtf_task_recur_rules_pkg.insert_row (
431 x_rowid => l_rowid,
432 x_recurrence_rule_id => l_new_recurrence_rule_id,
433 x_occurs_which => rec_recur.occurs_which,
434 x_day_of_week => rec_recur.day_of_week,
435 x_date_of_month => rec_recur.date_of_month,
436 x_occurs_month => rec_recur.occurs_month,
437 x_occurs_uom => rec_recur.occurs_uom,
438 x_occurs_every => rec_recur.occurs_every,
439 x_occurs_number => rec_recur.occurs_number,
440 x_start_date_active => trunc(p_updated_field_rec.new_calendar_start_date), -- New start date
441 x_end_date_active => rec_recur.end_date_active,
442 x_attribute1 => rec_recur.attribute1 ,
443 x_attribute2 => rec_recur.attribute2 ,
444 x_attribute3 => rec_recur.attribute3 ,
445 x_attribute4 => rec_recur.attribute4 ,
446 x_attribute5 => rec_recur.attribute5 ,
447 x_attribute6 => rec_recur.attribute6 ,
448 x_attribute7 => rec_recur.attribute7 ,
449 x_attribute8 => rec_recur.attribute8 ,
450 x_attribute9 => rec_recur.attribute9 ,
451 x_attribute10 => rec_recur.attribute10 ,
452 x_attribute11 => rec_recur.attribute11 ,
453 x_attribute12 => rec_recur.attribute12 ,
454 x_attribute13 => rec_recur.attribute13 ,
455 x_attribute14 => rec_recur.attribute14 ,
456 x_attribute15 => rec_recur.attribute15,
457 x_attribute_category => rec_recur.attribute_category ,
458 x_creation_date => SYSDATE,
459 x_created_by => jtf_task_utl.created_by,
460 x_last_update_date => SYSDATE,
461 x_last_updated_by => jtf_task_utl.updated_by,
462 x_last_update_login => fnd_global.login_id,
463 x_sunday => rec_recur.sunday,
464 x_monday => rec_recur.monday,
465 x_tuesday => rec_recur.tuesday,
466 x_wednesday => rec_recur.wednesday,
467 x_thursday => rec_recur.thursday,
468 x_friday => rec_recur.friday,
469 x_saturday => rec_recur.saturday,
470 x_date_selected => rec_recur.date_selected
471 );
472
473 -------------------------------------------------
474 -- Find all the future appointments
475 -- This cursor is not selecting the current appt
476 -- The current appt is updated after this loop
477 -------------------------------------------------
478 FOR rec_future IN c_future (b_start_date => p_updated_field_rec.old_calendar_start_date,
479 b_recurrence_rule_id => p_updated_field_rec.recurrence_rule_id)
480 LOOP
481
482 l_occurs :=l_occurs + 1; -- Added by SBARAT on 12/04/2006 for bug# 5119782
483
484 --------------------------------------------
485 -- Insert this appt into exclusion table
486 --------------------------------------------
487 SELECT jta_task_exclusions_s.NEXTVAL
488 INTO l_task_exclusion_id
489 FROM DUAL;
490
491 jta_task_exclusions_pkg.insert_row (
492 p_task_exclusion_id => l_task_exclusion_id,
493 p_task_id => rec_future.task_id,
494 p_recurrence_rule_id => p_updated_field_rec.recurrence_rule_id,
495 p_exclusion_date => rec_future.calendar_start_date
496 );
497
498 modify_time(p_old_calendar_start_date => rec_future.calendar_start_date,
499 p_old_calendar_end_date => rec_future.calendar_end_date,
500 p_updated_field_rec => p_updated_field_rec,
501 x_planned_start_date => l_planned_start_date,
502 x_planned_end_date => l_planned_end_date,
503 x_scheduled_start_date => l_scheduled_start_date,
504 x_scheduled_end_date => l_scheduled_end_date,
505 x_actual_start_date => l_actual_start_date,
506 x_actual_end_date => l_actual_end_date
507 );
508
509 ---------------------------------------------------------
510 -- Call update_task for each future appt
511 -- to update the updated fields and recurrence_rule_id
512 ---------------------------------------------------------
513 l_object_version_number := jta_sync_task_common.get_ovn (p_task_id => rec_future.task_id);
514
515 jtf_tasks_pvt.update_task (
516 p_api_version => p_api_version,
517 p_init_msg_list => p_init_msg_list,
518 p_commit => p_commit,
519 p_object_version_number => l_object_version_number,
520 p_task_id => rec_future.task_id, -- Future appt
521 p_task_name => p_updated_field_rec.task_name,
522 p_task_type_id => p_updated_field_rec.task_type_id,
523 p_description => p_updated_field_rec.description,
524 p_task_status_id => p_updated_field_rec.task_status_id,
525 p_task_priority_id => p_updated_field_rec.task_priority_id,
526 p_owner_type_code => p_updated_field_rec.owner_type_code,
527 p_owner_id => p_updated_field_rec.owner_id,
528 p_owner_territory_id => p_updated_field_rec.owner_territory_id,
529 p_assigned_by_id => p_updated_field_rec.assigned_by_id,
530 p_customer_id => p_updated_field_rec.customer_id,
531 p_cust_account_id => p_updated_field_rec.cust_account_id,
532 p_address_id => p_updated_field_rec.address_id,
533 p_planned_start_date => l_planned_start_date,
534 p_planned_end_date => l_planned_end_date,
535 p_scheduled_start_date => l_scheduled_start_date,
536 p_scheduled_end_date => l_scheduled_end_date,
537 p_actual_start_date => l_actual_start_date,
538 p_actual_end_date => l_actual_end_date,
539 p_timezone_id => p_updated_field_rec.timezone_id,
540 p_source_object_type_code => p_updated_field_rec.source_object_type_code,
541 p_source_object_id => p_updated_field_rec.source_object_id,
542 p_source_object_name => p_updated_field_rec.source_object_name,
543 p_duration => p_updated_field_rec.duration,
544 p_duration_uom => p_updated_field_rec.duration_uom,
545 p_planned_effort => p_updated_field_rec.planned_effort,
546 p_planned_effort_uom => p_updated_field_rec.planned_effort_uom,
547 p_actual_effort => p_updated_field_rec.actual_effort,
548 p_actual_effort_uom => p_updated_field_rec.actual_effort_uom,
549 p_percentage_complete => p_updated_field_rec.percentage_complete,
550 p_reason_code => p_updated_field_rec.reason_code,
551 p_private_flag => p_updated_field_rec.private_flag,
552 p_publish_flag => p_updated_field_rec.publish_flag,
553 p_restrict_closure_flag => p_updated_field_rec.restrict_closure_flag,
554 p_multi_booked_flag => p_updated_field_rec.multi_booked_flag,
555 p_milestone_flag => p_updated_field_rec.milestone_flag,
556 p_holiday_flag => p_updated_field_rec.holiday_flag,
557 p_billable_flag => p_updated_field_rec.billable_flag,
558 p_bound_mode_code => p_updated_field_rec.bound_mode_code,
559 p_soft_bound_flag => p_updated_field_rec.soft_bound_flag,
560 p_workflow_process_id => p_updated_field_rec.workflow_process_id,
561 p_notification_flag => p_updated_field_rec.notification_flag,
562 p_notification_period => p_updated_field_rec.notification_period,
563 p_notification_period_uom => p_updated_field_rec.notification_period_uom,
564 p_parent_task_id => p_updated_field_rec.parent_task_id,
565 p_alarm_start => p_updated_field_rec.alarm_start,
566 p_alarm_start_uom => p_updated_field_rec.alarm_start_uom,
567 p_alarm_on => p_updated_field_rec.alarm_on,
568 p_alarm_count => p_updated_field_rec.alarm_count,
569 p_alarm_fired_count => p_updated_field_rec.alarm_fired_count,
570 p_alarm_interval => p_updated_field_rec.alarm_interval,
571 p_alarm_interval_uom => p_updated_field_rec.alarm_interval_uom,
572 p_palm_flag => p_updated_field_rec.palm_flag,
573 p_wince_flag => p_updated_field_rec.wince_flag,
574 p_laptop_flag => p_updated_field_rec.laptop_flag,
575 p_device1_flag => p_updated_field_rec.device1_flag,
576 p_device2_flag => p_updated_field_rec.device2_flag,
577 p_device3_flag => p_updated_field_rec.device3_flag,
578 p_costs => p_updated_field_rec.costs,
579 p_currency_code => p_updated_field_rec.currency_code,
580 p_escalation_level => p_updated_field_rec.escalation_level,
581 x_return_status => x_return_status,
582 x_msg_count => x_msg_count,
583 x_msg_data => x_msg_data,
584 p_attribute1 => p_updated_field_rec.attribute1,
585 p_attribute2 => p_updated_field_rec.attribute2,
586 p_attribute3 => p_updated_field_rec.attribute3,
587 p_attribute4 => p_updated_field_rec.attribute4,
588 p_attribute5 => p_updated_field_rec.attribute5,
589 p_attribute6 => p_updated_field_rec.attribute6,
590 p_attribute7 => p_updated_field_rec.attribute7,
591 p_attribute8 => p_updated_field_rec.attribute8,
592 p_attribute9 => p_updated_field_rec.attribute9,
593 p_attribute10 => p_updated_field_rec.attribute10,
594 p_attribute11 => p_updated_field_rec.attribute11,
595 p_attribute12 => p_updated_field_rec.attribute12,
596 p_attribute13 => p_updated_field_rec.attribute13,
597 p_attribute14 => p_updated_field_rec.attribute14,
598 p_attribute15 => p_updated_field_rec.attribute15,
599 p_attribute_category => p_updated_field_rec.attribute_category,
600 p_date_selected => p_updated_field_rec.date_selected,
601 p_category_id => p_updated_field_rec.category_id,
602 p_show_on_calendar => p_updated_field_rec.show_on_calendar,
603 p_owner_status_id => p_updated_field_rec.owner_status_id,
604 p_enable_workflow => p_updated_field_rec.enable_workflow,
605 p_abort_workflow => p_updated_field_rec.abort_workflow,
606 p_change_mode => G_SKIP,
607 p_free_busy_type => p_updated_field_rec.free_busy_type, -- Bug No 4231616
608 p_task_confirmation_status => jtf_task_utl.g_miss_char,
609 p_task_confirmation_counter => jtf_task_utl.g_miss_number,
610 p_task_split_flag => jtf_task_utl.g_miss_char,
611 p_child_position => jtf_task_utl.g_miss_char,
612 p_child_sequence_num => jtf_task_utl.g_miss_number,
613 p_location_id => p_updated_field_rec.location_id
614 );
615 --Added by RDESPOTO on 07/29/2004
616 cac_view_util_pvt.update_repeat_collab_details(
617 p_source_task_id => p_updated_field_rec.task_id,
618 p_target_task_id => rec_future.task_id );
619
620 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
621 THEN
622 x_return_status := fnd_api.g_ret_sts_unexp_error;
623 RAISE fnd_api.g_exc_unexpected_error;
624 END IF;
625
626 UPDATE jtf_tasks_b
627 SET recurrence_rule_id = l_new_recurrence_rule_id
628 , object_changed_date = SYSDATE
629 WHERE task_id = rec_future.task_id;
630
631 UPDATE jtf_tasks_b
632 SET object_changed_date = SYSDATE
633 WHERE task_id = p_updated_field_rec.task_id;
634
635 IF rec_future.task_id = p_updated_field_rec.task_id
636 THEN
637 p_object_version_number := l_object_version_number;
638 END IF;
639
640 --------------------------------------------------------
641 -- Wipe out the assignment status for invitees
642 -- This will change the status back to 18 (Invited)
643 --------------------------------------------------------
644 --update_assignment_status(p_task_id => rec_future.task_id);
645 END LOOP;
646
647 -- Added by SBARAT on 12/04/2006 for bug# 5119782
648 UPDATE jtf_task_recur_rules
649 SET occurs_number=l_occurs
650 WHERE recurrence_rule_id = l_new_recurrence_rule_id;
651
652 ELSIF l_change_mode = G_ALL
653 THEN
654 ------------------------
655 -- Find all tasks
656 ------------------------
657 FOR rec_all IN c_all (b_recurrence_rule_id => p_updated_field_rec.recurrence_rule_id)
658 LOOP
659 modify_time(p_old_calendar_start_date => rec_all.calendar_start_date,
660 p_old_calendar_end_date => rec_all.calendar_end_date,
661 p_updated_field_rec => p_updated_field_rec,
662 x_planned_start_date => l_planned_start_date,
663 x_planned_end_date => l_planned_end_date,
664 x_scheduled_start_date => l_scheduled_start_date,
665 x_scheduled_end_date => l_scheduled_end_date,
666 x_actual_start_date => l_actual_start_date,
667 x_actual_end_date => l_actual_end_date
668 );
669 --------------------------------------------
670 -- Call update_task for the each appt
671 --------------------------------------------
672 l_object_version_number := jta_sync_task_common.get_ovn (p_task_id => rec_all.task_id);
673
674 jtf_tasks_pvt.update_task (
675 p_api_version => p_api_version,
676 p_init_msg_list => p_init_msg_list,
677 p_commit => p_commit,
678 p_object_version_number => l_object_version_number,
679 p_task_id => rec_all.task_id, -- each appt
680 p_task_name => p_updated_field_rec.task_name,
681 p_task_type_id => p_updated_field_rec.task_type_id,
682 p_description => p_updated_field_rec.description,
683 p_task_status_id => p_updated_field_rec.task_status_id,
684 p_task_priority_id => p_updated_field_rec.task_priority_id,
685 p_owner_type_code => p_updated_field_rec.owner_type_code,
686 p_owner_id => p_updated_field_rec.owner_id,
687 p_owner_territory_id => p_updated_field_rec.owner_territory_id,
688 p_assigned_by_id => p_updated_field_rec.assigned_by_id,
689 p_customer_id => p_updated_field_rec.customer_id,
690 p_cust_account_id => p_updated_field_rec.cust_account_id,
691 p_address_id => p_updated_field_rec.address_id,
692 p_planned_start_date => l_planned_start_date,
693 p_planned_end_date => l_planned_end_date,
694 p_scheduled_start_date => l_scheduled_start_date,
695 p_scheduled_end_date => l_scheduled_end_date,
696 p_actual_start_date => l_actual_start_date,
697 p_actual_end_date => l_actual_end_date,
698 p_timezone_id => p_updated_field_rec.timezone_id,
699 p_source_object_type_code => p_updated_field_rec.source_object_type_code,
700 p_source_object_id => p_updated_field_rec.source_object_id,
701 p_source_object_name => p_updated_field_rec.source_object_name,
702 p_duration => p_updated_field_rec.duration,
703 p_duration_uom => p_updated_field_rec.duration_uom,
704 p_planned_effort => p_updated_field_rec.planned_effort,
705 p_planned_effort_uom => p_updated_field_rec.planned_effort_uom,
706 p_actual_effort => p_updated_field_rec.actual_effort,
707 p_actual_effort_uom => p_updated_field_rec.actual_effort_uom,
708 p_percentage_complete => p_updated_field_rec.percentage_complete,
709 p_reason_code => p_updated_field_rec.reason_code,
710 p_private_flag => p_updated_field_rec.private_flag,
711 p_publish_flag => p_updated_field_rec.publish_flag,
712 p_restrict_closure_flag => p_updated_field_rec.restrict_closure_flag,
713 p_multi_booked_flag => p_updated_field_rec.multi_booked_flag,
714 p_milestone_flag => p_updated_field_rec.milestone_flag,
715 p_holiday_flag => p_updated_field_rec.holiday_flag,
716 p_billable_flag => p_updated_field_rec.billable_flag,
717 p_bound_mode_code => p_updated_field_rec.bound_mode_code,
718 p_soft_bound_flag => p_updated_field_rec.soft_bound_flag,
719 p_workflow_process_id => p_updated_field_rec.workflow_process_id,
720 p_notification_flag => p_updated_field_rec.notification_flag,
721 p_notification_period => p_updated_field_rec.notification_period,
722 p_notification_period_uom => p_updated_field_rec.notification_period_uom,
723 p_parent_task_id => p_updated_field_rec.parent_task_id,
724 p_alarm_start => p_updated_field_rec.alarm_start,
725 p_alarm_start_uom => p_updated_field_rec.alarm_start_uom,
726 p_alarm_on => p_updated_field_rec.alarm_on,
727 p_alarm_count => p_updated_field_rec.alarm_count,
728 p_alarm_fired_count => p_updated_field_rec.alarm_fired_count,
729 p_alarm_interval => p_updated_field_rec.alarm_interval,
730 p_alarm_interval_uom => p_updated_field_rec.alarm_interval_uom,
731 p_palm_flag => p_updated_field_rec.palm_flag,
732 p_wince_flag => p_updated_field_rec.wince_flag,
733 p_laptop_flag => p_updated_field_rec.laptop_flag,
734 p_device1_flag => p_updated_field_rec.device1_flag,
735 p_device2_flag => p_updated_field_rec.device2_flag,
736 p_device3_flag => p_updated_field_rec.device3_flag,
737 p_costs => p_updated_field_rec.costs,
738 p_currency_code => p_updated_field_rec.currency_code,
739 p_escalation_level => p_updated_field_rec.escalation_level,
740 x_return_status => x_return_status,
741 x_msg_count => x_msg_count,
742 x_msg_data => x_msg_data,
743 p_attribute1 => p_updated_field_rec.attribute1,
744 p_attribute2 => p_updated_field_rec.attribute2,
745 p_attribute3 => p_updated_field_rec.attribute3,
746 p_attribute4 => p_updated_field_rec.attribute4,
747 p_attribute5 => p_updated_field_rec.attribute5,
748 p_attribute6 => p_updated_field_rec.attribute6,
749 p_attribute7 => p_updated_field_rec.attribute7,
750 p_attribute8 => p_updated_field_rec.attribute8,
751 p_attribute9 => p_updated_field_rec.attribute9,
752 p_attribute10 => p_updated_field_rec.attribute10,
753 p_attribute11 => p_updated_field_rec.attribute11,
754 p_attribute12 => p_updated_field_rec.attribute12,
755 p_attribute13 => p_updated_field_rec.attribute13,
756 p_attribute14 => p_updated_field_rec.attribute14,
757 p_attribute15 => p_updated_field_rec.attribute15,
758 p_attribute_category => p_updated_field_rec.attribute_category,
759 p_date_selected => p_updated_field_rec.date_selected,
760 p_category_id => p_updated_field_rec.category_id,
761 p_show_on_calendar => p_updated_field_rec.show_on_calendar,
762 p_owner_status_id => p_updated_field_rec.owner_status_id,
763 p_enable_workflow => p_updated_field_rec.enable_workflow,
764 p_abort_workflow => p_updated_field_rec.abort_workflow,
765 p_change_mode => G_SKIP,
766 p_free_busy_type => p_updated_field_rec.free_busy_type, -- Bug No 4231616
767 p_task_confirmation_status => jtf_task_utl.g_miss_char,
768 p_task_confirmation_counter => jtf_task_utl.g_miss_number,
769 p_task_split_flag => jtf_task_utl.g_miss_char,
770 p_child_position => jtf_task_utl.g_miss_char,
771 p_child_sequence_num => jtf_task_utl.g_miss_number,
772 p_location_id => p_updated_field_rec.location_id
773 );
774
775 --Added by RDESPOTO on 07/29/2004
776 cac_view_util_pvt.update_repeat_collab_details(
777 p_source_task_id => p_updated_field_rec.task_id,
778 p_target_task_id => rec_all.task_id );
779
780 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
781 THEN
782 x_return_status := fnd_api.g_ret_sts_unexp_error;
783 RAISE fnd_api.g_exc_unexpected_error;
784 END IF;
785
786 IF rec_all.task_id = p_updated_field_rec.task_id
787 THEN
788 p_object_version_number := l_object_version_number;
789 END IF;
790
791 --------------------------------------------------------
792 -- Wipe out the assignment status for invitees
793 -- This will change the status back to 18 (Invited)
794 --------------------------------------------------------
795 --update_assignment_status(p_task_id => rec_all.task_id);
796 END LOOP;
797
798 END IF; -- end-if trunc(tasks.calendar_start_date) <> trunc(l_calendar_start_date)
799
800 IF fnd_api.to_boolean (p_commit)
801 THEN
802 COMMIT WORK;
803 END IF;
804
805 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
806 EXCEPTION
807 WHEN fnd_api.g_exc_unexpected_error
808 THEN
809 ROLLBACK TO update_repeat_appointment_pvt;
810 x_return_status := fnd_api.g_ret_sts_unexp_error;
811 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
812 WHEN OTHERS
813 THEN
814 ROLLBACK TO update_repeat_appointment_pvt;
815 fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
816 fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
817 fnd_msg_pub.add;
818 x_return_status := fnd_api.g_ret_sts_unexp_error;
819 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
820 END update_repeat_appointment;
821
822 END JTF_TASK_REPEAT_APPT_PVT;