DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_PARAMETERS_PUB

Source


4 --	API name 	: EAM_PARAMETERS_PUB
1 PACKAGE BODY EAM_PARAMETERS_PUB AS
2 /* $Header: EAMPPRMB.pls 120.2 2011/03/18 21:54:44 devijay ship $ */
3 -- Start of comments
5 --	Type		: Public
6 --	Function	: insert_parameters, update_parameters
7 --	Pre-reqs	: None.
8 --	Parameters	:
9 --	IN		:	p_api_version           	IN NUMBER	Required
10 --				p_init_msg_list		IN VARCHAR2 	Optional
11 --					Default = FND_API.G_FALSE
12 --				p_commit	    		IN VARCHAR2	Optional
13 --					Default = FND_API.G_FALSE
14 --				p_validation_level		IN NUMBER	Optional
15 --					Default = FND_API.G_VALID_LEVEL_FULL
16 --				parameter1
17 --				parameter2
18 --				.
19 --				.
20 --	OUT		:	x_return_status		OUT	VARCHAR2(1)
21 --				x_msg_count			OUT	NUMBER
22 --				x_msg_data			OUT	VARCHAR2(2000)
23 --				parameter1
24 --				parameter2
25 --				.
26 --				.
27 --	Version	: Current version	x.x
28 --				Changed....
29 --			  previous version	y.y
30 --				Changed....
31 --			  .
32 --			  .
33 --			  previous version	2.0
34 --				Changed....
35 --			  Initial version 	1.0
36 --
37 --	Notes		: Note text
38 --
39 -- End of comments
40 
41 G_PKG_NAME 	CONSTANT VARCHAR2(30):='EAM_PARAMETERS_PUB';
42 
43 
44 /* for de-bugging */
45  /*g_sr_no		number ;*/
46 
47 PROCEDURE print_log(info varchar2) is
48 PRAGMA  AUTONOMOUS_TRANSACTION;
49 l_dummy number;
50 BEGIN
51 /*
52 if (g_sr_no is null or g_sr_no<0) then
53 		g_sr_no := 0;
54 	end if;
55 
56 	g_sr_no := g_sr_no+1;
57 
58 	INSERT into temp_isetup_api(msg,sr_no)
59 	VALUES (info,g_sr_no);
60 
61 	commit;
62 */
63   FND_FILE.PUT_LINE(FND_FILE.LOG, info);
64 
65 END;
66 -- There can be only one set of eam parameters for each unique organization_id.
67 -- This method is called only in the case of insertion.
68 FUNCTION validate_unique_org_id(p_organization_id in number)
69       	return boolean is
70         l_count number;
71   BEGIN
72         SELECT count(*) INTO l_count
73 	FROM   WIP_EAM_PARAMETERS
74 	WHERE  organization_id = p_organization_id;
75 
76         if l_count = 0
77         then
78             return false;
79         else
80             return true;
81         end if;
82 
83 END;
84 
85 --funcation to validate if the provided lookup code is present forthe specified type.
86 FUNCTION validate_mfg_lookups(P_LOOKUP_TYPE IN VARCHAR2, P_LOOKUP_CODE in varchar2)
87       	return boolean is
88         l_count number;
89   BEGIN
90 	if P_LOOKUP_TYPE = 'BOM_EAM_COST_CATEGORY' AND P_LOOKUP_CODE is null
91         then
92 	        return false;
93 	elsif P_LOOKUP_CODE is null
94 	then
95 		return true;
96         end if;
97 
98         SELECT count(*) INTO l_count
99 	FROM   mfg_lookups
100 	WHERE  lookup_type = P_LOOKUP_TYPE
101 	AND  lookup_code = P_LOOKUP_CODE;
102 
103         if l_count = 0
104         then
105             return false;
106         else
107             return true;
108         end if;
109 END;
110 
111 --function to validate the default cose element id
112 FUNCTION validate_cost_element_id(P_DEF_EAM_COST_ELEMENT_ID in number )
113       	return boolean is
114         l_count number;
115   BEGIN
116 	if P_DEF_EAM_COST_ELEMENT_ID is null
117         then
118 	        return false;
119         end if;
120 
121 
122         SELECT count(*) INTO l_count
123 	FROM   cst_eam_cost_elements
124 	WHERE  eam_cost_element_id = P_DEF_EAM_COST_ELEMENT_ID;
125 
126         if l_count = 0
127         then
128             return false;
129         else
130             return true;
131         end if;
132 END;
133 
134 --funciton to validate the wip entity class CLASS_TYPE = "Maintenance" <6>
135 FUNCTION validate_acnt_class(P_DEFAULT_EAM_CLASS in varchar2, P_ORGANIZATION_ID IN NUMBER)
136       	return boolean is
137         l_count number;
138   BEGIN
139   	if P_DEFAULT_EAM_CLASS is null
140         then
141 	        return false;
142         end if;
143 
144         SELECT count(*) INTO l_count
145         from wip_accounting_classes
146         where class_code = P_DEFAULT_EAM_CLASS
147         and class_type = 6
148         and organization_id = P_ORGANIZATION_ID;
149 
153         else
150         if l_count = 0
151         then
152             return false;
154             return true;
155         end if;
156 END;
157 
158 --VALIDATE THE ChartOfAccounts
159 FUNCTION validate_chart_of_accounts(P_MAINTENANCE_OFFSET_ACCOUNT in number,P_ORGANIZATION_ID IN NUMBER)
160       	return boolean is
161         l_count number;
162 	l_chart_of_accounts_id number;
163   BEGIN
164 
165 	if P_MAINTENANCE_OFFSET_ACCOUNT is null
166         then
167 	        return false;
168         end if;
169 
170 	select chart_of_accounts_id into l_chart_of_accounts_id
171 	from gl_code_combinations
172 	where code_combination_id = P_MAINTENANCE_OFFSET_ACCOUNT;
173 
174 	select count(*) into l_count
175 	from hr_organization_information hoi,
176 	gl_sets_of_books gsob
177 	where hoi.org_information_context = 'Accounting Information'
178 	and hoi.org_information1 = (gsob.set_of_books_id)
179 	and gsob.chart_of_accounts_id = l_chart_of_accounts_id
180 	and hoi.organization_id = P_ORGANIZATION_ID;
181 
182         if l_count = 0
183         then
184             return false;
185         else
186             return true;
187         end if;
188 exception
189 	when no_data_found then
190 		 return false;
191 	when others then
192 		 return false;
193 END;
194 
195 PROCEDURE validate_boolean_flag(p_flag IN VARCHAR2, p_msg IN VARCHAR2)
196 is
197 begin
198 	if(p_flag is not null)
199 	then
200 	  if not EAM_COMMON_UTILITIES_PVT.validate_boolean_flag(p_flag)
201   	    then
202 	      fnd_message.set_name('EAM', p_msg);
203               fnd_msg_pub.add;
204 	      RAISE FND_API.G_EXC_ERROR;
205 	    end if;
206 	end if;
207 end;
208 
209 PROCEDURE validate_org_eam_enabled(p_organization_id in number)
210 is
211 l_count number :=0;
212 begin
213       select count(*) into l_count
214       from mtl_parameters where
215       organization_id = p_organization_id
216       and NVL(eam_enabled_flag,'N') = 'Y';
217 
218       if l_count = 0
219       then
220 	      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_ORG_ID');
221               fnd_msg_pub.add;
222               RAISE fnd_api.g_exc_error;
223       end if;
224 
225 
226 end;
227 
228 PROCEDURE VALIDATE_ASSET_FLAG(P_DEFAULT_ASSET_FLAG IN VARCHAR2)
229 IS
230 l_count NUMBER;
231 l_installed boolean;
232 l_indust varchar2(10);
233 l_cs_installed  varchar2(10);
234 
235 BEGIN
236         -- check if the flag is valid
237 	validate_boolean_flag(P_DEFAULT_ASSET_FLAG, 'EAM_PAR_INV_ASSET_FLAG');
238 
239 	-- if valid and 'Y' validate for pn should be installed.
240 	if p_default_asset_flag = 'Y'
241 	then
242 		l_installed := fnd_installation.get(appl_id => 240,
243 						    dep_appl_id =>240,
244 						    status => l_cs_installed,
245 						    industry => l_indust);
246 		IF (l_installed = FALSE)
247 		THEN
248 		      fnd_message.set_name('EAM', 'EAM_WR_PN_NOT_INSTALLED');
249 		      fnd_msg_pub.add;
250 		      RAISE fnd_api.g_exc_error;
251  	        END IF;
252  	 end if;
253 END;
254 
255 procedure VALIDATE_ROW_EXISTS(p_ORGANIZATION_ID in number,
256                               p_create_flag in boolean)
257 is
258         l_count number;
259   BEGIN
260         SELECT COUNT(*) INTO l_count
261 	FROM WIP_EAM_PARAMETERS
262 	WHERE ORGANIZATION_ID = P_ORGANIZATION_ID;
263 
264         if (l_count = 0 and NOT p_create_flag)
265         then
266 	      fnd_message.set_name('EAM', 'EAM_PARAM_REC_NOT_FOUND');
267               fnd_msg_pub.add;
268               RAISE fnd_api.g_exc_error;
269         elsif (l_count >0 and p_create_flag)
270            then
271 	      fnd_message.set_name('EAM', 'EAM_PARAM_REC_EXISTS');
272               fnd_msg_pub.add;
273               RAISE fnd_api.g_exc_error;
274         end if;
275 END;
276 
277 
278 PROCEDURE insert_parameters
279 ( 	p_api_version           	IN	NUMBER				,
280   	p_init_msg_list			IN	VARCHAR2 := FND_API.G_FALSE	,
281 	p_commit	    		IN  	VARCHAR2 := FND_API.G_FALSE	,
282 	p_validation_level		IN  	NUMBER	 := FND_API.G_VALID_LEVEL_FULL	,
283 
284 	x_return_status			OUT NOCOPY VARCHAR2		  	,
285 	x_msg_count			OUT NOCOPY NUMBER			,
286 	x_msg_data			OUT NOCOPY VARCHAR2			,
287 
288 	P_ORGANIZATION_ID		IN	NUMBER		,
289 	P_WORK_REQUEST_AUTO_APPROVE	IN	VARCHAR2	default 'N',
290 	P_DEF_MAINT_COST_CATEGORY	IN	NUMBER		,
291 	P_DEF_EAM_COST_ELEMENT_ID	IN	NUMBER		,
292 	P_WORK_REQ_EXTENDED_LOG_FLAG	IN	VARCHAR2	default 'Y',
293 	P_DEFAULT_EAM_CLASS		IN	VARCHAR2  	,
294 	P_EASY_WORK_ORDER_PREFIX	IN	VARCHAR2	default null,
295 	P_WORK_ORDER_PREFIX		IN	VARCHAR2	default null,
296 	P_SERIAL_NUMBER_ENABLED		IN	VARCHAR2	default 'Y',
297 	P_AUTO_FIRM_FLAG		IN	VARCHAR2	default 'Y',
298 	P_MAINTENANCE_OFFSET_ACCOUNT	IN	NUMBER		default null,
299 	P_MATERIAL_ISSUE_BY_MO		IN	VARCHAR2	default 'Y',
300 	P_DEFAULT_DEPARTMENT_ID		IN	NUMBER		default null,
301 	P_INVOICE_BILLABLE_ITEMS_ONLY	IN	VARCHAR2	default 'N',
302 	P_OVERRIDE_BILL_AMOUNT		IN	VARCHAR2	default null,
303 	P_BILLING_BASIS			IN	NUMBER		default null,
304 	P_BILLING_METHOD		IN	NUMBER		default null,
305 	P_DYNAMIC_BILLING_ACTIVITY	IN	VARCHAR2	default null,
306         P_DEFAULT_ASSET_FLAG     	IN	VARCHAR2	default 'Y' ,
307 	P_PM_IGNORE_MISSED_WO		IN 	VARCHAR2 	default 'N',
308 	p_issue_zero_cost_flag		IN 	varchar2	default 'Y',
309 	p_WORK_REQUEST_ASSET_NUM_REQD   IN	varchar2 	default 'Y',
310 	P_EAM_WO_WORKFLOW_ENABLED	IN	VARCHAR2	default null,
311 	P_AUTO_FIRM_ON_CREATE		IN	VARCHAR2	default null,
312   P_PM_WORK_ORDER_PREFIX		IN	VARCHAR2	default null
316 	l_api_version           	CONSTANT NUMBER 		:= 1.0;
313 )
314 IS
315 	l_api_name			CONSTANT VARCHAR2(30)	:= 'insert_parameters';
317 	l_boolean                       number;
318 	l_return_status	 		VARCHAR2(1);
319 	l_msg_count			NUMBER;
320 	l_msg_data		 	VARCHAR2(30);
321 
322 BEGIN
323 	-- Standard Start of API savepoint
324     SAVEPOINT	INSERT_PARAMETERS;
325     -- Standard call to check for call compatibility.
326     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
327         	    	    	    	 	p_api_version        	,
328    	       	    	 			l_api_name 	    	,
329 		    	    	    	    	G_PKG_NAME )
330 	THEN
331 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
332 	END IF;
333 	-- Initialize message list if p_init_msg_list is set to TRUE.
334 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
335 		FND_MSG_PUB.initialize;
336 	END IF;
337 	--  Initialize API return status to success
338         x_return_status := FND_API.G_RET_STS_SUCCESS;
339 	-- API body
340 
341 	-- verify that all "not null" params are provided
342 	if (P_DEF_MAINT_COST_CATEGORY is null
343 		or P_DEF_EAM_COST_ELEMENT_ID is null
344         	or P_DEFAULT_EAM_CLASS is null)
345 	then
346 	      fnd_message.set_name('EAM', 'EAM_NOT_ENOUGH_PARAMS');
347               fnd_msg_pub.add;
348               RAISE FND_API.G_EXC_ERROR;
349 	end if;
350 
351 	--ver eam enabled
352 	validate_org_eam_enabled(p_organization_id);
353 
354         --verify default cost cat
355 	if not validate_mfg_lookups('BOM_EAM_COST_CATEGORY', P_DEF_MAINT_COST_CATEGORY)
356 	then
357 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_COST_CAT');
358               fnd_msg_pub.add;
359 	      RAISE FND_API.G_EXC_ERROR;
360 	end if;
361 
362 	--VALIDATE Billing_BASIS
363 	if not validate_mfg_lookups('EAM_BILLING_BASIS', P_BILLING_BASIS)
364 	then
365 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_BILLING_BASIS');
366               fnd_msg_pub.add;
367 	      RAISE FND_API.G_EXC_ERROR;
368 	end if;
369 
370 	-- VALIDATE BILLING_METHOD
371 	if not validate_mfg_lookups('EAM_BILLING_METHOD', P_BILLING_METHOD)
372 	then
373 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_BILLING_METHOD');
374               fnd_msg_pub.add;
375 	      RAISE FND_API.G_EXC_ERROR;
376 	end if;
377 
378 	--ver def cost element id
379 	if not validate_cost_element_id(P_DEF_EAM_COST_ELEMENT_ID )
380 	then
381 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_CST_ELMNT_ID');
382               fnd_msg_pub.add;
383 	      RAISE FND_API.G_EXC_ERROR;
384 	end if;
385 	--ver wip acnt class
386 	if not validate_acnt_class(P_DEFAULT_EAM_CLASS , P_ORGANIZATION_ID )
387 	then
388 	      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CLASS_CODE');
389               fnd_msg_pub.add;
390 	      RAISE FND_API.G_EXC_ERROR;
391 	end if;
392 	--ver maint offset acnt
393 	if not validate_chart_of_accounts(P_MAINTENANCE_OFFSET_ACCOUNT ,P_ORGANIZATION_ID )
394 	then
395 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_CHART_ACNT');
396               fnd_msg_pub.add;
397 	      RAISE FND_API.G_EXC_ERROR;
398 	end if;
399 
400 	-- validate default dept id
401 	if (p_default_department_id is not null and not eam_common_utilities_pvt.validate_department_id(p_default_department_id, p_organization_id)) then
402 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_DEPT_ID');
403               fnd_msg_pub.add;
404 	      RAISE FND_API.G_EXC_ERROR;
405 	end if;
406 
407 	--varifyflag values 'Y' or 'N'
408 	--WorkRequestAutoApprove
409 	validate_boolean_flag(P_WORK_REQUEST_AUTO_APPROVE, 'EAM_PAR_INV_WORK_REQ_AUTO_APPR');
410 	--WorkReqExtendedLogFlag
411 	validate_boolean_flag(P_WORK_REQ_EXTENDED_LOG_FLAG, 'EAM_PAR_INV_WORK_REQ_LOG_FLAG');
412 	--SerialNumberEnabled
413 	validate_boolean_flag(P_SERIAL_NUMBER_ENABLED, 'EAM_PAR_INV_SERIAL_NUM_ENABLED');
414 	--AutoFirmFlag
415 	validate_boolean_flag(P_AUTO_FIRM_FLAG, 'EAM_PAR_INV_AUTO_FIRM_FLAG');
416 	--MaterialIssueByMo
417 	validate_boolean_flag(P_MATERIAL_ISSUE_BY_MO, 'EAM_PAR_INV_ISSUE_BY_MO');
418 	--InvoiceBillableItemsOnly
419 	validate_boolean_flag(P_INVOICE_BILLABLE_ITEMS_ONLY, 'EAM_PAR_INV_INVOICE_BLBLE_FLG');
420 
421 	-- pm_ignore_missed_wo
422 	validate_boolean_flag(P_PM_IGNORE_MISSED_WO, 'EAM_PAR_PM_IGNORE_FLAG');
423 
424 	-- issue_zero_cost_flag
425 	validate_boolean_flag(p_issue_zero_cost_flag, 'EAM_PAR_ZERO_COST_FLAG');
426 
427 	-- WORK_REQUEST_ASSET_NUM_REQD
428 	validate_boolean_flag(p_WORK_REQUEST_ASSET_NUM_REQD, 'EAM_WORK_REQUEST_ASSET_NUM_REQ');
429 
430 	VALIDATE_ASSET_FLAG(P_DEFAULT_ASSET_FLAG);
431 
432 
433         VALIDATE_ROW_EXISTS(P_ORGANIZATION_ID, TRUE);
434 
435 	validate_boolean_flag(P_EAM_WO_WORKFLOW_ENABLED, 'EAM_WO_WORKFLOW_ENABLED');
436 	validate_boolean_flag(P_AUTO_FIRM_ON_CREATE, 'EAM_AUTO_FIRM_ON_CREATE');
437 
438         INSERT INTO WIP_EAM_PARAMETERS
439         (
440 		ORGANIZATION_ID	,
441 		WORK_REQUEST_AUTO_APPROVE	,
442 		DEF_MAINT_COST_CATEGORY	,
443 		DEF_EAM_COST_ELEMENT_ID	,
444 		WORK_REQ_EXTENDED_LOG_FLAG	,
445 		DEFAULT_EAM_CLASS	,
446 		EASY_WORK_ORDER_PREFIX	,
447 		WORK_ORDER_PREFIX	,
448 		SERIAL_NUMBER_ENABLED	,
449 		AUTO_FIRM_FLAG	,
450 		MAINTENANCE_OFFSET_ACCOUNT	,
451 		--WIP_EAM_REQUEST_TYPE	,
452 		MATERIAL_ISSUE_BY_MO	,
453 		DEFAULT_DEPARTMENT_ID	,
454 		INVOICE_BILLABLE_ITEMS_ONLY	,
455 		OVERRIDE_BILL_AMOUNT	,
456 		BILLING_BASIS	,
457 		BILLING_METHOD	,
458 		DYNAMIC_BILLING_ACTIVITY	,
459 		DEFAULT_ASSET_FLAG	,
460 		PM_IGNORE_MISSED_WO,
461 		issue_zero_cost_flag,
462 		WORK_REQUEST_ASSET_NUM_REQD,
463 
464 		CREATED_BY           ,
465 		CREATION_DATE       ,
469 		EAM_WO_WORKFLOW_ENABLED,
466 		LAST_UPDATE_LOGIN  ,
467 		LAST_UPDATE_DATE  ,
468 		LAST_UPDATED_BY,
470 		AUTO_FIRM_ON_CREATE,
471     PM_WORK_ORDER_PREFIX
472 	)
473 	VALUES
474 	(
475 		P_ORGANIZATION_ID	,
476 		P_WORK_REQUEST_AUTO_APPROVE	,
477 		P_DEF_MAINT_COST_CATEGORY	,
478 		P_DEF_EAM_COST_ELEMENT_ID	,
479 		P_WORK_REQ_EXTENDED_LOG_FLAG	,
480 		P_DEFAULT_EAM_CLASS	,
481 		P_EASY_WORK_ORDER_PREFIX	,
482 		P_WORK_ORDER_PREFIX	,
483 		P_SERIAL_NUMBER_ENABLED	,
484 		P_AUTO_FIRM_FLAG	,
485 		P_MAINTENANCE_OFFSET_ACCOUNT	,
486 		--P_WIP_EAM_REQUEST_TYPE	,
487 		P_MATERIAL_ISSUE_BY_MO	,
488 		P_DEFAULT_DEPARTMENT_ID	,
489 		P_INVOICE_BILLABLE_ITEMS_ONLY	,
490 		P_OVERRIDE_BILL_AMOUNT	,
491 		P_BILLING_BASIS	,
492 		P_BILLING_METHOD	,
493 		P_DYNAMIC_BILLING_ACTIVITY	,
494 		P_DEFAULT_ASSET_FLAG           ,
495 		P_PM_IGNORE_MISSED_WO,
496 		p_issue_zero_cost_flag,
497 		p_WORK_REQUEST_ASSET_NUM_REQD,
498 		fnd_global.user_id,
499 		sysdate,
500 		fnd_global.login_id,
501 		sysdate    ,
502 		fnd_global.user_id,
503 		P_EAM_WO_WORKFLOW_ENABLED,
504 		P_AUTO_FIRM_ON_CREATE,
505     P_PM_WORK_ORDER_PREFIX
506 	);
507 
508 	-- End of API body.
509 	-- Standard check of p_commit.
510 	IF FND_API.To_Boolean( p_commit ) THEN
511 		COMMIT WORK;
512 	END IF;
513 	-- Standard call to get message count and if count is 1, get message info.
514 	FND_MSG_PUB.get
515     	(  	p_msg_index_out         	=>      x_msg_count     	,
516         		p_data          	=>      x_msg_data
517     	);
518 EXCEPTION
519     WHEN FND_API.G_EXC_ERROR THEN
520 		ROLLBACK TO INSERT_PARAMETERS;
521 		x_return_status := FND_API.G_RET_STS_ERROR ;
522 		FND_MSG_PUB.get
523     		(  	p_msg_index_out         	=>      x_msg_count     	,
524         			p_data          	=>      x_msg_data
525     		);
526 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
527 		ROLLBACK TO INSERT_PARAMETERS;
528 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
529 		FND_MSG_PUB.get
530     		(  	p_msg_index_out         	=>      x_msg_count     	,
531         			p_data          	=>      x_msg_data
532     		);
533 	WHEN OTHERS THEN
534 		ROLLBACK TO INSERT_PARAMETERS;
535 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
536   		IF 	FND_MSG_PUB.Check_Msg_Level
537 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
538 		THEN
539         		FND_MSG_PUB.Add_Exc_Msg
540     	    		(	G_PKG_NAME  	    ,
541     	    			l_api_name
542 	    		);
543 		END IF;
544 		FND_MSG_PUB.get
545     		(  	p_msg_index_out         	=>      x_msg_count     	,
546         			p_data          	=>      x_msg_data
547     		);
548 END insert_parameters;
549 
550 
551 PROCEDURE update_parameters
552 ( 	p_api_version           	IN	NUMBER				,
553   	p_init_msg_list			IN	VARCHAR2 := FND_API.G_FALSE	,
554 	p_commit	    		IN  	VARCHAR2 := FND_API.G_FALSE	,
555 	p_validation_level		IN  	NUMBER	 := FND_API.G_VALID_LEVEL_FULL	,
556 
557 	x_return_status			OUT NOCOPY VARCHAR2		  	,
558 	x_msg_count			OUT NOCOPY NUMBER				,
559 	x_msg_data			OUT NOCOPY VARCHAR2			,
560 	P_ORGANIZATION_ID		IN	NUMBER		,
561 	P_WORK_REQUEST_AUTO_APPROVE	IN	VARCHAR2	default 'N',
562 	P_DEF_MAINT_COST_CATEGORY	IN	NUMBER		,
563 	P_DEF_EAM_COST_ELEMENT_ID	IN	NUMBER		,
564 	P_WORK_REQ_EXTENDED_LOG_FLAG	IN	VARCHAR2	default 'Y',
565 	P_DEFAULT_EAM_CLASS		IN	VARCHAR2  	,
566 	P_EASY_WORK_ORDER_PREFIX	IN	VARCHAR2	default null,
567 	P_WORK_ORDER_PREFIX		IN	VARCHAR2	default null,
568 	P_SERIAL_NUMBER_ENABLED		IN	VARCHAR2	default 'Y',
569 	P_AUTO_FIRM_FLAG		IN	VARCHAR2	default 'Y',
570 	P_MAINTENANCE_OFFSET_ACCOUNT	IN	NUMBER		default null,
571 	P_MATERIAL_ISSUE_BY_MO		IN	VARCHAR2	default 'Y',
572 	P_DEFAULT_DEPARTMENT_ID		IN	NUMBER		default null,
573 	P_INVOICE_BILLABLE_ITEMS_ONLY	IN	VARCHAR2	default 'N',
574 	P_OVERRIDE_BILL_AMOUNT		IN	VARCHAR2	default null,
575 	P_BILLING_BASIS			IN	NUMBER		default null,
576 	P_BILLING_METHOD		IN	NUMBER		default null,
577 	P_DYNAMIC_BILLING_ACTIVITY	IN	VARCHAR2	default null,
578         P_DEFAULT_ASSET_FLAG     	IN	VARCHAR2	default 'Y' ,
579 	P_PM_IGNORE_MISSED_WO		IN 	VARCHAR2 	default 'N',
580 	p_issue_zero_cost_flag		IN 	varchar2	default 'Y',
581 	p_WORK_REQUEST_ASSET_NUM_REQD	IN	varchar2	default 'Y',
582 	P_EAM_WO_WORKFLOW_ENABLED	IN	VARCHAR2	default null,
583 	P_AUTO_FIRM_ON_CREATE		IN	VARCHAR2	default null,
584   P_PM_WORK_ORDER_PREFIX		IN	VARCHAR2	default null
585 )
586 IS
587 	l_api_name			CONSTANT VARCHAR2(30)	:= 'Update_parameters';
588 	l_api_version           	CONSTANT NUMBER 		:= 1.0;
589 	l_boolean                       number;
590 	l_return_status	 		VARCHAR2(1);
591 	l_msg_count			NUMBER;
592 	l_msg_data		 	VARCHAR2(30);
593 
594 BEGIN
595 	-- Standard Start of API savepoint
596     SAVEPOINT	UPDATE_PARAMETERS;
597     -- Standard call to check for call compatibility.
598 
599     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
600         	    	    	    	 	p_api_version        	,
601    	       	    	 			l_api_name 	    	,
602 		    	    	    	    	G_PKG_NAME )
603 	THEN
604 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
605 	END IF;
606 	-- Initialize message list if p_init_msg_list is set to TRUE.
607 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
608 		FND_MSG_PUB.initialize;
609 	END IF;
610 	--  Initialize API return status to success
611         x_return_status := FND_API.G_RET_STS_SUCCESS;
612 	-- API body
613 
614 	-- verify that all "not null" params are provided
615 	if (P_DEF_MAINT_COST_CATEGORY is null
616 		or P_DEF_EAM_COST_ELEMENT_ID is null
617         	or P_DEFAULT_EAM_CLASS is null)
618 	then
622 	end if;
619 	      fnd_message.set_name('EAM', 'EAM_NOT_ENOUGH_PARAMS');
620               fnd_msg_pub.add;
621               RAISE FND_API.G_EXC_ERROR;
623 
624 	--ver eam enabled
625 	validate_org_eam_enabled(p_organization_id);
626 
627 	if not validate_mfg_lookups('BOM_EAM_COST_CATEGORY', P_DEF_MAINT_COST_CATEGORY)
628 	then
629 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_COST_CAT');
630               fnd_msg_pub.add;
631 	      RAISE FND_API.G_EXC_ERROR;
632 	end if;
633 
634 	if not validate_cost_element_id(P_DEF_EAM_COST_ELEMENT_ID )
635 	then
636 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_CST_ELMNT_ID');
637               fnd_msg_pub.add;
638 	      RAISE FND_API.G_EXC_ERROR;
639 	end if;
640 	if not validate_acnt_class(P_DEFAULT_EAM_CLASS , P_ORGANIZATION_ID )
641 	then
642 	      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CLASS_CODE');
643               fnd_msg_pub.add;
644 	      RAISE FND_API.G_EXC_ERROR;
645 	end if;
646 
647 	if not validate_chart_of_accounts(P_MAINTENANCE_OFFSET_ACCOUNT ,P_ORGANIZATION_ID )
648 	then
649 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_CHART_ACNT');
650               fnd_msg_pub.add;
651 	      RAISE FND_API.G_EXC_ERROR;
652 	end if;
653 
654 	-- validate default dept id
655 	if (p_default_department_id is not null and not eam_common_utilities_pvt.validate_department_id(p_default_department_id, p_organization_id)) then
656 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_DEPT_ID');
657               fnd_msg_pub.add;
658 	      RAISE FND_API.G_EXC_ERROR;
659 	end if;
660 
661 	--varifyflag values 'Y' or 'N'
662 	--WorkRequestAutoApprove
663 	validate_boolean_flag(P_WORK_REQUEST_AUTO_APPROVE, 'EAM_PAR_INV_WORK_REQ_AUTO_APPR');
664 	--WorkReqExtendedLogFlag
665 	validate_boolean_flag(P_WORK_REQ_EXTENDED_LOG_FLAG, 'EAM_PAR_INV_WORK_REQ_LOG_FLAG');
666 	--SerialNumberEnabled
667 	validate_boolean_flag(P_SERIAL_NUMBER_ENABLED, 'EAM_PAR_INV_SERIAL_NUM_ENABLED');
668 	--AutoFirmFlag
669 	validate_boolean_flag(P_AUTO_FIRM_FLAG, 'EAM_PAR_INV_AUTO_FIRM_FLAG');
670 	--MaterialIssueByMo
671 	validate_boolean_flag(P_MATERIAL_ISSUE_BY_MO, 'EAM_PAR_INV_ISSUE_BY_MO');
672 	--InvoiceBillableItemsOnly
673 	validate_boolean_flag(P_INVOICE_BILLABLE_ITEMS_ONLY, 'EAM_PAR_INV_INVOICE_BLBLE_FLG');
674 
675 	-- issue_zero_cost_flag
676 	validate_boolean_flag(p_issue_zero_cost_flag, 'EAM_PAR_ZERO_COST_FLAG');
677 
678 	-- WORK_REQUEST_ASSET_NUM_REQD
679 	validate_boolean_flag(p_WORK_REQUEST_ASSET_NUM_REQD, 'EAM_WORK_REQUEST_ASSET_NUM_REQ');
680 
681 	VALIDATE_ASSET_FLAG(P_DEFAULT_ASSET_FLAG);
682 
683         VALIDATE_ROW_EXISTS(P_ORGANIZATION_ID, FALSE);
684 
685 	validate_boolean_flag(P_EAM_WO_WORKFLOW_ENABLED, 'EAM_WO_WORKFLOW_ENABLED');
686 	validate_boolean_flag(P_AUTO_FIRM_ON_CREATE, 'EAM_AUTO_FIRM_ON_CREATE');
687 
688 
689         UPDATE WIP_EAM_PARAMETERS
690         SET
691 --		ORGANIZATION_ID		=	P_ORGANIZATION_ID	,
692 		WORK_REQUEST_AUTO_APPROVE	=	P_WORK_REQUEST_AUTO_APPROVE	,
693 		DEF_MAINT_COST_CATEGORY	=	P_DEF_MAINT_COST_CATEGORY	,
694 		DEF_EAM_COST_ELEMENT_ID	=	P_DEF_EAM_COST_ELEMENT_ID	,
695 		WORK_REQ_EXTENDED_LOG_FLAG      =	P_WORK_REQ_EXTENDED_LOG_FLAG	,
696 		DEFAULT_EAM_CLASS	=	P_DEFAULT_EAM_CLASS	,
697 		EASY_WORK_ORDER_PREFIX	=	P_EASY_WORK_ORDER_PREFIX	,
698 		WORK_ORDER_PREFIX	=	P_WORK_ORDER_PREFIX	,
699 		SERIAL_NUMBER_ENABLED	=	P_SERIAL_NUMBER_ENABLED	,
700 		AUTO_FIRM_FLAG		=	P_AUTO_FIRM_FLAG	,
701 		MAINTENANCE_OFFSET_ACCOUNT	=	P_MAINTENANCE_OFFSET_ACCOUNT	,
702 		--WIP_EAM_REQUEST_TYPE	=	P_WIP_EAM_REQUEST_TYPE	,
703 		MATERIAL_ISSUE_BY_MO	=	P_MATERIAL_ISSUE_BY_MO	,
704 		DEFAULT_DEPARTMENT_ID	=	P_DEFAULT_DEPARTMENT_ID	,
705 		INVOICE_BILLABLE_ITEMS_ONLY	=	P_INVOICE_BILLABLE_ITEMS_ONLY	,
706 		OVERRIDE_BILL_AMOUNT	=	P_OVERRIDE_BILL_AMOUNT	,
707 		BILLING_BASIS		=	P_BILLING_BASIS	,
708 		BILLING_METHOD		=	P_BILLING_METHOD	,
709 		DYNAMIC_BILLING_ACTIVITY=	P_DYNAMIC_BILLING_ACTIVITY	,
710 		DEFAULT_ASSET_FLAG    	= 	P_DEFAULT_ASSET_FLAG	,
711 		PM_IGNORE_MISSED_WO 	= 	p_pm_ignore_missed_wo,
712 		issue_zero_cost_flag	=	p_issue_zero_cost_flag,
713 		WORK_REQUEST_ASSET_NUM_REQD =	p_WORK_REQUEST_ASSET_NUM_REQD,
714 
715 		LAST_UPDATE_LOGIN	=	fnd_global.login_id	,
716 		LAST_UPDATE_DATE	=	sysdate	,
717 		LAST_UPDATED_BY		=	fnd_global.user_id,
718 		EAM_WO_WORKFLOW_ENABLED	=	P_EAM_WO_WORKFLOW_ENABLED,
719 		AUTO_FIRM_ON_CREATE	=	P_AUTO_FIRM_ON_CREATE,
720     PM_WORK_ORDER_PREFIX = P_PM_WORK_ORDER_PREFIX
721 
722 	WHERE ORGANIZATION_ID = P_ORGANIZATION_ID;
723 
724 	-- End of API body.
725 	-- Standard check of p_commit.
726 	IF FND_API.To_Boolean( p_commit ) THEN
727 		COMMIT WORK;
728 	END IF;
729 	-- Standard call to get message count and if count is 1, get message info.
730 	FND_MSG_PUB.get
731     	(  	p_msg_index_out         	=>      x_msg_count     	,
732         	p_data          	=>      x_msg_data
733     	);
734 EXCEPTION
735     WHEN FND_API.G_EXC_ERROR THEN
736 		ROLLBACK TO UPDATE_PARAMETERS;
737 		x_return_status := FND_API.G_RET_STS_ERROR ;
738 		FND_MSG_PUB.get
739     		(  	p_msg_index_out         	=>      x_msg_count     	,
740         			p_data          	=>      x_msg_data
741     		);
742 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
743 		ROLLBACK TO UPDATE_PARAMETERS;
744 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
745 		FND_MSG_PUB.get
746     		(  	p_msg_index_out         	=>      x_msg_count     	,
747         		p_data          	=>      x_msg_data
748     		);
749 	WHEN OTHERS THEN
750 		ROLLBACK TO UPDATE_PARAMETERS;
751 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
752   		IF 	FND_MSG_PUB.Check_Msg_Level
753 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
754 		THEN
755         		FND_MSG_PUB.Add_Exc_Msg
756     	    		(	G_PKG_NAME  	    ,
757     	    			l_api_name
758 	    		);
759 		END IF;
760 		FND_MSG_PUB.get
761     		(  	p_msg_index_out         	=>      x_msg_count     	,
762         			p_data          	=>      x_msg_data
763     		);
764 END update_parameters;
765 
766 
767 END EAM_PARAMETERS_PUB;