DBA Data[Home] [Help]

PACKAGE BODY: APPS.CAC_BOOKINGS_PUB

Source


4    PROCEDURE create_booking (
1 PACKAGE BODY cac_bookings_pub AS
2 /* $Header: cacpttbb.pls 120.3 2005/07/29 12:19:11 sbarat noship $ */
3 
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,
111 
108             p_data => x_msg_data
109          );
110    END;
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
259      -- For booking scheduled dates are populated --'
256       l_booking_type_rec 	cac_bookings_pub.booking_type := p_booking_rec;
257 
258    BEGIN
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,
364 		 x_owner_id => l_booking_type_rec.resource_id,
365 		 x_owner_type_code => l_booking_type_rec.resource_type_code
366 	  );
367 
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
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);
486          fnd_msg_pub.add;
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;