DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_PARAMETERS_PUB

Source


1 PACKAGE BODY EAM_PARAMETERS_PUB AS
2 /* $Header: EAMPPRMB.pls 120.1 2005/06/17 01:57:35 appldev  $ */
3 -- Start of comments
4 --	API name 	: EAM_PARAMETERS_PUB
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 
150         if l_count = 0
151         then
152             return false;
153         else
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 )
313 IS
314 	l_api_name			CONSTANT VARCHAR2(30)	:= 'insert_parameters';
315 	l_api_version           	CONSTANT NUMBER 		:= 1.0;
316 	l_boolean                       number;
317 	l_return_status	 		VARCHAR2(1);
318 	l_msg_count			NUMBER;
319 	l_msg_data		 	VARCHAR2(30);
320 
321 BEGIN
322 	-- Standard Start of API savepoint
323     SAVEPOINT	INSERT_PARAMETERS;
324     -- Standard call to check for call compatibility.
325     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
326         	    	    	    	 	p_api_version        	,
327    	       	    	 			l_api_name 	    	,
328 		    	    	    	    	G_PKG_NAME )
329 	THEN
330 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
331 	END IF;
332 	-- Initialize message list if p_init_msg_list is set to TRUE.
333 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
334 		FND_MSG_PUB.initialize;
335 	END IF;
336 	--  Initialize API return status to success
337         x_return_status := FND_API.G_RET_STS_SUCCESS;
338 	-- API body
339 
340 	-- verify that all "not null" params are provided
341 	if (P_DEF_MAINT_COST_CATEGORY is null
342 		or P_DEF_EAM_COST_ELEMENT_ID is null
343         	or P_DEFAULT_EAM_CLASS is null)
344 	then
345 	      fnd_message.set_name('EAM', 'EAM_NOT_ENOUGH_PARAMS');
346               fnd_msg_pub.add;
347               RAISE FND_API.G_EXC_ERROR;
348 	end if;
349 
350 	--ver eam enabled
351 	validate_org_eam_enabled(p_organization_id);
352 
353         --verify default cost cat
354 	if not validate_mfg_lookups('BOM_EAM_COST_CATEGORY', P_DEF_MAINT_COST_CATEGORY)
355 	then
356 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_COST_CAT');
357               fnd_msg_pub.add;
358 	      RAISE FND_API.G_EXC_ERROR;
359 	end if;
360 
361 	--VALIDATE Billing_BASIS
362 	if not validate_mfg_lookups('EAM_BILLING_BASIS', P_BILLING_BASIS)
363 	then
364 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_BILLING_BASIS');
365               fnd_msg_pub.add;
366 	      RAISE FND_API.G_EXC_ERROR;
367 	end if;
368 
369 	-- VALIDATE BILLING_METHOD
370 	if not validate_mfg_lookups('EAM_BILLING_METHOD', P_BILLING_METHOD)
371 	then
372 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_BILLING_METHOD');
373               fnd_msg_pub.add;
374 	      RAISE FND_API.G_EXC_ERROR;
375 	end if;
376 
377 	--ver def cost element id
378 	if not validate_cost_element_id(P_DEF_EAM_COST_ELEMENT_ID )
379 	then
380 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_CST_ELMNT_ID');
381               fnd_msg_pub.add;
382 	      RAISE FND_API.G_EXC_ERROR;
383 	end if;
384 	--ver wip acnt class
385 	if not validate_acnt_class(P_DEFAULT_EAM_CLASS , P_ORGANIZATION_ID )
386 	then
387 	      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CLASS_CODE');
388               fnd_msg_pub.add;
389 	      RAISE FND_API.G_EXC_ERROR;
390 	end if;
391 	--ver maint offset acnt
392 	if not validate_chart_of_accounts(P_MAINTENANCE_OFFSET_ACCOUNT ,P_ORGANIZATION_ID )
393 	then
394 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_CHART_ACNT');
395               fnd_msg_pub.add;
396 	      RAISE FND_API.G_EXC_ERROR;
397 	end if;
398 
399 	-- validate default dept id
400 	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
401 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_DEPT_ID');
402               fnd_msg_pub.add;
403 	      RAISE FND_API.G_EXC_ERROR;
404 	end if;
405 
406 	--varifyflag values 'Y' or 'N'
407 	--WorkRequestAutoApprove
408 	validate_boolean_flag(P_WORK_REQUEST_AUTO_APPROVE, 'EAM_PAR_INV_WORK_REQ_AUTO_APPR');
409 	--WorkReqExtendedLogFlag
410 	validate_boolean_flag(P_WORK_REQ_EXTENDED_LOG_FLAG, 'EAM_PAR_INV_WORK_REQ_LOG_FLAG');
411 	--SerialNumberEnabled
412 	validate_boolean_flag(P_SERIAL_NUMBER_ENABLED, 'EAM_PAR_INV_SERIAL_NUM_ENABLED');
413 	--AutoFirmFlag
414 	validate_boolean_flag(P_AUTO_FIRM_FLAG, 'EAM_PAR_INV_AUTO_FIRM_FLAG');
415 	--MaterialIssueByMo
416 	validate_boolean_flag(P_MATERIAL_ISSUE_BY_MO, 'EAM_PAR_INV_ISSUE_BY_MO');
417 	--InvoiceBillableItemsOnly
418 	validate_boolean_flag(P_INVOICE_BILLABLE_ITEMS_ONLY, 'EAM_PAR_INV_INVOICE_BLBLE_FLG');
419 
420 	-- pm_ignore_missed_wo
421 	validate_boolean_flag(P_PM_IGNORE_MISSED_WO, 'EAM_PAR_PM_IGNORE_FLAG');
422 
423 	-- issue_zero_cost_flag
424 	validate_boolean_flag(p_issue_zero_cost_flag, 'EAM_PAR_ZERO_COST_FLAG');
425 
426 	-- WORK_REQUEST_ASSET_NUM_REQD
427 	validate_boolean_flag(p_WORK_REQUEST_ASSET_NUM_REQD, 'EAM_WORK_REQUEST_ASSET_NUM_REQ');
428 
429 	VALIDATE_ASSET_FLAG(P_DEFAULT_ASSET_FLAG);
430 
431 
432         VALIDATE_ROW_EXISTS(P_ORGANIZATION_ID, TRUE);
433 
434 	validate_boolean_flag(P_EAM_WO_WORKFLOW_ENABLED, 'EAM_WO_WORKFLOW_ENABLED');
435 	validate_boolean_flag(P_AUTO_FIRM_ON_CREATE, 'EAM_AUTO_FIRM_ON_CREATE');
436 
437         INSERT INTO WIP_EAM_PARAMETERS
438         (
439 		ORGANIZATION_ID	,
440 		WORK_REQUEST_AUTO_APPROVE	,
441 		DEF_MAINT_COST_CATEGORY	,
442 		DEF_EAM_COST_ELEMENT_ID	,
443 		WORK_REQ_EXTENDED_LOG_FLAG	,
444 		DEFAULT_EAM_CLASS	,
445 		EASY_WORK_ORDER_PREFIX	,
446 		WORK_ORDER_PREFIX	,
447 		SERIAL_NUMBER_ENABLED	,
448 		AUTO_FIRM_FLAG	,
449 		MAINTENANCE_OFFSET_ACCOUNT	,
450 		--WIP_EAM_REQUEST_TYPE	,
451 		MATERIAL_ISSUE_BY_MO	,
452 		DEFAULT_DEPARTMENT_ID	,
453 		INVOICE_BILLABLE_ITEMS_ONLY	,
454 		OVERRIDE_BILL_AMOUNT	,
455 		BILLING_BASIS	,
456 		BILLING_METHOD	,
457 		DYNAMIC_BILLING_ACTIVITY	,
458 		DEFAULT_ASSET_FLAG	,
459 		PM_IGNORE_MISSED_WO,
460 		issue_zero_cost_flag,
461 		WORK_REQUEST_ASSET_NUM_REQD,
462 
463 		CREATED_BY           ,
464 		CREATION_DATE       ,
465 		LAST_UPDATE_LOGIN  ,
466 		LAST_UPDATE_DATE  ,
467 		LAST_UPDATED_BY,
468 		EAM_WO_WORKFLOW_ENABLED,
469 		AUTO_FIRM_ON_CREATE
470 	)
471 	VALUES
472 	(
473 		P_ORGANIZATION_ID	,
474 		P_WORK_REQUEST_AUTO_APPROVE	,
475 		P_DEF_MAINT_COST_CATEGORY	,
476 		P_DEF_EAM_COST_ELEMENT_ID	,
477 		P_WORK_REQ_EXTENDED_LOG_FLAG	,
478 		P_DEFAULT_EAM_CLASS	,
479 		P_EASY_WORK_ORDER_PREFIX	,
480 		P_WORK_ORDER_PREFIX	,
481 		P_SERIAL_NUMBER_ENABLED	,
482 		P_AUTO_FIRM_FLAG	,
483 		P_MAINTENANCE_OFFSET_ACCOUNT	,
484 		--P_WIP_EAM_REQUEST_TYPE	,
485 		P_MATERIAL_ISSUE_BY_MO	,
486 		P_DEFAULT_DEPARTMENT_ID	,
487 		P_INVOICE_BILLABLE_ITEMS_ONLY	,
488 		P_OVERRIDE_BILL_AMOUNT	,
489 		P_BILLING_BASIS	,
490 		P_BILLING_METHOD	,
491 		P_DYNAMIC_BILLING_ACTIVITY	,
492 		P_DEFAULT_ASSET_FLAG           ,
493 		P_PM_IGNORE_MISSED_WO,
494 		p_issue_zero_cost_flag,
495 		p_WORK_REQUEST_ASSET_NUM_REQD,
496 		fnd_global.user_id,
497 		sysdate,
498 		fnd_global.login_id,
499 		sysdate    ,
500 		fnd_global.user_id,
501 		P_EAM_WO_WORKFLOW_ENABLED,
502 		P_AUTO_FIRM_ON_CREATE
503 	);
504 
505 	-- End of API body.
506 	-- Standard check of p_commit.
507 	IF FND_API.To_Boolean( p_commit ) THEN
508 		COMMIT WORK;
509 	END IF;
510 	-- Standard call to get message count and if count is 1, get message info.
511 	FND_MSG_PUB.get
512     	(  	p_msg_index_out         	=>      x_msg_count     	,
513         		p_data          	=>      x_msg_data
514     	);
515 EXCEPTION
516     WHEN FND_API.G_EXC_ERROR THEN
517 		ROLLBACK TO INSERT_PARAMETERS;
518 		x_return_status := FND_API.G_RET_STS_ERROR ;
519 		FND_MSG_PUB.get
520     		(  	p_msg_index_out         	=>      x_msg_count     	,
521         			p_data          	=>      x_msg_data
522     		);
523 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
524 		ROLLBACK TO INSERT_PARAMETERS;
525 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
526 		FND_MSG_PUB.get
527     		(  	p_msg_index_out         	=>      x_msg_count     	,
528         			p_data          	=>      x_msg_data
529     		);
530 	WHEN OTHERS THEN
531 		ROLLBACK TO INSERT_PARAMETERS;
532 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
533   		IF 	FND_MSG_PUB.Check_Msg_Level
534 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
535 		THEN
536         		FND_MSG_PUB.Add_Exc_Msg
537     	    		(	G_PKG_NAME  	    ,
538     	    			l_api_name
539 	    		);
540 		END IF;
541 		FND_MSG_PUB.get
542     		(  	p_msg_index_out         	=>      x_msg_count     	,
543         			p_data          	=>      x_msg_data
544     		);
545 END insert_parameters;
546 
547 
548 PROCEDURE update_parameters
549 ( 	p_api_version           	IN	NUMBER				,
550   	p_init_msg_list			IN	VARCHAR2 := FND_API.G_FALSE	,
551 	p_commit	    		IN  	VARCHAR2 := FND_API.G_FALSE	,
552 	p_validation_level		IN  	NUMBER	 := FND_API.G_VALID_LEVEL_FULL	,
553 
554 	x_return_status			OUT NOCOPY VARCHAR2		  	,
555 	x_msg_count			OUT NOCOPY NUMBER				,
556 	x_msg_data			OUT NOCOPY VARCHAR2			,
557 	P_ORGANIZATION_ID		IN	NUMBER		,
558 	P_WORK_REQUEST_AUTO_APPROVE	IN	VARCHAR2	default 'N',
559 	P_DEF_MAINT_COST_CATEGORY	IN	NUMBER		,
560 	P_DEF_EAM_COST_ELEMENT_ID	IN	NUMBER		,
561 	P_WORK_REQ_EXTENDED_LOG_FLAG	IN	VARCHAR2	default 'Y',
562 	P_DEFAULT_EAM_CLASS		IN	VARCHAR2  	,
563 	P_EASY_WORK_ORDER_PREFIX	IN	VARCHAR2	default null,
564 	P_WORK_ORDER_PREFIX		IN	VARCHAR2	default null,
565 	P_SERIAL_NUMBER_ENABLED		IN	VARCHAR2	default 'Y',
566 	P_AUTO_FIRM_FLAG		IN	VARCHAR2	default 'Y',
567 	P_MAINTENANCE_OFFSET_ACCOUNT	IN	NUMBER		default null,
568 	P_MATERIAL_ISSUE_BY_MO		IN	VARCHAR2	default 'Y',
569 	P_DEFAULT_DEPARTMENT_ID		IN	NUMBER		default null,
570 	P_INVOICE_BILLABLE_ITEMS_ONLY	IN	VARCHAR2	default 'N',
571 	P_OVERRIDE_BILL_AMOUNT		IN	VARCHAR2	default null,
572 	P_BILLING_BASIS			IN	NUMBER		default null,
573 	P_BILLING_METHOD		IN	NUMBER		default null,
574 	P_DYNAMIC_BILLING_ACTIVITY	IN	VARCHAR2	default null,
575         P_DEFAULT_ASSET_FLAG     	IN	VARCHAR2	default 'Y' ,
576 	P_PM_IGNORE_MISSED_WO		IN 	VARCHAR2 	default 'N',
577 	p_issue_zero_cost_flag		IN 	varchar2	default 'Y',
578 	p_WORK_REQUEST_ASSET_NUM_REQD	IN	varchar2	default 'Y',
579 	P_EAM_WO_WORKFLOW_ENABLED	IN	VARCHAR2	default null,
580 	P_AUTO_FIRM_ON_CREATE		IN	VARCHAR2	default null
581 )
582 IS
583 	l_api_name			CONSTANT VARCHAR2(30)	:= 'Update_parameters';
584 	l_api_version           	CONSTANT NUMBER 		:= 1.0;
585 	l_boolean                       number;
586 	l_return_status	 		VARCHAR2(1);
587 	l_msg_count			NUMBER;
588 	l_msg_data		 	VARCHAR2(30);
589 
590 BEGIN
591 	-- Standard Start of API savepoint
592     SAVEPOINT	UPDATE_PARAMETERS;
593     -- Standard call to check for call compatibility.
594 
595     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
596         	    	    	    	 	p_api_version        	,
597    	       	    	 			l_api_name 	    	,
598 		    	    	    	    	G_PKG_NAME )
599 	THEN
600 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
601 	END IF;
602 	-- Initialize message list if p_init_msg_list is set to TRUE.
603 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
604 		FND_MSG_PUB.initialize;
605 	END IF;
606 	--  Initialize API return status to success
607         x_return_status := FND_API.G_RET_STS_SUCCESS;
608 	-- API body
609 
610 	-- verify that all "not null" params are provided
611 	if (P_DEF_MAINT_COST_CATEGORY is null
612 		or P_DEF_EAM_COST_ELEMENT_ID is null
613         	or P_DEFAULT_EAM_CLASS is null)
614 	then
615 	      fnd_message.set_name('EAM', 'EAM_NOT_ENOUGH_PARAMS');
616               fnd_msg_pub.add;
617               RAISE FND_API.G_EXC_ERROR;
618 	end if;
619 
620 	--ver eam enabled
621 	validate_org_eam_enabled(p_organization_id);
622 
623 	if not validate_mfg_lookups('BOM_EAM_COST_CATEGORY', P_DEF_MAINT_COST_CATEGORY)
624 	then
625 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_COST_CAT');
626               fnd_msg_pub.add;
627 	      RAISE FND_API.G_EXC_ERROR;
628 	end if;
629 
630 	if not validate_cost_element_id(P_DEF_EAM_COST_ELEMENT_ID )
631 	then
632 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_CST_ELMNT_ID');
633               fnd_msg_pub.add;
634 	      RAISE FND_API.G_EXC_ERROR;
635 	end if;
636 	if not validate_acnt_class(P_DEFAULT_EAM_CLASS , P_ORGANIZATION_ID )
637 	then
638 	      fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CLASS_CODE');
639               fnd_msg_pub.add;
640 	      RAISE FND_API.G_EXC_ERROR;
641 	end if;
642 
643 	if not validate_chart_of_accounts(P_MAINTENANCE_OFFSET_ACCOUNT ,P_ORGANIZATION_ID )
644 	then
645 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_CHART_ACNT');
646               fnd_msg_pub.add;
647 	      RAISE FND_API.G_EXC_ERROR;
648 	end if;
649 
650 	-- validate default dept id
651 	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
652 	      fnd_message.set_name('EAM', 'EAM_PAR_INVALID_DEPT_ID');
653               fnd_msg_pub.add;
654 	      RAISE FND_API.G_EXC_ERROR;
655 	end if;
656 
657 	--varifyflag values 'Y' or 'N'
658 	--WorkRequestAutoApprove
659 	validate_boolean_flag(P_WORK_REQUEST_AUTO_APPROVE, 'EAM_PAR_INV_WORK_REQ_AUTO_APPR');
660 	--WorkReqExtendedLogFlag
661 	validate_boolean_flag(P_WORK_REQ_EXTENDED_LOG_FLAG, 'EAM_PAR_INV_WORK_REQ_LOG_FLAG');
662 	--SerialNumberEnabled
663 	validate_boolean_flag(P_SERIAL_NUMBER_ENABLED, 'EAM_PAR_INV_SERIAL_NUM_ENABLED');
664 	--AutoFirmFlag
665 	validate_boolean_flag(P_AUTO_FIRM_FLAG, 'EAM_PAR_INV_AUTO_FIRM_FLAG');
666 	--MaterialIssueByMo
667 	validate_boolean_flag(P_MATERIAL_ISSUE_BY_MO, 'EAM_PAR_INV_ISSUE_BY_MO');
668 	--InvoiceBillableItemsOnly
669 	validate_boolean_flag(P_INVOICE_BILLABLE_ITEMS_ONLY, 'EAM_PAR_INV_INVOICE_BLBLE_FLG');
670 
671 	-- issue_zero_cost_flag
672 	validate_boolean_flag(p_issue_zero_cost_flag, 'EAM_PAR_ZERO_COST_FLAG');
673 
674 	-- WORK_REQUEST_ASSET_NUM_REQD
675 	validate_boolean_flag(p_WORK_REQUEST_ASSET_NUM_REQD, 'EAM_WORK_REQUEST_ASSET_NUM_REQ');
676 
677 	VALIDATE_ASSET_FLAG(P_DEFAULT_ASSET_FLAG);
678 
679         VALIDATE_ROW_EXISTS(P_ORGANIZATION_ID, FALSE);
680 
681 	validate_boolean_flag(P_EAM_WO_WORKFLOW_ENABLED, 'EAM_WO_WORKFLOW_ENABLED');
682 	validate_boolean_flag(P_AUTO_FIRM_ON_CREATE, 'EAM_AUTO_FIRM_ON_CREATE');
683 
684 
685         UPDATE WIP_EAM_PARAMETERS
686         SET
687 --		ORGANIZATION_ID		=	P_ORGANIZATION_ID	,
688 		WORK_REQUEST_AUTO_APPROVE	=	P_WORK_REQUEST_AUTO_APPROVE	,
689 		DEF_MAINT_COST_CATEGORY	=	P_DEF_MAINT_COST_CATEGORY	,
690 		DEF_EAM_COST_ELEMENT_ID	=	P_DEF_EAM_COST_ELEMENT_ID	,
691 		WORK_REQ_EXTENDED_LOG_FLAG      =	P_WORK_REQ_EXTENDED_LOG_FLAG	,
692 		DEFAULT_EAM_CLASS	=	P_DEFAULT_EAM_CLASS	,
693 		EASY_WORK_ORDER_PREFIX	=	P_EASY_WORK_ORDER_PREFIX	,
694 		WORK_ORDER_PREFIX	=	P_WORK_ORDER_PREFIX	,
695 		SERIAL_NUMBER_ENABLED	=	P_SERIAL_NUMBER_ENABLED	,
696 		AUTO_FIRM_FLAG		=	P_AUTO_FIRM_FLAG	,
697 		MAINTENANCE_OFFSET_ACCOUNT	=	P_MAINTENANCE_OFFSET_ACCOUNT	,
698 		--WIP_EAM_REQUEST_TYPE	=	P_WIP_EAM_REQUEST_TYPE	,
699 		MATERIAL_ISSUE_BY_MO	=	P_MATERIAL_ISSUE_BY_MO	,
700 		DEFAULT_DEPARTMENT_ID	=	P_DEFAULT_DEPARTMENT_ID	,
701 		INVOICE_BILLABLE_ITEMS_ONLY	=	P_INVOICE_BILLABLE_ITEMS_ONLY	,
702 		OVERRIDE_BILL_AMOUNT	=	P_OVERRIDE_BILL_AMOUNT	,
703 		BILLING_BASIS		=	P_BILLING_BASIS	,
704 		BILLING_METHOD		=	P_BILLING_METHOD	,
705 		DYNAMIC_BILLING_ACTIVITY=	P_DYNAMIC_BILLING_ACTIVITY	,
706 		DEFAULT_ASSET_FLAG    	= 	P_DEFAULT_ASSET_FLAG	,
707 		PM_IGNORE_MISSED_WO 	= 	p_pm_ignore_missed_wo,
708 		issue_zero_cost_flag	=	p_issue_zero_cost_flag,
709 		WORK_REQUEST_ASSET_NUM_REQD =	p_WORK_REQUEST_ASSET_NUM_REQD,
710 
711 		LAST_UPDATE_LOGIN	=	fnd_global.login_id	,
712 		LAST_UPDATE_DATE	=	sysdate	,
713 		LAST_UPDATED_BY		=	fnd_global.user_id,
714 		EAM_WO_WORKFLOW_ENABLED	=	P_EAM_WO_WORKFLOW_ENABLED,
715 		AUTO_FIRM_ON_CREATE	=	P_AUTO_FIRM_ON_CREATE
716 
717 	WHERE ORGANIZATION_ID = P_ORGANIZATION_ID;
718 
719 	-- End of API body.
720 	-- Standard check of p_commit.
721 	IF FND_API.To_Boolean( p_commit ) THEN
722 		COMMIT WORK;
723 	END IF;
724 	-- Standard call to get message count and if count is 1, get message info.
725 	FND_MSG_PUB.get
726     	(  	p_msg_index_out         	=>      x_msg_count     	,
727         	p_data          	=>      x_msg_data
728     	);
729 EXCEPTION
730     WHEN FND_API.G_EXC_ERROR THEN
731 		ROLLBACK TO UPDATE_PARAMETERS;
732 		x_return_status := FND_API.G_RET_STS_ERROR ;
733 		FND_MSG_PUB.get
734     		(  	p_msg_index_out         	=>      x_msg_count     	,
735         			p_data          	=>      x_msg_data
736     		);
737 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
738 		ROLLBACK TO UPDATE_PARAMETERS;
739 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
740 		FND_MSG_PUB.get
741     		(  	p_msg_index_out         	=>      x_msg_count     	,
742         		p_data          	=>      x_msg_data
743     		);
744 	WHEN OTHERS THEN
745 		ROLLBACK TO UPDATE_PARAMETERS;
746 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
747   		IF 	FND_MSG_PUB.Check_Msg_Level
748 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
749 		THEN
750         		FND_MSG_PUB.Add_Exc_Msg
751     	    		(	G_PKG_NAME  	    ,
752     	    			l_api_name
753 	    		);
754 		END IF;
755 		FND_MSG_PUB.get
756     		(  	p_msg_index_out         	=>      x_msg_count     	,
757         			p_data          	=>      x_msg_data
758     		);
759 END update_parameters;
760 
761 
762 END EAM_PARAMETERS_PUB;