[Home] [Help]
PACKAGE BODY: APPS.EAM_ITEM_ACTIVITIES_PUB
Source
1 PACKAGE BODY EAM_ITEM_ACTIVITIES_PUB AS
2 /* $Header: EAMPIAAB.pls 120.5.12020000.2 2012/07/05 10:37:15 vpasupur ship $ */
3 -- Start of comments
4 -- API name : EAM_ITEM_ACTIVITIES_PUB
5 -- Type : Public
6 -- Function : INSERT_ITEM_ACTIVITIES, update_item_activities
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_ITEM_ACTIVITIES_PUB';
42
43 /* for de-bugging */
44 /* g_sr_no number ; */
45
46 PROCEDURE print_log(info varchar2) is
47 PRAGMA AUTONOMOUS_TRANSACTION;
48 l_dummy number;
49 BEGIN
50 /*
51 if (g_sr_no is null or g_sr_no<0) then
52 g_sr_no := 0;
53 end if;
54
55 g_sr_no := g_sr_no+1;
56
57 INSERT into temp_isetup_api(msg,sr_no)
58 VALUES (info,g_sr_no);
59
60 commit;
61 */
62 FND_FILE.PUT_LINE(FND_FILE.LOG, info);
63
64 END;
65
66 FUNCTION VALIDATE_EAM_ENABLED
67 (P_ORGANIZATION_ID NUMBER)
68 RETURN BOOLEAN
69 IS
70 L_STATUS NUMBER;
71 BEGIN
72 SELECT count(*) INTO L_status
73 FROM MTL_PARAMETERS
74 WHERE ORGANIZATION_ID = P_ORGANIZATION_ID
75 AND NVL(EAM_ENABLED_FLAG, 'N') = 'Y';
76
77 IF L_status > 0
78 THEN
79 RETURN TRUE;
80 ELSE
81 RETURN FALSE;
82 END IF;
83 END VALIDATE_EAM_ENABLED;
84 /* function checking the item unique when both the 2 combinations are provided by the user */
85 FUNCTION check_item_unique (
86 p_maintenance_object_type NUMBER,
87 p_maintenance_object_id NUMBER,
88 p_asset_group_id NUMBER,
89 p_organization_id NUMBER,
90 p_asset_number VARCHAR2,
91 p_creation_organization_id NUMBER
92 )
93 RETURN boolean
94 IS
95 l_count_rec NUMBER := 0;
96 BEGIN
97 IF (p_maintenance_object_type = 3) THEN
98 IF ( p_asset_number IS NOT NULL ) THEN
99 SELECT count(*) INTO l_count_rec
100 FROM csi_item_instances cii
101 WHERE cii.serial_number = p_asset_number
102 AND cii.instance_id = p_maintenance_object_id
103 AND cii.inventory_item_id = p_asset_group_id;
104 END IF;
105
106 ELSIF (p_maintenance_object_type = 2) THEN
107 IF ((p_asset_number IS NULL) AND
108 (p_maintenance_object_id = p_asset_group_id)) THEN
109 SELECT count(*) INTO l_count_rec
110 FROM mtl_system_items msi, mtl_parameters mp
111 WHERE msi.inventory_item_id = p_asset_group_id
112 AND msi.organization_id = mp.organization_id
113 AND mp.maint_organization_id = p_organization_id;
114 END IF;
115
116 END IF;
117
118 IF (l_count_rec > 0) THEN
119 RETURN true;
120 ELSE
121 RETURN false;
122 END IF;
123
124 END check_item_unique;
125
126 /* For raising error */
127 PROCEDURE RAISE_ERROR (ERROR VARCHAR2)
128 IS
129 BEGIN
130
131
132 FND_MESSAGE.SET_NAME ('EAM', ERROR);
133 FND_MSG_PUB.ADD;
134 RAISE FND_API.G_EXC_ERROR;
135 END;
136
137 --funcation to validate if the provided lookup code is present forthe specified type.
138 PROCEDURE validate_mfg_lookups(P_LOOKUP_TYPE IN VARCHAR2, P_LOOKUP_CODE in varchar2, P_MSG in varchar2)
139 is
140 l_count number;
141 BEGIN
142 IF P_LOOKUP_CODE IS NULL OR P_LOOKUP_CODE = FND_API.G_MISS_CHAR
143 THEN
144 RETURN ;
145 END IF ;
146
147 SELECT count(*) INTO l_count
148 FROM mfg_lookups
149 WHERE lookup_type = P_LOOKUP_TYPE
150 AND lookup_code= P_LOOKUP_CODE;
151
152 if l_count = 0
153 then
154 fnd_message.set_name('EAM', P_MSG);
155 fnd_msg_pub.add;
156 RAISE fnd_api.g_exc_error;
157 end if;
158 END;
159
160 --funciton to validate the wip entity class CLASS_TYPE = "Maintenance" <6>
161 PROCEDURE validate_acnt_class(P_WIP_ACNT_CLASS in varchar2, P_ORGANIZATION_ID IN NUMBER)
162 is
163 l_count number;
164 BEGIN
165
166 IF P_WIP_ACNT_CLASS IS NULL OR P_WIP_ACNT_CLASS = FND_API.G_MISS_CHAR OR P_ORGANIZATION_ID IS NULL
167 THEN
168 RETURN ;
169 END IF ;
170
171 SELECT count(*) INTO l_count
172 from wip_accounting_classes
173 where class_code = P_WIP_ACNT_CLASS
174 and class_type = 6
175 and organization_id = P_ORGANIZATION_ID;
176
177 if l_count = 0
178 then
179 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CLASS_CODE');
180 fnd_msg_pub.add;
181 RAISE fnd_api.g_exc_error;
182 end if;
183 END;
184
185
186 PROCEDURE validate_boolean_flag(p_flag IN VARCHAR2, p_msg IN VARCHAR2)
187 is
188 begin
189 if(p_flag is not null and p_flag <> FND_API.G_MISS_CHAR)
190 then
191 if not EAM_COMMON_UTILITIES_PVT.validate_boolean_flag(p_flag)
192 then
193 fnd_message.set_name('EAM', p_msg);
194 fnd_msg_pub.add;
195 RAISE fnd_api.g_exc_error;
196 end if;
197 end if;
198 end;
199
200
201 PROCEDURE validate_maintenance_object_id(p_organization_id in number, p_object_id in number, p_eam_item_type in NUMBER)
202 is
203 l_count number;
204 begin
205 IF p_object_id IS NULL OR p_eam_item_type IS NULL OR p_organization_id IS NULL
206 THEN
207 RETURN ;
208 END IF ;
209
210 if p_eam_item_type = 3 then
211 select count(cii.instance_id) into l_count
212 from csi_item_instances cii
213 where cii.instance_id=p_object_id;
214 elsif p_eam_item_type = 2 then
215 select count(msi.inventory_item_id) into l_count
216 from mtl_system_items msi, mtl_parameters mp
217 where msi.inventory_item_id = p_object_id
218 and msi.organization_id = mp.organization_id
219 and mp.maint_organization_id = p_organization_id
220 --and eam_item_type = p_eam_item_type
221 ;
222 end if;
223
224 if l_count = 0 then
225 fnd_message.set_name('EAM', 'EAM_INVALID_MAINT_OBJ_ID');
226 fnd_msg_pub.add;
227 RAISE fnd_api.g_exc_error;
228 end if;
229
230 END;
231
232
233 -- This function validates an asset group, asset activity, or
234 -- rebuildable item. p_eam_item_type indicates the type of item being
235 -- validated. Asset group: 1; Asset activity: 2; Rebuildable item: 3.
236 PROCEDURE validate_inventory_item_id
237 (
238 p_organization_id in number,
239 p_inventory_item_id in number
240 ) is
241 l_count number:=0;
242 begin
243 IF P_ORGANIZATION_ID IS NOT NULL AND p_inventory_item_id IS NOT NULL
244 THEN
245
246 select count(msi.inventory_item_id) into l_count
247 from mtl_system_items msi, mtl_parameters mp
248 where msi.inventory_item_id=p_inventory_item_id
249 and msi.organization_id = mp.organization_id
250 and mp.maint_organization_id=p_organization_id
251 and eam_item_type IN (1, 3);
252
253 END IF;
254
255 if (l_count = 0) then
256 fnd_message.set_name('EAM', 'EAM_INVALID_INVENTORY_ITEM');
257 fnd_msg_pub.add;
258 RAISE fnd_api.g_exc_error;
259 end if;
260 end validate_inventory_item_id;
261
262 procedure validate_serial_number(p_serial_number in varchar2 ,p_tmpl_flag in varchar2 , p_organization_id in number )
263 is
264 l_count number;
265
266 BEGIN
267
268 if nvl(p_tmpl_flag, 'N') = 'Y' and p_serial_number is not null
269 then
270 fnd_message.set_name('EAM', 'EAM_IAA_SERIAL_NUMBER_NOT_NULL');
271 fnd_msg_pub.add;
272 RAISE fnd_api.g_exc_error;
273 end if;
274
275 if nvl(p_tmpl_flag, 'N') = 'N' and p_serial_number is null
276 then
277 fnd_message.set_name('EAM', 'EAM_IAA_SERIAL_NUMBER_NULL');
278 fnd_msg_pub.add;
279 RAISE fnd_api.g_exc_error;
280 end if;
281
282 if nvl(p_tmpl_flag, 'N') = 'N'
283 then
284 select count(cii.inventory_item_id) into l_count
285 from csi_item_instances cii
286 where cii.serial_number = p_serial_number;
287
288 if (l_count = 0) then
289 fnd_message.set_name('EAM', 'EAM_EZWO_ASSET_BAD');
290 fnd_msg_pub.add;
291 RAISE fnd_api.g_exc_error;
292 end if;
293 end if;
294 END validate_serial_number;
295
296
297
298 procedure validate_dff_segments(
299 p_ATTRIBUTE_CATEGORY IN VARCHAR2 default null,
300 p_ATTRIBUTE1 IN VARCHAR2 default null,
301 p_ATTRIBUTE2 IN VARCHAR2 default null,
302 p_ATTRIBUTE3 IN VARCHAR2 default null,
303 p_ATTRIBUTE4 IN VARCHAR2 default null,
304 p_ATTRIBUTE5 IN VARCHAR2 default null,
305 p_ATTRIBUTE6 IN VARCHAR2 default null,
306 p_ATTRIBUTE7 IN VARCHAR2 default null,
307 p_ATTRIBUTE8 IN VARCHAR2 default null,
308 p_ATTRIBUTE9 IN VARCHAR2 default null,
309 p_ATTRIBUTE10 IN VARCHAR2 default null,
310 p_ATTRIBUTE11 IN VARCHAR2 default null,
311 p_ATTRIBUTE12 IN VARCHAR2 default null,
312 p_ATTRIBUTE13 IN VARCHAR2 default null,
313 p_ATTRIBUTE14 IN VARCHAR2 default null,
314 p_ATTRIBUTE15 IN VARCHAR2 default null
315 )
316 is
317 l_error_segments number;
318 l_error_message varchar2(4000);
319
320 begin
321 -- validate the desc. flex fields
322 if not EAM_COMMON_UTILITIES_PVT.validate_desc_flex_field
323 (
324 p_app_short_name => 'INV',
325 p_desc_flex_name => 'MTL_EAM_ASSET_ACTIVITIES',
326 p_ATTRIBUTE_CATEGORY => p_ATTRIBUTE_CATEGORY,
327 p_ATTRIBUTE1 => p_ATTRIBUTE1,
328 p_ATTRIBUTE2 => p_ATTRIBUTE2,
329 p_ATTRIBUTE3 => p_ATTRIBUTE3,
330 p_ATTRIBUTE4 => p_ATTRIBUTE4,
331 p_ATTRIBUTE5 => p_ATTRIBUTE5,
332 p_ATTRIBUTE6 => p_ATTRIBUTE6,
333 p_ATTRIBUTE7 => p_ATTRIBUTE7,
334 p_ATTRIBUTE8 => p_ATTRIBUTE8,
335 p_ATTRIBUTE9 => p_ATTRIBUTE9,
336 p_ATTRIBUTE10 => p_ATTRIBUTE10,
337 p_ATTRIBUTE11 => p_ATTRIBUTE11,
338 p_ATTRIBUTE12 => p_ATTRIBUTE12,
339 p_ATTRIBUTE13 => p_ATTRIBUTE13,
340 p_ATTRIBUTE14 => p_ATTRIBUTE14,
341 p_ATTRIBUTE15 => p_ATTRIBUTE15,
342 x_error_segments => l_error_segments,
343 x_error_message => l_error_message
344 )
345 then
346 FND_MESSAGE.SET_NAME('EAM', 'EAM_INVALID_DESC_FLEX');
347 FND_MESSAGE.SET_TOKEN('ERROR_MSG', l_error_message);
348 FND_MSG_PUB.Add;
349 RAISE FND_API.G_EXC_ERROR;
350 end if;
351
352 end validate_dff_segments;
353
354
355
356
357
358 procedure VALIDATE_ROW_EXISTS(P_ASSET_ACTIVITY_ID IN NUMBER,
359 P_MAINTENANCE_OBJECT_ID IN NUMBER,
360 P_MAINTENANCE_OBJECT_TYPE IN NUMBER,
361 p_tmpl_flag in varchar2,
362 x_act_assoc_id OUT NOCOPY NUMBER)
363 is
364 BEGIN
365
366
367 SELECT activity_association_id INTO x_act_assoc_id
368 FROM mtl_eam_asset_activities
369 WHERE maintenance_object_id = p_maintenance_object_id
370 AND asset_activity_id = P_asset_activity_id
371 AND maintenance_object_type = p_maintenance_object_type
372 AND NVL(tmpl_flag, 'N') = NVL(p_tmpl_flag, 'N');
373
374 EXCEPTION
375 WHEN NO_DATA_FOUND THEN
376 x_act_assoc_id := -1;
377 WHEN TOO_MANY_ROWS THEN
378 fnd_message.set_name('EAM', 'EAM_DATA_CORRUPT');
379 fnd_message.set_token('TABLE_NAME', 'MTL_EAM_ASSET_ACTIVITIES');
380 fnd_msg_pub.add;
381 RAISE fnd_api.g_exc_error;
382 END;
383
384
385
386 PROCEDURE INSERT_ITEM_ACTIVITIES
387 (
388 p_api_version IN NUMBER ,
389 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE ,
390 p_commit IN VARCHAR2:= FND_API.G_FALSE ,
391 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
392 x_return_status OUT NOCOPY VARCHAR2 ,
393 x_msg_count OUT NOCOPY NUMBER ,
394 x_msg_data OUT NOCOPY VARCHAR2 ,
395
396 P_ASSET_ACTIVITY_ID IN NUMBER ,
397 /*P_INVENTORY_ITEM_ID IN NUMBER ,*/
398 P_INVENTORY_ITEM_ID IN NUMBER default null,
399 P_ORGANIZATION_ID IN NUMBER ,
400 P_OWNINGDEPARTMENT_ID IN NUMBER default null,
401 P_MAINTENANCE_OBJECT_ID IN NUMBER default null,
402 P_CREATION_ORGANIZATION_ID IN NUMBER default null,
403 P_START_DATE_ACTIVE IN DATE default null ,
404 P_END_DATE_ACTIVE IN DATE default null ,
405 P_PRIORITY_CODE IN VARCHAR2 default null ,
406 P_ACTIVITY_CAUSE_CODE IN VARCHAR2 default null,
407 P_ACTIVITY_TYPE_CODE IN VARCHAR2 default null ,
408 P_SHUTDOWN_TYPE_CODE IN VARCHAR2 default null ,
409 P_MAINTENANCE_OBJECT_TYPE IN NUMBER default null ,
410 P_TMPL_FLAG IN VARCHAR2 default null ,
411 P_CLASS_CODE IN VARCHAR2 default null,
412 P_ACTIVITY_SOURCE_CODE IN VARCHAR2 default null,
413 P_SERIAL_NUMBER IN VARCHAR2 default null ,
414 P_ATTRIBUTE_CATEGORY IN VARCHAR2 default null ,
415 P_ATTRIBUTE1 IN VARCHAR2 default null ,
416 P_ATTRIBUTE2 IN VARCHAR2 default null ,
417 P_ATTRIBUTE3 IN VARCHAR2 default null ,
418 P_ATTRIBUTE4 IN VARCHAR2 default null ,
419 P_ATTRIBUTE5 IN VARCHAR2 default null ,
420 P_ATTRIBUTE6 IN VARCHAR2 default null ,
421 P_ATTRIBUTE7 IN VARCHAR2 default null ,
422 P_ATTRIBUTE8 IN VARCHAR2 default null ,
423 P_ATTRIBUTE9 IN VARCHAR2 default null ,
424 P_ATTRIBUTE10 IN VARCHAR2 default null ,
425 P_ATTRIBUTE11 IN VARCHAR2 default null ,
426 P_ATTRIBUTE12 IN VARCHAR2 default null ,
427 P_ATTRIBUTE13 IN VARCHAR2 default null ,
428 P_ATTRIBUTE14 IN VARCHAR2 default null ,
429 P_ATTRIBUTE15 IN VARCHAR2 default null ,
430 P_TAGGING_REQUIRED_FLAG IN VARCHAR2 default null ,
431 P_LAST_SERVICE_START_DATE IN DATE default null ,
432 P_LAST_SERVICE_END_DATE IN DATE default null ,
433 P_PREV_SERVICE_START_DATE IN DATE default null ,
434 P_PREV_SERVICE_END_DATE IN DATE default null ,
435 P_LAST_SCHEDULED_START_DATE IN DATE default null ,
436 P_LAST_SCHEDULED_END_DATE IN DATE default null ,
437 P_PREV_SCHEDULED_START_DATE IN DATE default null ,
438 P_PREV_SCHEDULED_END_DATE IN DATE default null ,
439 P_WIP_ENTITY_ID IN NUMBER default null ,
440 P_SOURCE_TMPL_ID IN NUMBER default null ,
441 p_pm_last_service_tbl IN EAM_PM_LAST_SERVICE_PUB.pm_last_service_tbl
442
443 )
444 IS
445 l_api_name CONSTANT VARCHAR2(30) := 'APIname';
446 l_api_version CONSTANT NUMBER := 1.0;
447 l_boolean number;
448 l_return_status VARCHAR2(1);
449 l_msg_count NUMBER;
450 l_msg_data VARCHAR2(30);
451 l_actv_assoc_id number;
452
453 l_object_found BOOLEAN;
454 l_maintenance_object_type NUMBER;
455 l_maintenance_object_id NUMBER;
456 l_object_type NUMBER;
457 l_object_id NUMBER;
458 l_creation_organization_id NUMBER;
459 l_asset_group_id NUMBER;
460 l_org_id NUMBER;
461 l_temp_org_id NUMBER;
462 l_asset_number VARCHAR2(100);
463 l_validated boolean;
464 l_item_type number;
465 l_item_id NUMBER;
466 l_serial_number VARCHAR2(100);
467 l_ser_num_ctrl_cd NUMBER;
468 l_cur_st NUMBER;
469
470
471 BEGIN
472 -- Standard Start of API savepoint
473 SAVEPOINT INSERT_ITEM_ACTIVITIES;
474
475 -- Standard call to check for call compatibility.
476 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
477 p_api_version ,
478 l_api_name ,
479 G_PKG_NAME )
480 THEN
481 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
482 END IF;
483 -- Initialize message list if p_init_msg_list is set to TRUE.
484 IF FND_API.to_Boolean( p_init_msg_list ) THEN
485 FND_MSG_PUB.initialize;
486 END IF;
487 -- Initialize API return status to success
488 x_return_status := FND_API.G_RET_STS_SUCCESS;
489
490 -- API body
491
492 /* for creation_organization_id = organization_id */
493 l_org_id := P_ORGANIZATION_ID;
494
495 if (P_CREATION_ORGANIZATION_ID IS NOT NULL) then
496 if P_CREATION_ORGANIZATION_ID <> P_ORGANIZATION_ID then
497 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CR_ORG_ID');
498 fnd_msg_pub.add;
499 RAISE fnd_api.g_exc_error;
500 else
501 l_creation_organization_id := P_ORGANIZATION_ID;
502 end if;
503 else
504 l_creation_organization_id := P_ORGANIZATION_ID;
505 end if;
506
507 if l_creation_organization_id is not null then
508 /* EAM enabled check */
509 EAM_COMMON_UTILITIES_PVT.verify_org(
510 p_resp_id => NULL,
511 p_resp_app_id => 401,
512 p_org_id => l_creation_organization_id,
513 x_boolean => l_boolean,
514 x_return_status => x_return_status,
515 x_msg_count => x_msg_count ,
516 x_msg_data => x_msg_data);
517 if l_boolean = 0
518 then
519 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_ORG_ID');
520 fnd_msg_pub.add;
521 RAISE fnd_api.g_exc_error;
522 end if;
523 end if;
524
525
526 IF ((p_class_code IS NOT NULL or p_owningdepartment_id IS NOT NULL) AND p_organization_id IS NULL) THEN
527 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_ORG_ID');
528 fnd_msg_pub.add;
529 RAISE fnd_api.g_exc_error;
530 END IF;
531
532 -- Bug # 3441956
533 BEGIN
534 select eam_item_type into l_item_type
535 from mtl_system_items
536 where inventory_item_id = p_asset_activity_id
537 and organization_id = nvl(p_organization_id, organization_id)
538 AND rownum = 1;
539
540 IF (l_item_type <> 2) THEN
541 raise_error('EAM_ABO_INVALID_ACTIVITY_ID');
542 END IF;
543
544 EXCEPTION
545 WHEN no_data_found THEN
546 raise_error('EAM_ABO_INVALID_ACTIVITY_ID');
547 END;
548
549
550 validate_mfg_lookups('WIP_EAM_ACTIVITY_PRIORITY', p_priority_code, 'EAM_PAR_INVALID_PRIORITY_CAT');
551
552 validate_mfg_lookups('MTL_EAM_ACTIVITY_CAUSE',p_activity_cause_code, 'EAM_PAR_INVALID_ACTIVITY_CAUSE');
553
554 validate_mfg_lookups('MTL_EAM_ACTIVITY_TYPE', p_activity_type_code, 'EAM_PAR_INVALID_ACTIVITY_TYPE');
555
556 validate_mfg_lookups('BOM_EAM_SHUTDOWN_TYPE', P_shutdown_type_code, 'EAM_ABO_INVALID_SHUTDOWN_CODE');
557
558 validate_mfg_lookups('MTL_EAM_ACTIVITY_SOURCE', P_activity_source_code, 'EAM_ABO_INVALID_ACT_SRC_CODE');
559
560 validate_acnt_class(p_class_code , P_CREATION_ORGANIZATION_ID );
561
562
563 if p_start_date_active>p_end_date_active
564 then
565 fnd_message.set_name('EAM', 'EAM_IAA_INVALID_ACTIVE_DATE');
566 fnd_msg_pub.add;
567 RAISE fnd_api.g_exc_error;
568 END IF;
569
570 if p_last_service_start_date > p_last_service_end_date
571 then
572 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_START_END_DATE');
573 fnd_msg_pub.add;
574 RAISE fnd_api.g_exc_error;
575 END IF;
576
577 if p_prev_service_start_date > p_prev_service_end_date
578 then
579 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_START_END_DATE');
580 fnd_msg_pub.add;
581 RAISE fnd_api.g_exc_error;
582 END IF;
583
584 if p_last_scheduled_start_date > p_last_scheduled_end_date
585 then
586 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_START_END_DATE');
587 fnd_msg_pub.add;
588 RAISE fnd_api.g_exc_error;
589 END IF;
590
591
592 if p_prev_scheduled_start_date > p_prev_scheduled_end_date
593 then
594 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_START_END_DATE');
595 fnd_msg_pub.add;
596 RAISE fnd_api.g_exc_error;
597 END IF;
598
599 validate_boolean_flag(p_tagging_required_flag, 'EAM_ABO_INVALID_TAG_REQ_FLAG');
600
601 validate_boolean_flag(p_tmpl_flag, 'EAM_IAA_INV_TEML_FLAG');
602
603
604 IF (p_owningdepartment_id is not null) THEN
605 l_validated := EAM_COMMON_UTILITIES_PVT.validate_department_id(p_owningdepartment_id, l_org_id);
606 IF NOT l_validated THEN
607 raise_error ('EAM_ABO_INVALID_OWN_DEPT_ID');
608 END IF;
609 END IF;
610
611 validate_dff_segments(
612 p_ATTRIBUTE_CATEGORY ,
613 p_ATTRIBUTE1 ,
614 p_ATTRIBUTE2 ,
615 p_ATTRIBUTE3 ,
616 p_ATTRIBUTE4 ,
617 p_ATTRIBUTE5 ,
618 p_ATTRIBUTE6 ,
619 p_ATTRIBUTE7 ,
620 p_ATTRIBUTE8 ,
621 p_ATTRIBUTE9 ,
622 p_ATTRIBUTE10 ,
623 p_ATTRIBUTE11 ,
624 p_ATTRIBUTE12 ,
625 p_ATTRIBUTE13 ,
626 p_ATTRIBUTE14 ,
627 p_ATTRIBUTE15
628 );
629 --------------------------------------------------------------------------------------------
630 IF ((p_maintenance_object_type is null or p_maintenance_object_id is null) and
631 (p_inventory_item_id is null)) THEN
632 fnd_message.set_name('EAM', 'EAM_NOT_ENOUGH_PARAM');
633 fnd_msg_pub.add;
634 RAISE FND_API.G_EXC_ERROR;
635 END IF;
636
637 IF (p_maintenance_object_type is not null and p_maintenance_object_type NOT in (3,2)) THEN
638 fnd_message.set_name('EAM', 'EAM_INVALID_MAINT_OBJ_TYPE');
639 fnd_msg_pub.add;
640 RAISE FND_API.G_EXC_ERROR;
641 END IF;
642
643 l_org_id := p_organization_id;
644 l_asset_group_id := p_inventory_item_id;
645 l_asset_number := p_serial_number;
646 l_maintenance_object_type := p_maintenance_object_type;
647 l_maintenance_object_id := p_maintenance_object_id;
648
649 /* Validations for the item combinations supplied by the user */
650 IF ( p_inventory_item_id IS NOT NULL and p_maintenance_object_id IS NULL ) THEN
651
652 eam_common_utilities_pvt.translate_asset_maint_obj
653 (
654 P_ORGANIZATION_ID ,
655 P_INVENTORY_ITEM_ID ,
656 P_SERIAL_NUMBER ,
657 l_object_found ,
658 l_object_type ,
659 l_object_id
660 );
661
662 IF (l_object_found) THEN
663 IF (l_maintenance_object_type is null) THEN
664 l_maintenance_object_type := l_object_type;
665 END IF;
666 IF (l_maintenance_object_id is null) THEN
667 l_maintenance_object_id := l_object_id;
668 END IF;
669 ELSE
670 raise_error('EAM_NO_ITEM_FOUND');
671 END IF;
672
673 ELSIF ( (p_inventory_item_id IS NULL OR p_serial_number IS NULL)AND
674 p_maintenance_object_type IS NOT NULL AND p_maintenance_object_id IS NOT NULL) THEN
675
676 eam_common_utilities_pvt.translate_maint_obj_asset
677 (
678 p_maintenance_object_type ,
679 p_maintenance_object_id ,
680 p_organization_id,
681 l_object_found ,
682 l_temp_org_id ,
683 l_item_id ,
684 l_serial_number
685 );
686
687 IF l_object_found THEN
688 IF (l_asset_group_id is null) THEN
689 l_asset_group_id := l_item_id;
690 END IF;
691 IF (l_asset_number is null) THEN
692 l_asset_number := l_serial_number;
693 END IF;
694 IF (l_org_id is null) THEN
695 l_org_id := l_temp_org_id;
696 END IF;
697 ELSE
698 raise_error('EAM_NO_ITEM_FOUND');
699 END IF;
700 END IF;
701
702 /* Check both the combinations are pointing to the same item / serial_number */
703 l_validated := check_item_unique (
704 l_maintenance_object_type ,
705 l_maintenance_object_id ,
706 l_asset_group_id ,
707 l_org_id ,
708 l_asset_number ,
709 l_org_id
710 );
711
712 IF NOT l_validated THEN
713 raise_error ('EAM_ABO_INVALID_INV_ITEM_ID');
714 END IF;
715
716 /* Template flag validation */
717 begin
718 SELECT msi.eam_item_type , msi.serial_number_control_code
719 INTO l_item_type , l_ser_num_ctrl_cd
720 FROM mtl_system_items_b msi, mtl_parameters mp
721 WHERE msi.organization_id = mp.organization_id
722 AND mp.maint_organization_id = nvl(l_org_id, mp.maint_organization_id)
723 AND msi.inventory_item_id = l_asset_group_id
724 AND rownum = 1;
725
726 if nvl (p_tmpl_flag , 'N') = 'Y' then
727 if (l_maintenance_object_type = 3) then
728 RAISE_ERROR ('EAM_IAA_INV_TEML_FLAG');
729 end if;
730 if (P_SOURCE_TMPL_ID is not null) then
731 RAISE_ERROR ('EAM_SOURCE_TMPL_ID_NOT_NULL');
732 end if;
733 if ( l_item_type = 3 and l_ser_num_ctrl_cd = 1 ) then
734 RAISE_ERROR ('EAM_NON_SERIAL_REBUILD_ASSOC');
735 end if;
736 else -- if non template record
737 if (l_maintenance_object_type = 2) then
738 if (NOT ( l_item_type = 3 and l_ser_num_ctrl_cd = 1 )) then
739 RAISE_ERROR ('EAM_IAA_INV_TEML_FLAG');
740 end if;
741 end if;
742 end if;
743 exception
744 when no_data_found then
745 raise_error('EAM_NO_ITEM_FOUND');
746 end;
747
748
749
750 VALIDATE_ROW_EXISTS(p_asset_activity_id,
751 l_maintenance_object_id,
752 l_maintenance_object_type,
753 p_tmpl_flag,
754 l_actv_assoc_id);
755
756 -- validate source_tmpl_id
757 IF (p_source_tmpl_id is NOT NULL) THEN
758
759 l_item_id := 0;
760 select count(*) into l_item_id
761 from mtl_eam_asset_activities
762 where activity_association_id = p_source_tmpl_id
763 and asset_activity_id = p_asset_activity_id
764 and inventory_item_id = l_asset_group_id
765 and tmpl_flag = 'Y';
766
767 IF (l_item_id = 0) THEN
768 raise_error('EAM_INVALID_TMPL_ID');
769 END IF;
770
771 END IF;
772
773 IF (l_actv_assoc_id = -1) THEN
774
775 select MTL_EAM_ASSET_ACTIVITIES_S.NEXTVAL into l_actv_assoc_id from dual;
776 INSERT INTO mtl_eam_asset_activities
777 (
778 ACTIVITY_ASSOCIATION_ID ,
779 ASSET_ACTIVITY_ID ,
780 MAINTENANCE_OBJECT_ID ,
781 START_DATE_ACTIVE ,
782 END_DATE_ACTIVE ,
783 PRIORITY_CODE ,
784 MAINTENANCE_OBJECT_TYPE ,
785 TMPL_FLAG ,
786 ATTRIBUTE_CATEGORY ,
787 ATTRIBUTE1 ,
788 ATTRIBUTE2 ,
789 ATTRIBUTE3 ,
790 ATTRIBUTE4 ,
791 ATTRIBUTE5 ,
792 ATTRIBUTE6 ,
793 ATTRIBUTE7 ,
794 ATTRIBUTE8 ,
795 ATTRIBUTE9 ,
796 ATTRIBUTE10 ,
797 ATTRIBUTE11 ,
798 ATTRIBUTE12 ,
799 ATTRIBUTE13 ,
800 ATTRIBUTE14 ,
801 ATTRIBUTE15 ,
802 LAST_SERVICE_START_DATE ,
803 LAST_SERVICE_END_DATE ,
804 PREV_SERVICE_START_DATE ,
805 PREV_SERVICE_END_DATE ,
806 LAST_SCHEDULED_START_DATE ,
807 LAST_SCHEDULED_END_DATE ,
808 PREV_SCHEDULED_START_DATE ,
809 PREV_SCHEDULED_END_DATE ,
810 WIP_ENTITY_ID,
811 SOURCE_TMPL_ID ,
812 CREATED_BY ,
813 CREATION_DATE ,
814 LAST_UPDATE_LOGIN ,
815 LAST_UPDATE_DATE ,
816 LAST_UPDATED_BY
817 )
818 VALUES
819 (
820 l_actv_assoc_id,
821 P_ASSET_ACTIVITY_ID ,
822 l_maintenance_object_id,
823 P_START_DATE_ACTIVE ,
824 P_END_DATE_ACTIVE ,
825 P_PRIORITY_CODE ,
826 /*P_MAINTENANCE_OBJECT_TYPE ,*/
827 l_maintenance_object_type,
828 nvl(P_TMPL_FLAG,'N') ,
829 P_ATTRIBUTE_CATEGORY ,
830 P_ATTRIBUTE1 ,
831 P_ATTRIBUTE2 ,
832 P_ATTRIBUTE3 ,
833 P_ATTRIBUTE4 ,
834 P_ATTRIBUTE5 ,
835 P_ATTRIBUTE6 ,
836 P_ATTRIBUTE7 ,
837 P_ATTRIBUTE8 ,
838 P_ATTRIBUTE9 ,
839 P_ATTRIBUTE10 ,
840 P_ATTRIBUTE11 ,
841 P_ATTRIBUTE12 ,
842 P_ATTRIBUTE13 ,
843 P_ATTRIBUTE14 ,
844 P_ATTRIBUTE15 ,
845 P_LAST_SERVICE_START_DATE ,
846 P_LAST_SERVICE_END_DATE ,
847 P_PREV_SERVICE_START_DATE ,
848 P_PREV_SERVICE_END_DATE ,
849 P_LAST_SCHEDULED_START_DATE ,
850 P_LAST_SCHEDULED_END_DATE ,
851 P_PREV_SCHEDULED_START_DATE ,
852 P_PREV_SCHEDULED_END_DATE ,
853 P_WIP_ENTITY_ID,
854 P_SOURCE_TMPL_ID ,
855 fnd_global.user_id,
856 sysdate,
857 fnd_global.login_id,
858 sysdate ,
859 fnd_global.user_id
860 );
861 END IF;
862
863 /*IF p_maintenance_object_type = 2 THEN commented for bug 13640722*/
864 IF l_maintenance_object_type = 2 THEN -- added for bug 13640722
865 l_object_type := 40;
866 ELSE
867 l_object_type := 60;
868 END IF;
869
870 IF (p_organization_Id IS NOT NULL) THEN
871
872 eam_org_maint_defaults_pvt.update_insert_row
873 (
874 p_api_version => 1.0
875 ,p_commit => p_commit
876 ,p_object_type => l_object_type
877 ,p_object_id => l_actv_assoc_id
878 ,p_organization_id => p_organization_Id
879 ,p_owning_department_id => p_owningdepartment_id
880 ,p_accounting_class_code => p_class_code
881 ,p_activity_cause_code => p_activity_cause_code
882 ,p_activity_type_code => p_activity_type_code
883 ,p_activity_source_code => p_activity_source_code
884 ,p_shutdown_type_code => p_shutdown_type_code
885 ,p_tagging_required_flag => p_tagging_required_flag
886 ,x_return_status => x_return_status
887 ,x_msg_count => x_msg_count
888 ,x_msg_data => x_msg_data
889 );
890
891 IF x_return_status <> fnd_api.g_ret_sts_success THEN
892 RAISE fnd_api.g_exc_error;
893 END IF;
894 END IF;
895
896 IF p_pm_last_service_tbl.count >0 THEN
897
898 IF (p_tmpl_flag = 'Y') THEN
899 raise_error('EAM_INVALID_METER_READING');
900 END IF;
901
902 EAM_PM_LAST_SERVICE_PUB.process_pm_last_service
903 (
904 p_api_version => p_api_version,
905 p_init_msg_list => FND_API.G_FALSE,--p_init_msg_list,
906 p_commit => p_commit,
907 p_validation_level => p_validation_level,
908 x_return_status => x_return_status,
909 x_msg_count => x_msg_count,
910 x_msg_data => x_msg_data,
911
912 p_pm_last_service_tbl => p_pm_last_service_tbl,
913 p_actv_assoc_id => l_actv_assoc_id
914 );
915
916 x_msg_count := FND_MSG_PUB.count_msg;
917 IF x_msg_count > 0 THEN
918 RAISE FND_API.G_EXC_ERROR;
919 END IF;
920 END IF;
921
922 -- End of API body.
923 -- Standard check of p_commit.
924 IF FND_API.To_Boolean( p_commit ) THEN
925 COMMIT WORK;
926 END IF;
927 -- Standard call to get message count and if count is 1, get message info.
928 FND_MSG_PUB.get
929 ( p_msg_index_out => x_msg_count ,
930 p_data => x_msg_data
931 );
932 EXCEPTION
933 WHEN FND_API.G_EXC_ERROR THEN
934 ROLLBACK TO INSERT_ITEM_ACTIVITIES;
935 x_return_status := FND_API.G_RET_STS_ERROR ;
936 FND_MSG_PUB.get
937 ( p_msg_index_out => x_msg_count ,
938 p_data => x_msg_data
939 );
940 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
941 ROLLBACK TO INSERT_ITEM_ACTIVITIES;
942 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
943 FND_MSG_PUB.get
944 ( p_msg_index_out => x_msg_count ,
945 p_data => x_msg_data
946 );
947 WHEN OTHERS THEN
948 ROLLBACK TO INSERT_ITEM_ACTIVITIES;
949 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
950 IF FND_MSG_PUB.Check_Msg_Level
951 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
952 THEN
953 FND_MSG_PUB.Add_Exc_Msg
954 ( G_PKG_NAME ,
955 l_api_name
956 );
957 END IF;
958 FND_MSG_PUB.get
959 ( p_msg_index_out => x_msg_count ,
960 p_data => x_msg_data
961 );
962 END INSERT_ITEM_ACTIVITIES;
963
964
965 PROCEDURE update_item_activities
966 (
967 p_api_version IN NUMBER ,
968 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE ,
969 p_commit IN VARCHAR2:= FND_API.G_FALSE ,
970 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
971 x_return_status OUT NOCOPY VARCHAR2 ,
972 x_msg_count OUT NOCOPY NUMBER ,
973 x_msg_data OUT NOCOPY VARCHAR2 ,
974
975 P_ACTIVITY_ASSOCIATION_ID IN NUMBER ,
976 P_ASSET_ACTIVITY_ID IN NUMBER ,
977 P_INVENTORY_ITEM_ID IN NUMBER default null,
978 P_ORGANIZATION_ID IN NUMBER ,
979 P_OWNINGDEPARTMENT_ID IN NUMBER default null,
980 P_MAINTENANCE_OBJECT_ID IN NUMBER default null,
981 P_CREATION_ORGANIZATION_ID IN NUMBER default null,
982 P_START_DATE_ACTIVE IN DATE default null ,
983 P_END_DATE_ACTIVE IN DATE default null ,
984 P_PRIORITY_CODE IN VARCHAR2 default null ,
985 P_ACTIVITY_CAUSE_CODE IN VARCHAR2 default null,
986 P_ACTIVITY_TYPE_CODE IN VARCHAR2 default null ,
987 P_SHUTDOWN_TYPE_CODE IN VARCHAR2 default null ,
988 P_MAINTENANCE_OBJECT_TYPE IN NUMBER default null ,
989 P_TMPL_FLAG IN VARCHAR2 default null ,
990 P_CLASS_CODE IN VARCHAR2 default null,
991 P_ACTIVITY_SOURCE_CODE IN VARCHAR2 default null,
992 P_SERIAL_NUMBER IN VARCHAR2 default null ,
993 P_ATTRIBUTE_CATEGORY IN VARCHAR2 default null ,
994 P_ATTRIBUTE1 IN VARCHAR2 default null ,
995 P_ATTRIBUTE2 IN VARCHAR2 default null ,
996 P_ATTRIBUTE3 IN VARCHAR2 default null ,
997 P_ATTRIBUTE4 IN VARCHAR2 default null ,
998 P_ATTRIBUTE5 IN VARCHAR2 default null ,
999 P_ATTRIBUTE6 IN VARCHAR2 default null ,
1000 P_ATTRIBUTE7 IN VARCHAR2 default null ,
1001 P_ATTRIBUTE8 IN VARCHAR2 default null ,
1002 P_ATTRIBUTE9 IN VARCHAR2 default null ,
1003 P_ATTRIBUTE10 IN VARCHAR2 default null ,
1004 P_ATTRIBUTE11 IN VARCHAR2 default null ,
1005 P_ATTRIBUTE12 IN VARCHAR2 default null ,
1006 P_ATTRIBUTE13 IN VARCHAR2 default null ,
1007 P_ATTRIBUTE14 IN VARCHAR2 default null ,
1008 P_ATTRIBUTE15 IN VARCHAR2 default null ,
1009 P_TAGGING_REQUIRED_FLAG IN VARCHAR2 default null ,
1010 P_LAST_SERVICE_START_DATE IN DATE default null ,
1011 P_LAST_SERVICE_END_DATE IN DATE default null ,
1012 P_PREV_SERVICE_START_DATE IN DATE default null ,
1013 P_PREV_SERVICE_END_DATE IN DATE default null ,
1014 P_LAST_SCHEDULED_START_DATE IN DATE default null ,
1015 P_LAST_SCHEDULED_END_DATE IN DATE default null ,
1016 P_PREV_SCHEDULED_START_DATE IN DATE default null ,
1017 P_PREV_SCHEDULED_END_DATE IN DATE default null ,
1018 P_WIP_ENTITY_ID IN NUMBER default null,
1019 P_SOURCE_TMPL_ID IN NUMBER default null ,
1020
1021 p_pm_last_service_tbl IN EAM_PM_LAST_SERVICE_PUB.pm_last_service_tbl
1022 )
1023 IS
1024 l_api_name CONSTANT VARCHAR2(30) := 'APIname';
1025 l_api_version CONSTANT NUMBER := 1.0;
1026 l_boolean number;
1027 l_return_status VARCHAR2(1);
1028 l_msg_count NUMBER;
1029 l_msg_data VARCHAR2(30);
1030
1031 l_object_found BOOLEAN;
1032 l_maintenance_object_type NUMBER;
1033 l_maintenance_object_id NUMBER;
1034 l_object_type NUMBER;
1035 l_object_id NUMBER;
1036 l_creation_organization_id NUMBER;
1037 l_asset_group_id NUMBER;
1038 l_org_id NUMBER;
1039 l_temp_org_id NUMBER;
1040 l_asset_number VARCHAR2(100);
1041 l_validated boolean;
1042 l_cnt number;
1043 l_item_type number;
1044 l_item_id NUMBER;
1045 l_serial_number VARCHAR2(100);
1046 l_ser_num_ctrl_cd NUMBER;
1047 l_cur_st NUMBER;
1048 l_id NUMBER;
1049
1050 BEGIN
1051 -- Standard Start of API savepoint
1052 SAVEPOINT UPDATE_ITEM_ACTIVITIES;
1053
1054 -- Standard call to check for call compatibility.
1055 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
1056 p_api_version ,
1057 l_api_name ,
1058 G_PKG_NAME )
1059 THEN
1060 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1061 END IF;
1062 -- Initialize message list if p_init_msg_list is set to TRUE.
1063
1064 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1065 FND_MSG_PUB.initialize;
1066 END IF;
1067 -- Initialize API return status to success
1068 x_return_status := FND_API.G_RET_STS_SUCCESS;
1069 -- API body
1070
1071 l_cnt := 0;
1072
1073 /* for creation_organization_id = organization_id */
1074 l_org_id := P_ORGANIZATION_ID;
1075
1076 if (P_CREATION_ORGANIZATION_ID IS NOT NULL) then
1077 if P_CREATION_ORGANIZATION_ID <> P_ORGANIZATION_ID then
1078 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_CR_ORG_ID');
1079 fnd_msg_pub.add;
1080 RAISE fnd_api.g_exc_error;
1081 else
1082 l_creation_organization_id := P_ORGANIZATION_ID;
1083 end if;
1084 else
1085 l_creation_organization_id := P_ORGANIZATION_ID;
1086 end if;
1087
1088 if l_creation_organization_id is not null then
1089 /* EAM enabled check */
1090 EAM_COMMON_UTILITIES_PVT.verify_org(
1091 p_resp_id => NULL,
1092 p_resp_app_id => 401,
1093 p_org_id => l_creation_organization_id,
1094 x_boolean => l_boolean,
1095 x_return_status => x_return_status,
1096 x_msg_count => x_msg_count ,
1097 x_msg_data => x_msg_data);
1098 if l_boolean = 0
1099 then
1100 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_ORG_ID');
1101 fnd_msg_pub.add;
1102 RAISE fnd_api.g_exc_error;
1103 end if;
1104 end if;
1105
1106
1107 IF ((p_class_code IS NOT NULL or p_owningdepartment_id IS NOT NULL) AND p_organization_id IS NULL) THEN
1108 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_ORG_ID');
1109 fnd_msg_pub.add;
1110 RAISE fnd_api.g_exc_error;
1111 END IF;
1112
1113 -- Bug # 3441956
1114 BEGIN
1115 select count(*) into l_cnt
1116 from mtl_eam_asset_activities
1117 where asset_activity_id = p_asset_activity_id
1118 and activity_association_id = p_activity_association_id;
1119
1120 IF (l_cnt = 0) THEN
1121 raise_error('EAM_ABO_INVALID_ACTIVITY_ID');
1122 END IF;
1123
1124 EXCEPTION
1125 WHEN no_data_found THEN
1126 raise_error('EAM_ABO_INVALID_ACTIVITY_ID');
1127 END;
1128
1129 validate_mfg_lookups('WIP_EAM_ACTIVITY_PRIORITY', p_priority_code, 'EAM_PAR_INVALID_PRIORITY_CAT');
1130
1131 validate_mfg_lookups('MTL_EAM_ACTIVITY_CAUSE',p_activity_cause_code, 'EAM_PAR_INVALID_ACTIVITY_CAUSE');
1132
1133 validate_mfg_lookups('MTL_EAM_ACTIVITY_TYPE', p_activity_type_code, 'EAM_PAR_INVALID_ACTIVITY_TYPE');
1134
1135 validate_mfg_lookups('BOM_EAM_SHUTDOWN_TYPE', P_shutdown_type_code, 'EAM_ABO_INVALID_SHUTDOWN_CODE');
1136
1137 validate_mfg_lookups('MTL_EAM_ACTIVITY_SOURCE', P_activity_source_code, 'EAM_ABO_INVALID_ACT_SRC_CODE');
1138
1139 validate_acnt_class(p_class_code , P_CREATION_ORGANIZATION_ID );
1140
1141 if p_start_date_active>p_end_date_active
1142 then
1143 fnd_message.set_name('EAM', 'EAM_IAA_INVALID_ACTIVE_DATE');
1144 fnd_msg_pub.add;
1145 RAISE fnd_api.g_exc_error;
1146 END IF;
1147
1148 if p_last_service_start_date > p_last_service_end_date
1149 then
1150 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_START_END_DATE');
1151 fnd_msg_pub.add;
1152 RAISE fnd_api.g_exc_error;
1153 END IF;
1154
1155 if p_prev_service_start_date > p_prev_service_end_date
1156 then
1157 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_START_END_DATE');
1158 fnd_msg_pub.add;
1159 RAISE fnd_api.g_exc_error;
1160 END IF;
1161
1162 if p_last_scheduled_start_date > p_last_scheduled_end_date
1163 then
1164 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_START_END_DATE');
1165 fnd_msg_pub.add;
1166 RAISE fnd_api.g_exc_error;
1167 END IF;
1168
1169
1170 if p_prev_scheduled_start_date > p_prev_scheduled_end_date
1171 then
1172 fnd_message.set_name('EAM', 'EAM_ABO_INVALID_START_END_DATE');
1173 fnd_msg_pub.add;
1174 RAISE fnd_api.g_exc_error;
1175 END IF;
1176
1177 validate_boolean_flag(p_tagging_required_flag, 'EAM_ABO_INVALID_TAG_REQ_FLAG');
1178
1179 validate_boolean_flag(p_tmpl_flag, 'EAM_IAA_INV_TEML_FLAG');
1180
1181 IF (p_owningdepartment_id is not null AND p_owningdepartment_id <> FND_API.G_MISS_NUM) THEN
1182 l_validated := EAM_COMMON_UTILITIES_PVT.validate_department_id(p_owningdepartment_id, l_org_id);
1183 IF NOT l_validated THEN
1184 raise_error ('EAM_ABO_INVALID_OWN_DEPT_ID');
1185 END IF;
1186 END IF;
1187
1188 validate_dff_segments(
1189 p_ATTRIBUTE_CATEGORY ,
1190 p_ATTRIBUTE1 ,
1191 p_ATTRIBUTE2 ,
1192 p_ATTRIBUTE3 ,
1193 p_ATTRIBUTE4 ,
1194 p_ATTRIBUTE5 ,
1195 p_ATTRIBUTE6 ,
1196 p_ATTRIBUTE7 ,
1197 p_ATTRIBUTE8 ,
1198 p_ATTRIBUTE9 ,
1199 p_ATTRIBUTE10 ,
1200 p_ATTRIBUTE11 ,
1201 p_ATTRIBUTE12 ,
1202 p_ATTRIBUTE13 ,
1203 p_ATTRIBUTE14 ,
1204 p_ATTRIBUTE15
1205 );
1206
1207
1208 --------------------------------------------------------------------------------------------
1209 IF ((p_maintenance_object_type is null or p_maintenance_object_id is null) and
1210 (p_inventory_item_id is null)) THEN
1211 fnd_message.set_name('EAM', 'EAM_NOT_ENOUGH_PARAM');
1212 fnd_msg_pub.add;
1213 RAISE FND_API.G_EXC_ERROR;
1214 END IF;
1215
1216 IF (p_maintenance_object_type is not null and p_maintenance_object_type NOT in (3,2)) THEN
1217 fnd_message.set_name('EAM', 'EAM_INVALID_MAINT_OBJ_TYPE');
1218 fnd_msg_pub.add;
1219 RAISE FND_API.G_EXC_ERROR;
1220 END IF;
1221
1222 l_org_id := p_organization_id;
1223 l_asset_group_id := p_inventory_item_id;
1224 l_asset_number := p_serial_number;
1225 l_maintenance_object_type := p_maintenance_object_type;
1226 l_maintenance_object_id := p_maintenance_object_id;
1227
1228 /* Validations for the item combinations supplied by the user */
1229 IF ( p_inventory_item_id IS NOT NULL and p_maintenance_object_id IS NULL ) THEN
1230
1231 eam_common_utilities_pvt.translate_asset_maint_obj
1232 (
1233 P_ORGANIZATION_ID ,
1234 P_INVENTORY_ITEM_ID ,
1235 P_SERIAL_NUMBER ,
1236 l_object_found ,
1237 l_object_type ,
1238 l_object_id
1239 );
1240
1241 IF (l_object_found) THEN
1242 IF (l_maintenance_object_type is null) THEN
1243 l_maintenance_object_type := l_object_type;
1244 END IF;
1245 IF (l_maintenance_object_id is null) THEN
1246 l_maintenance_object_id := l_object_id;
1247 END IF;
1248 ELSE
1249 raise_error('EAM_NO_ITEM_FOUND');
1250 END IF;
1251
1252 ELSIF ( (p_inventory_item_id IS NULL OR p_serial_number IS NULL)AND
1253 p_maintenance_object_type IS NOT NULL AND p_maintenance_object_id IS NOT NULL) THEN
1254
1255 eam_common_utilities_pvt.translate_maint_obj_asset
1256 (
1257 p_maintenance_object_type ,
1258 p_maintenance_object_id ,
1259 p_organization_id,
1260 l_object_found ,
1261 l_temp_org_id ,
1262 l_item_id ,
1263 l_serial_number
1264 );
1265
1266 IF l_object_found THEN
1267 IF (l_asset_group_id is null) THEN
1268 l_asset_group_id := l_item_id;
1269 END IF;
1270 IF (l_asset_number is null) THEN
1271 l_asset_number := l_serial_number;
1272 END IF;
1273 IF (l_org_id is null) THEN
1274 l_org_id := l_temp_org_id;
1275 END IF;
1276 ELSE
1277 raise_error('EAM_NO_ITEM_FOUND');
1278 END IF;
1279 END IF;
1280
1281 /* Check both the combinations are pointing to the same item / serial_number */
1282 l_validated := check_item_unique (
1283 l_maintenance_object_type ,
1284 l_maintenance_object_id ,
1285 l_asset_group_id ,
1286 l_org_id ,
1287 l_asset_number ,
1288 l_org_id
1289 );
1290
1291 IF NOT l_validated THEN
1292 raise_error ('EAM_ABO_INVALID_INV_ITEM_ID');
1293 END IF;
1294
1295 /* Template flag validation */
1296 begin
1297
1298 SELECT msi.eam_item_type , msi.serial_number_control_code
1299 INTO l_item_type , l_ser_num_ctrl_cd
1300 FROM mtl_system_items_b msi, mtl_parameters mp
1301 WHERE msi.organization_id = mp.organization_id
1302 AND mp.maint_organization_id = nvl(l_org_id, mp.maint_organization_id)
1303 AND msi.inventory_item_id = l_asset_group_id
1304 AND rownum = 1;
1305
1306 if nvl (p_tmpl_flag , 'N') = 'Y' then
1307 if (l_maintenance_object_type = 3) then
1308 RAISE_ERROR ('EAM_IAA_INV_TEML_FLAG');
1309 end if;
1310 if (P_SOURCE_TMPL_ID is not null) then
1311 RAISE_ERROR ('EAM_SOURCE_TMPL_ID_NOT_NULL');
1312 end if;
1313 if ( l_item_type = 3 and l_ser_num_ctrl_cd = 1 ) then
1314 RAISE_ERROR ('EAM_NON_SERIAL_REBUILD_ASSOC');
1315 end if;
1316 else -- if non template record
1317 if (l_maintenance_object_type = 2) then
1318 if (NOT ( l_item_type = 3 and l_ser_num_ctrl_cd = 1 )) then
1319 RAISE_ERROR ('EAM_IAA_INV_TEML_FLAG');
1320 end if;
1321 end if;
1322 end if;
1323 exception
1324 when no_data_found then
1325 raise_error('EAM_NO_ITEM_FOUND');
1326 end;
1327
1328
1329 --------------------------------------------------------------------------------------------
1330
1331 VALIDATE_ROW_EXISTS(p_asset_activity_id,
1332 l_maintenance_object_id,
1333 l_maintenance_object_type,
1334 p_tmpl_flag,
1335 l_id);
1336
1337 IF (l_id = -1) THEN
1338 fnd_message.set_name('EAM', 'EAM_ITEM_ACT_REC_NOT_FOUND');
1339 fnd_msg_pub.add;
1340 RAISE fnd_api.g_exc_error;
1341 END IF;
1342
1343
1344 UPDATE mtl_eam_asset_activities
1345 SET
1346 START_DATE_ACTIVE = P_START_DATE_ACTIVE ,
1347 END_DATE_ACTIVE = P_END_DATE_ACTIVE ,
1348 PRIORITY_CODE = P_PRIORITY_CODE ,
1349 ATTRIBUTE_CATEGORY = P_ATTRIBUTE_CATEGORY ,
1350 ATTRIBUTE1 = P_ATTRIBUTE1 ,
1351 ATTRIBUTE2 = P_ATTRIBUTE2 ,
1352 ATTRIBUTE3 = P_ATTRIBUTE3 ,
1353 ATTRIBUTE4 = P_ATTRIBUTE4 ,
1354 ATTRIBUTE5 = P_ATTRIBUTE5 ,
1355 ATTRIBUTE6 = P_ATTRIBUTE6 ,
1356 ATTRIBUTE7 = P_ATTRIBUTE7 ,
1357 ATTRIBUTE8 = P_ATTRIBUTE8 ,
1358 ATTRIBUTE9 = P_ATTRIBUTE9 ,
1359 ATTRIBUTE10 = P_ATTRIBUTE10 ,
1360 ATTRIBUTE11 = P_ATTRIBUTE11 ,
1361 ATTRIBUTE12 = P_ATTRIBUTE12 ,
1362 ATTRIBUTE13 = P_ATTRIBUTE13 ,
1363 ATTRIBUTE14 = P_ATTRIBUTE14 ,
1364 ATTRIBUTE15 = P_ATTRIBUTE15 ,
1365 LAST_SERVICE_START_DATE = P_LAST_SERVICE_START_DATE ,
1366 LAST_SERVICE_END_DATE = P_LAST_SERVICE_END_DATE ,
1367 PREV_SERVICE_START_DATE = P_PREV_SERVICE_START_DATE ,
1368 PREV_SERVICE_END_DATE = P_PREV_SERVICE_END_DATE ,
1369 LAST_SCHEDULED_START_DATE = P_LAST_SCHEDULED_START_DATE ,
1370 LAST_SCHEDULED_END_DATE = P_LAST_SCHEDULED_END_DATE ,
1371 PREV_SCHEDULED_START_DATE = P_PREV_SCHEDULED_START_DATE ,
1372 PREV_SCHEDULED_END_DATE = P_PREV_SCHEDULED_END_DATE ,
1373 WIP_ENTITY_ID = P_WIP_ENTITY_ID,
1374 LAST_UPDATE_LOGIN = fnd_global.login_id ,
1375 LAST_UPDATE_DATE = sysdate ,
1376 LAST_UPDATED_BY = fnd_global.user_id
1377
1378 WHERE ACTIVITY_ASSOCIATION_ID = P_ACTIVITY_ASSOCIATION_ID;
1379
1380 IF (p_organization_Id IS NOT NULL) THEN
1381
1382 IF p_maintenance_object_type = 2 THEN
1383 l_object_type := 40;
1384 ELSE
1385 l_object_type := 60;
1386 END IF;
1387
1388 eam_org_maint_defaults_pvt.update_insert_row
1389 (
1390 p_api_version => 1.0
1391 ,p_commit => p_commit
1392 ,p_object_type => l_object_type
1393 ,p_object_id => p_activity_association_id
1394 ,p_organization_id => p_organization_Id
1395 ,p_owning_department_id => p_owningdepartment_id
1396 ,p_accounting_class_code => p_class_code
1397 ,p_activity_cause_code => p_activity_cause_code
1398 ,p_activity_type_code => p_activity_type_code
1399 ,p_activity_source_code => p_activity_source_code
1400 ,p_shutdown_type_code => p_shutdown_type_code
1401 ,p_tagging_required_flag => p_tagging_required_flag
1402 ,x_return_status => x_return_status
1403 ,x_msg_count => x_msg_count
1404 ,x_msg_data => x_msg_data
1405 );
1406
1407 IF x_return_status <> fnd_api.g_ret_sts_success THEN
1408 RAISE fnd_api.g_exc_error;
1409 END IF;
1410
1411 END IF;
1412
1413 IF p_pm_last_service_tbl.count >0
1414 THEN
1415
1416 IF (p_tmpl_flag = 'Y') THEN
1417 raise_error('EAM_INVALID_METER_READING');
1418 END IF;
1419
1420 EAM_PM_LAST_SERVICE_PUB.process_pm_last_service
1421 (
1422 p_api_version => p_api_version,
1423 p_init_msg_list => FND_API.G_FALSE,--p_init_msg_list,
1424 p_commit => p_commit,
1425 p_validation_level => p_validation_level,
1426 x_return_status => x_return_status,
1427 x_msg_count => x_msg_count,
1428 x_msg_data => x_msg_data,
1429
1430 p_pm_last_service_tbl => p_pm_last_service_tbl,
1431 p_actv_assoc_id => P_ACTIVITY_ASSOCIATION_ID
1432 );
1433
1434 x_msg_count := FND_MSG_PUB.count_msg;
1435 IF x_msg_count > 0 THEN
1436 RAISE FND_API.G_EXC_ERROR;
1437 END IF;
1438 END IF;
1439
1440 -- End of API body.
1441 -- Standard check of p_commit.
1442 IF FND_API.To_Boolean( p_commit ) THEN
1443 COMMIT WORK;
1444 END IF;
1445 -- Standard call to get message count and if count is 1, get message info.
1446 FND_MSG_PUB.get
1447 ( p_msg_index_out => x_msg_count ,
1448 p_data => x_msg_data
1449 );
1450 EXCEPTION
1451 WHEN FND_API.G_EXC_ERROR THEN
1452 ROLLBACK TO UPDATE_ITEM_ACTIVITIES;
1453 x_return_status := FND_API.G_RET_STS_ERROR ;
1454 FND_MSG_PUB.get
1455 ( p_msg_index_out => x_msg_count ,
1456 p_data => x_msg_data
1457 );
1458 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1459 ROLLBACK TO UPDATE_ITEM_ACTIVITIES;
1460 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1461 FND_MSG_PUB.get
1462 ( p_msg_index_out => x_msg_count ,
1463 p_data => x_msg_data
1464 );
1465 WHEN OTHERS THEN
1466 ROLLBACK TO UPDATE_ITEM_ACTIVITIES;
1467 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1468 IF FND_MSG_PUB.Check_Msg_Level
1469 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1470 THEN
1471 FND_MSG_PUB.Add_Exc_Msg
1472 ( G_PKG_NAME ,
1473 l_api_name
1474 );
1475 END IF;
1476 FND_MSG_PUB.get
1477 ( p_msg_index_out => x_msg_count ,
1478 p_data => x_msg_data
1479 );
1480 END update_item_activities;
1481
1482
1483 END EAM_ITEM_ACTIVITIES_PUB;