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