[Home] [Help]
PACKAGE BODY: APPS.CAC_BOOKINGS_PUB
Source
1 PACKAGE BODY cac_bookings_pub AS
2 /* $Header: cacpttbb.pls 120.3 2005/07/29 12:19:11 sbarat noship $ */
3
4 PROCEDURE create_booking (
5 p_api_version IN NUMBER,
6 p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
7 p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
8 p_booking_rec IN cac_bookings_pub.booking_type,
9 x_booking_id OUT NOCOPY NUMBER,
10 x_return_status OUT NOCOPY VARCHAR2,
11 x_msg_count OUT NOCOPY NUMBER,
12 x_msg_data OUT NOCOPY VARCHAR2
13 )
14 IS
15 l_api_version CONSTANT NUMBER
16 := 1.0;
17 l_api_name CONSTANT VARCHAR2(30)
18 := 'CREATE_BOOKING';
19 l_booking_type_rec cac_bookings_pub.booking_type := p_booking_rec;
20
21 BEGIN
22 SAVEPOINT create_bookings_pub;
23 x_return_status := fnd_api.g_ret_sts_success;
24
25 IF fnd_api.to_boolean (p_init_msg_list)
26 THEN
27 fnd_msg_pub.initialize;
28 END IF;
29
30 IF NOT fnd_api.compatible_api_call (
31 l_api_version,
32 p_api_version,
33 l_api_name,
34 g_pkg_name
35 )
36 THEN
37 RAISE fnd_api.g_exc_unexpected_error;
38 END IF;
39
40 -- Booking Rules...
41
42 validate_booking (
43 p_booking_rec => l_booking_type_rec,
44 x_return_status => x_return_status,
45 x_msg_count => x_msg_count,
46 x_msg_data => x_msg_data
47 );
48
49 jtf_tasks_pvt.create_task (
50 p_api_version => 1.0,
51 p_init_msg_list => fnd_api.g_false,
52 p_commit => fnd_api.g_false,
53 p_task_name => l_booking_type_rec.booking_subject,
54 p_task_type_id => l_booking_type_rec.booking_type_id,
55 p_description => l_booking_type_rec.description,
56 p_task_status_id => l_booking_type_rec.booking_status_id,
57 p_owner_type_code => l_booking_type_rec.resource_type_code,
58 p_owner_id => l_booking_type_rec.resource_id,
59 p_source_object_type_code => l_booking_type_rec.source_object_type_code,
60 p_source_object_id => l_booking_type_rec.source_object_id,
61 p_scheduled_start_date => l_booking_type_rec.start_date,
62 p_scheduled_end_date => l_booking_type_rec.end_date,
63 p_date_selected => 'S',
64 p_show_on_calendar => 'Y',
65 p_entity => 'BOOKING',
66 p_free_busy_type => l_booking_type_rec.freebusytype,
67 p_enable_workflow => fnd_profile.value('JTF_TASK_ENABLE_WORKFLOW'),
68 p_abort_workflow => fnd_profile.value('JTF_TASK_ABORT_PREV_WF'),
69 p_reference_flag => 'N',
70 p_task_confirmation_status => NULL,
71 p_task_confirmation_counter => NULL,
72 p_task_split_flag => NULL,
73 x_return_status => x_return_status,
74 x_msg_count => x_msg_count,
75 x_msg_data => x_msg_data,
76 x_task_id => x_booking_id
77 );
78
79 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
80 THEN
81 RAISE fnd_api.g_exc_unexpected_error;
82 END IF;
83
84 IF fnd_api.to_boolean (p_commit)
85 THEN
86 COMMIT WORK;
87 END IF;
88
89 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
90 EXCEPTION
91 WHEN fnd_api.g_exc_unexpected_error
92 THEN
93 ROLLBACK TO create_bookings_pub;
94 x_return_status := fnd_api.g_ret_sts_unexp_error;
95 fnd_msg_pub.count_and_get (
96 p_count => x_msg_count,
97 p_data => x_msg_data
98 );
99 WHEN OTHERS
100 THEN
101 ROLLBACK TO create_bookings_pub;
102 fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
103 fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
104 fnd_msg_pub.add;
105 x_return_status := fnd_api.g_ret_sts_unexp_error;
106 fnd_msg_pub.count_and_get (
107 p_count => x_msg_count,
108 p_data => x_msg_data
109 );
110 END;
111
112 PROCEDURE update_booking (
113 p_api_version IN NUMBER,
114 p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
115 p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
116 p_booking_rec IN cac_bookings_pub.booking_type,
117 p_object_version_number IN NUMBER ,
118 x_return_status OUT NOCOPY VARCHAR2,
119 x_msg_count OUT NOCOPY NUMBER,
120 x_msg_data OUT NOCOPY VARCHAR2
121 )
122
123 IS
124 l_api_version CONSTANT NUMBER
125 := 1.0;
126 l_api_name CONSTANT VARCHAR2(30)
127 := 'UPDATE_BOOKING';
128 l_ovn NUMBER := p_object_version_number;
129 l_booking_type_rec cac_bookings_pub.booking_type := p_booking_rec;
130
131 BEGIN
132 SAVEPOINT update_bookings_pub;
133 x_return_status := fnd_api.g_ret_sts_success;
134
135 IF fnd_api.to_boolean (p_init_msg_list)
136 THEN
137 fnd_msg_pub.initialize;
138 END IF;
139
140 IF NOT fnd_api.compatible_api_call (
141 l_api_version,
142 p_api_version,
143 l_api_name,
144 g_pkg_name
145 )
146 THEN
147 RAISE fnd_api.g_exc_unexpected_error;
148 END IF;
149
150 -- Booking Rules...
151 -- For booking scheduled dates are populated --'
152
153 IF (l_booking_type_rec.booking_id = fnd_api.g_miss_num
154 OR l_booking_type_rec.booking_id IS NULL)
155 THEN
156 fnd_message.set_name ('CAC', 'CAC_BOOKING_MISSING_TASK');
157 fnd_msg_pub.add;
158 RAISE fnd_api.g_exc_unexpected_error;
159 ELSE
160
161 jtf_task_utl.validate_task (
162 p_task_id => l_booking_type_rec.booking_id,
163 p_task_number => NULL,
164 x_task_id => l_booking_type_rec.booking_id,
165 x_return_status => x_return_status
166 );
167
168 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
169 THEN
170 x_return_status := fnd_api.g_ret_sts_unexp_error;
171 RAISE fnd_api.g_exc_unexpected_error;
172 END IF;
173
174 END IF;
175
176 -- Booking Rules...
177
178 validate_booking (
179 p_booking_rec => l_booking_type_rec,
180 x_return_status => x_return_status,
181 x_msg_count => x_msg_count,
182 x_msg_data => x_msg_data
183 );
184
185
186 jtf_tasks_pvt.update_task (
187 p_api_version => 1.0,
188 p_init_msg_list => fnd_api.g_false,
189 p_commit => fnd_api.g_false,
190 p_object_version_number => l_ovn,
191 p_task_id => l_booking_type_rec.booking_id,
192 p_task_name => l_booking_type_rec.booking_subject,
193 p_task_type_id => l_booking_type_rec.booking_type_id,
194 p_description => l_booking_type_rec.description,
195 p_owner_type_code => l_booking_type_rec.resource_type_code,
196 p_owner_id => l_booking_type_rec.resource_id,
197 p_source_object_type_code => l_booking_type_rec.source_object_type_code,
198 p_source_object_id => l_booking_type_rec.source_object_id,
199 p_scheduled_start_date => l_booking_type_rec.start_date,
200 p_scheduled_end_date => l_booking_type_rec.end_date,
201 p_show_on_calendar => 'Y',
202 p_date_selected => 'S',
203 p_free_busy_type => l_booking_type_rec.freebusytype,
204 p_enable_workflow => fnd_profile.value('JTF_TASK_ENABLE_WORKFLOW'),
205 p_abort_workflow => fnd_profile.value('JTF_TASK_ABORT_PREV_WF'),
206 p_change_mode => JTF_TASK_REPEAT_APPT_PVT.G_ONE,
207 p_task_confirmation_status => NULL,
208 p_task_confirmation_counter => NULL,
209 p_task_split_flag => NULL,
210 x_return_status => x_return_status,
211 x_msg_count => x_msg_count,
212 x_msg_data => x_msg_data
213 );
214
215 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
216 THEN
217 RAISE fnd_api.g_exc_unexpected_error;
218 END IF;
219
220 IF fnd_api.to_boolean (p_commit)
221 THEN
222 COMMIT WORK;
223 END IF;
224
225 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
226 EXCEPTION
227 WHEN fnd_api.g_exc_unexpected_error
228 THEN
229 ROLLBACK TO update_bookings_pub;
230 x_return_status := fnd_api.g_ret_sts_unexp_error;
231 fnd_msg_pub.count_and_get (
232 p_count => x_msg_count,
233 p_data => x_msg_data
234 );
235 WHEN OTHERS
236 THEN
237 ROLLBACK TO update_bookings_pub;
238 fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
239 fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
240 fnd_msg_pub.add;
241 x_return_status := fnd_api.g_ret_sts_unexp_error;
242 fnd_msg_pub.count_and_get (
243 p_count => x_msg_count,
244 p_data => x_msg_data
245 );
246 END;
247
248
249 PROCEDURE validate_booking (
250 p_booking_rec IN cac_bookings_pub.booking_type,
251 x_return_status OUT NOCOPY VARCHAR2,
252 x_msg_count OUT NOCOPY NUMBER,
253 x_msg_data OUT NOCOPY VARCHAR2
254 )
255 IS
256 l_booking_type_rec cac_bookings_pub.booking_type := p_booking_rec;
257
258 BEGIN
259 -- For booking scheduled dates are populated --'
260 IF (l_booking_type_rec.start_date IS NULL)
261 THEN
262 fnd_message.set_name ('CAC', 'CAC_BOOKING_NULL_START_DATE');
263 fnd_msg_pub.add;
264 RAISE fnd_api.g_exc_unexpected_error;
265 END IF;
266
267 IF (l_booking_type_rec.end_date IS NULL)
268 THEN
269 fnd_message.set_name ('CAC', 'CAC_BOOKING_NULL_END_DATE');
270 fnd_msg_pub.add;
271 RAISE fnd_api.g_exc_unexpected_error;
272 END IF;
273
274 --Validations
275
276 jtf_task_utl.validate_task_type (
277 p_task_type_id => l_booking_type_rec.booking_type_id,
278 p_task_type_name => NULL,
279 x_return_status => x_return_status,
280 x_task_type_id => l_booking_type_rec.booking_type_id
281 );
282
283 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
284 THEN
285 RAISE fnd_api.g_exc_unexpected_error;
286 END IF;
287
288 IF l_booking_type_rec.booking_type_id IS NULL
289 THEN
290 fnd_message.set_name ('CAC', 'CAC_BOOKING_MISSING_TASK_TYPE');
291 fnd_msg_pub.add;
292 RAISE fnd_api.g_exc_unexpected_error;
293 END IF;
294
295 /* jtf_task_utl.validate_task_status (
296 p_task_status_id => l_booking_type_rec.booking_status_id,
297 p_task_status_name => NULL,
298 p_validation_type => 'TASK',
299 x_return_status => x_return_status,
300 x_task_status_id => l_booking_type_rec.booking_status_id
301 );
302
303 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
304 THEN
305 RAISE fnd_api.g_exc_unexpected_error;
306 END IF;
307
308 IF l_booking_type_rec.booking_status_id IS NULL
309 THEN
310 fnd_message.set_name ('CAC', 'CAC_BOOKING_MISSING_TASK_STATUS');
311 fnd_msg_pub.add;
312 RAISE fnd_api.g_exc_unexpected_error;
313 END IF; */
314
315 jtf_task_utl.validate_dates (
316 p_date_tag => jtf_task_utl.get_translated_lookup (
317 'JTF_TASK_TRANSLATED_MESSAGES',
318 'SCHEDULED'
319 ),
320 p_start_date => l_booking_type_rec.start_date,
321 p_end_date => l_booking_type_rec.end_date,
322 x_return_status => x_return_status
323 );
324
325 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
326 THEN
327 RAISE fnd_api.g_exc_unexpected_error;
328 END IF;
329
330 -- Validate Source Object Type Code --
331
332 jtf_task_utl.validate_object_type
333 (
334 p_object_code => l_booking_type_rec.source_object_type_code,
335 p_object_type_name => NULL,
336 p_object_type_tag => 'Source',
337 p_object_usage => 'BOOKING',
338 x_return_status => x_return_status ,
339 x_object_code => l_booking_type_rec.source_object_type_code
340 );
341
342 -- Validate Owner --
343 -- this will be changed to validate_booking_resource ..
344
345 IF l_booking_type_rec.resource_id IS NULL
346 THEN
347 fnd_message.set_name ('CAC', 'BKG_INVALID_RESOURCE_ID');
348 fnd_msg_pub.add;
349 RAISE fnd_api.g_exc_unexpected_error;
350 END IF;
351
352 IF l_booking_type_rec.resource_type_code IS NULL
353 THEN
354 fnd_message.set_name ('CAC', 'BKG_INVALID_RESOURCE_TYPE_CODE');
355 fnd_msg_pub.add;
356 RAISE fnd_api.g_exc_unexpected_error;
357 END IF;
358
359 jtf_task_utl.validate_task_owner (
360 p_owner_type_code => l_booking_type_rec.resource_type_code,
361 p_owner_type_name => NULL,
362 p_owner_id => l_booking_type_rec.resource_id,
363 x_return_status => x_return_status,
367
364 x_owner_id => l_booking_type_rec.resource_id,
365 x_owner_type_code => l_booking_type_rec.resource_type_code
366 );
368
369 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
370 THEN
371 fnd_message.set_name ('JTF', 'BKG_INVALID_RESOURCE');
372 fnd_msg_pub.add;
373 RAISE fnd_api.g_exc_unexpected_error;
374 END IF;
375
376 -- include booking usage here,,
377 /* jtf_task_utl.validate_source_object (
378 p_object_code => l_booking_type_rec.source_object_type_code,
379 p_object_id => l_booking_type_rec.source_object_id,
380 p_object_name => NULL,
381 x_return_status => x_return_status
382 );
383
384 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
385 THEN
386 RAISE fnd_api.g_exc_unexpected_error;
387 END IF; */
388
389 -- Validate freebusytype ..
390 IF l_booking_type_rec.freebusytype NOT IN
391 ('FREE','BUSY','FREE_BUSY_TENTATIVE')
392 THEN
393 fnd_message.set_name ('CAC', 'CAC_BOOKING_INVALID_TYPE');
394 fnd_msg_pub.add;
395 RAISE fnd_api.g_exc_unexpected_error;
396 END IF;
397
398
399 END;
400
401 PROCEDURE delete_booking (
402 p_api_version IN NUMBER,
403 p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
404 p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
405 p_booking_id IN NUMBER,
406 p_object_version_number IN NUMBER ,
407 x_return_status OUT NOCOPY VARCHAR2,
408 x_msg_count OUT NOCOPY NUMBER,
409 x_msg_data OUT NOCOPY VARCHAR2
410 )
411 IS
412 l_api_version CONSTANT NUMBER
413 := 1.0;
414 l_api_name CONSTANT VARCHAR2(30)
415 := 'DELETE_BOOKING';
416 l_task_id jtf_tasks_b.task_id%TYPE
417 := p_booking_id;
418
419 l_ovn NUMBER
420 := p_object_version_number;
421
422 BEGIN
423 SAVEPOINT delete_bookings_pub;
424 x_return_status := fnd_api.g_ret_sts_success;
425
426 IF fnd_api.to_boolean (p_init_msg_list)
427 THEN
428 fnd_msg_pub.initialize;
429 END IF;
430
431 IF NOT fnd_api.compatible_api_call (
432 l_api_version,
433 p_api_version,
434 l_api_name,
435 g_pkg_name
436 )
437 THEN
438 RAISE fnd_api.g_exc_unexpected_error;
439 END IF;
440
441 IF (l_task_id = fnd_api.g_miss_num)
442 OR (l_task_id IS NULL)
443 THEN
444 fnd_message.set_name ('CAC', 'CAC_BOOKING_MISSING_TASK');
445 fnd_msg_pub.add;
446 RAISE fnd_api.g_exc_unexpected_error;
447 END IF;
448
449
450 jtf_tasks_pvt.delete_task (
451 p_api_version => 1.0,
452 p_init_msg_list => fnd_api.g_false,
453 p_commit => fnd_api.g_false,
454 p_object_version_number => l_ovn,
455 p_task_id => l_task_id,
456 x_return_status => x_return_status,
457 x_msg_count => x_msg_count,
458 x_msg_data => x_msg_data
459 );
460
461 IF NOT (x_return_status = fnd_api.g_ret_sts_success)
462 THEN
463 RAISE fnd_api.g_exc_unexpected_error;
464 END IF;
465
466 IF fnd_api.to_boolean (p_commit)
467 THEN
468 COMMIT WORK;
469 END IF;
470
471 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
472 EXCEPTION
473 WHEN fnd_api.g_exc_unexpected_error
474 THEN
475 ROLLBACK TO delete_bookings_pub;
476 x_return_status := fnd_api.g_ret_sts_unexp_error;
477 fnd_msg_pub.count_and_get (
478 p_count => x_msg_count,
479 p_data => x_msg_data
480 );
481 WHEN OTHERS
482 THEN
486 fnd_msg_pub.add;
483 ROLLBACK TO delete_bookings_pub;
484 fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
485 fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
487 x_return_status := fnd_api.g_ret_sts_unexp_error;
488 fnd_msg_pub.count_and_get (
489 p_count => x_msg_count,
490 p_data => x_msg_data
491 );
492 END;
493
494 END;