[Home] [Help]
PACKAGE BODY: APPS.JTA_CAL_APPOINTMENT_PVT
Source
1 PACKAGE BODY jta_cal_appointment_pvt AS
2 /* $Header: jtavcab.pls 120.1 2005/07/02 02:24:26 appldev ship $ */
3
4 PROCEDURE get_alarm_start (p_task_id IN NUMBER,
5 x_alarm_start OUT NOCOPY NUMBER,
6 x_planned_start_date OUT NOCOPY DATE)
7 IS
8 CURSOR c_alarm IS
9 select alarm_start, planned_start_date
10 from jtf_tasks_b t
11 where t.task_id = p_task_id;
12
13 l_alarm c_alarm%ROWTYPE;
14 BEGIN
15 OPEN c_alarm;
16 FETCH c_alarm INTO l_alarm;
17 IF c_alarm%NOTFOUND THEN
18 CLOSE c_alarm;
19 fnd_message.set_name ('JTF', 'JTF_INVALID_TASK_ID');
20 fnd_msg_pub.add;
21 RAISE fnd_api.g_exc_unexpected_error;
22 ELSE
23 CLOSE c_alarm;
24 x_alarm_start := l_alarm.alarm_start;
25 x_planned_start_date := l_alarm.planned_start_date;
26
27 END IF;
28 END;
29
30 FUNCTION is_valid_alarm(p_alarm_start IN NUMBER)
31 RETURN BOOLEAN
32 IS
33 BEGIN
34 IF p_alarm_start <> 0 AND p_alarm_start <> 5 AND p_alarm_start <> 10
35 AND p_alarm_start <> 15 AND p_alarm_start <> 30
36 AND p_alarm_start <> 60 AND p_alarm_start <> 120 AND p_alarm_start <> 1440
37 AND p_alarm_start <> 2880 AND p_alarm_start <> 4320 AND p_alarm_start <> 10080
38 THEN
39 RETURN FALSE;
40 END IF;
41 RETURN TRUE;
42 END;
43
44 /*
45 Bug # 4190108, amigupta, Created one overloaded method which takes one parameter free_busy_type
46 */
47 PROCEDURE create_appointment (
48 p_task_name IN VARCHAR2,
49 p_task_type_id IN NUMBER,
50 p_description IN VARCHAR2,
51 p_task_priority_id IN NUMBER,
52 p_owner_type_code IN VARCHAR2,
53 p_owner_id IN NUMBER,
54 p_planned_start_date IN DATE,
55 p_planned_end_date IN DATE,
56 p_timezone_id IN NUMBER,
57 p_private_flag IN VARCHAR2,
58 p_alarm_start IN NUMBER,
59 p_alarm_on IN VARCHAR2,
60 p_category_id IN NUMBER,
61 x_return_status OUT NOCOPY VARCHAR2,
65 l_api_version CONSTANT NUMBER := 1.0;
62 x_task_id OUT NOCOPY NUMBER
63 )
64 IS
66 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_APPOINTMENT';
67 BEGIN
68 SAVEPOINT create_appointment;
69 x_return_status := fnd_api.g_ret_sts_success;
70
71 -- call new version, passing defaults for new functionality
72 create_appointment (
73 p_task_name => p_task_name,
74 p_task_type_id => p_task_type_id ,
75 p_description => p_description ,
76 p_task_priority_id => p_task_priority_id,
77 p_owner_type_code => p_owner_type_code,
78 p_owner_id => p_owner_id ,
79 p_planned_start_date => p_planned_start_date,
80 p_planned_end_date => p_planned_end_date ,
81 p_timezone_id => p_timezone_id ,
82 p_private_flag => p_private_flag ,
83 p_alarm_start => p_alarm_start,
84 p_alarm_on => p_alarm_on ,
85 p_category_id => p_category_id ,
86 p_free_busy_type => 'BUSY',
87 x_return_status => x_return_status,
88 x_task_id => x_task_id
89 );
90
91 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
92 THEN
93 x_return_status := fnd_api.g_ret_sts_unexp_error;
94 RAISE fnd_api.g_exc_unexpected_error;
95 END IF;
96
97 EXCEPTION
98 WHEN fnd_api.g_exc_unexpected_error
99 THEN
100 ROLLBACK TO create_appointment;
101 x_return_status := fnd_api.g_ret_sts_unexp_error;
102 WHEN OTHERS
103 THEN
104 ROLLBACK TO create_appointment;
105 x_return_status := fnd_api.g_ret_sts_unexp_error;
106 END;
107
108 PROCEDURE create_appointment (
109 p_task_name IN VARCHAR2,
110 p_task_type_id IN NUMBER,
111 p_description IN VARCHAR2,
112 p_task_priority_id IN NUMBER,
113 p_owner_type_code IN VARCHAR2,
114 p_owner_id IN NUMBER,
115 p_planned_start_date IN DATE,
116 p_planned_end_date IN DATE,
117 p_timezone_id IN NUMBER,
118 p_private_flag IN VARCHAR2,
119 p_alarm_start IN NUMBER,
120 p_alarm_on IN VARCHAR2,
121 p_category_id IN NUMBER,
122 p_free_busy_type IN VARCHAR2,
123 x_return_status OUT NOCOPY VARCHAR2,
124 x_task_id OUT NOCOPY NUMBER
125 )
126 IS
127 l_msg_count NUMBER;
128 l_msg_data VARCHAR2(2000);
129 BEGIN
130
131 fnd_msg_pub.initialize;
132 jtf_tasks_pvt.create_task(
133 p_api_version => 1.0,
134 p_task_name => p_task_name,
135 p_task_type_id => p_task_type_id,
136 p_task_status_id => 3, -- Accepted
137 p_description => p_description,
138 p_task_priority_id => p_task_priority_id ,
139 p_owner_type_code => p_owner_type_code,
140 p_owner_id => p_owner_id,
141 p_planned_start_date => p_planned_start_date ,
142 p_planned_end_date => p_planned_end_date,
143 p_timezone_id => p_timezone_id,
144 p_source_object_type_code => 'APPOINTMENT',
145 p_private_flag => p_private_flag,
146 p_workflow_process_id => 0,
147 p_alarm_start => p_alarm_start,
148 p_alarm_on => p_alarm_on,
149 p_alarm_interval_uom => 'min',
150 x_return_status => x_return_status,
151 x_msg_count => l_msg_count,
152 x_msg_data => l_msg_data,
153 x_task_id => x_task_id,
154 p_date_selected => 'P',
155 p_category_id => p_category_id,
156 p_show_on_calendar => 'Y',
157 p_owner_status_id => 3,--Accepted
158 p_enable_workflow => 'N',
159 p_abort_workflow => 'N',
160 p_entity => 'APPOINTMENT',
164 IF x_return_status = fnd_api.g_ret_sts_success AND p_alarm_start > 0
161 p_free_busy_type => p_free_busy_type
162 ) ;
163
165 AND is_valid_alarm(p_alarm_start) THEN
166 jtf_cal_wf_pvt.startreminders(
167 p_api_version => 1.0,
168 p_commit => 'T',
169 x_return_status => x_return_status,
170 x_msg_count => l_msg_count,
171 x_msg_data => l_msg_data,
172 p_invitor => p_owner_id,
173 p_taskid => x_task_id,
174 p_reminddate => p_planned_start_date - p_alarm_start/1440
175 );
176 END IF;
177 END;
178
179 /*
180 Bug # 4190108, amigupta, Created one overloaded method which takes one parameter free_busy_type
181 */
182
183 PROCEDURE update_appointment (
184 p_object_version_number IN OUT NOCOPY NUMBER ,
185 p_task_id IN NUMBER,
186 p_task_name IN VARCHAR2,
187 p_task_type_id IN NUMBER,
188 p_description IN VARCHAR2,
189 p_task_priority_id IN NUMBER,
190 p_planned_start_date IN DATE,
191 p_planned_end_date IN DATE,
192 p_timezone_id IN NUMBER,
193 p_private_flag IN VARCHAR2,
194 p_alarm_start IN NUMBER,
195 p_alarm_on IN VARCHAR2,
196 p_category_id IN NUMBER,
197 p_change_mode IN VARCHAR2,
198 x_return_status OUT NOCOPY VARCHAR2
199 )
200 IS
201 l_api_version CONSTANT NUMBER := 1.0;
202 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_APPOINTMENT';
203 BEGIN
204 SAVEPOINT update_appointment;
205 x_return_status := fnd_api.g_ret_sts_success;
206
207
208 -- call new version, passing defaults for new functionality
209 update_appointment (
210 p_object_version_number => p_object_version_number,
211 p_task_id => p_task_id ,
212 p_task_name => p_task_name,
213 p_task_type_id => p_task_type_id,
214 p_description => p_description,
215 p_task_priority_id => p_task_priority_id ,
216 p_planned_start_date => p_planned_start_date ,
217 p_planned_end_date => p_planned_end_date,
218 p_timezone_id => p_timezone_id ,
219 p_private_flag => p_private_flag ,
220 p_alarm_start => p_alarm_start ,
221 p_alarm_on => p_alarm_on ,
222 p_category_id => p_category_id ,
223 p_free_busy_type => 'BUSY' ,
224 p_change_mode => p_change_mode ,
225 x_return_status => x_return_status
226 );
227
228 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
229 THEN
230 x_return_status := fnd_api.g_ret_sts_unexp_error;
231 RAISE fnd_api.g_exc_unexpected_error;
232 END IF;
233
234 EXCEPTION
235 WHEN fnd_api.g_exc_unexpected_error
236 THEN
237 ROLLBACK TO update_appointment;
238 x_return_status := fnd_api.g_ret_sts_unexp_error;
239 WHEN OTHERS
240 THEN
241 ROLLBACK TO update_appointment;
242 x_return_status := fnd_api.g_ret_sts_unexp_error;
243 END;
244
245
246 PROCEDURE update_appointment (
247 p_object_version_number IN OUT NOCOPY NUMBER ,
248 p_task_id IN NUMBER,
249 p_task_name IN VARCHAR2,
250 p_task_type_id IN NUMBER,
251 p_description IN VARCHAR2,
252 p_task_priority_id IN NUMBER,
253 p_planned_start_date IN DATE,
254 p_planned_end_date IN DATE,
255 p_timezone_id IN NUMBER,
256 p_private_flag IN VARCHAR2,
257 p_alarm_start IN NUMBER,
258 p_alarm_on IN VARCHAR2,
259 p_category_id IN NUMBER,
260 p_free_busy_type IN VARCHAR2,
261 p_change_mode IN VARCHAR2,
262 x_return_status OUT NOCOPY VARCHAR2
263
264 )
265 IS
266 l_msg_count NUMBER;
267 l_msg_data VARCHAR2(2000);
268 l_alarm_start NUMBER;
269 l_planned_start_date DATE;
270 l_remind_date DATE;
271 BEGIN
272 fnd_msg_pub.initialize;
273 get_alarm_start(p_task_id, l_alarm_start, l_planned_start_date);
274 jtf_tasks_pvt.update_task(
275 p_api_version => 1.0,
276 p_object_version_number => p_object_version_number,
277 p_task_id => p_task_id,
278 p_task_name => p_task_name,
279 p_task_type_id => p_task_type_id,
280 p_description => p_description,
284 p_timezone_id => p_timezone_id,
281 p_task_priority_id => p_task_priority_id,
282 p_planned_start_date => p_planned_start_date,
283 p_planned_end_date => p_planned_end_date,
285 p_private_flag => p_private_flag,
286 p_alarm_start => p_alarm_start,
287 p_alarm_on => p_alarm_on,
288 p_source_object_type_code => 'APPOINTMENT',
289 x_return_status => x_return_status,
290 x_msg_count => l_msg_count,
291 x_msg_data => l_msg_data,
292 p_category_id => p_category_id ,
293 p_enable_workflow => 'N',
294 p_abort_workflow => 'N',
295 p_change_mode => p_change_mode,
296 p_free_busy_type => p_free_busy_type
297 );
298 IF x_return_status = fnd_api.g_ret_sts_success THEN
299 IF (l_alarm_start > 0 and (p_alarm_start = 0 OR p_alarm_start IS NULL)) OR
300 (NOT is_valid_alarm(p_alarm_start)) THEN
301 --kill the old workflow
302 jtf_cal_wf_pvt.updatereminders(
303 p_api_version => 1.0,
304 p_commit => 'T',
305 x_return_status => x_return_status,
306 x_msg_count => l_msg_count,
307 x_msg_data => l_msg_data,
308 p_taskid => p_task_id,
309 p_reminddate => NULL
310 );
311 -- update workflow if start date or remindme option changed
315 jtf_cal_wf_pvt.updatereminders(
312 ELSIF p_alarm_start > 0 AND is_valid_alarm(p_alarm_start) AND
313 (p_alarm_start <> l_alarm_start
314 OR p_planned_start_date <> l_planned_start_date) THEN
316 p_api_version => 1.0,
317 p_commit => 'T',
318 x_return_status => x_return_status,
319 x_msg_count => l_msg_count,
320 x_msg_data => l_msg_data,
321 p_taskid => p_task_id,
322 p_reminddate => p_planned_start_date - p_alarm_start/1440
323 );
324 END IF;
325 END IF;
326 END;
327
328 PROCEDURE delete_appointment (
329 p_object_version_number IN NUMBER,
330 p_task_id IN NUMBER,
331 p_delete_future_recurrences IN VARCHAR2,
332 x_return_status OUT NOCOPY VARCHAR2
333 )
334 IS
335 l_msg_count NUMBER;
336 l_msg_data VARCHAR2(2000);
337 BEGIN
338 fnd_msg_pub.initialize;
339 jtf_tasks_pvt.delete_task (
340 p_api_version => 1.0,
341 p_object_version_number => p_object_version_number,
342 p_task_id => p_task_id,
343 p_delete_future_recurrences => p_delete_future_recurrences,
344 x_return_status => x_return_status,
345 x_msg_count => l_msg_count,
346 x_msg_data => l_msg_data,
347 p_enable_workflow => 'N',
348 p_abort_workflow => 'N'
349 );
350 END;
351 END; -- End of package