DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_ASSETATTR_GRP_PUB

Source


1 PACKAGE BODY EAM_ASSETATTR_GRP_PUB AS
2 /* $Header: EAMPAAGB.pls 120.3 2005/12/12 01:31:05 sshahid ship $ */
3 /*
4 --Start of comments
5 --      API name        : EAM_ASSETATTR_GRP_PUB
6 --      Type            : Public
7 --      Function        : Insert, update and validation of the asset attribute assignemnt data
8 --      Pre-reqs        : None.
9 */
10 
11 /* This procedure inserts a record in the mtl_eam_asset_attr_groups table
12 --      Parameters      :
13 --      IN              :       P_API_VERSION	IN NUMBER	REQUIRED
14 --                              P_INIT_MSG_LIST IN VARCHAR2	OPTIONAL
15 --                                      DEFAULT = FND_API.G_FALSE
16 --                              P_COMMIT	IN VARCHAR2	OPTIONAL
17 --                                      DEFAULT = FND_API.G_FALSE
18 --                              P_VALIDATION_LEVEL IN NUMBER	OPTIONAL
19 --                                      DEFAULT = FND_API.G_VALID_LEVEL_FULL
20 --				P_APPLICATION_ID		IN NUMBER
21 --				P_DESCRIPTIVE_FLEXFIELD_NAME	IN VARCHAR2
22 --					DEFAULT NULL
23 --				P_DESC_FLEX_CONTEXT_CODE	IN VARCHAR2
24 --					DEFAULT NULL
25 --				P_ORGANIZATION_ID	IN NUMBER
26 --				P_INVENTORY_ITEM_ID	IN NUMBER
27 --				P_ENABLED_FLAG		IN VARCHAR2
28 --					DEFAULT NULL
29 --				P_CREATION_ORGANIZATION_ID IN NUMBER
30 --
31 --      OUT             :       x_return_status    OUT NOCOPY    VARCHAR2(1)
32 --                              x_msg_count        OUT NOCOPY    NUMBER
33 --                              x_msg_data         OUT NOCOPY    VARCHAR2 (2000)
34 --      Version :       Current version: 1.0
35 --                      Initial version: 1.0
36 --
37 --      Notes
38 --
39 -- End of comments
40 
41 */
42 /* for de-bugging */
43 /*g_sr_no		number ;*/
44 
45 PROCEDURE INSERT_ASSETATTR_GRP
46 (	P_API_VERSION           	IN		NUMBER				,
47   	P_INIT_MSG_LIST	   		IN		VARCHAR2:= FND_API.G_FALSE	,
48 	P_COMMIT	    		IN  		VARCHAR2:= FND_API.G_FALSE	,
49 	P_VALIDATION_LEVEL		IN  		NUMBER  := FND_API.G_VALID_LEVEL_FULL,
50 	X_RETURN_STATUS	    		OUT NOCOPY	VARCHAR2			,
51 	X_MSG_COUNT	    		OUT NOCOPY 	NUMBER				,
52 	X_MSG_DATA	    		OUT NOCOPY 	VARCHAR2			,
53 	P_APPLICATION_ID		IN		NUMBER	DEFAULT 401			,
54 	P_DESCRIPTIVE_FLEXFIELD_NAME	IN		VARCHAR2  DEFAULT 'MTL_EAM_ASSET_ATTR_VALUES',
55 	P_DESC_FLEX_CONTEXT_CODE	IN		VARCHAR2 ,
56 	P_ORGANIZATION_ID		IN		NUMBER				,
57 	P_INVENTORY_ITEM_ID		IN		NUMBER				,
58 	P_ENABLED_FLAG			IN		VARCHAR2 DEFAULT 'Y',
59 	P_CREATION_ORGANIZATION_ID	IN		NUMBER				,
60 	X_NEW_ASSOCIATION_ID		OUT NOCOPY	NUMBER
61 )
62 
63 IS
64 
65 l_api_name			CONSTANT VARCHAR2(30)	:='INSERT_ASSETATTR_GRP';
66 l_api_version           	CONSTANT NUMBER 		:= 1.0;
67 l_association_id		number;
68 l_validated			boolean;
69 l_item_type number;
70 l_exists boolean;
71 l_org_id number;
72 l_creation_organization_id number;
73 l_boolean number;
74 
75 
76 BEGIN
77 
78 	/* Standard Start of API savepoint */
79 	SAVEPOINT INSERT_ASSETATTR_GRP_PUB;
80 
81 	/* Standard call to check for call compatibility. */
82 	IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
83         	    	    	    	 	p_api_version        	,
84    	       	    	 			l_api_name 	    	,
85 		    	    	    	    	G_PKG_NAME
86 					   )
87 	THEN
88 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
89 	END IF;
90 
91 	/* Initialize message list if p_init_msg_list is set to TRUE. */
92 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
93 		FND_MSG_PUB.initialize;
94 	END IF;
95 
96 	/* Initialize API return status to success */
97 	x_return_status := FND_API.G_RET_STS_SUCCESS;
98 
99 	/* API body */
100 	/* Start validation calls */
101 
102 	/* for creation_organization_id = organization_id */
103 	l_org_id := P_ORGANIZATION_ID;
104 
105 	if (P_CREATION_ORGANIZATION_ID IS NOT NULL) then
106 		if P_CREATION_ORGANIZATION_ID <> P_ORGANIZATION_ID then
107 		      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CR_ORG_ID');
108 		      fnd_msg_pub.add;
109 		      RAISE fnd_api.g_exc_error;
110 		else
111 			l_creation_organization_id := P_ORGANIZATION_ID;
112 		end if;
113 	else
114 		l_creation_organization_id := P_ORGANIZATION_ID;
115 	end if;
116         if l_creation_organization_id is not null then
117         /* EAM enabled check */
118 		EAM_COMMON_UTILITIES_PVT.verify_org(
119 		          p_resp_id => NULL,
120 		          p_resp_app_id => 401,
121 		          p_org_id  => l_creation_organization_id,
122 		          x_boolean => l_boolean,
123 		          x_return_status => x_return_status,
124 		          x_msg_count => x_msg_count ,
125 		          x_msg_data => x_msg_data);
126 	if l_boolean = 0
127 	  then
128 	      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_ORG_ID');
129               fnd_msg_pub.add;
130               RAISE fnd_api.g_exc_error;
131 	end if;
132 	        end if;
133 
134 	/* validate item id; get item type */
135 
136 	l_item_type:=get_item_type(p_creation_organization_id, p_inventory_item_id);
137 	if (l_item_type is null) then
138 		raise_error('EAM_ABO_INVALID_INV_ITEM_ID');
139 	/*elsif (l_item_type=1 and p_organization_id is null) then
140 		raise_error('EAM_ASSET_ORG_ID_REQ');
141 	elsif (l_item_type=3 and p_organization_id is not null) then
142 		raise_error('EAM_REBUILD_ORG_ID_NOT_NULL');
143 	*/
144 	elsif (l_item_type<>3 and l_item_type<>1) then
145 		raise_error('EAM_ABO_INVALID_INV_ITEM_ID');
146 	end if;
147 
148 /*	-- Bug # 3518888 : Creation org id need to be validated irrespective of item type
149 	--if (l_item_type=1) then
150 		l_validated := VALIDATE_EAM_ENABLED (P_creation_ORGANIZATION_ID);
151         	if (not l_validated) then
152                 	--raise_error('NOT_EAM_ENABLED');
153 			raise_error ('EAM_ABO_INVALID_CR_ORG_ID');
154         	end if;
155 	--end if;*/
156 
157 	/* validate that the row does not already exist */
158 	l_exists:=validate_row_exists
159 		(p_item_type => l_item_type,
160 		p_creation_organization_id => p_creation_organization_id,
161 		p_inventory_item_id => p_inventory_item_id,
162 		 P_DESC_FLEX_CONTEXT_CODE =>  P_DESC_FLEX_CONTEXT_CODE);
163 
164 	if (l_exists) then
165 		raise_error('EAM_AAG_EXISTS');
166 	end if;
167 
168 /*
169 	if p_organization_id IS NOT NULL then
170 		if (p_organization_id <> p_creation_organization_id) then
171 			raise_error('EAM_ORG_ID_INCONSISTENT');
172 		end if;
173 	end if;
174 */
175 	l_validated := VALIDATE_DESC_FLEX_FIELD_NAME (P_DESCRIPTIVE_FLEXFIELD_NAME);
176         if (not l_validated) then
177                 --raise_error('DFF NOT MTL_EAM_ASSET_ATTR_VALUES');
178 		raise_error('EAM_INVALID_DFF_NAME');
179         end if;
180 
181 
182 	l_validated := CHECK_DESC_FLEX_CONTEXT_CODE (P_DESC_FLEX_CONTEXT_CODE , P_APPLICATION_ID);
183         if (not l_validated) then
184                 --raise_error('BAD DFF CODE');
185 		raise_error ('EAM_INVALID_DFF_CODE');
186         end if;
187 
188 
189 
190 	l_validated := VALIDATE_FLAG_FIELD (P_ENABLED_FLAG);
191         if (not l_validated) then
192                 --raise_error('BAD ENABLED_FLAG');
193 		raise_error('EAM_INVALID_ENABLED_FLAG');
194         end if;
195 
196 /* this is already validated earlier
197 	l_validated := VALIDATE_ITEM_ID (P_INVENTORY_ITEM_ID , P_ORGANIZATION_ID);
198         if (not l_validated) then
199                -- raise_error('BAD INVENTORY_ITEM_ID');
200 	        raise_error('EAM_ABO_INVALID_INV_ITEM_ID');
201         end if;
202 */
203 	/* End validation calls */
204 
205 	SELECT MTL_EAM_ASSET_ATTR_GROUPS_S.NEXTVAL INTO L_ASSOCIATION_ID FROM DUAL;
206 
207 	X_NEW_ASSOCIATION_ID := L_ASSOCIATION_ID;
208 
209 
210 	INSERT INTO MTL_EAM_ASSET_ATTR_GROUPS
211 	(
212 		ASSOCIATION_ID		       ,
213 		APPLICATION_ID		       ,
214 		DESCRIPTIVE_FLEXFIELD_NAME     ,
215 		DESCRIPTIVE_FLEX_CONTEXT_CODE  ,
216 		ORGANIZATION_ID                ,
217 		INVENTORY_ITEM_ID              ,
218 		LAST_UPDATED_BY		       ,
219 		LAST_UPDATE_DATE               ,
220 		CREATED_BY                     ,
221 		CREATION_DATE                  ,
222 		LAST_UPDATE_LOGIN              ,
223 		ENABLED_FLAG                   ,
224 		CREATION_ORGANIZATION_ID
225 	)
226 	VALUES
227 	(
228 		L_ASSOCIATION_ID		,
229 		P_APPLICATION_ID		,
230 		P_DESCRIPTIVE_FLEXFIELD_NAME	,
231 		P_DESC_FLEX_CONTEXT_CODE	,
232 		P_ORGANIZATION_ID		,
233 		P_INVENTORY_ITEM_ID		,
234 		FND_GLOBAL.USER_ID		,
235 	        SYSDATE				,
236 		FND_GLOBAL.LOGIN_ID		,
237 	        SYSDATE				,
238 		FND_GLOBAL.USER_ID		,
239 		P_ENABLED_FLAG			,
240 		p_creation_organization_id
241 	);
242 
243 	/* Standard check of p_commit. */
244 	IF FND_API.TO_BOOLEAN( P_COMMIT ) THEN
245 		COMMIT WORK;
246 	END IF;
247 	-- Standard call to get message count and if count is 1, get message info.
248 	FND_MSG_PUB.GET
249     	(  	p_msg_index_out         	=>      x_msg_count ,
250         	p_data          	=>      x_msg_data
251     	);
252 
253 EXCEPTION
254 	WHEN FND_API.G_EXC_ERROR THEN
255 		ROLLBACK TO INSERT_ASSETATTR_GRP_PUB;
256 		x_return_status := FND_API.G_RET_STS_ERROR ;
257 		FND_MSG_PUB.Get
258     		(  	p_msg_index_out  =>      x_msg_count ,
259         		p_data         	=>      x_msg_data
260     		);
261 
262 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
263 		ROLLBACK TO INSERT_ASSETATTR_GRP_PUB;
264 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
265 		FND_MSG_PUB.get
266     		(  	p_msg_index_out        	=>      x_msg_count ,
267         		p_data         	=>      x_msg_data
268     		);
269 
270 	WHEN OTHERS THEN
271 		ROLLBACK TO INSERT_ASSETATTR_GRP_PUB;
272 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
273 
274   		IF FND_MSG_PUB.Check_Msg_Level
275 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
276 		THEN
277         		FND_MSG_PUB.Add_Exc_Msg
278     	    		(	G_PKG_NAME ,
279     	    			l_api_name
280 	    		);
281 		END IF;
282 
283 		FND_MSG_PUB.get
284     		(  	p_msg_index_out        	=>      x_msg_count ,
285         		p_data         	=>      x_msg_data
286     		);
287 
288 END INSERT_ASSETATTR_GRP;
289 
290 /*
291 This procedure updates a record in the mtl_eam_asset_attr_groups table
292 --      Parameters      :
293 --      IN              :       P_API_VERSION	IN NUMBER	REQUIRED
294 --                              P_INIT_MSG_LIST IN VARCHAR2	OPTIONAL
295 --                                      DEFAULT = FND_API.G_FALSE
296 --                              P_COMMIT	IN VARCHAR2	OPTIONAL
297 --                                      DEFAULT = FND_API.G_FALSE
298 --                              P_VALIDATION_LEVEL IN NUMBER	OPTIONAL
299 --                                      DEFAULT = FND_API.G_VALID_LEVEL_FULL
300 --				P_APPLICATION_ID		IN NUMBER
301 --				P_DESCRIPTIVE_FLEXFIELD_NAME	IN VARCHAR2
302 --					DEFAULT NULL
303 --				P_DESC_FLEX_CONTEXT_CODE	IN VARCHAR2
304 --					DEFAULT NULL
305 --				P_ORGANIZATION_ID	IN NUMBER
306 --				P_INVENTORY_ITEM_ID	IN NUMBER
307 --				P_ENABLED_FLAG		IN VARCHAR2
308 --					DEFAULT NULL
309 --				P_CREATION_ORGANIZATION_ID IN NUMBER
310 --
311 --      OUT             :       x_return_status    OUT NOCOPY    VARCHAR2(1)
312 --                              x_msg_count        OUT NOCOPY    NUMBER
313 --                              x_msg_data         OUT NOCOPY    VARCHAR2 (2000)
314 --      Version :       Current version: 1.0
315 --                      Initial version: 1.0
316 --
317 --      Notes
318 */
319 
320 PROCEDURE UPDATE_ASSETATTR_GRP
321 (	P_API_VERSION           	IN		NUMBER				,
322   	P_INIT_MSG_LIST	   		IN		VARCHAR2:= FND_API.G_FALSE	,
323 	P_COMMIT	    	    	IN  		VARCHAR2:= FND_API.G_FALSE	,
324 	P_VALIDATION_LEVEL	    	IN  		NUMBER  := FND_API.G_VALID_LEVEL_FULL,
325 	X_RETURN_STATUS	    		OUT NOCOPY 	VARCHAR2			,
326 	X_MSG_COUNT	    		OUT NOCOPY 	NUMBER				,
327 	X_MSG_DATA	    	    	OUT NOCOPY 	VARCHAR2			,
328 	P_ASSOCIATION_ID		IN		NUMBER				,
329 	P_APPLICATION_ID		IN		NUMBER DEFAULT 401				,
330 	P_DESCRIPTIVE_FLEXFIELD_NAME	IN		VARCHAR2  DEFAULT 'MTL_EAM_ASSET_ATTR_VALUES',
331 	P_DESC_FLEX_CONTEXT_CODE	IN		VARCHAR2 ,
332 	P_ORGANIZATION_ID		IN		NUMBER				,
333 	P_INVENTORY_ITEM_ID		IN		NUMBER				,
334 	P_ENABLED_FLAG			IN		VARCHAR2 DEFAULT 'Y',
335 	P_CREATION_ORGANIZATION_ID	IN		NUMBER
336 )
337 IS
338 	l_validated boolean;
339 	l_api_name			CONSTANT VARCHAR2(30)	:='UPDATE asset attr';
340 	l_api_version           	CONSTANT NUMBER 		:= 1.0;
341 	l_item_type number;
342 	l_exists boolean;
343 	l_org_id number;
344 	l_creation_organization_id number;
345 	l_boolean number;
346 
347 BEGIN
348 
349 	SAVEPOINT UPDATE_ASSETATTR_GRP_PUB;
350 	x_return_status := FND_API.G_RET_STS_SUCCESS;
351 	--x_return_status := 'success';
352 
353 	/* API body */
354 	/* Start validation calls */
355 
356 	/* for creation_organization_id = organization_id */
357 	l_org_id := P_ORGANIZATION_ID;
358 	if (P_CREATION_ORGANIZATION_ID IS NOT NULL) then
359 		if P_CREATION_ORGANIZATION_ID <> P_ORGANIZATION_ID then
360 		      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CR_ORG_ID');
361 		      fnd_msg_pub.add;
362 		      RAISE fnd_api.g_exc_error;
363 		else
364 			l_creation_organization_id := P_ORGANIZATION_ID;
365 		end if;
366 	else
367 		l_creation_organization_id := P_ORGANIZATION_ID;
368 	end if;
369         if l_creation_organization_id is not null then
370         /* EAM enabled check */
371 		EAM_COMMON_UTILITIES_PVT.verify_org(
372 		          p_resp_id => NULL,
373 		          p_resp_app_id => 401,
374 		          p_org_id  => l_creation_organization_id,
375 		          x_boolean => l_boolean,
376 		          x_return_status => x_return_status,
377 		          x_msg_count => x_msg_count ,
378 		          x_msg_data => x_msg_data);
379 	if l_boolean = 0
380 	  then
381 	      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_ORG_ID');
382               fnd_msg_pub.add;
383               RAISE fnd_api.g_exc_error;
384 	end if;
385         end if;
386 
387 	/* validate inventory item id; get item type */
388 	l_item_type:=get_item_type(p_creation_organization_id, p_inventory_item_id);
389 	if (l_item_type is null) then
390 		raise_error('EAM_ABO_INVALID_INV_ITEM_ID');
391 	/*elsif (l_item_type=1 and p_organization_id is null) then
392 		raise_error('EAM_ASSET_ORG_ID_REQ');
393 	elsif (l_item_type=3 and p_organization_id is not null) then
394 		raise_error('EAM_REBUILD_ORG_ID_NOT_NULL');
395 	*/
396 	elsif (l_item_type<>1 and l_item_type<>3) then
397 		raise_error('EAM_ABO_INVALID_INV_ITEM_ID');
398 	end if;
399 
400 /*        -- Bug # 3518888 : Creation org id need to be validated irrespective of item type
401 	--if (l_item_type=1) then
402 		l_validated := VALIDATE_EAM_ENABLED (P_creation_ORGANIZATION_ID);
403         	if (not l_validated) then
407 	--end if;
404                 	--raise_error('NOT_EAM_ENABLED');
405 			raise_error ('EAM_ABO_INVALID_CR_ORG_ID');
406         	end if;
408 */
409 
410 	/* validate that the row does not already exist */
411 
412 	/* Validate that the row exists */
413         l_exists:=validate_row_exists
414                 (p_item_type => l_item_type,
415                 p_creation_organization_id => p_creation_organization_id,
416                 p_inventory_item_id => p_inventory_item_id,
417                  P_DESC_FLEX_CONTEXT_CODE =>  P_DESC_FLEX_CONTEXT_CODE,
418 		p_association_id=>p_association_id);
419 
420         if (not l_exists) then
421                 raise_error('EAM_ROW_NOT_EXISTS');
422         end if;
423 
424 
425 	l_validated := VALIDATE_DESC_FLEX_FIELD_NAME (P_DESCRIPTIVE_FLEXFIELD_NAME);
426         if (not l_validated) then
427                -- raise_error('DFF NOT MTL_EAM_ASSET_ATTR_VALUES');
428 	       raise_error('EAM_INVALID_DFF_NAME');
429         end if;
430 
431 
432 	l_validated := CHECK_DESC_FLEX_CONTEXT_CODE (P_DESC_FLEX_CONTEXT_CODE , P_APPLICATION_ID);
433         if (not l_validated) then
434 		--raise_error('BAD DFF CODE');
435 		raise_error ('EAM_INVALID_DFF_CODE');
436         end if;
437 
438 
439 
440 	l_validated := VALIDATE_FLAG_FIELD (P_ENABLED_FLAG);
441         if (not l_validated) then
442 		--raise_error('BAD ENABLED_FLAG');
443 		raise_error('EAM_INVALID_ENABLED_FLAG');
444         end if;
445 
446 /* This is already validated earlier
447 	l_validated := VALIDATE_ITEM_ID (P_INVENTORY_ITEM_ID , P_ORGANIZATION_ID);
448         if (not l_validated) then
449 		--raise_error('BAD INVENTORY_ITEM_ID');
450 		raise_error('EAM_ABO_INVALID_INV_ITEM_ID');
451         end if;
452 */
453 /* Standard Start of API savepoint */
454 
455 
456 UPDATE MTL_EAM_ASSET_ATTR_GROUPS SET
457 	APPLICATION_ID		= P_APPLICATION_ID			,
458 	DESCRIPTIVE_FLEXFIELD_NAME	= P_DESCRIPTIVE_FLEXFIELD_NAME	,
459 	DESCRIPTIVE_FLEX_CONTEXT_CODE	= P_DESC_FLEX_CONTEXT_CODE	,
460 /*	ORGANIZATION_ID		= P_ORGANIZATION_ID			,
461 */	INVENTORY_ITEM_ID	= P_INVENTORY_ITEM_ID			,
462 	ENABLED_FLAG		= P_ENABLED_FLAG
463 /*,	CREATION_ORGANIZATION_ID= x_creation_organization_id
464 */
465 WHERE
466 	ASSOCIATION_ID		= P_ASSOCIATION_ID
467 	and creation_organization_id=p_creation_organization_id
468 	and inventory_item_id=p_inventory_item_id
469 	and descriptive_flex_context_code=p_desc_flex_context_code;
470 
471 
472 	/* Standard check of p_commit. */
473 	IF FND_API.TO_BOOLEAN( P_COMMIT ) THEN
474 		COMMIT WORK;
475 	END IF;
476 	-- Standard call to get message count and if count is 1, get message info.
477 	FND_MSG_PUB.get
478     	(  	p_msg_index_out         	=>      x_msg_count ,
479         	p_data          	=>      x_msg_data
480     	);
481 
482 EXCEPTION
483 	WHEN FND_API.G_EXC_ERROR THEN
484 		ROLLBACK TO UPDATE_ASSETATTR_GRP_PUB;
485 		x_return_status := FND_API.G_RET_STS_ERROR ;
486 		FND_MSG_PUB.get
487     		(  	p_msg_index_out        	=>      x_msg_count ,
488         		p_data         	=>      x_msg_data
489     		);
490 
491 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
492 		ROLLBACK TO UPDATE_ASSETATTR_GRP_PUB;
493 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
494 		FND_MSG_PUB.get
495     		(  	p_msg_index_out        	=>      x_msg_count ,
496         		p_data         	=>      x_msg_data
497     		);
498 
499 	WHEN OTHERS THEN
500 		ROLLBACK TO UPDATE_ASSETATTR_GRP_PUB;
501 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
502 
503   		IF FND_MSG_PUB.Check_Msg_Level
504 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
505 		THEN
506         		FND_MSG_PUB.Add_Exc_Msg
507     	    		(	G_PKG_NAME ,
508     	    			l_api_name
509 	    		);
510 		END IF;
511 
512 		FND_MSG_PUB.get
513     		(  	p_msg_index_out        	=>      x_msg_count ,
514         		p_data         	=>      x_msg_data
515     		);
516 
517 END UPDATE_ASSETATTR_GRP;
518 
519 
520 /* VALIDATION 1 */
521 
522 FUNCTION VALIDATE_DESC_FLEX_FIELD_NAME
523 	( P_DESCRIPTIVE_FLEXFIELD_NAME VARCHAR2)
524 	RETURN BOOLEAN
525 IS
526 BEGIN
527   IF (p_descriptive_flexfield_name is null or
528 	P_DESCRIPTIVE_FLEXFIELD_NAME <> 'MTL_EAM_ASSET_ATTR_VALUES')
529   THEN
530 	RETURN FALSE;
531   ELSE
532 	RETURN TRUE;
533   END IF;
534 END VALIDATE_DESC_FLEX_FIELD_NAME;
535 
536 
537 /* VALIDATION 2 */
538 
539 FUNCTION CHECK_DESC_FLEX_CONTEXT_CODE
540 	(P_DESC_FLEX_CONTEXT_CODE VARCHAR2,
541 	P_APPLICATION_ID NUMBER)
542 	RETURN BOOLEAN
543 IS
544 L_STATUS NUMBER;
545 BEGIN
546 	SELECT
547 		count(*) INTO L_status
548 	FROM
549 		FND_DESCR_FLEX_CONTEXTS_VL
550 	WHERE
551 		DESCRIPTIVE_FLEXFIELD_NAME = 'MTL_EAM_ASSET_ATTR_VALUES'
552 	AND
553 		ENABLED_FLAG = 'Y'
554 	AND
555 		APPLICATION_ID = P_APPLICATION_ID
556 	AND
557 		DESCRIPTIVE_FLEX_CONTEXT_CODE = P_DESC_FLEX_CONTEXT_CODE;
558 
559 	IF L_status > 0
560 	THEN
561 		RETURN TRUE;
562 	ELSE
563 		RETURN FALSE;
564 	END IF;
565 EXCEPTION
566 	when no_data_found then
567 		return false;
568 END CHECK_DESC_FLEX_CONTEXT_CODE;
569 
570 
574 	(P_ORGANIZATION_ID NUMBER)
571 /* VALIDATION 3 */
572 
573 FUNCTION VALIDATE_EAM_ENABLED
575 	RETURN BOOLEAN
576 IS
577 L_STATUS NUMBER;
578 BEGIN
579 	SELECT count(*) INTO L_status
580 	FROM wip_eam_PARAMETERS
581 	WHERE ORGANIZATION_ID = P_ORGANIZATION_ID;
582 
583 
584 	IF L_status > 0
585 	THEN
586 		RETURN TRUE;
587 	ELSE
588 		RETURN FALSE;
589 	END IF;
590 END VALIDATE_EAM_ENABLED;
591 
592 
593 /* VALIDATION 4 */
594 
595 FUNCTION VALIDATE_FLAG_FIELD
596 	(P_ENABLED_FLAG VARCHAR2)
597 	RETURN BOOLEAN
598 IS
599 BEGIN
600         -- Bug # 3518888
601 	IF P_ENABLED_FLAG  IN ('Y', 'N')THEN
602 	    RETURN TRUE;
603 	ELSE
604 	    RETURN FALSE;
605 	END IF;
606 END VALIDATE_FLAG_FIELD;
607 
608 
609 
610 /* VALIDATION 5 */
611 
612 FUNCTION VALIDATE_ITEM_ID
613 	(P_INVENTORY_ITEM_ID NUMBER,
614 	P_ORGANIZATION_ID NUMBER)
615 	RETURN BOOLEAN
616 IS
617 L_STATUS NUMBER;
618 BEGIN
619 	SELECT count(*) INTO L_status
620 	FROM
621 		MTL_SYSTEM_ITEMS_KFV
622 	WHERE
623 		INVENTORY_ITEM_ID = P_INVENTORY_ITEM_ID
624 	AND
625 		ORGANIZATION_ID = P_ORGANIZATION_ID
626 	AND
627 		(EAM_ITEM_TYPE = 1 or EAM_ITEM_TYPE=3);
628 
629 	IF  L_STATUS >0
630 	THEN
631 		RETURN TRUE;
632 	ELSE
633 		RETURN FALSE;
634 	END IF;
635 
636 END VALIDATE_ITEM_ID;
637 
638 
639 /* get item type. 1=asset, 3=rebuildable */
640 FUNCTION get_item_type
641 (p_creation_organization_id in number,
642 p_inventory_item_id in number)
643 return number
644 is
645 	l_eam_item_type number;
646 begin
647 	select eam_item_type into l_eam_item_type
648 	from mtl_system_items
649 	where inventory_item_id=p_inventory_item_id
650 	and rownum=1;
651 
652 	return l_eam_item_type;
653 exception
654 	when no_data_found then
655 		return null;
656 end get_item_type;
657 
658 
659 FUNCTION validate_row_exists
660 	(p_item_type in number,
661 	p_creation_organization_id in number,
662 	p_inventory_item_id in number,
663 	P_DESC_FLEX_CONTEXT_CODE in varchar2,
664 	p_association_id in number default null)
665 return boolean
666 is
667 	l_association_id number;
668 begin
669 	/*
670 	if (p_item_type=1) then
671 		select association_id into l_association_id
672 		from mtl_eam_asset_attr_groups
673 		where creation_organization_id=p_creation_organization_id
674 		and inventory_item_id=p_inventory_item_id
675 		and descriptive_flex_context_code=p_desc_flex_context_code;
676 	elsif (p_item_type=3) then
677 	*/
678 		select association_id into l_association_id
679                 from mtl_eam_asset_attr_groups
680                 where inventory_item_id=p_inventory_item_id
681                 and descriptive_flex_context_code=p_desc_flex_context_code;
682 	--end if;
683 
684 	if (l_association_id is null) then
685 		return false;
686 	elsif (p_association_id is not null and
687 		l_association_id <> p_association_id) then
688 		return false;
689 	else
690 		return true;
691 	end if;
695 end;
692 exception
693 	when no_data_found then
694 		return false;
696 
697 
698 
699 /* private procedure for raising exceptions */
700 
701 PROCEDURE RAISE_ERROR (ERROR VARCHAR2)
702 IS
703 BEGIN
704 	FND_MESSAGE.SET_NAME ('EAM', ERROR);
705         FND_MSG_PUB.ADD;
706         RAISE FND_API.G_EXC_ERROR;
707 
708 END;
709 
710 PROCEDURE print_log(info varchar2) is
711 PRAGMA  AUTONOMOUS_TRANSACTION;
712 l_dummy number;
713 BEGIN
714  /*
715  if (g_sr_no is null or g_sr_no<0) then
716 		g_sr_no := 0;
717 	end if;
718 
719 	g_sr_no := g_sr_no+1;
720 
721 	INSERT into temp_isetup_api(msg,sr_no)
722 	VALUES (info,g_sr_no);
723 
724 	commit;
725 */
726   FND_FILE.PUT_LINE(FND_FILE.LOG, info);
727 
728 END;
729 
730 END EAM_ASSETATTR_GRP_PUB;