[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;