DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_PHYSICALMAP_GRP

Source


1 PACKAGE BODY JTF_PhysicalMap_GRP AS
2 /* $Header: JTFGPSLB.pls 115.6 2004/07/09 18:50:12 applrt ship $ */
3 g_yes VARCHAR2(1) := 'Y';
4 g_no VARCHAR2(1) := 'N';
5 
6 ---------------------------------------------------------------------
7 -- PROCEDURE
8 --	save_physicalmap
9 --
10 -- PURPOSE
11 --   Save a collection of physical_site_language mappings for a physical
12 --	attachment and one mini-site
13 --
14 -- PARAMETERS
15 --	p_attachment_id: the associated attachment
16 --	p_msite_id: the associated mini-site
17 --	p_language_code_tbl: A collection of associated language codes for the
18 --		the given physical attachment and mini-site
19 --
20 -- NOTES
21 --   1. Raises an exception if the api_version is not valid
22 --   2. Raises an exception if the attachment or mini-site doesn't exist
23 --   3. First delete all the records in JTF_LGL_PHYS_MAP for the given
24 --	   attachment and mini-site; then insert a record into
25 --	   JTF_LGL_PHYS_MAP for each language_code in
26 --	   p_language_code_tbl which is supported at the given site
27 --   4. Raises an exception if there is any duplicate mappings defined
28 --	   for the same logical deliverable - roll back
29 --   5. Ignore the non-existent or the non-supported language code
30 --	   for the given site; pass out a warning message
31 --   6. Raise an exception for any other errors
32 ---------------------------------------------------------------------
33 PROCEDURE save_physicalmap (
34 	p_api_version            IN   NUMBER,
35 	p_init_msg_list          IN   VARCHAR2 := FND_API.g_false,
36 	p_commit                 IN   VARCHAR2 := FND_API.g_false,
37 	x_return_status          OUT  VARCHAR2,
38 	x_msg_count              OUT  NUMBER,
39 	x_msg_data               OUT  VARCHAR2,
40 	p_attachment_id		IN	NUMBER,
41 	p_msite_id			IN	NUMBER,
42 	p_language_code_tbl		IN	LANGUAGE_CODE_TBL_TYPE) IS
43 
44 	l_api_name CONSTANT VARCHAR2(30) := 'save_physicalmap';
45 	l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
46 
47 	l_msite_type VARCHAR2(10) := 'SITE';
48 	l_default_msite VARCHAR2(1) := g_no;
49 	l_default_lang VARCHAR2(1) := g_no;
50 
51 	l_deliverable_id NUMBER;
52 	l_msite_id NUMBER;
53 	l_language_code VARCHAR2(4);
54 	l_lgl_phys_map_id NUMBER;
55 
56 	l_index NUMBER;
57 
58    	CURSOR lgl_phys_map_id_seq IS
59 		SELECT JTF_DSP_LGL_PHYS_MAP_S1.NEXTVAL FROM DUAL;
60 
61 BEGIN
62 
63    	-- Standard start of API savepoint
64    	SAVEPOINT save_physicalmap_grp;
65 
66    	-- Standard call to check for call compatibility
67    	IF NOT FND_API.compatible_api_call(
68          g_api_version,
69          p_api_version,
70          l_api_name,
71          g_pkg_name
72    	) THEN
73       	RAISE FND_API.g_exc_unexpected_error;
74    	END IF;
75 
76    	-- Initialize message list if p_init_msg_list is set to TRUE
77    	IF FND_API.to_boolean(p_init_msg_list) THEN
78       	FND_MSG_PUB.initialize;
79    	END IF;
80 
81    	-- Initialize API rturn status to success
82    	x_return_status := FND_API.g_ret_sts_success;
83 
84    	-- API body
85 
86    	-- Check if the attachment id exists
87 	l_deliverable_id := JTF_DSPMGRVALIDATION_GRP.check_attachment_deliverable(
88 		p_attachment_id);
89 	IF l_deliverable_id IS NULL THEN
90 		RAISE FND_API.g_exc_error;
91 	END IF;
92 
93 	-- Check if the mini-site id exists
94 	l_msite_id := p_msite_id;
95 	IF p_msite_id IS NOT NULL THEN
96 		IF NOT JTF_DSPMGRVALIDATION_GRP.check_msite_exists(p_msite_id) THEN
97 			RAISE FND_API.g_exc_error;
98 		END IF;
99 
100 		-- Delete all the existing mappings
101 		DELETE FROM JTF_DSP_LGL_PHYS_MAP
102 			WHERE ( (attachment_id = p_attachment_id)
103 			AND (default_site = l_default_msite)
104 			AND (msite_id = p_msite_id) );
105 	ELSE
106 		l_msite_type := 'ALLSITES';
107 		l_default_msite := g_yes;
108 
109 		l_msite_id := JTF_DSPMGRVALIDATION_GRP.check_master_msite_exists;
110 		IF l_msite_id IS NULL THEN
111 			RAISE FND_API.g_exc_error;
112 		END IF;
113 
114 		-- Delete all the existing mappings
115 		DELETE FROM JTF_DSP_LGL_PHYS_MAP
116 			WHERE ( (attachment_id = p_attachment_id)
117 			AND (default_site = g_yes) );
118 	END IF;
119 
120 	-- Check if the language code exists or supported at the given mini-site
121 
122 	IF p_language_code_tbl IS NOT NULL THEN
123 		l_language_code := TRIM(p_language_code_tbl(1));
124 		IF l_language_code IS NULL THEN
125 			-- temporarily using US. change later
126 			l_language_code := 'US';
127 			l_default_lang := g_yes;
128 
129 			OPEN lgl_phys_map_id_seq;
130 			FETCH lgl_phys_map_id_seq INTO l_lgl_phys_map_id;
131 			CLOSE lgl_phys_map_id_seq;
132 
133 			INSERT INTO JTF_DSP_LGL_PHYS_MAP (
134 				lgl_phys_map_id,
135 				object_version_number,
136 				last_update_date,
137 				last_updated_by,
138 				creation_date,
139 				created_by,
140 				last_update_login,
141 				msite_id,
142 				language_code,
143 				attachment_id,
144 				item_id,
145 				default_site,
146 				default_language
147 			) VALUES (
148 				l_lgl_phys_map_id,
149 				1,
150 				SYSDATE,
151 				FND_GLOBAL.user_id,
152 				SYSDATE,
153 				FND_GLOBAL.user_id,
154 				FND_GLOBAL.login_id,
155 				l_msite_id,
156 				l_language_code,
157 				p_attachment_id,
158 				l_deliverable_id,
159 				l_default_msite,
160 				l_default_lang);
161 
162 		ELSE
163 			FOR l_index IN 1..p_language_code_tbl.COUNT LOOP
164 			BEGIN
165 
166 				SAVEPOINT save_one_physicalmap_grp;
167 
168 				-- Check if the language is supported at the given site
169 				IF (l_msite_type = 'SITE') THEN
170 					IF NOT JTF_DSPMGRVALIDATION_GRP.check_language_supported(
171 						p_msite_id,
172 						p_language_code_tbl(l_index)) THEN
173 						RAISE FND_API.g_exc_error;
174 					END IF;
175 		    		END IF;
176 
177 	        		OPEN lgl_phys_map_id_seq;
178 	        		FETCH lgl_phys_map_id_seq INTO l_lgl_phys_map_id;
179 	        		CLOSE lgl_phys_map_id_seq;
180 
181 				INSERT INTO JTF_DSP_LGL_PHYS_MAP (
182 		    			lgl_phys_map_id,
183 					object_version_number,
184 		    			last_update_date,
185 		    			last_updated_by,
186 		    			creation_date,
187 		    			created_by,
188 		    			last_update_login,
189 		    			msite_id,
190 		    			language_code,
191 		    			attachment_id,
192 					item_id,
193 					default_site,
194 					default_language
195 	    			) VALUES (
196 		    			l_lgl_phys_map_id,
197 					1,
198 		    			SYSDATE,
199 		    			FND_GLOBAL.user_id,
200 		    			SYSDATE,
201 		    			FND_GLOBAL.user_id,
202 		    			FND_GLOBAL.login_id,
203 		    			l_msite_id,
204 					p_language_code_tbl(l_index),
205 					p_attachment_id,
206 					l_deliverable_id,
207 					l_default_msite,
208 					l_default_lang
209 	    			);
210 
211 			EXCEPTION
212 
213 				WHEN FND_API.g_exc_error THEN
214 					ROLLBACK TO save_one_physicalmap_grp;
215 					IF x_return_status <> FND_API.g_ret_sts_unexp_error THEN
216 						x_return_status := FND_API.g_ret_sts_error;
217 					END IF;
218 
219 				WHEN dup_val_on_index THEN
220 					ROLLBACK TO save_one_physicalmap_grp;
221 					IF x_return_status <> FND_API.g_ret_sts_unexp_error THEN
222 						x_return_status := FND_API.g_ret_sts_error;
223 					END IF;
224 					IF FND_MSG_PUB.check_msg_level(
225 						FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
226 						FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
227 
228 						IF l_default_msite = g_yes THEN
229 							FND_MESSAGE.set_name(
230 								'JTF',
231 								'JTF_DSP_PHYSMAP_ALL_LNG_EXISTS');
232 							FND_MESSAGE.set_token(
233 								'LANG',
234 								p_language_code_tbl(l_index));
235 						ELSE
236 							FND_MESSAGE.set_name(
237 								'JTF',
238 								'JTF_DSP_PHYSMAP_EXISTS');
239 							FND_MESSAGE.set_token(
240 								'MSITE_ID',
241 								TO_CHAR(l_msite_id));
242 							FND_MESSAGE.set_token(
243 								'LANG',
244 								p_language_code_tbl(l_index));
245 						END IF;
246 						FND_MESSAGE.set_token(
247 							'ID',
248 							TO_CHAR(l_deliverable_id));
249 						FND_MSG_PUB.add;
250 					END IF;
251 
252 				WHEN OTHERS THEN
253 					ROLLBACK TO save_one_physicalmap_grp;
254 					x_return_status := FND_API.g_ret_sts_unexp_error ;
255 
256 					IF FND_MSG_PUB.check_msg_level(
257 						FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
258 						FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
259 					END IF;
260 
261 			END;
262 			END LOOP;
263 	    END IF;
264 
265 	END IF;
266 
267 	-- Check if the caller requested to commit ,
268 	-- If p_commit set to true, commit the transaction
269 	IF  FND_API.to_boolean(p_commit) THEN
270 		COMMIT;
271 	END IF;
272 
273      -- Standard call to get message count and if count is 1, get message info
274 	FND_MSG_PUB.count_and_get(
275 		p_encoded      =>   FND_API.g_false,
276 		p_count        =>   x_msg_count,
277 		p_data         =>   x_msg_data
278 	);
279 
280 
281 EXCEPTION
282 
283      WHEN FND_API.g_exc_error THEN
284 		ROLLBACK TO save_physicalmap_grp;
285 		x_return_status := FND_API.g_ret_sts_error;
286 		FND_MSG_PUB.count_and_get(
287 			p_encoded      =>   FND_API.g_false,
288 			p_count        =>   x_msg_count,
289 			p_data         =>   x_msg_data
290 		);
291 
292 	WHEN FND_API.g_exc_unexpected_error THEN
293 		ROLLBACK TO save_physicalmap_grp;
294 		x_return_status := FND_API.g_ret_sts_unexp_error;
295 		FND_MSG_PUB.count_and_get(
296 			p_encoded      =>   FND_API.g_false,
297 			p_count        =>   x_msg_count,
298 			p_data         =>   x_msg_data
299 		);
300 
301 	WHEN dup_val_on_index THEN
302 		ROLLBACK TO save_physicalmap_grp;
303 		x_return_status := FND_API.g_ret_sts_error;
304 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
305 			FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
306 
307 			IF l_default_msite = g_no THEN
308 				FND_MESSAGE.set_name('JTF', 'JTF_DSP_PHYSMAP_ALL_ALL_EXISTS');
309 			ELSE
310 				FND_MESSAGE.set_name('JTF', 'JTF_DSP_PHYSMAP_STE_ALL_EXISTS');
311 				FND_MESSAGE.set_token('MSITE_ID', TO_CHAR(l_msite_id));
312 			END IF;
313 			FND_MESSAGE.set_token('ID', TO_CHAR(l_deliverable_id));
314 			FND_MSG_PUB.add;
315 		END IF;
316 
317           FND_MSG_PUB.count_and_get(
318 			p_encoded => FND_API.g_false,
319 			p_count   => x_msg_count,
320 			p_data    => x_msg_data
321 		);
322 
323 	WHEN OTHERS THEN
324 		ROLLBACK TO save_physicalmap_grp;
325 		x_return_status := FND_API.g_ret_sts_unexp_error ;
326 
327 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
328 			FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
329       	END IF;
330 
331       	FND_MSG_PUB.count_and_get(
332             	p_encoded => FND_API.g_false,
333             	p_count   => x_msg_count,
334             	p_data    => x_msg_data
335       	);
336 
337 END save_physicalmap;
338 
339 
340 ---------------------------------------------------------------------
341 -- PROCEDURE
342 --   save_physicalmap
343 --
344 -- PURPOSE
345 --   Save a collection of physical_site_language mappings for a physical
346 --   attachment and multiple mini-sites
347 --
348 -- PARAMETERS
349 --   p_attachment_id: the associated attachment
350 --	p_msite_lang_tbl: a collection of records of associated mini-site and
351 --		the number of language codes selected for this mini-site
352 --   p_language_code_tbl: A collection of associated language codes for the
353 --        the given physical attachment and mini-sites. The language codes
354 --		are grouped by associted mini-site and keep in the same order as
355 --		p_msite_lang_tbl
356 --
357 -- NOTES
358 --   1. Raises an exception if the api_version is not valid
359 --   2. Raises an exception if the attachment or mini-sites doesn't exist
360 --   3. First delete all the records in JTF_LGL_PHYS_MAP for the given
361 --      attachment and mini-sites; then insert a record into
362 --      JTF_LGL_PHYS_MAP for each language_code in
363 --      p_language_code_tbl which is supported at the given site
364 --   4. Raises an exception if there is any duplicate mappings defined
365 --      for the same logical deliverable - roll back
366 --   5. Ignore the non-existent or the non-supported language code
367 --      for the given site; pass out a warning message
368 --   6. Raise an exception for any other errors
369 ---------------------------------------------------------------------
370 PROCEDURE save_physicalmap (
371 	p_api_version            IN   NUMBER,
372 	p_init_msg_list          IN   VARCHAR2 := FND_API.g_false,
373 	p_commit                 IN   VARCHAR2 := FND_API.g_false,
374 	x_return_status          OUT  VARCHAR2,
375 	x_msg_count              OUT  NUMBER,
376 	x_msg_data               OUT  VARCHAR2,
377 	p_attachment_id          IN   NUMBER,
378 	p_msite_lang_tbl         IN   MSITE_LANG_TBL_TYPE,
379 	p_language_code_tbl      IN   LANGUAGE_CODE_TBL_TYPE) IS
380 
381      l_api_name CONSTANT VARCHAR2(30) := 'save_physicalmap';
382 	l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
383 
384 	l_deliverable_id NUMBER;
385 
386 	l_language_code_tbl LANGUAGE_CODE_TBL_TYPE;
387 	l_return_status VARCHAR2(1) := FND_API.g_ret_sts_success;
388 
389 	l_index NUMBER;
390 	l_index1 NUMBER;
391 	l_count NUMBER := 0;
392 
393 	-- l_msg_data VARCHAR2(200);
394 
395 BEGIN
396 
397 	-- Standard start of API savepoint
398 	SAVEPOINT save_physicalmap_grp;
399 
400 	-- Standard call to check for call compatibility
401 	IF NOT FND_API.compatible_api_call(
402 		g_api_version,
403 		p_api_version,
404 		l_api_name,
405 		g_pkg_name
406 	) THEN
407 		RAISE FND_API.g_exc_unexpected_error;
408 	END IF;
409 
410 	-- Initialize message list if p_init_msg_list is set to TRUE
411 	IF FND_API.to_boolean(p_init_msg_list) THEN
412 		FND_MSG_PUB.initialize;
413      END IF;
414 
415 	-- Initialize API rturn status to success
416 	x_return_status := FND_API.g_ret_sts_success;
417 
418 	-- API body
419 
420 	-- Check if the input parameters are valid
421 	IF p_msite_lang_tbl IS NOT NULL THEN
422 		l_count := 0;
423 		FOR l_index1 IN 1..p_msite_lang_tbl.COUNT LOOP
424 			IF p_msite_lang_tbl(l_index1).lang_count IS NULL
425 				OR p_msite_lang_tbl(l_index1).lang_count < 0 THEN
426 				RAISE FND_API.g_exc_unexpected_error;
427 			END IF;
428 
429 			l_count := l_count + p_msite_lang_tbl(l_index1).lang_count;
430 		END LOOP;
431 
432 		IF l_count > 0 THEN
433 			IF p_language_code_tbl IS NULL OR
434 				l_count <> p_language_code_tbl.COUNT THEN
435 				RAISE FND_API.g_exc_unexpected_error;
436 			END IF;
437 		END IF;
438 
439 	ELSE
440 		RETURN;
441 
442 	END IF;
443 
444 	-- Check if the attachment id exists
445 	l_deliverable_id := JTF_DSPMGRVALIDATION_GRP.check_attachment_deliverable(
446 		p_attachment_id);
447 	IF l_deliverable_id IS NULL THEN
448 		RAISE FND_API.g_exc_error;
449 	END IF;
450 
451 	l_count := 0;
452 	FOR l_index1 IN 1..p_msite_lang_tbl.COUNT LOOP
453 
454 		l_return_status := FND_API.g_ret_sts_success;
455 		l_language_code_tbl := NULL;
456 
457 		IF p_msite_lang_tbl(l_index1).lang_count > 0 THEN
458 			/*
459 			l_language_code_tbl := p_language_code_tbl;
460 			l_language_code_tbl.DELETE(1, l_count);
461 			IF l_language_code_tbl.COUNT >
462 				p_msite_lang_tbl(l_index1).lang_count THEN
463 				l_language_code_tbl.DELETE(
464 					p_msite_lang_tbl(l_index1).lang_count + 1,
465 					l_language_code_tbl.COUNT);
466 			END IF;
467 			*/
468 
469 			l_language_code_tbl := LANGUAGE_CODE_TBL_TYPE(
470 				p_language_code_tbl(l_count + 1));
471 
472 			IF p_msite_lang_tbl(l_index1).lang_count > 1 THEN
473 				l_language_code_tbl.EXTEND(
474 					p_msite_lang_tbl(l_index1).lang_count - 1);
475 				FOR l_index IN 2..p_msite_lang_tbl(l_index1).lang_count LOOP
476 					l_language_code_tbl(l_index)
477 						:= p_language_code_tbl(l_count + l_index);
478 				END LOOP;
479 			END IF;
480 
481 			l_count := l_count + p_msite_lang_tbl(l_index1).lang_count;
482 
483 		END IF;
484 
485 		save_physicalmap(
486 			p_api_version			=>	p_api_version,
487 			x_return_status		=>	l_return_status,
488 			x_msg_count			=>	x_msg_count,
489 			x_msg_data			=>	x_msg_data,
490 			p_attachment_id		=>	p_attachment_id,
491 			p_msite_id => p_msite_lang_tbl(l_index1).msite_id,
492 			p_language_code_tbl		=>	l_language_code_tbl
493 			);
494 
495 		IF l_return_status <> FND_API.g_ret_sts_success THEN
496 			x_return_status := l_return_status;
497 		END IF;
498 
499 		/*
500 		if p_msite_lang_tbl(l_index1).msite_id IS NULL THEN
501 			l_msg_data := l_msg_data || ' null';
502 		ELSE
503 			l_msg_data := l_msg_data || p_msite_lang_tbl(l_index1).msite_id;
504 		END IF;
505 
506 		l_msg_data := l_msg_data || ' ' || l_language_code_tbl.COUNT;
507 		FOR l_index IN 1..l_language_code_tbl.COUNT LOOP
508 		-- null;
509 		l_msg_data := l_msg_data || ' ' || l_language_code_tbl(l_index);
510 		-- l_msg_data := l_msg_data || ' ' || p_language_code_tbl(l_index);
511 		END LOOP;
512 		*/
513 
514 	END LOOP;
515 
516 	/*
517 	x_msg_data := l_msg_data;
518 	return;
519 	*/
520 
521      -- Check if the caller requested to commit ,
522 	-- If p_commit set to true, commit the transaction
523 	IF  FND_API.to_boolean(p_commit) THEN
524 		COMMIT;
525 	END IF;
526 
527 	-- Standard call to get message count and if count is 1, get message info
528 	FND_MSG_PUB.count_and_get(
529 		p_encoded      =>   FND_API.g_false,
530 		p_count        =>   x_msg_count,
531 		p_data         =>   x_msg_data
532 	);
533 
534 EXCEPTION
535 
536 	WHEN FND_API.g_exc_error THEN
537 		ROLLBACK TO save_physicalmap_grp;
538 		x_return_status := FND_API.g_ret_sts_error;
539 		FND_MSG_PUB.count_and_get(
540 			p_encoded      =>   FND_API.g_false,
541 			p_count        =>   x_msg_count,
542 			p_data         =>   x_msg_data
543 		);
544 
545 	WHEN FND_API.g_exc_unexpected_error THEN
546 		ROLLBACK TO save_physicalmap_grp;
547 		x_return_status := FND_API.g_ret_sts_unexp_error;
548 		FND_MSG_PUB.count_and_get(
549 			p_encoded      =>   FND_API.g_false,
550 			p_count        =>   x_msg_count,
551 			p_data         =>   x_msg_data
552 		);
553 
554      WHEN OTHERS THEN
555 		ROLLBACK TO save_physicalmap_grp;
556 		x_return_status := FND_API.g_ret_sts_unexp_error ;
557 
558 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
559 			FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
560 		END IF;
561 
562 		FND_MSG_PUB.count_and_get(
563 			p_encoded => FND_API.g_false,
564 			p_count   => x_msg_count,
565 			p_data    => x_msg_data
566 		);
567 
568 END save_physicalmap;
569 
570 
571 --------------------------------------------------------------------
572 -- PROCEDURE
573 --    delete_physicalmap
574 --
575 -- PURPOSE
576 --    To delete a collection of physical_site_language mappings
577 --
578 -- PARAMETERS
579 --    p_lgl_phys_map_id_tbl : A collection of physical_site_language mappings
580 --    to be deleted
581 --
582 -- NOTES
583 --    1. Deletes all the mappings in the table based on lgl_phys_map_id
584 --    2. Ignore the non-existing physical_site_language mappings; pass out
585 --	    a warning message
586 --    3. Raise an exception for any other errors
587 --------------------------------------------------------------------
588 PROCEDURE delete_physicalmap(
589 	p_api_version            IN   NUMBER,
590 	p_init_msg_list          IN   VARCHAR2 := FND_API.g_false,
591 	p_commit                 IN   VARCHAR2 := FND_API.g_false,
592 	x_return_status          OUT  VARCHAR2,
593 	x_msg_count              OUT  NUMBER,
594 	x_msg_data               OUT  VARCHAR2,
595 	p_lgl_phys_map_id_tbl    IN   LGL_PHYS_MAP_ID_TBL_TYPE) IS
596 
597 	l_api_name    CONSTANT VARCHAR2(30) := 'delete_physicalmap';
598 	l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
599 
600 	l_index NUMBER;
601 
602 BEGIN
603 
604 	-- Standard start of API savepoint
605 	SAVEPOINT delete_physicalmap_grp;
606 
607 	-- Standard call to check for call compatibility
608 	IF NOT FND_API.compatible_api_call(
609          g_api_version,
610          p_api_version,
611          l_api_name,
612          g_pkg_name
613 	) THEN
614 		RAISE FND_API.g_exc_unexpected_error;
615 	END IF;
616 
617 	-- Initialize message list if p_init_msg_list is set to TRUE
618    	IF FND_API.to_boolean(p_init_msg_list) THEN
619       	FND_MSG_PUB.initialize;
620    	END IF;
621 
622    	-- Initialize API rturn status to success
623    	x_return_status := FND_API.g_ret_sts_success;
624 
625 	-- API body
626 
627 	IF p_lgl_phys_map_id_tbl IS NOT NULL THEN
628 		FOR l_index IN 1..p_lgl_phys_map_id_tbl.COUNT LOOP
629 		BEGIN
630 
631 			-- Check if the physicalMap id exists
632 			IF NOT JTF_DSPMGRVALIDATION_GRP.check_physicalmap_exists(
633 				p_lgl_phys_map_id_tbl(l_index)) THEN
634 				RAISE FND_API.g_exc_error;
635 			END IF;
636 
637 			DELETE FROM JTF_DSP_LGL_PHYS_MAP
638 				WHERE lgl_phys_map_id = p_lgl_phys_map_id_tbl(l_index);
639 			IF SQL%NOTFOUND THEN
640 				-- RAISE JTF_DSPMGRVALIDATION_GRP.physmap_not_exists_exception;
641 				IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
642 					FND_MESSAGE.set_name('JTF', 'JTF_DSP_PHYSMAP_NOT_EXISTS');
643 					FND_MESSAGE.set_token(
644 						'ID',
645 						TO_CHAR(p_lgl_phys_map_id_tbl(l_index)));
646 					FND_MSG_PUB.add;
647 				END IF;
648 				RAISE FND_API.g_exc_error;
649 			END IF;
650 
651 		EXCEPTION
652 
653 			WHEN FND_API.g_exc_error THEN
654 				/*
655 				IF x_return_status <> FND_API.g_ret_sts_unexp_error THEN
656 					x_return_status := FND_API.g_ret_sts_error;
657 				ENF IF;
658 				*/
659 				-- only warning; no error status
660 				NULL;
661 
662 			/*
663 			WHEN JTF_DSPMGRVALIDATION_GRP.physmap_not_exists_exception THEN
664 				-- only warning; no error
665 				IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
666 					FND_MESSAGE.set_name('JTF', 'JTF_DSP_PHYSMAP_NOT_EXISTS');
667 					FND_MESSAGE.set_token(
668 						'ID',
669 						TO_CHAR(p_lgl_phys_map_id_tbl(l_index)));
670 					FND_MSG_PUB.add;
671 				END IF;
672 			*/
673 
674 			WHEN OTHERS THEN
675 				x_return_status := FND_API.g_ret_sts_unexp_error ;
676 				IF FND_MSG_PUB.check_msg_level(
677 					FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
678 					FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
679 				END IF;
680 
681 		END;
682 		END LOOP;
683 	END IF;
684 
685 	-- Check if the caller requested to commit ,
686 	-- If p_commit set to true, commit the transaction
687 	IF  FND_API.to_boolean(p_commit) THEN
688 	     COMMIT;
689 	END IF;
690 
691 	-- Standard call to get message count and if count is 1, get message info
692 	FND_MSG_PUB.count_and_get(
693 		p_encoded      =>   FND_API.g_false,
694 		p_count        =>   x_msg_count,
695 		p_data         =>   x_msg_data
696 	);
697 
698 EXCEPTION
699 
700 	WHEN FND_API.g_exc_error THEN
701     		ROLLBACK TO delete_physicalmap_grp;
702 		x_return_status := FND_API.g_ret_sts_error;
703 		FND_MSG_PUB.count_and_get(
704 			p_encoded => FND_API.g_false,
705 			p_count   => x_msg_count,
706 			p_data    => x_msg_data
707 		);
708 
709 	WHEN FND_API.g_exc_unexpected_error THEN
710      	ROLLBACK TO delete_physicalmap_grp;
711       	x_return_status := FND_API.g_ret_sts_unexp_error ;
712       	FND_MSG_PUB.count_and_get(
713           	p_encoded => FND_API.g_false,
714             	p_count   => x_msg_count,
715             	p_data    => x_msg_data
716       	);
717 
718    	WHEN OTHERS THEN
719       	ROLLBACK TO delete_physicalmap_grp;
720       	x_return_status := FND_API.g_ret_sts_unexp_error ;
721 
722       	IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
723          		FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
724       	END IF;
725 
726       	FND_MSG_PUB.count_and_get(
727             	p_encoded => FND_API.g_false,
728             	p_count   => x_msg_count,
729             	p_data    => x_msg_data
730       	);
731 
732 END delete_physicalmap;
733 
734 
735 -- PROCEDURE
736 --    delete_attachment
737 --
738 -- PURPOSE
739 --    To delete all the physical_site_language_mappings for the given attachment
740 --
741 -- PARAMETERS
742 --    p_attachment_id : ID of the associated physical attachment
743 --
744 -- NOTES
745 --    1. Deletes all the mappings associated with the physical attachment
746 --    2. Raise an exception for any other errors
747 --------------------------------------------------------------------
748 PROCEDURE delete_attachment(
749 	p_attachment_id          IN   NUMBER) IS
750 
751      l_api_name    CONSTANT VARCHAR2(30) := 'delete_attachment';
752 	l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
753 
754 BEGIN
755 
756    	-- Standard start of API savepoint
757    	SAVEPOINT delete_attachment_grp;
758 
759    	-- API body
760 
761 	DELETE FROM JTF_DSP_LGL_PHYS_MAP
762 		WHERE attachment_id = p_attachment_id;
763 
764 EXCEPTION
765 
766    	WHEN OTHERS THEN
767       	ROLLBACK TO delete_attachment_grp;
768 
769       	IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
770          		FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
771       	END IF;
772 
773 END delete_attachment;
774 
775 
776 -- PROCEDURE
777 --   delete_deliverable
778 --
779 -- PURPOSE
780 --   To delete all the physical_site_language_mappings for the given deliverable
781 --
782 -- PARAMETERS
783 --   p_deliverable_id: ID of the associated deliverable
784 --
785 -- NOTES
786 --   1. Delete all the mappings associated with the deliverable
787 --   2. Raise an exception for any other errors
788 --------------------------------------------------------------------
789 PROCEDURE delete_deliverable(
790 	p_deliverable_id         IN   NUMBER) IS
791 
792      l_api_name    CONSTANT VARCHAR2(30) := 'delete_deliverable';
793 	l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
794 
795 BEGIN
796 
797 	-- Standard start of API savepoint
798 	SAVEPOINT delete_deliverable_grp;
799 
800 	-- API body
801 
802 	DELETE FROM JTF_DSP_LGL_PHYS_MAP
803 		WHERE item_id = p_deliverable_id;
804 
805 EXCEPTION
806 
807      WHEN OTHERS THEN
808 		ROLLBACK TO delete_deliverable_grp;
809 
810           IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
811 			FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
812 		END IF;
813 
814 END delete_deliverable;
815 
816 
817 -- PROCEDURE
818 -- 	delete_msite
819 --
820 -- PURPOSE
821 --	To delete all the physical_site_language_mappings for the given mini-site
822 --
823 -- PARAMETERS
824 --	p_msite_id: ID of the associated mini-site
825 --
826 -- NOTES
827 --	1. Delete all the mappings associated with the mini-site
828 --	2. Raise an exception for any other errors
829 --------------------------------------------------------------------
830 PROCEDURE delete_msite(
831 	p_msite_id			IN	NUMBER) IS
832 
833      l_api_name CONSTANT VARCHAR2(30) := 'delete_msite';
834 	l_full_name CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
835 
836 BEGIN
837 
838 	-- Standard start of API savepint
839 	SAVEPOINT delete_msite_grp;
840 
841 	-- API body
842 
843 	DELETE FROM JTF_DSP_LGL_PHYS_MAP
844 		WHERE ( (msite_id = p_msite_id) AND (default_site = g_no) );
845 
846 EXCEPTION
847 
848 	WHEN OTHERS THEN
849 		ROLLBACK TO delete_msite_grp;
850 
851 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
852 			FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
853 		END IF;
854 
855 END delete_msite;
856 
857 
858 -- PROCEDURE
859 --   delete_msite_language
860 --
861 -- PURPOSE
862 --	To delete all the physical_site_language_mappings involved the given
863 --	mini-site and the languages which have been de-supported at the mini-site
864 --
865 -- PARAMETERS
866 --   p_msite_id: ID of the associated mini-site
867 --
868 -- NOTES
869 --   1. Delete all the mappings associated with the mini-site and the languages
870 --	   which have been de-supported
871 --   2. Raise an exception for any other errors
872 --------------------------------------------------------------------
873 PROCEDURE delete_msite_language(
874 	p_msite_id               IN   NUMBER) IS
875 
876      l_api_name CONSTANT VARCHAR2(30) := 'delete_msite_language';
877 	l_full_name CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
878 
879 BEGIN
880 
881 	-- Standard start of API savepint
882 	SAVEPOINT delete_msite_language_grp;
883 
884 	-- API body
885 
886 	DELETE FROM JTF_DSP_LGL_PHYS_MAP
887 		WHERE msite_id = p_msite_id
888 		AND default_site = g_no
889 		AND default_language = g_no
890 		AND language_code NOT IN (SELECT language_code
891 		FROM JTF_MSITE_LANGUAGES WHERE msite_id = p_msite_id);
892 
893 EXCEPTION
894 
895 	WHEN OTHERS THEN
896 		ROLLBACK TO delete_msite_language_grp;
897 
898 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
899 			FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
900 		END IF;
901 
902 END delete_msite_language;
903 
904 
905 -- PROCEDURE
906 --	delete_attachment_msite
907 --
908 -- PURPOSE
909 --   To delete all the physical_site_language_mappings for the given mini-sites
910 --   and attachment
911 --
912 -- PARAMETERS
913 --	p_attachment_id: ID of the associated attachment
914 --   p_msite_id_tbl: the collction of IDs of the associated mini-sites
915 --
916 -- NOTES
917 --   1. Delete all the mappings associated with the mini-sites and attachment
918 --   2. Raise an exception for any other errors
919 PROCEDURE delete_attachment_msite(
920 	p_api_version            IN   NUMBER,
921 	p_init_msg_list          IN   VARCHAR2 := FND_API.g_false,
922 	p_commit                 IN   VARCHAR2 := FND_API.g_false,
923 	x_return_status          OUT  VARCHAR2,
924 	x_msg_count              OUT  NUMBER,
925 	x_msg_data               OUT  VARCHAR2,
926 	p_attachment_id          IN   NUMBER,
927 	p_msite_id_tbl           IN   MSITE_ID_TBL_TYPE) IS
928 
929      l_api_name    CONSTANT VARCHAR2(30) := 'delete_attachment_msite';
930 	l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
931 
932 BEGIN
933 
934 	-- Standard start of API savepoint
935 	SAVEPOINT delete_attachment_msite_grp;
936 
937 	-- Standard call to check for call compatibility
938 	IF NOT FND_API.compatible_api_call(
939 		g_api_version,
940 		p_api_version,
941 		l_api_name,
942 		g_pkg_name
943 	) THEN
944 		RAISE FND_API.g_exc_unexpected_error;
945 	END IF;
946 
947 	-- Initialize message list if p_init_msg_list is set to TRUE
948 	IF FND_API.to_boolean(p_init_msg_list) THEN
949 		FND_MSG_PUB.initialize;
950 	END IF;
951 
952 	-- Initialize API rturn status to success
953 	x_return_status := FND_API.g_ret_sts_success;
954 
955 	-- API body
956 
957 	IF p_msite_id_tbl IS NOT NULL THEN
958 		FOR  l_index IN 1..p_msite_id_tbl.COUNT LOOP
959 		BEGIN
960 
961 			SAVEPOINT delete_one_ath_msite_grp;
962 
963 			-- Check if it is all-sites
964 			IF p_msite_id_tbl(l_index) IS NULL THEN
965 				DELETE FROM JTF_DSP_LGL_PHYS_MAP
966 					WHERE ( (attachment_id = p_attachment_id)
967 					AND (default_site = g_yes) );
968 			ELSE
969 				DELETE FROM JTF_DSP_LGL_PHYS_MAP
970 					WHERE ( (attachment_id = p_attachment_id)
971 					AND (msite_id = p_msite_id_tbl(l_index))
972 					AND (default_site = g_no) );
973 			END IF;
974 
975 		EXCEPTION
976 
977 			WHEN OTHERS THEN
978 				ROLLBACK TO delete_one_ath_msite_grp;
979 				x_return_status := FND_API.g_ret_sts_unexp_error ;
980 				IF FND_MSG_PUB.check_msg_level(
981 					FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
982 					FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
983 				END IF;
984 
985 		END;
986 		END LOOP;
987 	END IF;
988 
989      -- Check if the caller requested to commit ,
990 	-- If p_commit set to true, commit the transaction
991 	IF  FND_API.to_boolean(p_commit) THEN
992 		COMMIT;
993 	END IF;
994 
995 	-- Standard call to get message count and if count is 1, get message info
996 	FND_MSG_PUB.count_and_get(
997 		p_encoded      =>   FND_API.g_false,
998 		p_count        =>   x_msg_count,
999 		p_data         =>   x_msg_data
1000 	);
1001 
1002 EXCEPTION
1003 
1004      WHEN FND_API.g_exc_error THEN
1005 		ROLLBACK TO delete_attachment_msite_grp;
1006 		x_return_status := FND_API.g_ret_sts_error;
1007 		FND_MSG_PUB.count_and_get(
1008                p_encoded => FND_API.g_false,
1009 			p_count   => x_msg_count,
1010 			p_data    => x_msg_data
1011 		);
1012 
1013 	WHEN FND_API.g_exc_unexpected_error THEN
1014 		ROLLBACK TO delete_attachment_msite_grp;
1015           x_return_status := FND_API.g_ret_sts_unexp_error ;
1016 		FND_MSG_PUB.count_and_get(
1017 			p_encoded => FND_API.g_false,
1018                p_count   => x_msg_count,
1019 			p_data    => x_msg_data
1020 		);
1021 
1022      WHEN OTHERS THEN
1023 		ROLLBACK TO delete_attachment_msite_grp;
1024 		x_return_status := FND_API.g_ret_sts_unexp_error ;
1025 
1026 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
1027 			FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1028 		END IF;
1029 
1030           FND_MSG_PUB.count_and_get(
1031 			p_encoded => FND_API.g_false,
1032 			p_count   => x_msg_count,
1033 			p_data    => x_msg_data
1034 		);
1035 
1036 
1037 END delete_attachment_msite;
1038 
1039 
1040 -- PROCEDURE
1041 --	delete_dlv_all_all
1042 --
1043 -- PURPOSE
1044 --	To delete the all-site and all-language mappings for the given deliverable
1045 --
1046 -- PARAMETERS
1047 --   p_deliverable_id: ID of the associated deliverable
1048 --
1049 -- NOTES
1050 --   1. Delete the all-site and all-language mappings for the given deliverable
1051 --   2. Raise an exception for any other errors
1052 PROCEDURE delete_dlv_all_all(
1053 	p_deliverable_id         IN   NUMBER) IS
1054 
1055 	l_api_name	CONSTANT VARCHAR2(30) := 'delete_dlv_all_all';
1056 	l_full_name	CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1057 
1058 BEGIN
1059 
1060 	-- Standard start of API savepoint
1061 	SAVEPOINT delete_dlv_all_all_grp;
1062 
1063 	-- API body
1064 
1065 	DELETE FROM JTF_DSP_LGL_PHYS_MAP
1066 		WHERE item_id = p_deliverable_id
1067 		AND default_site = g_yes
1068 		AND default_language = g_yes;
1069 
1070 EXCEPTION
1071 
1072 	WHEN OTHERS THEN
1073 		ROLLBACK TO delete_dlv_all_all_grp;
1074 
1075 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
1076 			FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1077 		END IF;
1078 
1079 END delete_dlv_all_all;
1080 
1081 
1082 END JTF_PhysicalMap_GRP;