29: --Validate serial number(1 = No serial number control; 2 = Pre-defined;
30: --3 = Dynamic Entry at inventory receipt.)
31: IF (nvl(p_serial_number_control,0) IN (2,5,6)) THEN
32: -- serial number is mandatory.
33: IF (p_serial_number IS NULL) OR (p_serial_number = FND_API.G_MISS_CHAR) THEN
34: FND_MESSAGE.set_name('AHL','AHL_UC_SERIAL_NULL');
35: FND_MESSAGE.set_token('INV_ITEM',p_concatenated_segments);
36: FND_MSG_PUB.add;
37: --dbms_output.put_line('Serial Number is null');
62: END IF;
63: END IF;
64: ELSE
65: -- if not serialized item, then serial number must be null.
66: IF (p_serial_number <> FND_API.G_MISS_CHAR) AND (p_serial_number IS NOT NULL) THEN
67: FND_MESSAGE.set_name('AHL','AHL_UC_SERIAL_NOTNULL');
68: FND_MESSAGE.set_token('SERIAL',p_Serial_Number);
69: FND_MESSAGE.set_token('INV_ITEM',p_concatenated_segments);
70: FND_MSG_PUB.add;
80: p_uom_code IN VARCHAR2,
81: p_concatenated_segments IN VARCHAR2) IS
82: BEGIN
83: --Validate quantity and UOM code.
84: IF (p_quantity = FND_API.G_MISS_NUM OR p_quantity IS NULL) THEN
85: FND_MESSAGE.set_name('AHL','AHL_UC_QTY_NULL');
86: FND_MESSAGE.set_token('INV_ITEM',p_concatenated_segments);
87: FND_MSG_PUB.add;
88: --dbms_output.put_line('Quantity is null.');
125: l_junk VARCHAR(1);
126: BEGIN
127: -- Validate Lot number.(1 = No lot control; 2 = Full lot control)
128: IF (nvl(p_lot_control_code,0) = 2) THEN
129: IF (p_lot_number IS NULL) OR (p_lot_number = FND_API.G_MISS_CHAR) THEN
130: FND_MESSAGE.set_name('AHL','AHL_UC_LOT_NULL');
131: FND_MESSAGE.set_token('INV_ITEM',p_concatenated_segments);
132: FND_MSG_PUB.add;
133: --dbms_output.put_line('Lot Number is null');
142: --dbms_output.put_line('Lot number does not exist in master');
143: END IF;
144: CLOSE mtl_lot_numbers_csr;
145: END IF;
146: ELSIF (p_Lot_number <> FND_API.G_MISS_CHAR) AND (p_lot_Number IS NOT NULL) THEN
147:
148: -- If lot number not controlled; then lot num must be null.
149: FND_MESSAGE.set_name('AHL','AHL_UC_LOT_NOTNULL');
150: --FND_MESSAGE.set_token('LOT',p_Lot_Number);
171: l_junk VARCHAR2(1);
172: BEGIN
173: --Validate Revision.
174: IF (nvl(p_revision_qty_control_code,0) = 2) THEN
175: IF (p_revision IS NULL) OR (p_revision = FND_API.G_MISS_CHAR) THEN
176: FND_MESSAGE.set_name('AHL','AHL_UC_REV_NULL');
177: FND_MESSAGE.set_token('INV_ITEM',p_concatenated_segments);
178: FND_MSG_PUB.add;
179: --dbms_output.put_line('Revision is null');
188: --dbms_output.put_line('Revision does not exist in master');
189: END IF;
190: CLOSE mtl_item_revisions_csr;
191: END IF;
192: ELSIF (p_revision IS NOT NULL) AND (p_revision <> FND_API.G_MISS_CHAR) THEN
193: FND_MESSAGE.set_name('AHL','AHL_UC_REV_NOTNULL');
194: --FND_MESSAGE.set_token('REV',p_revision);
195: FND_MESSAGE.set_token('INV_ITEM',p_concatenated_segments);
196: FND_MSG_PUB.add;
204: p_concatenated_segments IN VARCHAR2) IS
205:
206: BEGIN
207: IF (p_serial_number_control IN (2,5,6)) THEN
208: IF (p_serialnum_tag_code IS NULL OR p_serialnum_tag_code = FND_API.G_MISS_CHAR) THEN
209: FND_MESSAGE.set_name('AHL','AHL_UC_SERIALTAG_NULL');
210: FND_MESSAGE.set_token('INV_ITEM',p_concatenated_segments);
211: FND_MSG_PUB.add;
212: ELSE
219: --dbms_output.put_line('Serial Tag code is invalid.');
220: END IF;
221: END IF;
222: ELSE
223: IF (p_serialnum_tag_code IS NOT NULL AND p_serialnum_tag_code <> FND_API.G_MISS_CHAR) THEN
224: FND_MESSAGE.set_name('AHL','AHL_UC_SERIALTAG_NOTNULL');
225: FND_MESSAGE.set_token('TAG',p_serialnum_tag_code);
226: FND_MESSAGE.set_token('INV_ITEM',p_concatenated_segments);
227: FND_MSG_PUB.add;
259: l_concatenated_segments mtl_system_items_kfv.concatenated_segments%TYPE;
260: l_revision_qty_control_code NUMBER;
261: l_comms_nl_trackable_flag VARCHAR2(1);
262: BEGIN
263: IF (p_inventory_id IS NULL) OR (p_inventory_id = FND_API.G_MISS_NUM)
264: OR (p_organization_id IS NULL) OR (p_organization_id = FND_API.G_MISS_NUM)
265: THEN
266: FND_MESSAGE.set_name('AHL','AHL_UC_INVITEM_NULL');
267: FND_MESSAGE.set_token('POSN_REF',p_position_ref_meaning);
260: l_revision_qty_control_code NUMBER;
261: l_comms_nl_trackable_flag VARCHAR2(1);
262: BEGIN
263: IF (p_inventory_id IS NULL) OR (p_inventory_id = FND_API.G_MISS_NUM)
264: OR (p_organization_id IS NULL) OR (p_organization_id = FND_API.G_MISS_NUM)
265: THEN
266: FND_MESSAGE.set_name('AHL','AHL_UC_INVITEM_NULL');
267: FND_MESSAGE.set_token('POSN_REF',p_position_ref_meaning);
268: FND_MSG_PUB.add;
360: -- the parent-child relationship in a UC tree structure (in other word, to make
361: -- the child instance as an extra node in the UC).
362: PROCEDURE unassociate_instance_pos (
363: p_api_version IN NUMBER := 1.0,
364: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
365: p_commit IN VARCHAR2 := FND_API.G_FALSE,
366: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
367: x_return_status OUT NOCOPY VARCHAR2,
368: x_msg_count OUT NOCOPY NUMBER,
361: -- the child instance as an extra node in the UC).
362: PROCEDURE unassociate_instance_pos (
363: p_api_version IN NUMBER := 1.0,
364: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
365: p_commit IN VARCHAR2 := FND_API.G_FALSE,
366: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
367: x_return_status OUT NOCOPY VARCHAR2,
368: x_msg_count OUT NOCOPY NUMBER,
369: x_msg_data OUT NOCOPY VARCHAR2,
362: PROCEDURE unassociate_instance_pos (
363: p_api_version IN NUMBER := 1.0,
364: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
365: p_commit IN VARCHAR2 := FND_API.G_FALSE,
366: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
367: x_return_status OUT NOCOPY VARCHAR2,
368: x_msg_count OUT NOCOPY NUMBER,
369: x_msg_data OUT NOCOPY VARCHAR2,
370: p_uc_header_id IN NUMBER,
416: AND trunc(nvl(active_end_date, SYSDATE+1)) > trunc(SYSDATE);
417:
418: BEGIN
419: --Initialize API return status to success
420: x_return_status := FND_API.G_RET_STS_SUCCESS;
421:
422: -- Standard Start of API savepoint
423: SAVEPOINT unassociate_instance_pos;
424:
422: -- Standard Start of API savepoint
423: SAVEPOINT unassociate_instance_pos;
424:
425: --Standard call to check for call compatibility.
426: IF NOT FND_API.compatible_api_call(
427: l_api_version,
428: p_api_version,
429: l_api_name,
430: G_PKG_NAME)
428: p_api_version,
429: l_api_name,
430: G_PKG_NAME)
431: THEN
432: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
433: END IF;
434:
435: --Initialize message list if p_init_msg_list is set to TRUE.
436: IF FND_API.to_boolean( p_init_msg_list ) THEN
432: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
433: END IF;
434:
435: --Initialize message list if p_init_msg_list is set to TRUE.
436: IF FND_API.to_boolean( p_init_msg_list ) THEN
437: FND_MSG_PUB.initialize;
438: END IF;
439:
440: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
448: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
449: FND_MESSAGE.set_token('NAME', 'prod_user_flag');
450: FND_MESSAGE.set_token('VALUE', p_prod_user_flag);
451: FND_MSG_PUB.add;
452: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
453: END IF;
454: --Validate input parameters p_csi_ii_ovn
455: IF (p_csi_ii_ovn IS NULL OR p_csi_ii_ovn <= 0 ) THEN
456: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
456: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
457: FND_MESSAGE.set_token('NAME', 'csi_ii_ovn');
458: FND_MESSAGE.set_token('VALUE', p_csi_ii_ovn);
459: FND_MSG_PUB.add;
460: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
461: END IF;
462: --Validate input parameter p_uc_header_id, its two status
463: OPEN check_uc_header;
464: FETCH check_uc_header INTO l_check_uc_header;
467: FND_MESSAGE.set_token('NAME', 'uc_header_id');
468: FND_MESSAGE.set_token('VALUE', p_uc_header_id);
469: FND_MSG_PUB.add;
470: CLOSE check_uc_header;
471: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
472: ELSE
473:
474: -- ACL :: Changes for R12
475: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
471: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
472: ELSE
473:
474: -- ACL :: Changes for R12
475: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
476: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
477: FND_MSG_PUB.add;
478: CLOSE check_uc_header;
479: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
475: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
476: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
477: FND_MSG_PUB.add;
478: CLOSE check_uc_header;
479: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
480: END IF;
481:
482: ahl_util_uc_pkg.get_root_uc_attr(p_uc_header_id,
483: l_root_uc_header_id,
489: l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE')) THEN
490: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_NOT_ACTIVE' );
491: FND_MSG_PUB.add;
492: CLOSE check_uc_header;
493: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
494: ELSIF (p_prod_user_flag = 'N' AND
495: (l_root_uc_status_code = 'APPROVAL_PENDING' OR
496: l_root_active_uc_status_code = 'APPROVAL_PENDING')) THEN
497: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
497: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
498: FND_MESSAGE.set_token('UC_HEADER_ID', l_root_uc_header_id);
499: FND_MSG_PUB.add;
500: CLOSE check_uc_header;
501: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
502: ELSE
503: CLOSE check_uc_header;
504: END IF;
505: END IF;
515: FND_MESSAGE.set_name( 'AHL','AHL_UC_API_PARAMETER_INVALID');
516: FND_MESSAGE.set_token('NAME', 'instance_id');
517: FND_MESSAGE.set_token('VALUE', p_instance_id);
518: FND_MSG_PUB.add;
519: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
520: --Ensure no current user makes change to the same csi_ii_relationships record
521: ELSIF l_object_version_number <> p_csi_ii_ovn THEN
522: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
523: FND_MSG_PUB.add;
520: --Ensure no current user makes change to the same csi_ii_relationships record
521: ELSIF l_object_version_number <> p_csi_ii_ovn THEN
522: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
523: FND_MSG_PUB.add;
524: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
525: END IF;
526:
527: --Make sure p_instance_id is not expired otherwise unassociation is not allowed
528: --Added on 02/26/2004
532: IF TRUNC(NVL(l_end_date, SYSDATE+1)) <= TRUNC(SYSDATE) THEN
533: FND_MESSAGE.set_name( 'AHL','AHL_UC_INSTANCE_EXPIRED');
534: FND_MESSAGE.set_token('INSTANCE', p_instance_id);
535: FND_MSG_PUB.add;
536: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
537: END IF;
538:
539: --The following lines are used to update the position_reference column in csi_ii_relationships
540: --First, get transaction_type_id .
539: --The following lines are used to update the position_reference column in csi_ii_relationships
540: --First, get transaction_type_id .
541: AHL_UTIL_UC_PKG.getcsi_transaction_id('UC_UPDATE',l_transaction_type_id, l_return_value);
542: IF NOT l_return_value THEN
543: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
544: END IF;
545: --Set the CSI transaction record
546: l_csi_transaction_rec.source_transaction_date := SYSDATE;
547: l_csi_transaction_rec.transaction_type_id := l_transaction_type_id;
559: p_txn_rec => l_csi_transaction_rec,
560: x_return_status => l_return_status,
561: x_msg_count => l_msg_count,
562: x_msg_data => l_msg_data);
563: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
564: RAISE FND_API.G_EXC_ERROR;
565: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
566: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
567: END IF;
560: x_return_status => l_return_status,
561: x_msg_count => l_msg_count,
562: x_msg_data => l_msg_data);
563: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
564: RAISE FND_API.G_EXC_ERROR;
565: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
566: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
567: END IF;
568:
561: x_msg_count => l_msg_count,
562: x_msg_data => l_msg_data);
563: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
564: RAISE FND_API.G_EXC_ERROR;
565: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
566: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
567: END IF;
568:
569: --For UC user, UC header status change needs to be made after the operation
562: x_msg_data => l_msg_data);
563: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
564: RAISE FND_API.G_EXC_ERROR;
565: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
566: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
567: END IF;
568:
569: --For UC user, UC header status change needs to be made after the operation
570: --Not confirmed whether need to copy the record into UC header history table
582: AND object_version_number = l_root_uc_ovn;
583: IF SQL%ROWCOUNT = 0 THEN
584: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
585: FND_MSG_PUB.add;
586: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
587: END IF;
588: ELSIF (l_root_uc_status_code = 'INCOMPLETE' AND
589: (l_root_active_uc_status_code IS NULL OR
590: l_root_active_uc_status_code <> 'UNAPPROVED')) THEN
598: AND object_version_number = l_root_uc_ovn;
599: IF SQL%ROWCOUNT = 0 THEN
600: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
601: FND_MSG_PUB.add;
602: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
603: END IF;
604: ELSIF l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE', 'DRAFT') THEN
605: UPDATE ahl_unit_config_headers
606: SET unit_config_status_code = 'DRAFT',
612: AND object_version_number = l_root_uc_ovn;
613: IF SQL%ROWCOUNT = 0 THEN
614: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
615: FND_MSG_PUB.add;
616: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
617: END IF;
618: END IF;
619: ELSIF p_prod_user_flag = 'Y' THEN
620: IF l_root_uc_status_code = 'COMPLETE' THEN
628: AND object_version_number = l_root_uc_ovn;
629: IF SQL%ROWCOUNT = 0 THEN
630: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
631: FND_MSG_PUB.add;
632: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
633: END IF;
634: END IF;
635: END IF; --For production user, no need to change any one of the status.
636:
643:
644: l_msg_count := FND_MSG_PUB.count_msg;
645: IF l_msg_count > 0 THEN
646: x_msg_count := l_msg_count;
647: RAISE FND_API.G_EXC_ERROR;
648: END IF;
649: -- Perform the Commit (if requested)
650: IF FND_API.to_boolean(p_commit) THEN
651: COMMIT;
646: x_msg_count := l_msg_count;
647: RAISE FND_API.G_EXC_ERROR;
648: END IF;
649: -- Perform the Commit (if requested)
650: IF FND_API.to_boolean(p_commit) THEN
651: COMMIT;
652: END IF;
653: --Count and Get messages(optional)
654: FND_MSG_PUB.count_and_get(
651: COMMIT;
652: END IF;
653: --Count and Get messages(optional)
654: FND_MSG_PUB.count_and_get(
655: p_encoded => FND_API.G_FALSE,
656: p_count => x_msg_count,
657: p_data => x_msg_data);
658:
659: EXCEPTION
656: p_count => x_msg_count,
657: p_data => x_msg_data);
658:
659: EXCEPTION
660: WHEN FND_API.G_EXC_ERROR THEN
661: ROLLBACK TO unassociate_instance_pos;
662: x_return_status := FND_API.G_RET_STS_ERROR ;
663: FND_MSG_PUB.count_and_get(
664: p_encoded => FND_API.G_FALSE,
658:
659: EXCEPTION
660: WHEN FND_API.G_EXC_ERROR THEN
661: ROLLBACK TO unassociate_instance_pos;
662: x_return_status := FND_API.G_RET_STS_ERROR ;
663: FND_MSG_PUB.count_and_get(
664: p_encoded => FND_API.G_FALSE,
665: p_count => x_msg_count,
666: p_data => x_msg_data);
660: WHEN FND_API.G_EXC_ERROR THEN
661: ROLLBACK TO unassociate_instance_pos;
662: x_return_status := FND_API.G_RET_STS_ERROR ;
663: FND_MSG_PUB.count_and_get(
664: p_encoded => FND_API.G_FALSE,
665: p_count => x_msg_count,
666: p_data => x_msg_data);
667: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
668: ROLLBACK TO unassociate_instance_pos;
663: FND_MSG_PUB.count_and_get(
664: p_encoded => FND_API.G_FALSE,
665: p_count => x_msg_count,
666: p_data => x_msg_data);
667: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
668: ROLLBACK TO unassociate_instance_pos;
669: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
670: FND_MSG_PUB.count_and_get(
671: p_encoded => FND_API.G_FALSE,
665: p_count => x_msg_count,
666: p_data => x_msg_data);
667: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
668: ROLLBACK TO unassociate_instance_pos;
669: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
670: FND_MSG_PUB.count_and_get(
671: p_encoded => FND_API.G_FALSE,
672: p_count => x_msg_count,
673: p_data => x_msg_data);
667: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
668: ROLLBACK TO unassociate_instance_pos;
669: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
670: FND_MSG_PUB.count_and_get(
671: p_encoded => FND_API.G_FALSE,
672: p_count => x_msg_count,
673: p_data => x_msg_data);
674: WHEN OTHERS THEN
675: ROLLBACK TO unassociate_instance_pos;
672: p_count => x_msg_count,
673: p_data => x_msg_data);
674: WHEN OTHERS THEN
675: ROLLBACK TO unassociate_instance_pos;
676: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
677: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
678: THEN
679: FND_MSG_PUB.add_exc_msg(
680: p_pkg_name => G_PKG_NAME,
681: p_procedure_name => l_api_name,
682: p_error_text => SUBSTRB(SQLERRM,1,240));
683: END IF;
684: FND_MSG_PUB.count_and_get(
685: p_encoded => FND_API.G_FALSE,
686: p_count => x_msg_count,
687: p_data => x_msg_data);
688: END unassociate_instance_pos;
689:
691: -- This API is used to remove an instance (leaf, branch node or sub-unit) from aUC node.
692:
693: PROCEDURE remove_instance (
694: p_api_version IN NUMBER := 1.0,
695: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
696: p_commit IN VARCHAR2 := FND_API.G_FALSE,
697: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
698: x_return_status OUT NOCOPY VARCHAR2,
699: x_msg_count OUT NOCOPY NUMBER,
692:
693: PROCEDURE remove_instance (
694: p_api_version IN NUMBER := 1.0,
695: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
696: p_commit IN VARCHAR2 := FND_API.G_FALSE,
697: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
698: x_return_status OUT NOCOPY VARCHAR2,
699: x_msg_count OUT NOCOPY NUMBER,
700: x_msg_data OUT NOCOPY VARCHAR2,
693: PROCEDURE remove_instance (
694: p_api_version IN NUMBER := 1.0,
695: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
696: p_commit IN VARCHAR2 := FND_API.G_FALSE,
697: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
698: x_return_status OUT NOCOPY VARCHAR2,
699: x_msg_count OUT NOCOPY NUMBER,
700: x_msg_data OUT NOCOPY VARCHAR2,
701: p_uc_header_id IN NUMBER,
863: AND trunc(nvl(active_end_date, SYSDATE+1)) > trunc(SYSDATE);
864:
865: BEGIN
866: --Initialize API return status to success
867: x_return_status := FND_API.G_RET_STS_SUCCESS;
868:
869: -- Standard Start of API savepoint
870: SAVEPOINT remove_instance;
871:
869: -- Standard Start of API savepoint
870: SAVEPOINT remove_instance;
871:
872: --Standard call to check for call compatibility.
873: IF NOT FND_API.compatible_api_call(
874: l_api_version,
875: p_api_version,
876: l_api_name,
877: G_PKG_NAME)
875: p_api_version,
876: l_api_name,
877: G_PKG_NAME)
878: THEN
879: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
880: END IF;
881:
882: --Initialize message list if p_init_msg_list is set to TRUE.
883: IF FND_API.to_boolean( p_init_msg_list ) THEN
879: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
880: END IF;
881:
882: --Initialize message list if p_init_msg_list is set to TRUE.
883: IF FND_API.to_boolean( p_init_msg_list ) THEN
884: FND_MSG_PUB.initialize;
885: END IF;
886:
887: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
895: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
896: FND_MESSAGE.set_token('NAME', 'prod_user_flag');
897: FND_MESSAGE.set_token('VALUE', p_prod_user_flag);
898: FND_MSG_PUB.add;
899: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
900: END IF;
901:
902: --Validate input parameters p_csi_ii_ovn
903: IF (p_csi_ii_ovn IS NULL OR p_csi_ii_ovn <= 0 ) THEN
904: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
905: FND_MESSAGE.set_token('NAME', 'csi_ii_ovn');
906: FND_MESSAGE.set_token('VALUE', p_csi_ii_ovn);
907: FND_MSG_PUB.add;
908: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
909: END IF;
910: --Validate input parameter p_uc_header_id, its two statuses
911: OPEN check_uc_header;
912: FETCH check_uc_header INTO l_check_uc_header;
915: FND_MESSAGE.set_token('NAME', 'uc_header_id');
916: FND_MESSAGE.set_token('NAME', p_uc_header_id);
917: FND_MSG_PUB.add;
918: CLOSE check_uc_header;
919: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
920: ELSE
921:
922: -- ACL :: Changes for R12
923: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
919: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
920: ELSE
921:
922: -- ACL :: Changes for R12
923: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
924: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
925: FND_MSG_PUB.add;
926: CLOSE check_uc_header;
927: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
923: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
924: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
925: FND_MSG_PUB.add;
926: CLOSE check_uc_header;
927: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
928: END IF;
929:
930: ahl_util_uc_pkg.get_root_uc_attr(p_uc_header_id,
931: l_root_uc_header_id,
937: l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE')) THEN
938: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_NOT_ACTIVE' );
939: FND_MSG_PUB.add;
940: CLOSE check_uc_header;
941: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
942: ELSIF (p_prod_user_flag = 'N' AND
943: (l_root_uc_status_code = 'APPROVAL_PENDING' OR
944: l_root_active_uc_status_code = 'APPROVAL_PENDING')) THEN
945: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
945: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
946: FND_MESSAGE.set_token('UC_HEADER_ID', l_root_uc_header_id);
947: FND_MSG_PUB.add;
948: CLOSE check_uc_header;
949: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
950: ELSE
951: CLOSE check_uc_header;
952: END IF;
953: END IF;
966: FND_MESSAGE.set_name( 'AHL','AHL_UC_API_PARAMETER_INVALID' );
967: FND_MESSAGE.set_token('NAME', 'instance_id');
968: FND_MESSAGE.set_token('VALUE', p_instance_id);
969: FND_MSG_PUB.add;
970: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
971: --Ensure no current user makes change to the same csi_ii_relationships record
972: ELSIF l_object_version_number <> p_csi_ii_ovn THEN
973: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
974: FND_MSG_PUB.add;
971: --Ensure no current user makes change to the same csi_ii_relationships record
972: ELSIF l_object_version_number <> p_csi_ii_ovn THEN
973: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
974: FND_MSG_PUB.add;
975: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
976: END IF;
977:
978: --The following lines are used to update the position_reference column in csi_ii_relationships
979: --First, get transaction_type_id .
978: --The following lines are used to update the position_reference column in csi_ii_relationships
979: --First, get transaction_type_id .
980: AHL_UTIL_UC_PKG.getcsi_transaction_id('UC_UPDATE',l_transaction_type_id, l_return_value);
981: IF NOT l_return_value THEN
982: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
983: END IF;
984: --Set the CSI transaction record
985: l_csi_transaction_rec.source_transaction_date := SYSDATE;
986: l_csi_transaction_rec.transaction_type_id := l_transaction_type_id;
998: x_return_status => l_return_status,
999: x_msg_count => l_msg_count,
1000: x_msg_data => l_msg_data);
1001:
1002: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1003: RAISE FND_API.G_EXC_ERROR;
1004: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1005: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1006: END IF;
999: x_msg_count => l_msg_count,
1000: x_msg_data => l_msg_data);
1001:
1002: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1003: RAISE FND_API.G_EXC_ERROR;
1004: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1005: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1006: END IF;
1007:
1000: x_msg_data => l_msg_data);
1001:
1002: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1003: RAISE FND_API.G_EXC_ERROR;
1004: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1005: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1006: END IF;
1007:
1008: --Expire the instance and its descendant instances if it is a branch node or sub-unit when the
1001:
1002: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1003: RAISE FND_API.G_EXC_ERROR;
1004: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1005: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1006: END IF;
1007:
1008: --Expire the instance and its descendant instances if it is a branch node or sub-unit when the
1009: --UC is not in active status. Even the sub-unit's descendants get also expired. The sub-unit
1018: IF (get_csi_obj_ver_num%NOTFOUND) THEN
1019: CLOSE get_csi_obj_ver_num;
1020: FND_MESSAGE.set_name('AHL','AHL_COM_RECORD_DELETED');
1021: FND_MSG_PUB.add;
1022: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1023: ELSE
1024: CLOSE get_csi_obj_ver_num;
1025: END IF;
1026: --Call CSI API to expire the instance and all its descendants if exist
1029:
1030: CSI_ITEM_INSTANCE_PUB.expire_item_instance(
1031: p_api_version => 1.0,
1032: p_instance_rec => l_csi_instance_rec,
1033: p_expire_children => FND_API.G_TRUE,
1034: p_txn_rec => l_csi_upd_transaction_rec,
1035: x_instance_id_lst => l_csi_instance_id_lst,
1036: x_return_status => l_return_status,
1037: x_msg_count => l_msg_count,
1035: x_instance_id_lst => l_csi_instance_id_lst,
1036: x_return_status => l_return_status,
1037: x_msg_count => l_msg_count,
1038: x_msg_data => l_msg_data);
1039: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1040: RAISE FND_API.G_EXC_ERROR;
1041: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1042: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1043: END IF;
1036: x_return_status => l_return_status,
1037: x_msg_count => l_msg_count,
1038: x_msg_data => l_msg_data);
1039: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1040: RAISE FND_API.G_EXC_ERROR;
1041: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1042: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1043: END IF;
1044: END IF; --unit_config_status_code check
1037: x_msg_count => l_msg_count,
1038: x_msg_data => l_msg_data);
1039: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1040: RAISE FND_API.G_EXC_ERROR;
1041: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1042: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1043: END IF;
1044: END IF; --unit_config_status_code check
1045: */
1038: x_msg_data => l_msg_data);
1039: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1040: RAISE FND_API.G_EXC_ERROR;
1041: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1042: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1043: END IF;
1044: END IF; --unit_config_status_code check
1045: */
1046:
1083:
1084: --Copy the change to UC history table
1085: ahl_util_uc_pkg.copy_uc_header_to_history(l_sub_uc_header_id, l_return_status);
1086: --IF history copy failed, then don't raise exception, just add the messageto the message stack
1087: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1088: FND_MESSAGE.set_name('AHL', 'AHL_UC_HISTORY_COPY_FAILED');
1089: FND_MSG_PUB.add;
1090: END IF;
1091: ELSE --Non subunit top node
1118:
1119: --Copy the change to UC history table
1120: ahl_util_uc_pkg.copy_uc_header_to_history(l_sub_uc_header_id, l_return_status);
1121: --IF history copy failed, then don't raise exception, just add the messae to the message stack
1122: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1123: FND_MESSAGE.set_name('AHL', 'AHL_UC_HISTORY_COPY_FAILED');
1124: FND_MSG_PUB.add;
1125: END IF;
1126: END LOOP;
1137: FND_MESSAGE.set_name( 'AHL','AHL_UC_POSTION_INVALID' );
1138: FND_MESSAGE.set_token('POSITION', l_position_reference);
1139: FND_MSG_PUB.add;
1140: CLOSE get_position_necessity;
1141: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1142: ELSE
1143: CLOSE get_position_necessity;
1144: END IF;
1145: END IF;
1161: AND object_version_number = l_root_uc_ovn;
1162: IF SQL%ROWCOUNT = 0 THEN
1163: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
1164: FND_MSG_PUB.add;
1165: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1166: END IF;
1167: ELSIF (l_root_uc_status_code IN ('COMPLETE', 'INCOMPLETE') AND
1168: (l_root_active_uc_status_code IS NULL OR
1169: l_root_active_uc_status_code <> 'UNAPPROVED')) THEN
1179: AND object_version_number = l_root_uc_ovn;
1180: IF SQL%ROWCOUNT = 0 THEN
1181: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
1182: FND_MSG_PUB.add;
1183: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1184: END IF;
1185: ELSIF l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE', 'DRAFT') THEN
1186: --IF unit_config_status_code='DRAFT', this update is only object_version_number change and
1187: --not necessary.
1195: AND object_version_number = l_root_uc_ovn;
1196: IF SQL%ROWCOUNT = 0 THEN
1197: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
1198: FND_MSG_PUB.add;
1199: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1200: END IF;
1201: END IF;
1202: ELSIF p_prod_user_flag = 'Y' THEN
1203: IF (l_root_uc_status_code = 'COMPLETE' AND l_position_necessity = 'MANDATORY') THEN
1211: AND object_version_number = l_root_uc_ovn;
1212: IF SQL%ROWCOUNT = 0 THEN
1213: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
1214: FND_MSG_PUB.add;
1215: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1216: END IF;
1217: END IF;
1218: END IF;
1219:
1226: --Get all the error messages from the previous steps (if any) and raise the appropriate Exception
1227: l_msg_count := FND_MSG_PUB.count_msg;
1228: IF l_msg_count > 0 THEN
1229: x_msg_count := l_msg_count;
1230: RAISE FND_API.G_EXC_ERROR;
1231: END IF;
1232: -- Perform the Commit (if requested)
1233: IF FND_API.to_boolean(p_commit) THEN
1234: COMMIT;
1229: x_msg_count := l_msg_count;
1230: RAISE FND_API.G_EXC_ERROR;
1231: END IF;
1232: -- Perform the Commit (if requested)
1233: IF FND_API.to_boolean(p_commit) THEN
1234: COMMIT;
1235: END IF;
1236: --Count and Get messages(optional)
1237: FND_MSG_PUB.count_and_get(
1234: COMMIT;
1235: END IF;
1236: --Count and Get messages(optional)
1237: FND_MSG_PUB.count_and_get(
1238: p_encoded => FND_API.G_FALSE,
1239: p_count => x_msg_count,
1240: p_data => x_msg_data);
1241:
1242: EXCEPTION
1239: p_count => x_msg_count,
1240: p_data => x_msg_data);
1241:
1242: EXCEPTION
1243: WHEN FND_API.G_EXC_ERROR THEN
1244: ROLLBACK TO remove_instance;
1245: x_return_status := FND_API.G_RET_STS_ERROR ;
1246: FND_MSG_PUB.count_and_get(
1247: p_encoded => FND_API.G_FALSE,
1241:
1242: EXCEPTION
1243: WHEN FND_API.G_EXC_ERROR THEN
1244: ROLLBACK TO remove_instance;
1245: x_return_status := FND_API.G_RET_STS_ERROR ;
1246: FND_MSG_PUB.count_and_get(
1247: p_encoded => FND_API.G_FALSE,
1248: p_count => x_msg_count,
1249: p_data => x_msg_data);
1243: WHEN FND_API.G_EXC_ERROR THEN
1244: ROLLBACK TO remove_instance;
1245: x_return_status := FND_API.G_RET_STS_ERROR ;
1246: FND_MSG_PUB.count_and_get(
1247: p_encoded => FND_API.G_FALSE,
1248: p_count => x_msg_count,
1249: p_data => x_msg_data);
1250: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1251: ROLLBACK TO remove_instance;
1246: FND_MSG_PUB.count_and_get(
1247: p_encoded => FND_API.G_FALSE,
1248: p_count => x_msg_count,
1249: p_data => x_msg_data);
1250: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1251: ROLLBACK TO remove_instance;
1252: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1253: FND_MSG_PUB.count_and_get(
1254: p_encoded => FND_API.G_FALSE,
1248: p_count => x_msg_count,
1249: p_data => x_msg_data);
1250: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1251: ROLLBACK TO remove_instance;
1252: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1253: FND_MSG_PUB.count_and_get(
1254: p_encoded => FND_API.G_FALSE,
1255: p_count => x_msg_count,
1256: p_data => x_msg_data);
1250: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1251: ROLLBACK TO remove_instance;
1252: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1253: FND_MSG_PUB.count_and_get(
1254: p_encoded => FND_API.G_FALSE,
1255: p_count => x_msg_count,
1256: p_data => x_msg_data);
1257: WHEN OTHERS THEN
1258: ROLLBACK TO remove_instance;
1255: p_count => x_msg_count,
1256: p_data => x_msg_data);
1257: WHEN OTHERS THEN
1258: ROLLBACK TO remove_instance;
1259: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1260: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1261: THEN
1262: FND_MSG_PUB.add_exc_msg(
1263: p_pkg_name => G_PKG_NAME,
1264: p_procedure_name => l_api_name,
1265: p_error_text => SUBSTRB(SQLERRM,1,240));
1266: END IF;
1267: FND_MSG_PUB.count_and_get(
1268: p_encoded => FND_API.G_FALSE,
1269: p_count => x_msg_count,
1270: p_data => x_msg_data);
1271: END;
1272:
1274: -- This API is used to update an instance's (top node or non top node) attribute
1275: -- (serial number, serial_number_tag, lot_number, revision, mfg_date and etc.)
1276: PROCEDURE update_instance_attr(
1277: p_api_version IN NUMBER := 1.0,
1278: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1279: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1280: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1281: x_return_status OUT NOCOPY VARCHAR2,
1282: x_msg_count OUT NOCOPY NUMBER,
1275: -- (serial number, serial_number_tag, lot_number, revision, mfg_date and etc.)
1276: PROCEDURE update_instance_attr(
1277: p_api_version IN NUMBER := 1.0,
1278: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1279: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1280: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1281: x_return_status OUT NOCOPY VARCHAR2,
1282: x_msg_count OUT NOCOPY NUMBER,
1283: x_msg_data OUT NOCOPY VARCHAR2,
1276: PROCEDURE update_instance_attr(
1277: p_api_version IN NUMBER := 1.0,
1278: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1279: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1280: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1281: x_return_status OUT NOCOPY VARCHAR2,
1282: x_msg_count OUT NOCOPY NUMBER,
1283: x_msg_data OUT NOCOPY VARCHAR2,
1284: p_uc_header_id IN NUMBER,
1384: --AND trunc(nvl(active_end_date, SYSDATE+1)) > trunc(SYSDATE);
1385:
1386: BEGIN
1387: --Initialize API return status to success
1388: x_return_status := FND_API.G_RET_STS_SUCCESS;
1389:
1390: -- Standard Start of API savepoint
1391: SAVEPOINT update_instance_attr;
1392:
1390: -- Standard Start of API savepoint
1391: SAVEPOINT update_instance_attr;
1392:
1393: --Standard call to check for call compatibility.
1394: IF NOT FND_API.compatible_api_call(
1395: l_api_version,
1396: p_api_version,
1397: l_api_name,
1398: G_PKG_NAME)
1396: p_api_version,
1397: l_api_name,
1398: G_PKG_NAME)
1399: THEN
1400: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1401: END IF;
1402:
1403: --Initialize message list if p_init_msg_list is set to TRUE.
1404: IF FND_API.to_boolean( p_init_msg_list ) THEN
1400: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1401: END IF;
1402:
1403: --Initialize message list if p_init_msg_list is set to TRUE.
1404: IF FND_API.to_boolean( p_init_msg_list ) THEN
1405: FND_MSG_PUB.initialize;
1406: END IF;
1407:
1408: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1416: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
1417: FND_MESSAGE.set_token('NAME', 'prod_user_flag');
1418: FND_MESSAGE.set_token('VALUE', p_prod_user_flag);
1419: FND_MSG_PUB.add;
1420: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1421: END IF;
1422: --Validate input parameter p_uc_header_id, its two statuses
1423: OPEN check_uc_header;
1424: FETCH check_uc_header INTO l_check_uc_header;
1427: FND_MESSAGE.set_token('NAME', 'uc_header_id');
1428: FND_MESSAGE.set_token('VALUE', p_uc_header_id);
1429: FND_MSG_PUB.add;
1430: CLOSE check_uc_header;
1431: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1432: ELSE
1433:
1434: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1435: FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
1438: ' IS_UNIT_QUARANTINED ='||ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null));
1439: END IF;
1440:
1441: -- ACL :: Changes for R12
1442: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
1443: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
1444: FND_MSG_PUB.add;
1445: CLOSE check_uc_header;
1446: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1442: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
1443: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
1444: FND_MSG_PUB.add;
1445: CLOSE check_uc_header;
1446: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1447: END IF;
1448:
1449: ahl_util_uc_pkg.get_root_uc_attr(p_uc_header_id,
1450: l_root_uc_header_id,
1456: l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE')) THEN
1457: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_NOT_ACTIVE' );
1458: FND_MSG_PUB.add;
1459: CLOSE check_uc_header;
1460: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1461: ELSIF (p_prod_user_flag = 'N' AND
1462: (l_root_uc_status_code = 'APPROVAL_PENDING' OR
1463: l_root_active_uc_status_code = 'APPROVAL_PENDING')) THEN
1464: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
1464: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
1465: FND_MESSAGE.set_token( 'UC_HEADER_ID', l_root_uc_header_id);
1466: FND_MSG_PUB.add;
1467: CLOSE check_uc_header;
1468: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1469: ELSE
1470: CLOSE check_uc_header;
1471: END IF;
1472: END IF;
1487: --Do we allow an extra node's attributes to be changed? Yes
1488: FND_MESSAGE.set_name( 'AHL','AHL_UC_INSTANCE_NOT_IN_UC' );
1489: FND_MESSAGE.set_token('INSTANCE', p_uc_instance_rec.instance_id);
1490: FND_MSG_PUB.add;
1491: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1492: END IF;
1493:
1494: --Make sure p_uc_instance_rec.instance_id is not expired otherwise update is not allowed
1495: --Added on 02/26/2004
1499: IF TRUNC(NVL(l_end_date, SYSDATE+1)) <= TRUNC(SYSDATE) THEN
1500: FND_MESSAGE.set_name( 'AHL','AHL_UC_INSTANCE_EXPIRED');
1501: FND_MESSAGE.set_token('INSTANCE', p_uc_instance_rec.instance_id);
1502: FND_MSG_PUB.add;
1503: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1504: END IF;
1505:
1506: --Get the original instance attributes from database. Instance_id can't be changed
1507: --And p_uc_instance_rec contains the new attributes
1564: */
1565:
1566: --Convert serial_number_tag_meaning to its code
1567: IF (l_uc_instance_rec.sn_tag_code IS NULL OR
1568: l_uc_instance_rec.sn_tag_code = FND_API.G_MISS_CHAR) THEN
1569: IF (l_uc_instance_rec.sn_tag_meaning IS NOT NULL AND
1570: l_uc_instance_rec.sn_tag_meaning <> FND_API.G_MISS_CHAR) THEN
1571: AHL_UTIL_MC_PKG.convert_to_lookupcode('AHL_SERIALNUMBER_TAG',
1572: l_uc_instance_rec.sn_tag_meaning,
1566: --Convert serial_number_tag_meaning to its code
1567: IF (l_uc_instance_rec.sn_tag_code IS NULL OR
1568: l_uc_instance_rec.sn_tag_code = FND_API.G_MISS_CHAR) THEN
1569: IF (l_uc_instance_rec.sn_tag_meaning IS NOT NULL AND
1570: l_uc_instance_rec.sn_tag_meaning <> FND_API.G_MISS_CHAR) THEN
1571: AHL_UTIL_MC_PKG.convert_to_lookupcode('AHL_SERIALNUMBER_TAG',
1572: l_uc_instance_rec.sn_tag_meaning,
1573: l_lookup_code,
1574: l_return_val);
1583: END IF;
1584: --dbms_output.put_line('After convert serial tag');
1585:
1586: --Like instance_id, inventory_item_id and inventory_org_id can't be changed
1587: IF ((l_uc_instance_rec.inventory_item_id <> FND_API.G_MISS_NUM AND
1588: l_uc_instance_rec.inventory_item_id <> l_old_uc_instance_rec.inventory_item_id) OR
1589: (l_uc_instance_rec.inventory_org_id <> FND_API.G_MISS_NUM AND
1590: l_uc_instance_rec.inventory_org_id <> l_old_uc_instance_rec.inventory_org_id)) THEN
1591: FND_MESSAGE.Set_Name('AHL','AHL_COM_KEY_NOUPDATE');
1585:
1586: --Like instance_id, inventory_item_id and inventory_org_id can't be changed
1587: IF ((l_uc_instance_rec.inventory_item_id <> FND_API.G_MISS_NUM AND
1588: l_uc_instance_rec.inventory_item_id <> l_old_uc_instance_rec.inventory_item_id) OR
1589: (l_uc_instance_rec.inventory_org_id <> FND_API.G_MISS_NUM AND
1590: l_uc_instance_rec.inventory_org_id <> l_old_uc_instance_rec.inventory_org_id)) THEN
1591: FND_MESSAGE.Set_Name('AHL','AHL_COM_KEY_NOUPDATE');
1592: FND_MSG_PUB.ADD;
1593: --dbms_output.put_line('Cannot update key values');
1590: l_uc_instance_rec.inventory_org_id <> l_old_uc_instance_rec.inventory_org_id)) THEN
1591: FND_MESSAGE.Set_Name('AHL','AHL_COM_KEY_NOUPDATE');
1592: FND_MSG_PUB.ADD;
1593: --dbms_output.put_line('Cannot update key values');
1594: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1595: END IF;
1596:
1597: --Validate against inventory for changed items.
1598: --Following the old G_MISS standard, passing G_MISS value means no change for that column.
1595: END IF;
1596:
1597: --Validate against inventory for changed items.
1598: --Following the old G_MISS standard, passing G_MISS value means no change for that column.
1599: IF (l_uc_instance_rec.relationship_id = FND_API.G_MISS_NUM OR
1600: l_uc_instance_rec.relationship_id IS NULL ) THEN
1601: l_uc_instance_rec.relationship_id := TO_NUMBER(l_position_reference);
1602: END IF;
1603:
1600: l_uc_instance_rec.relationship_id IS NULL ) THEN
1601: l_uc_instance_rec.relationship_id := TO_NUMBER(l_position_reference);
1602: END IF;
1603:
1604: IF (l_uc_instance_rec.inventory_item_id = FND_API.G_MISS_NUM OR
1605: l_uc_instance_rec.inventory_item_id IS NULL ) THEN
1606: l_uc_instance_rec.inventory_item_id := l_old_uc_instance_rec.inventory_item_id;
1607: END IF;
1608:
1605: l_uc_instance_rec.inventory_item_id IS NULL ) THEN
1606: l_uc_instance_rec.inventory_item_id := l_old_uc_instance_rec.inventory_item_id;
1607: END IF;
1608:
1609: IF (l_uc_instance_rec.inventory_org_id = FND_API.G_MISS_NUM OR
1610: l_uc_instance_rec.inventory_org_id IS NULL) THEN
1611: l_uc_instance_rec.inventory_org_id := l_old_uc_instance_rec.inventory_org_id;
1612: END IF;
1613:
1610: l_uc_instance_rec.inventory_org_id IS NULL) THEN
1611: l_uc_instance_rec.inventory_org_id := l_old_uc_instance_rec.inventory_org_id;
1612: END IF;
1613:
1614: IF (l_uc_instance_rec.quantity = FND_API.G_MISS_NUM OR
1615: l_uc_instance_rec.quantity IS NULL) THEN
1616: l_uc_instance_rec.quantity := l_old_uc_instance_rec.quantity;
1617: END IF;
1618:
1615: l_uc_instance_rec.quantity IS NULL) THEN
1616: l_uc_instance_rec.quantity := l_old_uc_instance_rec.quantity;
1617: END IF;
1618:
1619: IF (l_uc_instance_rec.uom_code = FND_API.G_MISS_CHAR OR
1620: l_uc_instance_rec.uom_code IS NULL) THEN
1621: l_uc_instance_rec.uom_code := l_old_uc_instance_rec.uom_code;
1622: END IF;
1623:
1620: l_uc_instance_rec.uom_code IS NULL) THEN
1621: l_uc_instance_rec.uom_code := l_old_uc_instance_rec.uom_code;
1622: END IF;
1623:
1624: IF (l_uc_instance_rec.install_date = FND_API.G_MISS_DATE OR
1625: l_uc_instance_rec.install_date IS NULL) THEN
1626: l_uc_instance_rec.install_date := l_old_uc_instance_rec.install_date;
1627: END IF;
1628:
1628:
1629: --For the following updatable columns, front end code following the new
1630: --API G_MISS standard. If the value is blank, then pass G_MISS, othewise
1631: --pass the old value(unchanged) or new value (changed)
1632: IF (l_uc_instance_rec.serial_number = FND_API.G_MISS_CHAR) THEN
1633: l_uc_instance_rec.serial_number := NULL;
1634: END IF;
1635:
1636: IF (l_uc_instance_rec.revision = FND_API.G_MISS_CHAR) THEN
1632: IF (l_uc_instance_rec.serial_number = FND_API.G_MISS_CHAR) THEN
1633: l_uc_instance_rec.serial_number := NULL;
1634: END IF;
1635:
1636: IF (l_uc_instance_rec.revision = FND_API.G_MISS_CHAR) THEN
1637: l_uc_instance_rec.revision := NULL;
1638: END IF;
1639:
1640: IF (l_uc_instance_rec.lot_number = FND_API.G_MISS_CHAR) THEN
1636: IF (l_uc_instance_rec.revision = FND_API.G_MISS_CHAR) THEN
1637: l_uc_instance_rec.revision := NULL;
1638: END IF;
1639:
1640: IF (l_uc_instance_rec.lot_number = FND_API.G_MISS_CHAR) THEN
1641: l_uc_instance_rec.lot_number := NULL;
1642: END IF;
1643:
1644: IF (l_uc_instance_rec.sn_tag_code = FND_API.G_MISS_CHAR) THEN
1640: IF (l_uc_instance_rec.lot_number = FND_API.G_MISS_CHAR) THEN
1641: l_uc_instance_rec.lot_number := NULL;
1642: END IF;
1643:
1644: IF (l_uc_instance_rec.sn_tag_code = FND_API.G_MISS_CHAR) THEN
1645: l_uc_instance_rec.sn_tag_code := NULL;
1646: END IF;
1647:
1648: IF (l_uc_instance_rec.mfg_date = FND_API.G_MISS_DATE) THEN
1644: IF (l_uc_instance_rec.sn_tag_code = FND_API.G_MISS_CHAR) THEN
1645: l_uc_instance_rec.sn_tag_code := NULL;
1646: END IF;
1647:
1648: IF (l_uc_instance_rec.mfg_date = FND_API.G_MISS_DATE) THEN
1649: l_uc_instance_rec.mfg_date := NULL;
1650: END IF;
1651:
1652: -- SATHAPLI::FP ER 6453212, 10-Nov-2008
1650: END IF;
1651:
1652: -- SATHAPLI::FP ER 6453212, 10-Nov-2008
1653: -- nullify the flexfield data in the UC instance record if G_MISS_CHAR is there
1654: IF (l_uc_instance_rec.context = FND_API.G_MISS_CHAR) THEN
1655: l_uc_instance_rec.context := NULL;
1656: END IF;
1657:
1658: IF (l_uc_instance_rec.attribute1 = FND_API.G_MISS_CHAR) THEN
1654: IF (l_uc_instance_rec.context = FND_API.G_MISS_CHAR) THEN
1655: l_uc_instance_rec.context := NULL;
1656: END IF;
1657:
1658: IF (l_uc_instance_rec.attribute1 = FND_API.G_MISS_CHAR) THEN
1659: l_uc_instance_rec.attribute1 := NULL;
1660: END IF;
1661:
1662: IF (l_uc_instance_rec.attribute2 = FND_API.G_MISS_CHAR) THEN
1658: IF (l_uc_instance_rec.attribute1 = FND_API.G_MISS_CHAR) THEN
1659: l_uc_instance_rec.attribute1 := NULL;
1660: END IF;
1661:
1662: IF (l_uc_instance_rec.attribute2 = FND_API.G_MISS_CHAR) THEN
1663: l_uc_instance_rec.attribute2 := NULL;
1664: END IF;
1665:
1666: IF (l_uc_instance_rec.attribute3 = FND_API.G_MISS_CHAR) THEN
1662: IF (l_uc_instance_rec.attribute2 = FND_API.G_MISS_CHAR) THEN
1663: l_uc_instance_rec.attribute2 := NULL;
1664: END IF;
1665:
1666: IF (l_uc_instance_rec.attribute3 = FND_API.G_MISS_CHAR) THEN
1667: l_uc_instance_rec.attribute3 := NULL;
1668: END IF;
1669:
1670: IF (l_uc_instance_rec.attribute4 = FND_API.G_MISS_CHAR) THEN
1666: IF (l_uc_instance_rec.attribute3 = FND_API.G_MISS_CHAR) THEN
1667: l_uc_instance_rec.attribute3 := NULL;
1668: END IF;
1669:
1670: IF (l_uc_instance_rec.attribute4 = FND_API.G_MISS_CHAR) THEN
1671: l_uc_instance_rec.attribute4 := NULL;
1672: END IF;
1673:
1674: IF (l_uc_instance_rec.attribute5 = FND_API.G_MISS_CHAR) THEN
1670: IF (l_uc_instance_rec.attribute4 = FND_API.G_MISS_CHAR) THEN
1671: l_uc_instance_rec.attribute4 := NULL;
1672: END IF;
1673:
1674: IF (l_uc_instance_rec.attribute5 = FND_API.G_MISS_CHAR) THEN
1675: l_uc_instance_rec.attribute5 := NULL;
1676: END IF;
1677:
1678: IF (l_uc_instance_rec.attribute6 = FND_API.G_MISS_CHAR) THEN
1674: IF (l_uc_instance_rec.attribute5 = FND_API.G_MISS_CHAR) THEN
1675: l_uc_instance_rec.attribute5 := NULL;
1676: END IF;
1677:
1678: IF (l_uc_instance_rec.attribute6 = FND_API.G_MISS_CHAR) THEN
1679: l_uc_instance_rec.attribute6 := NULL;
1680: END IF;
1681:
1682: IF (l_uc_instance_rec.attribute7 = FND_API.G_MISS_CHAR) THEN
1678: IF (l_uc_instance_rec.attribute6 = FND_API.G_MISS_CHAR) THEN
1679: l_uc_instance_rec.attribute6 := NULL;
1680: END IF;
1681:
1682: IF (l_uc_instance_rec.attribute7 = FND_API.G_MISS_CHAR) THEN
1683: l_uc_instance_rec.attribute7 := NULL;
1684: END IF;
1685:
1686: IF (l_uc_instance_rec.attribute8 = FND_API.G_MISS_CHAR) THEN
1682: IF (l_uc_instance_rec.attribute7 = FND_API.G_MISS_CHAR) THEN
1683: l_uc_instance_rec.attribute7 := NULL;
1684: END IF;
1685:
1686: IF (l_uc_instance_rec.attribute8 = FND_API.G_MISS_CHAR) THEN
1687: l_uc_instance_rec.attribute8 := NULL;
1688: END IF;
1689:
1690: IF (l_uc_instance_rec.attribute9 = FND_API.G_MISS_CHAR) THEN
1686: IF (l_uc_instance_rec.attribute8 = FND_API.G_MISS_CHAR) THEN
1687: l_uc_instance_rec.attribute8 := NULL;
1688: END IF;
1689:
1690: IF (l_uc_instance_rec.attribute9 = FND_API.G_MISS_CHAR) THEN
1691: l_uc_instance_rec.attribute9 := NULL;
1692: END IF;
1693:
1694: IF (l_uc_instance_rec.attribute10 = FND_API.G_MISS_CHAR) THEN
1690: IF (l_uc_instance_rec.attribute9 = FND_API.G_MISS_CHAR) THEN
1691: l_uc_instance_rec.attribute9 := NULL;
1692: END IF;
1693:
1694: IF (l_uc_instance_rec.attribute10 = FND_API.G_MISS_CHAR) THEN
1695: l_uc_instance_rec.attribute10 := NULL;
1696: END IF;
1697:
1698: IF (l_uc_instance_rec.attribute11 = FND_API.G_MISS_CHAR) THEN
1694: IF (l_uc_instance_rec.attribute10 = FND_API.G_MISS_CHAR) THEN
1695: l_uc_instance_rec.attribute10 := NULL;
1696: END IF;
1697:
1698: IF (l_uc_instance_rec.attribute11 = FND_API.G_MISS_CHAR) THEN
1699: l_uc_instance_rec.attribute11 := NULL;
1700: END IF;
1701:
1702: IF (l_uc_instance_rec.attribute12 = FND_API.G_MISS_CHAR) THEN
1698: IF (l_uc_instance_rec.attribute11 = FND_API.G_MISS_CHAR) THEN
1699: l_uc_instance_rec.attribute11 := NULL;
1700: END IF;
1701:
1702: IF (l_uc_instance_rec.attribute12 = FND_API.G_MISS_CHAR) THEN
1703: l_uc_instance_rec.attribute12 := NULL;
1704: END IF;
1705:
1706: IF (l_uc_instance_rec.attribute13 = FND_API.G_MISS_CHAR) THEN
1702: IF (l_uc_instance_rec.attribute12 = FND_API.G_MISS_CHAR) THEN
1703: l_uc_instance_rec.attribute12 := NULL;
1704: END IF;
1705:
1706: IF (l_uc_instance_rec.attribute13 = FND_API.G_MISS_CHAR) THEN
1707: l_uc_instance_rec.attribute13 := NULL;
1708: END IF;
1709:
1710: IF (l_uc_instance_rec.attribute14 = FND_API.G_MISS_CHAR) THEN
1706: IF (l_uc_instance_rec.attribute13 = FND_API.G_MISS_CHAR) THEN
1707: l_uc_instance_rec.attribute13 := NULL;
1708: END IF;
1709:
1710: IF (l_uc_instance_rec.attribute14 = FND_API.G_MISS_CHAR) THEN
1711: l_uc_instance_rec.attribute14 := NULL;
1712: END IF;
1713:
1714: IF (l_uc_instance_rec.attribute15 = FND_API.G_MISS_CHAR) THEN
1710: IF (l_uc_instance_rec.attribute14 = FND_API.G_MISS_CHAR) THEN
1711: l_uc_instance_rec.attribute14 := NULL;
1712: END IF;
1713:
1714: IF (l_uc_instance_rec.attribute15 = FND_API.G_MISS_CHAR) THEN
1715: l_uc_instance_rec.attribute15 := NULL;
1716: END IF;
1717:
1718: IF (l_uc_instance_rec.attribute16 = FND_API.G_MISS_CHAR) THEN
1714: IF (l_uc_instance_rec.attribute15 = FND_API.G_MISS_CHAR) THEN
1715: l_uc_instance_rec.attribute15 := NULL;
1716: END IF;
1717:
1718: IF (l_uc_instance_rec.attribute16 = FND_API.G_MISS_CHAR) THEN
1719: l_uc_instance_rec.attribute16 := NULL;
1720: END IF;
1721:
1722: IF (l_uc_instance_rec.attribute17 = FND_API.G_MISS_CHAR) THEN
1718: IF (l_uc_instance_rec.attribute16 = FND_API.G_MISS_CHAR) THEN
1719: l_uc_instance_rec.attribute16 := NULL;
1720: END IF;
1721:
1722: IF (l_uc_instance_rec.attribute17 = FND_API.G_MISS_CHAR) THEN
1723: l_uc_instance_rec.attribute17 := NULL;
1724: END IF;
1725:
1726: IF (l_uc_instance_rec.attribute18 = FND_API.G_MISS_CHAR) THEN
1722: IF (l_uc_instance_rec.attribute17 = FND_API.G_MISS_CHAR) THEN
1723: l_uc_instance_rec.attribute17 := NULL;
1724: END IF;
1725:
1726: IF (l_uc_instance_rec.attribute18 = FND_API.G_MISS_CHAR) THEN
1727: l_uc_instance_rec.attribute18 := NULL;
1728: END IF;
1729:
1730: IF (l_uc_instance_rec.attribute19 = FND_API.G_MISS_CHAR) THEN
1726: IF (l_uc_instance_rec.attribute18 = FND_API.G_MISS_CHAR) THEN
1727: l_uc_instance_rec.attribute18 := NULL;
1728: END IF;
1729:
1730: IF (l_uc_instance_rec.attribute19 = FND_API.G_MISS_CHAR) THEN
1731: l_uc_instance_rec.attribute19 := NULL;
1732: END IF;
1733:
1734: IF (l_uc_instance_rec.attribute20 = FND_API.G_MISS_CHAR) THEN
1730: IF (l_uc_instance_rec.attribute19 = FND_API.G_MISS_CHAR) THEN
1731: l_uc_instance_rec.attribute19 := NULL;
1732: END IF;
1733:
1734: IF (l_uc_instance_rec.attribute20 = FND_API.G_MISS_CHAR) THEN
1735: l_uc_instance_rec.attribute20 := NULL;
1736: END IF;
1737:
1738: IF (l_uc_instance_rec.attribute21 = FND_API.G_MISS_CHAR) THEN
1734: IF (l_uc_instance_rec.attribute20 = FND_API.G_MISS_CHAR) THEN
1735: l_uc_instance_rec.attribute20 := NULL;
1736: END IF;
1737:
1738: IF (l_uc_instance_rec.attribute21 = FND_API.G_MISS_CHAR) THEN
1739: l_uc_instance_rec.attribute21 := NULL;
1740: END IF;
1741:
1742: IF (l_uc_instance_rec.attribute22 = FND_API.G_MISS_CHAR) THEN
1738: IF (l_uc_instance_rec.attribute21 = FND_API.G_MISS_CHAR) THEN
1739: l_uc_instance_rec.attribute21 := NULL;
1740: END IF;
1741:
1742: IF (l_uc_instance_rec.attribute22 = FND_API.G_MISS_CHAR) THEN
1743: l_uc_instance_rec.attribute22 := NULL;
1744: END IF;
1745:
1746: IF (l_uc_instance_rec.attribute23 = FND_API.G_MISS_CHAR) THEN
1742: IF (l_uc_instance_rec.attribute22 = FND_API.G_MISS_CHAR) THEN
1743: l_uc_instance_rec.attribute22 := NULL;
1744: END IF;
1745:
1746: IF (l_uc_instance_rec.attribute23 = FND_API.G_MISS_CHAR) THEN
1747: l_uc_instance_rec.attribute23 := NULL;
1748: END IF;
1749:
1750: IF (l_uc_instance_rec.attribute24 = FND_API.G_MISS_CHAR) THEN
1746: IF (l_uc_instance_rec.attribute23 = FND_API.G_MISS_CHAR) THEN
1747: l_uc_instance_rec.attribute23 := NULL;
1748: END IF;
1749:
1750: IF (l_uc_instance_rec.attribute24 = FND_API.G_MISS_CHAR) THEN
1751: l_uc_instance_rec.attribute24 := NULL;
1752: END IF;
1753:
1754: IF (l_uc_instance_rec.attribute25 = FND_API.G_MISS_CHAR) THEN
1750: IF (l_uc_instance_rec.attribute24 = FND_API.G_MISS_CHAR) THEN
1751: l_uc_instance_rec.attribute24 := NULL;
1752: END IF;
1753:
1754: IF (l_uc_instance_rec.attribute25 = FND_API.G_MISS_CHAR) THEN
1755: l_uc_instance_rec.attribute25 := NULL;
1756: END IF;
1757:
1758: IF (l_uc_instance_rec.attribute26 = FND_API.G_MISS_CHAR) THEN
1754: IF (l_uc_instance_rec.attribute25 = FND_API.G_MISS_CHAR) THEN
1755: l_uc_instance_rec.attribute25 := NULL;
1756: END IF;
1757:
1758: IF (l_uc_instance_rec.attribute26 = FND_API.G_MISS_CHAR) THEN
1759: l_uc_instance_rec.attribute26 := NULL;
1760: END IF;
1761:
1762: IF (l_uc_instance_rec.attribute27 = FND_API.G_MISS_CHAR) THEN
1758: IF (l_uc_instance_rec.attribute26 = FND_API.G_MISS_CHAR) THEN
1759: l_uc_instance_rec.attribute26 := NULL;
1760: END IF;
1761:
1762: IF (l_uc_instance_rec.attribute27 = FND_API.G_MISS_CHAR) THEN
1763: l_uc_instance_rec.attribute27 := NULL;
1764: END IF;
1765:
1766: IF (l_uc_instance_rec.attribute28 = FND_API.G_MISS_CHAR) THEN
1762: IF (l_uc_instance_rec.attribute27 = FND_API.G_MISS_CHAR) THEN
1763: l_uc_instance_rec.attribute27 := NULL;
1764: END IF;
1765:
1766: IF (l_uc_instance_rec.attribute28 = FND_API.G_MISS_CHAR) THEN
1767: l_uc_instance_rec.attribute28 := NULL;
1768: END IF;
1769:
1770: IF (l_uc_instance_rec.attribute29 = FND_API.G_MISS_CHAR) THEN
1766: IF (l_uc_instance_rec.attribute28 = FND_API.G_MISS_CHAR) THEN
1767: l_uc_instance_rec.attribute28 := NULL;
1768: END IF;
1769:
1770: IF (l_uc_instance_rec.attribute29 = FND_API.G_MISS_CHAR) THEN
1771: l_uc_instance_rec.attribute29 := NULL;
1772: END IF;
1773:
1774: IF (l_uc_instance_rec.attribute30 = FND_API.G_MISS_CHAR) THEN
1770: IF (l_uc_instance_rec.attribute29 = FND_API.G_MISS_CHAR) THEN
1771: l_uc_instance_rec.attribute29 := NULL;
1772: END IF;
1773:
1774: IF (l_uc_instance_rec.attribute30 = FND_API.G_MISS_CHAR) THEN
1775: l_uc_instance_rec.attribute30 := NULL;
1776: END IF;
1777:
1778: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1816: l_item_assoc_id);
1817: --Check Error Message stack.
1818: l_msg_count := FND_MSG_PUB.count_msg;
1819: IF l_msg_count > 0 THEN
1820: RAISE FND_API.G_EXC_ERROR;
1821: END IF;
1822: */
1823: --Validate Installation Date.
1824: --Removed this validation after Alex talking to Barry. Because in UC we don't provide any
1824: --Removed this validation after Alex talking to Barry. Because in UC we don't provide any
1825: --way for the user to update the installation date. (04/21/2004)
1826: /*
1827: IF (l_uc_instance_rec.install_date IS NOT NULL AND
1828: l_uc_instance_rec.install_date <> FND_API.G_MISS_DATE) THEN
1829: IF (l_uc_instance_rec.install_date > SYSDATE) THEN
1830: FND_MESSAGE.Set_Name('AHL','AHL_UC_INSTDATE_INVALID');
1831: FND_MESSAGE.Set_Token('DATE',l_uc_instance_rec.install_date);
1832: FND_MESSAGE.Set_Token('INV_ITEM',l_concatenated_segments);
1836: END IF;
1837: */
1838:
1839: --Validate mfg_date if not null.
1840: IF (l_uc_instance_rec.mfg_date IS NOT NULL AND l_uc_instance_rec.mfg_date <> FND_API.G_MISS_DATE) THEN
1841: IF (l_uc_instance_rec.mfg_date > SYSDATE) THEN
1842: FND_MESSAGE.Set_Name('AHL','AHL_UC_MFGDATE_INVALID');
1843: FND_MESSAGE.Set_Token('DATE',l_uc_instance_rec.mfg_date);
1844: FND_MESSAGE.Set_Token('INV_ITEM',l_concatenated_segments);
1849:
1850: --Check Error Message stack.
1851: l_msg_count := FND_MSG_PUB.count_msg;
1852: IF l_msg_count > 0 THEN
1853: RAISE FND_API.G_EXC_ERROR;
1854: END IF;
1855:
1856: --Retrieve existing value of sn_tag_code if present.
1857: AHL_UTIL_UC_PKG.getcsi_attribute_value(l_uc_instance_rec.instance_id,
1874: /* This IF condition is not necessary
1875: IF (l_uc_instance_rec.sn_tag_code IS NULL AND l_sn_tag_code IS NOT NULL) OR
1876: (l_sn_tag_code IS NULL AND l_uc_instance_rec.sn_tag_code IS NOT NULL) OR
1877: (l_uc_instance_rec.sn_tag_code IS NOT NULL AND l_sn_tag_code IS NOT NULL AND
1878: l_uc_instance_rec.sn_tag_code <> FND_API.G_MISS_CHAR AND
1879: l_uc_instance_rec.sn_tag_code <> l_sn_tag_code) THEN
1880: */
1881: --Changed value so update attribute record.
1882: l_csi_extend_attrib_rec.attribute_value_id := l_attribute_value_id;
1923: EXCEPTION
1924: WHEN OTHERS THEN
1925: FND_MESSAGE.Set_Name('AHL','AHL_UC_MFGDATE_INVALID');
1926: FND_MSG_PUB.ADD;
1927: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1928: END;
1929: --dbms_output.put_line('after get mfg_date');
1930:
1931: --Build extended attribs record for mfg_date.
1933: /* This IF condition is not necessary
1934: IF (l_uc_instance_rec.mfg_date IS NULL AND l_mfg_date IS NOT NULL) OR
1935: (l_mfg_date IS NULL AND l_uc_instance_rec.mfg_date IS NOT NULL) OR
1936: (l_uc_instance_rec.mfg_date IS NOT NULL AND l_mfg_date IS NOT NULL AND
1937: l_uc_instance_rec.mfg_date <> FND_API.G_MISS_DATE AND
1938: l_uc_instance_rec.mfg_date <> l_mfg_date) THEN
1939: */
1940: --Changed value so update attribute record.
1941: l_csi_extend_attrib_rec.attribute_value_id := l_attribute_value_id;
1964:
1965: --Check Error Message stack.
1966: l_msg_count := FND_MSG_PUB.count_msg;
1967: IF l_msg_count > 0 THEN
1968: RAISE FND_API.G_EXC_ERROR;
1969: END IF;
1970:
1971: --Update item.
1972: l_csi_instance_rec.instance_id := l_uc_instance_rec.instance_id;
2034: --First get transaction_type_id
2035: AHL_Util_UC_Pkg.getcsi_transaction_id('UC_UPDATE',l_transaction_type_id, l_return_val);
2036:
2037: IF NOT(l_return_val) THEN
2038: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2039: END IF;
2040: l_csi_transaction_rec.source_transaction_date := SYSDATE;
2041: l_csi_transaction_rec.transaction_type_id := l_transaction_type_id;
2042:
2054: 'l_msg_count='||l_msg_count||' x_return_status='||x_return_status);
2055: END IF;
2056: IF l_msg_count > 0 THEN
2057: x_msg_count := l_msg_count;
2058: RAISE FND_API.G_EXC_ERROR;
2059: END IF;
2060: /** End addition by jaramana **/
2061:
2062: --Call CSI API to update instance attributes.
2073: x_instance_id_lst => l_csi_instance_id_lst,
2074: x_return_status => l_return_status,
2075: x_msg_count => l_msg_count,
2076: x_msg_data => l_msg_data);
2077: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2078: RAISE FND_API.G_EXC_ERROR;
2079: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2080: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2081: END IF;
2074: x_return_status => l_return_status,
2075: x_msg_count => l_msg_count,
2076: x_msg_data => l_msg_data);
2077: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2078: RAISE FND_API.G_EXC_ERROR;
2079: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2080: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2081: END IF;
2082:
2075: x_msg_count => l_msg_count,
2076: x_msg_data => l_msg_data);
2077: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2078: RAISE FND_API.G_EXC_ERROR;
2079: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2080: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2081: END IF;
2082:
2083: --Create extended attributes if applicable.
2076: x_msg_data => l_msg_data);
2077: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2078: RAISE FND_API.G_EXC_ERROR;
2079: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2080: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2081: END IF;
2082:
2083: --Create extended attributes if applicable.
2084: IF (l_subscript1 > 0) THEN
2090: x_return_status => l_return_status,
2091: x_msg_count => l_msg_count,
2092: x_msg_data => l_msg_data);
2093:
2094: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2095: RAISE FND_API.G_EXC_ERROR;
2096: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2097: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2098: END IF;
2091: x_msg_count => l_msg_count,
2092: x_msg_data => l_msg_data);
2093:
2094: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2095: RAISE FND_API.G_EXC_ERROR;
2096: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2097: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2098: END IF;
2099: END IF;
2092: x_msg_data => l_msg_data);
2093:
2094: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2095: RAISE FND_API.G_EXC_ERROR;
2096: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2097: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2098: END IF;
2099: END IF;
2100:
2093:
2094: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2095: RAISE FND_API.G_EXC_ERROR;
2096: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2097: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2098: END IF;
2099: END IF;
2100:
2101: --For UC user, UC header status change needs to be made after the operation
2116: AND object_version_number = l_root_uc_ovn;
2117: IF SQL%ROWCOUNT = 0 THEN
2118: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
2119: FND_MSG_PUB.add;
2120: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2121: END IF;
2122: ELSIF (l_root_uc_status_code = 'INCOMPLETE' AND
2123: (l_root_active_uc_status_code IS NULL OR
2124: l_root_active_uc_status_code <> 'UNAPPROVED')) THEN
2133: AND object_version_number = l_root_uc_ovn;
2134: IF SQL%ROWCOUNT = 0 THEN
2135: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
2136: FND_MSG_PUB.add;
2137: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2138: END IF;
2139: ELSIF (l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE', 'DRAFT')) THEN
2140: --IF unit_config_status_code='DRAFT', this update is only object_version_number change and
2141: --not necessary.
2149: AND object_version_number = l_root_uc_ovn;
2150: IF SQL%ROWCOUNT = 0 THEN
2151: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
2152: FND_MSG_PUB.add;
2153: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2154: END IF;
2155: END IF;
2156: END IF; --For production user, no need to change any one of the status.
2157: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2174: END IF;
2175:
2176: IF l_msg_count > 0 THEN
2177: x_msg_count := l_msg_count;
2178: RAISE FND_API.G_EXC_ERROR;
2179: END IF;
2180: */
2181:
2182: -- Perform the Commit (if requested)
2179: END IF;
2180: */
2181:
2182: -- Perform the Commit (if requested)
2183: IF FND_API.to_boolean(p_commit) THEN
2184: COMMIT;
2185: END IF;
2186:
2187: --Count and Get messages(optional)
2185: END IF;
2186:
2187: --Count and Get messages(optional)
2188: FND_MSG_PUB.count_and_get(
2189: p_encoded => FND_API.G_FALSE,
2190: p_count => x_msg_count,
2191: p_data => x_msg_data);
2192:
2193: EXCEPTION
2190: p_count => x_msg_count,
2191: p_data => x_msg_data);
2192:
2193: EXCEPTION
2194: WHEN FND_API.G_EXC_ERROR THEN
2195: ROLLBACK to update_instance_attr;
2196: x_return_status := FND_API.G_RET_STS_ERROR ;
2197: FND_MSG_PUB.count_and_get(
2198: p_encoded => FND_API.G_FALSE,
2192:
2193: EXCEPTION
2194: WHEN FND_API.G_EXC_ERROR THEN
2195: ROLLBACK to update_instance_attr;
2196: x_return_status := FND_API.G_RET_STS_ERROR ;
2197: FND_MSG_PUB.count_and_get(
2198: p_encoded => FND_API.G_FALSE,
2199: p_count => x_msg_count,
2200: p_data => x_msg_data);
2194: WHEN FND_API.G_EXC_ERROR THEN
2195: ROLLBACK to update_instance_attr;
2196: x_return_status := FND_API.G_RET_STS_ERROR ;
2197: FND_MSG_PUB.count_and_get(
2198: p_encoded => FND_API.G_FALSE,
2199: p_count => x_msg_count,
2200: p_data => x_msg_data);
2201: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2202: ROLLBACK to update_instance_attr;
2197: FND_MSG_PUB.count_and_get(
2198: p_encoded => FND_API.G_FALSE,
2199: p_count => x_msg_count,
2200: p_data => x_msg_data);
2201: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2202: ROLLBACK to update_instance_attr;
2203: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2204: FND_MSG_PUB.count_and_get(
2205: p_encoded => FND_API.G_FALSE,
2199: p_count => x_msg_count,
2200: p_data => x_msg_data);
2201: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2202: ROLLBACK to update_instance_attr;
2203: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2204: FND_MSG_PUB.count_and_get(
2205: p_encoded => FND_API.G_FALSE,
2206: p_count => x_msg_count,
2207: p_data => x_msg_data);
2201: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2202: ROLLBACK to update_instance_attr;
2203: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2204: FND_MSG_PUB.count_and_get(
2205: p_encoded => FND_API.G_FALSE,
2206: p_count => x_msg_count,
2207: p_data => x_msg_data);
2208: WHEN OTHERS THEN
2209: ROLLBACK to update_instance_attr;
2206: p_count => x_msg_count,
2207: p_data => x_msg_data);
2208: WHEN OTHERS THEN
2209: ROLLBACK to update_instance_attr;
2210: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2211: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2212: THEN
2213: FND_MSG_PUB.add_exc_msg(
2214: p_pkg_name => G_PKG_NAME,
2215: p_procedure_name => l_api_name,
2216: p_error_text => SUBSTRB(SQLERRM,1,240));
2217: END IF;
2218: FND_MSG_PUB.count_and_get(
2219: p_encoded => FND_API.G_FALSE,
2220: p_count => x_msg_count,
2221: p_data => x_msg_data);
2222: END;
2223:
2225: -- This API is used to create a new instance in csi_item_instances and assign it
2226: -- to a UC node.
2227: PROCEDURE install_new_instance(
2228: p_api_version IN NUMBER := 1.0,
2229: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2230: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2231: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2232: x_return_status OUT NOCOPY VARCHAR2,
2233: x_msg_count OUT NOCOPY NUMBER,
2226: -- to a UC node.
2227: PROCEDURE install_new_instance(
2228: p_api_version IN NUMBER := 1.0,
2229: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2230: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2231: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2232: x_return_status OUT NOCOPY VARCHAR2,
2233: x_msg_count OUT NOCOPY NUMBER,
2234: x_msg_data OUT NOCOPY VARCHAR2,
2227: PROCEDURE install_new_instance(
2228: p_api_version IN NUMBER := 1.0,
2229: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2230: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2231: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2232: x_return_status OUT NOCOPY VARCHAR2,
2233: x_msg_count OUT NOCOPY NUMBER,
2234: x_msg_data OUT NOCOPY VARCHAR2,
2235: p_uc_header_id IN NUMBER,
2417: --c.last_vld_organization_id
2418:
2419: BEGIN
2420: --Initialize API return status to success
2421: x_return_status := FND_API.G_RET_STS_SUCCESS;
2422:
2423: -- Standard Start of API savepoint
2424: SAVEPOINT install_new_instance;
2425:
2423: -- Standard Start of API savepoint
2424: SAVEPOINT install_new_instance;
2425:
2426: --Standard call to check for call compatibility.
2427: IF NOT FND_API.compatible_api_call(
2428: l_api_version,
2429: p_api_version,
2430: l_api_name,
2431: G_PKG_NAME)
2429: p_api_version,
2430: l_api_name,
2431: G_PKG_NAME)
2432: THEN
2433: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2434: END IF;
2435:
2436: --Initialize message list if p_init_msg_list is set to TRUE.
2437: IF FND_API.to_boolean( p_init_msg_list ) THEN
2433: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2434: END IF;
2435:
2436: --Initialize message list if p_init_msg_list is set to TRUE.
2437: IF FND_API.to_boolean( p_init_msg_list ) THEN
2438: FND_MSG_PUB.initialize;
2439: END IF;
2440:
2441: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2449: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
2450: FND_MESSAGE.set_token('NAME', 'prod_user_flag');
2451: FND_MESSAGE.set_token('VALUE', p_prod_user_flag);
2452: FND_MSG_PUB.add;
2453: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2454: END IF;
2455: --Validate input parameter p_uc_header_id, its two statuses
2456: OPEN check_uc_header;
2457: FETCH check_uc_header INTO l_check_uc_header;
2460: FND_MESSAGE.set_token('NAME', 'uc_header_id');
2461: FND_MESSAGE.set_token('VALUE', p_uc_header_id);
2462: FND_MSG_PUB.add;
2463: CLOSE check_uc_header;
2464: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2465: ELSE
2466:
2467: -- ACL :: Changes for R12
2468: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
2464: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2465: ELSE
2466:
2467: -- ACL :: Changes for R12
2468: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
2469: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
2470: FND_MSG_PUB.add;
2471: CLOSE check_uc_header;
2472: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2468: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
2469: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
2470: FND_MSG_PUB.add;
2471: CLOSE check_uc_header;
2472: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2473: END IF;
2474:
2475: ahl_util_uc_pkg.get_root_uc_attr(p_uc_header_id,
2476: l_root_uc_header_id,
2482: l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE')) THEN
2483: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_NOT_ACTIVE' );
2484: FND_MSG_PUB.add;
2485: CLOSE check_uc_header;
2486: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2487: ELSIF (p_prod_user_flag = 'N' AND
2488: (l_root_uc_status_code = 'APPROVAL_PENDING' OR
2489: l_root_active_uc_status_code = 'APPROVAL_PENDING')) THEN
2490: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
2490: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
2491: FND_MESSAGE.set_token( 'UC_HEADER_ID', l_root_uc_header_id);
2492: FND_MSG_PUB.add;
2493: CLOSE check_uc_header;
2494: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2495: ELSE
2496: CLOSE check_uc_header;
2497: END IF;
2498: END IF;
2521: --Do we allow an extra node's attributes to be changed?
2522: FND_MESSAGE.set_name( 'AHL','AHL_UC_INSTANCE_NOT_IN_UC' );
2523: FND_MESSAGE.set_token('INSTANCE', p_parent_instance_id);
2524: FND_MSG_PUB.add;
2525: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2526: END IF;
2527: END IF;
2528:
2529: --Then validate p_x_uc_instance_rec.relationship_id can be child of l_parent_relationship_id
2534: FND_MESSAGE.set_token('CHILD', p_x_uc_instance_rec.relationship_id);
2535: FND_MESSAGE.set_token('PARENT', l_parent_relationship_id);
2536: FND_MSG_PUB.add;
2537: CLOSE check_parent_relationship;
2538: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2539: ELSE
2540: CLOSE check_parent_relationship;
2541: END IF;
2542:
2547: FND_MESSAGE.set_name( 'AHL','AHL_UC_POSITION_INSTALLED' );
2548: FND_MESSAGE.set_token('POSITION', p_x_uc_instance_rec.relationship_id);
2549: FND_MSG_PUB.add;
2550: CLOSE check_position_empty;
2551: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2552: ELSE
2553: CLOSE check_position_empty;
2554: END IF;
2555: --When creating the new instances, the "From Inventory" Serial Tag should not be used anymore.
2562:
2563: --Check Error Message stack.
2564: l_msg_count := FND_MSG_PUB.count_msg;
2565: IF l_msg_count > 0 THEN
2566: RAISE FND_API.G_EXC_ERROR;
2567: END IF;
2568:
2569: --Validate Inventory details.
2570: validate_uc_invdetails (p_x_uc_instance_rec.inventory_item_id,
2580:
2581: --Check Error Message stack.
2582: l_msg_count := FND_MSG_PUB.count_msg;
2583: IF l_msg_count > 0 THEN
2584: RAISE FND_API.G_EXC_ERROR;
2585: END IF;
2586:
2587: --Check all sub mc_name, mc_revision and uc_name are NULL or NOT NULL
2588: IF (p_x_sub_uc_rec.mc_name IS NOT NULL AND (p_x_sub_uc_rec.mc_revision IS NULL OR
2593: p_x_sub_uc_rec.mc_name IS NULL))
2594: THEN
2595: FND_MESSAGE.set_name('AHL','AHL_UC_SUB_UNIT_INFO_MISSING');
2596: FND_MSG_PUB.add;
2597: RAISE FND_API.G_EXC_ERROR;
2598: END IF;
2599:
2600: --Check the sub unit name is unique
2601: IF p_x_sub_uc_rec.uc_name IS NOT NULL THEN
2605: FND_MESSAGE.set_name('AHL','AHL_UC_NAME_DUPLICATE');
2606: FND_MESSAGE.set_token('NAME', p_x_sub_uc_rec.uc_name);
2607: FND_MSG_PUB.add;
2608: CLOSE check_uc_name_unique;
2609: RAISE FND_API.G_EXC_ERROR;
2610: ELSE
2611: CLOSE check_uc_name_unique;
2612: END IF;
2613: END IF;
2623: FND_MESSAGE.set_token('NAME', p_x_sub_uc_rec.mc_name);
2624: FND_MESSAGE.set_token('REVISION', p_x_sub_uc_rec.mc_revision);
2625: FND_MSG_PUB.add;
2626: CLOSE get_sub_mc_header;
2627: RAISE FND_API.G_EXC_ERROR;
2628: ELSE
2629: CLOSE get_sub_mc_header;
2630: END IF;
2631: END IF;
2653:
2654: --Check Error Message stack.
2655: l_msg_count := FND_MSG_PUB.count_msg;
2656: IF l_msg_count > 0 THEN
2657: RAISE FND_API.G_EXC_ERROR;
2658: END IF;
2659:
2660: --Validate manufacturing date.
2661: IF (p_x_uc_instance_rec.mfg_date IS NOT NULL AND
2658: END IF;
2659:
2660: --Validate manufacturing date.
2661: IF (p_x_uc_instance_rec.mfg_date IS NOT NULL AND
2662: p_x_uc_instance_rec.mfg_date <> FND_API.G_MISS_DATE) THEN
2663: IF (p_x_uc_instance_rec.mfg_date > SYSDATE) THEN
2664: FND_MESSAGE.set_name('AHL','AHL_UC_MFGDATE_INVALID');
2665: FND_MESSAGE.set_token('DATE',p_x_uc_instance_rec.mfg_date);
2666: FND_MESSAGE.set_token('INV_ITEM',l_concatenated_segments);
2671:
2672: --Validate installation date.
2673: --Keep the installation date validation only for production user (04/21/2004)
2674: IF (p_x_uc_instance_rec.install_date IS NOT NULL AND
2675: p_x_uc_instance_rec.install_date <> FND_API.G_MISS_DATE) THEN
2676: IF (p_prod_user_flag = 'Y' AND trunc(p_x_uc_instance_rec.install_date) > trunc(SYSDATE)) THEN
2677: FND_MESSAGE.set_name('AHL','AHL_UC_INSTDATE_INVALID');
2678: FND_MESSAGE.set_token('DATE',p_x_uc_instance_rec.install_date);
2679: FND_MESSAGE.set_token('POSN_REF',p_x_uc_instance_rec.relationship_id);
2692: FND_MESSAGE.set_token('CSII',p_parent_instance_id);
2693: FND_MESSAGE.Set_Token('POSN_REF',p_x_uc_instance_rec.relationship_id);
2694: FND_MSG_PUB.add;
2695: --dbms_output.put_line('Top node item instance does not exist.');
2696: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2697: END IF;
2698: CLOSE csi_item_instance_csr;
2699:
2700: --Set csi instance record
2716: l_csi_instance_rec.mfg_serial_number_flag := 'N';
2717: -- END IF;
2718:
2719: IF (p_x_uc_instance_rec.serial_number IS NOT NULL AND
2720: p_x_uc_instance_rec.serial_number <> FND_API.G_MISS_CHAR) THEN
2721: l_csi_instance_rec.serial_number := p_x_uc_instance_rec.serial_number;
2722: END IF;
2723:
2724: IF (p_x_uc_instance_rec.lot_number IS NOT NULL AND
2721: l_csi_instance_rec.serial_number := p_x_uc_instance_rec.serial_number;
2722: END IF;
2723:
2724: IF (p_x_uc_instance_rec.lot_number IS NOT NULL AND
2725: p_x_uc_instance_rec.lot_number <> FND_API.G_MISS_CHAR) THEN
2726: l_csi_instance_rec.lot_number := p_x_uc_instance_rec.lot_number;
2727: END IF;
2728:
2729: IF (p_x_uc_instance_rec.revision IS NOT NULL AND
2726: l_csi_instance_rec.lot_number := p_x_uc_instance_rec.lot_number;
2727: END IF;
2728:
2729: IF (p_x_uc_instance_rec.revision IS NOT NULL AND
2730: p_x_uc_instance_rec.revision <> FND_API.G_MISS_CHAR) THEN
2731: l_csi_instance_rec.inventory_revision := p_x_uc_instance_rec.revision;
2732: END IF;
2733:
2734: --l_csi_instance_rec.instance_usage_code := 'IN_SERVICE';
2736:
2737: -- SATHAPLI::FP ER 6453212, 10-Nov-2008
2738: -- populate the flexfield data in the CSI record
2739: IF (p_x_uc_instance_rec.context IS NOT NULL AND
2740: p_x_uc_instance_rec.context <> FND_API.G_MISS_CHAR) THEN
2741: l_csi_instance_rec.context := p_x_uc_instance_rec.context;
2742: END IF;
2743:
2744: IF (p_x_uc_instance_rec.attribute1 IS NOT NULL AND
2741: l_csi_instance_rec.context := p_x_uc_instance_rec.context;
2742: END IF;
2743:
2744: IF (p_x_uc_instance_rec.attribute1 IS NOT NULL AND
2745: p_x_uc_instance_rec.attribute1 <> FND_API.G_MISS_CHAR) THEN
2746: l_csi_instance_rec.attribute1 := p_x_uc_instance_rec.attribute1;
2747: END IF;
2748:
2749: IF (p_x_uc_instance_rec.attribute2 IS NOT NULL AND
2746: l_csi_instance_rec.attribute1 := p_x_uc_instance_rec.attribute1;
2747: END IF;
2748:
2749: IF (p_x_uc_instance_rec.attribute2 IS NOT NULL AND
2750: p_x_uc_instance_rec.attribute2 <> FND_API.G_MISS_CHAR) THEN
2751: l_csi_instance_rec.attribute2 := p_x_uc_instance_rec.attribute2;
2752: END IF;
2753:
2754: IF (p_x_uc_instance_rec.attribute3 IS NOT NULL AND
2751: l_csi_instance_rec.attribute2 := p_x_uc_instance_rec.attribute2;
2752: END IF;
2753:
2754: IF (p_x_uc_instance_rec.attribute3 IS NOT NULL AND
2755: p_x_uc_instance_rec.attribute3 <> FND_API.G_MISS_CHAR) THEN
2756: l_csi_instance_rec.attribute3 := p_x_uc_instance_rec.attribute3;
2757: END IF;
2758:
2759: IF (p_x_uc_instance_rec.attribute4 IS NOT NULL AND
2756: l_csi_instance_rec.attribute3 := p_x_uc_instance_rec.attribute3;
2757: END IF;
2758:
2759: IF (p_x_uc_instance_rec.attribute4 IS NOT NULL AND
2760: p_x_uc_instance_rec.attribute4 <> FND_API.G_MISS_CHAR) THEN
2761: l_csi_instance_rec.attribute4 := p_x_uc_instance_rec.attribute4;
2762: END IF;
2763:
2764: IF (p_x_uc_instance_rec.attribute5 IS NOT NULL AND
2761: l_csi_instance_rec.attribute4 := p_x_uc_instance_rec.attribute4;
2762: END IF;
2763:
2764: IF (p_x_uc_instance_rec.attribute5 IS NOT NULL AND
2765: p_x_uc_instance_rec.attribute5 <> FND_API.G_MISS_CHAR) THEN
2766: l_csi_instance_rec.attribute5 := p_x_uc_instance_rec.attribute5;
2767: END IF;
2768:
2769: IF (p_x_uc_instance_rec.attribute6 IS NOT NULL AND
2766: l_csi_instance_rec.attribute5 := p_x_uc_instance_rec.attribute5;
2767: END IF;
2768:
2769: IF (p_x_uc_instance_rec.attribute6 IS NOT NULL AND
2770: p_x_uc_instance_rec.attribute6 <> FND_API.G_MISS_CHAR) THEN
2771: l_csi_instance_rec.attribute6 := p_x_uc_instance_rec.attribute6;
2772: END IF;
2773:
2774: IF (p_x_uc_instance_rec.attribute7 IS NOT NULL AND
2771: l_csi_instance_rec.attribute6 := p_x_uc_instance_rec.attribute6;
2772: END IF;
2773:
2774: IF (p_x_uc_instance_rec.attribute7 IS NOT NULL AND
2775: p_x_uc_instance_rec.attribute7 <> FND_API.G_MISS_CHAR) THEN
2776: l_csi_instance_rec.attribute7 := p_x_uc_instance_rec.attribute7;
2777: END IF;
2778:
2779: IF (p_x_uc_instance_rec.attribute8 IS NOT NULL AND
2776: l_csi_instance_rec.attribute7 := p_x_uc_instance_rec.attribute7;
2777: END IF;
2778:
2779: IF (p_x_uc_instance_rec.attribute8 IS NOT NULL AND
2780: p_x_uc_instance_rec.attribute8 <> FND_API.G_MISS_CHAR) THEN
2781: l_csi_instance_rec.attribute8 := p_x_uc_instance_rec.attribute8;
2782: END IF;
2783:
2784: IF (p_x_uc_instance_rec.attribute9 IS NOT NULL AND
2781: l_csi_instance_rec.attribute8 := p_x_uc_instance_rec.attribute8;
2782: END IF;
2783:
2784: IF (p_x_uc_instance_rec.attribute9 IS NOT NULL AND
2785: p_x_uc_instance_rec.attribute9 <> FND_API.G_MISS_CHAR) THEN
2786: l_csi_instance_rec.attribute9 := p_x_uc_instance_rec.attribute9;
2787: END IF;
2788:
2789: IF (p_x_uc_instance_rec.attribute10 IS NOT NULL AND
2786: l_csi_instance_rec.attribute9 := p_x_uc_instance_rec.attribute9;
2787: END IF;
2788:
2789: IF (p_x_uc_instance_rec.attribute10 IS NOT NULL AND
2790: p_x_uc_instance_rec.attribute10 <> FND_API.G_MISS_CHAR) THEN
2791: l_csi_instance_rec.attribute10 := p_x_uc_instance_rec.attribute10;
2792: END IF;
2793:
2794: IF (p_x_uc_instance_rec.attribute11 IS NOT NULL AND
2791: l_csi_instance_rec.attribute10 := p_x_uc_instance_rec.attribute10;
2792: END IF;
2793:
2794: IF (p_x_uc_instance_rec.attribute11 IS NOT NULL AND
2795: p_x_uc_instance_rec.attribute11 <> FND_API.G_MISS_CHAR) THEN
2796: l_csi_instance_rec.attribute11 := p_x_uc_instance_rec.attribute11;
2797: END IF;
2798:
2799: IF (p_x_uc_instance_rec.attribute12 IS NOT NULL AND
2796: l_csi_instance_rec.attribute11 := p_x_uc_instance_rec.attribute11;
2797: END IF;
2798:
2799: IF (p_x_uc_instance_rec.attribute12 IS NOT NULL AND
2800: p_x_uc_instance_rec.attribute12 <> FND_API.G_MISS_CHAR) THEN
2801: l_csi_instance_rec.attribute12 := p_x_uc_instance_rec.attribute12;
2802: END IF;
2803:
2804: IF (p_x_uc_instance_rec.attribute13 IS NOT NULL AND
2801: l_csi_instance_rec.attribute12 := p_x_uc_instance_rec.attribute12;
2802: END IF;
2803:
2804: IF (p_x_uc_instance_rec.attribute13 IS NOT NULL AND
2805: p_x_uc_instance_rec.attribute13 <> FND_API.G_MISS_CHAR) THEN
2806: l_csi_instance_rec.attribute13 := p_x_uc_instance_rec.attribute13;
2807: END IF;
2808:
2809: IF (p_x_uc_instance_rec.attribute14 IS NOT NULL AND
2806: l_csi_instance_rec.attribute13 := p_x_uc_instance_rec.attribute13;
2807: END IF;
2808:
2809: IF (p_x_uc_instance_rec.attribute14 IS NOT NULL AND
2810: p_x_uc_instance_rec.attribute14 <> FND_API.G_MISS_CHAR) THEN
2811: l_csi_instance_rec.attribute14 := p_x_uc_instance_rec.attribute14;
2812: END IF;
2813:
2814: IF (p_x_uc_instance_rec.attribute15 IS NOT NULL AND
2811: l_csi_instance_rec.attribute14 := p_x_uc_instance_rec.attribute14;
2812: END IF;
2813:
2814: IF (p_x_uc_instance_rec.attribute15 IS NOT NULL AND
2815: p_x_uc_instance_rec.attribute15 <> FND_API.G_MISS_CHAR) THEN
2816: l_csi_instance_rec.attribute15 := p_x_uc_instance_rec.attribute15;
2817: END IF;
2818:
2819: IF (p_x_uc_instance_rec.attribute16 IS NOT NULL AND
2816: l_csi_instance_rec.attribute15 := p_x_uc_instance_rec.attribute15;
2817: END IF;
2818:
2819: IF (p_x_uc_instance_rec.attribute16 IS NOT NULL AND
2820: p_x_uc_instance_rec.attribute16 <> FND_API.G_MISS_CHAR) THEN
2821: l_csi_instance_rec.attribute16 := p_x_uc_instance_rec.attribute16;
2822: END IF;
2823:
2824: IF (p_x_uc_instance_rec.attribute17 IS NOT NULL AND
2821: l_csi_instance_rec.attribute16 := p_x_uc_instance_rec.attribute16;
2822: END IF;
2823:
2824: IF (p_x_uc_instance_rec.attribute17 IS NOT NULL AND
2825: p_x_uc_instance_rec.attribute17 <> FND_API.G_MISS_CHAR) THEN
2826: l_csi_instance_rec.attribute17 := p_x_uc_instance_rec.attribute17;
2827: END IF;
2828:
2829: IF (p_x_uc_instance_rec.attribute18 IS NOT NULL AND
2826: l_csi_instance_rec.attribute17 := p_x_uc_instance_rec.attribute17;
2827: END IF;
2828:
2829: IF (p_x_uc_instance_rec.attribute18 IS NOT NULL AND
2830: p_x_uc_instance_rec.attribute18 <> FND_API.G_MISS_CHAR) THEN
2831: l_csi_instance_rec.attribute18 := p_x_uc_instance_rec.attribute18;
2832: END IF;
2833:
2834: IF (p_x_uc_instance_rec.attribute19 IS NOT NULL AND
2831: l_csi_instance_rec.attribute18 := p_x_uc_instance_rec.attribute18;
2832: END IF;
2833:
2834: IF (p_x_uc_instance_rec.attribute19 IS NOT NULL AND
2835: p_x_uc_instance_rec.attribute19 <> FND_API.G_MISS_CHAR) THEN
2836: l_csi_instance_rec.attribute19 := p_x_uc_instance_rec.attribute19;
2837: END IF;
2838:
2839: IF (p_x_uc_instance_rec.attribute20 IS NOT NULL AND
2836: l_csi_instance_rec.attribute19 := p_x_uc_instance_rec.attribute19;
2837: END IF;
2838:
2839: IF (p_x_uc_instance_rec.attribute20 IS NOT NULL AND
2840: p_x_uc_instance_rec.attribute20 <> FND_API.G_MISS_CHAR) THEN
2841: l_csi_instance_rec.attribute20 := p_x_uc_instance_rec.attribute20;
2842: END IF;
2843:
2844: IF (p_x_uc_instance_rec.attribute21 IS NOT NULL AND
2841: l_csi_instance_rec.attribute20 := p_x_uc_instance_rec.attribute20;
2842: END IF;
2843:
2844: IF (p_x_uc_instance_rec.attribute21 IS NOT NULL AND
2845: p_x_uc_instance_rec.attribute21 <> FND_API.G_MISS_CHAR) THEN
2846: l_csi_instance_rec.attribute21 := p_x_uc_instance_rec.attribute21;
2847: END IF;
2848:
2849: IF (p_x_uc_instance_rec.attribute22 IS NOT NULL AND
2846: l_csi_instance_rec.attribute21 := p_x_uc_instance_rec.attribute21;
2847: END IF;
2848:
2849: IF (p_x_uc_instance_rec.attribute22 IS NOT NULL AND
2850: p_x_uc_instance_rec.attribute22 <> FND_API.G_MISS_CHAR) THEN
2851: l_csi_instance_rec.attribute22 := p_x_uc_instance_rec.attribute22;
2852: END IF;
2853:
2854: IF (p_x_uc_instance_rec.attribute23 IS NOT NULL AND
2851: l_csi_instance_rec.attribute22 := p_x_uc_instance_rec.attribute22;
2852: END IF;
2853:
2854: IF (p_x_uc_instance_rec.attribute23 IS NOT NULL AND
2855: p_x_uc_instance_rec.attribute23 <> FND_API.G_MISS_CHAR) THEN
2856: l_csi_instance_rec.attribute23 := p_x_uc_instance_rec.attribute23;
2857: END IF;
2858:
2859: IF (p_x_uc_instance_rec.attribute24 IS NOT NULL AND
2856: l_csi_instance_rec.attribute23 := p_x_uc_instance_rec.attribute23;
2857: END IF;
2858:
2859: IF (p_x_uc_instance_rec.attribute24 IS NOT NULL AND
2860: p_x_uc_instance_rec.attribute24 <> FND_API.G_MISS_CHAR) THEN
2861: l_csi_instance_rec.attribute24 := p_x_uc_instance_rec.attribute24;
2862: END IF;
2863:
2864: IF (p_x_uc_instance_rec.attribute25 IS NOT NULL AND
2861: l_csi_instance_rec.attribute24 := p_x_uc_instance_rec.attribute24;
2862: END IF;
2863:
2864: IF (p_x_uc_instance_rec.attribute25 IS NOT NULL AND
2865: p_x_uc_instance_rec.attribute25 <> FND_API.G_MISS_CHAR) THEN
2866: l_csi_instance_rec.attribute25 := p_x_uc_instance_rec.attribute25;
2867: END IF;
2868:
2869: IF (p_x_uc_instance_rec.attribute26 IS NOT NULL AND
2866: l_csi_instance_rec.attribute25 := p_x_uc_instance_rec.attribute25;
2867: END IF;
2868:
2869: IF (p_x_uc_instance_rec.attribute26 IS NOT NULL AND
2870: p_x_uc_instance_rec.attribute26 <> FND_API.G_MISS_CHAR) THEN
2871: l_csi_instance_rec.attribute26 := p_x_uc_instance_rec.attribute26;
2872: END IF;
2873:
2874: IF (p_x_uc_instance_rec.attribute27 IS NOT NULL AND
2871: l_csi_instance_rec.attribute26 := p_x_uc_instance_rec.attribute26;
2872: END IF;
2873:
2874: IF (p_x_uc_instance_rec.attribute27 IS NOT NULL AND
2875: p_x_uc_instance_rec.attribute27 <> FND_API.G_MISS_CHAR) THEN
2876: l_csi_instance_rec.attribute27 := p_x_uc_instance_rec.attribute27;
2877: END IF;
2878:
2879: IF (p_x_uc_instance_rec.attribute28 IS NOT NULL AND
2876: l_csi_instance_rec.attribute27 := p_x_uc_instance_rec.attribute27;
2877: END IF;
2878:
2879: IF (p_x_uc_instance_rec.attribute28 IS NOT NULL AND
2880: p_x_uc_instance_rec.attribute28 <> FND_API.G_MISS_CHAR) THEN
2881: l_csi_instance_rec.attribute28 := p_x_uc_instance_rec.attribute28;
2882: END IF;
2883:
2884: IF (p_x_uc_instance_rec.attribute29 IS NOT NULL AND
2881: l_csi_instance_rec.attribute28 := p_x_uc_instance_rec.attribute28;
2882: END IF;
2883:
2884: IF (p_x_uc_instance_rec.attribute29 IS NOT NULL AND
2885: p_x_uc_instance_rec.attribute29 <> FND_API.G_MISS_CHAR) THEN
2886: l_csi_instance_rec.attribute29 := p_x_uc_instance_rec.attribute29;
2887: END IF;
2888:
2889: IF (p_x_uc_instance_rec.attribute30 IS NOT NULL AND
2886: l_csi_instance_rec.attribute29 := p_x_uc_instance_rec.attribute29;
2887: END IF;
2888:
2889: IF (p_x_uc_instance_rec.attribute30 IS NOT NULL AND
2890: p_x_uc_instance_rec.attribute30 <> FND_API.G_MISS_CHAR) THEN
2891: l_csi_instance_rec.attribute30 := p_x_uc_instance_rec.attribute30;
2892: END IF;
2893:
2894: --Build csi extended attribs.
2892: END IF;
2893:
2894: --Build csi extended attribs.
2895: IF (p_x_uc_instance_rec.mfg_date IS NOT NULL AND
2896: p_x_uc_instance_rec.mfg_date <> FND_API.G_MISS_DATE) THEN
2897: AHL_UTIL_UC_PKG.getcsi_attribute_id('AHL_MFG_DATE',l_attribute_id, l_return_val);
2898: IF NOT(l_return_val) THEN
2899: FND_MESSAGE.set_name('AHL','AHL_UC_ATTRIB_CODE_MISSING');
2900: FND_MESSAGE.set_token('CODE', 'AHL_MFG_DATE');
2908: END IF;
2909: END IF;
2910:
2911: IF (p_x_uc_instance_rec.serial_number IS NOT NULL AND
2912: p_x_uc_instance_rec.serial_number <> FND_API.G_MISS_CHAR) THEN
2913: AHL_UTIL_UC_PKG.getcsi_attribute_id('AHL_TEMP_SERIAL_NUM',l_attribute_id, l_return_val);
2914:
2915: IF NOT(l_return_val) THEN
2916: FND_MESSAGE.set_name('AHL','AHL_UC_ATTRIB_CODE_MISSING');
2945: --Build CSI transaction record, first get transaction_type_id
2946: AHL_Util_UC_Pkg.getcsi_transaction_id('UC_CREATE',l_transaction_type_id, l_return_val);
2947:
2948: IF NOT(l_return_val) THEN
2949: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2950: END IF;
2951:
2952: l_csi_transaction_rec.source_transaction_date := SYSDATE;
2953: l_csi_transaction_rec.transaction_type_id := l_transaction_type_id;
2954:
2955: --Check Error Message stack.
2956: l_msg_count := FND_MSG_PUB.count_msg;
2957: IF l_msg_count > 0 THEN
2958: RAISE FND_API.G_EXC_ERROR;
2959: END IF;
2960:
2961: --Call CSI API to create instance
2962: CSI_ITEM_INSTANCE_PUB.create_item_instance(
2987: ' l_return_status ='||l_return_status||
2988: ' p_x_uc_instance_rec.instance_id='||p_x_uc_instance_rec.instance_id);
2989: END IF;
2990:
2991: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2992: RAISE FND_API.G_EXC_ERROR;
2993: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2994: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2995: END IF;
2988: ' p_x_uc_instance_rec.instance_id='||p_x_uc_instance_rec.instance_id);
2989: END IF;
2990:
2991: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2992: RAISE FND_API.G_EXC_ERROR;
2993: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2994: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2995: END IF;
2996:
2989: END IF;
2990:
2991: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2992: RAISE FND_API.G_EXC_ERROR;
2993: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2994: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2995: END IF;
2996:
2997: --Before installing the new instance, make sure its operating unit is exactly the same as that
2990:
2991: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2992: RAISE FND_API.G_EXC_ERROR;
2993: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2994: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2995: END IF;
2996:
2997: --Before installing the new instance, make sure its operating unit is exactly the same as that
2998: --of the root instance.
3000: IF l_root_instance_ou IS NULL THEN
3001: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
3002: FND_MESSAGE.set_token('INSTANCE', l_root_instance_id);
3003: FND_MSG_PUB.add;
3004: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3005: ELSIF l_new_instance_ou IS NULL THEN
3006: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
3007: FND_MESSAGE.set_token('INSTANCE', l_new_instance_id);
3008: FND_MSG_PUB.add;
3005: ELSIF l_new_instance_ou IS NULL THEN
3006: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
3007: FND_MESSAGE.set_token('INSTANCE', l_new_instance_id);
3008: FND_MSG_PUB.add;
3009: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3010: ELSIF l_root_instance_ou <> l_new_instance_ou THEN
3011: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_UNMATCH');
3012: FND_MESSAGE.set_token('INSTANCE', l_new_instance_id);
3013: FND_MESSAGE.set_token('ROOT_INSTANCE', l_root_instance_id);
3011: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_UNMATCH');
3012: FND_MESSAGE.set_token('INSTANCE', l_new_instance_id);
3013: FND_MESSAGE.set_token('ROOT_INSTANCE', l_root_instance_id);
3014: FND_MSG_PUB.add;
3015: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3016: END IF;
3017:
3018: --Building csi_ii_relationship record should be after create_uc_header because create_uc_header
3019: --will validate the newly created instance, and this validation ensures that the instance is available
3031: p_txn_rec => l_csi_transaction_rec,
3032: x_return_status => l_return_status,
3033: x_msg_count => l_msg_count,
3034: x_msg_data => l_msg_data);
3035: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3036: RAISE FND_API.G_EXC_ERROR;
3037: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3038: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3039: END IF;
3032: x_return_status => l_return_status,
3033: x_msg_count => l_msg_count,
3034: x_msg_data => l_msg_data);
3035: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3036: RAISE FND_API.G_EXC_ERROR;
3037: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3038: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3039: END IF;
3040:
3033: x_msg_count => l_msg_count,
3034: x_msg_data => l_msg_data);
3035: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3036: RAISE FND_API.G_EXC_ERROR;
3037: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3038: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3039: END IF;
3040:
3041: --Create the sub unit header record in ahl_unit_config_headers
3034: x_msg_data => l_msg_data);
3035: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3036: RAISE FND_API.G_EXC_ERROR;
3037: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3038: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3039: END IF;
3040:
3041: --Create the sub unit header record in ahl_unit_config_headers
3042: IF l_sub_mc_header_id IS NOT NULL THEN
3063: ' p_x_sub_uc_rec.parent_uc_header_id='||p_x_sub_uc_rec.parent_uc_header_id);
3064: END IF;
3065: AHL_UC_UNITCONFIG_PVT.create_uc_header(
3066: p_api_version => 1.0,
3067: p_init_msg_list => FND_API.G_FALSE,
3068: p_commit => FND_API.G_FALSE,
3069: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3070: p_module_type => NULL,
3071: x_return_status => l_return_status,
3064: END IF;
3065: AHL_UC_UNITCONFIG_PVT.create_uc_header(
3066: p_api_version => 1.0,
3067: p_init_msg_list => FND_API.G_FALSE,
3068: p_commit => FND_API.G_FALSE,
3069: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3070: p_module_type => NULL,
3071: x_return_status => l_return_status,
3072: x_msg_count => l_msg_count,
3065: AHL_UC_UNITCONFIG_PVT.create_uc_header(
3066: p_api_version => 1.0,
3067: p_init_msg_list => FND_API.G_FALSE,
3068: p_commit => FND_API.G_FALSE,
3069: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3070: p_module_type => NULL,
3071: x_return_status => l_return_status,
3072: x_msg_count => l_msg_count,
3073: x_msg_data => l_msg_data,
3082: ' p_x_sub_uc_rec.mc_revision='||p_x_sub_uc_rec.mc_revision||
3083: ' p_x_sub_uc_rec.instance_id='||p_x_sub_uc_rec.instance_id||
3084: ' p_x_sub_uc_rec.parent_uc_header_id='||p_x_sub_uc_rec.parent_uc_header_id);
3085: END IF;
3086: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3087: RAISE FND_API.G_EXC_ERROR;
3088: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3089: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3090: END IF;
3083: ' p_x_sub_uc_rec.instance_id='||p_x_sub_uc_rec.instance_id||
3084: ' p_x_sub_uc_rec.parent_uc_header_id='||p_x_sub_uc_rec.parent_uc_header_id);
3085: END IF;
3086: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3087: RAISE FND_API.G_EXC_ERROR;
3088: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3089: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3090: END IF;
3091: --dbms_output.put_line('After calling create uc_header API:...');
3084: ' p_x_sub_uc_rec.parent_uc_header_id='||p_x_sub_uc_rec.parent_uc_header_id);
3085: END IF;
3086: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3087: RAISE FND_API.G_EXC_ERROR;
3088: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3089: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3090: END IF;
3091: --dbms_output.put_line('After calling create uc_header API:...');
3092:
3085: END IF;
3086: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3087: RAISE FND_API.G_EXC_ERROR;
3088: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3089: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3090: END IF;
3091: --dbms_output.put_line('After calling create uc_header API:...');
3092:
3093: --Copy the newly created UC header to history table
3093: --Copy the newly created UC header to history table
3094: ahl_util_uc_pkg.copy_uc_header_to_history(p_x_sub_uc_rec.uc_header_id, l_return_status);
3095:
3096: --IF history copy failed, then don't raise exception, just add the message to the message stack
3097: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3098: FND_MESSAGE.set_name('AHL', 'AHL_UC_HISTORY_COPY_FAILED');
3099: FND_MSG_PUB.add;
3100: END IF;
3101:
3103:
3104: --Call completeness check API for the newly assigned instance
3105: ahl_uc_validation_pub.validate_complete_for_pos(
3106: p_api_version => 1.0,
3107: p_init_msg_list => FND_API.G_FALSE,
3108: p_commit => FND_API.G_FALSE,
3109: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3110: x_return_status => l_return_status,
3111: x_msg_count => l_msg_count,
3104: --Call completeness check API for the newly assigned instance
3105: ahl_uc_validation_pub.validate_complete_for_pos(
3106: p_api_version => 1.0,
3107: p_init_msg_list => FND_API.G_FALSE,
3108: p_commit => FND_API.G_FALSE,
3109: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3110: x_return_status => l_return_status,
3111: x_msg_count => l_msg_count,
3112: x_msg_data => l_msg_data,
3105: ahl_uc_validation_pub.validate_complete_for_pos(
3106: p_api_version => 1.0,
3107: p_init_msg_list => FND_API.G_FALSE,
3108: p_commit => FND_API.G_FALSE,
3109: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3110: x_return_status => l_return_status,
3111: x_msg_count => l_msg_count,
3112: x_msg_data => l_msg_data,
3113: p_csi_instance_id => p_x_uc_instance_rec.instance_id,
3111: x_msg_count => l_msg_count,
3112: x_msg_data => l_msg_data,
3113: p_csi_instance_id => p_x_uc_instance_rec.instance_id,
3114: x_error_tbl => x_warning_msg_tbl);
3115: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3116: RAISE FND_API.G_EXC_ERROR;
3117: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3118: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3119: END IF;
3112: x_msg_data => l_msg_data,
3113: p_csi_instance_id => p_x_uc_instance_rec.instance_id,
3114: x_error_tbl => x_warning_msg_tbl);
3115: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3116: RAISE FND_API.G_EXC_ERROR;
3117: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3118: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3119: END IF;
3120:
3113: p_csi_instance_id => p_x_uc_instance_rec.instance_id,
3114: x_error_tbl => x_warning_msg_tbl);
3115: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3116: RAISE FND_API.G_EXC_ERROR;
3117: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3118: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3119: END IF;
3120:
3121: --IF 1-WAY INTERCHANGEABLE item is installed, we will display the warning message to the user
3114: x_error_tbl => x_warning_msg_tbl);
3115: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3116: RAISE FND_API.G_EXC_ERROR;
3117: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3118: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3119: END IF;
3120:
3121: --IF 1-WAY INTERCHANGEABLE item is installed, we will display the warning message to the user
3122: --This warning message is not added to the global message stack.
3131: FND_MESSAGE.set_name('AHL', 'AHL_UC_ITEM_INTERCHANGE_MISS');
3132: FND_MESSAGE.set_token('INSTANCE', p_x_uc_instance_rec.instance_id);
3133: FND_MSG_PUB.add;
3134: CLOSE get_interchange_type;
3135: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3136: ELSIF l_interchange_type_code = '1-WAY INTERCHANGEABLE' THEN
3137: FND_MESSAGE.set_name('AHL', 'AHL_UC_1WAY_ITEM_INSTALLED');
3138: SELECT f.meaning INTO l_position_ref_meaning
3139: FROM ahl_mc_relationships a,
3173: AND object_version_number = l_root_uc_ovn;
3174: IF SQL%ROWCOUNT = 0 THEN
3175: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
3176: FND_MSG_PUB.add;
3177: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3178: END IF;
3179: ELSIF (l_root_uc_status_code IN ('COMPLETE', 'INCOMPLETE') AND
3180: (l_root_active_uc_status_code IS NULL OR
3181: l_root_active_uc_status_code <> 'UNAPPROVED')) THEN
3191: AND object_version_number = l_root_uc_ovn;
3192: IF SQL%ROWCOUNT = 0 THEN
3193: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
3194: FND_MSG_PUB.add;
3195: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3196: END IF;
3197: ELSIF (l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE', 'DRAFT')) THEN
3198: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3199: FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
3213: AND object_version_number = l_root_uc_ovn;
3214: IF SQL%ROWCOUNT = 0 THEN
3215: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
3216: FND_MSG_PUB.add;
3217: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3218: END IF;
3219: END IF;
3220: ELSIF (p_prod_user_flag = 'Y' AND
3221: x_warning_msg_tbl.count > 0 AND
3230: AND object_version_number = l_root_uc_ovn;
3231: IF SQL%ROWCOUNT = 0 THEN
3232: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
3233: FND_MSG_PUB.add;
3234: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3235: END IF;
3236: END IF;
3237:
3238: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3244: --Get all the error messages from the previous steps (if any) and raise the appropriate Exception
3245: l_msg_count := FND_MSG_PUB.count_msg;
3246: IF l_msg_count > 0 THEN
3247: x_msg_count := l_msg_count;
3248: RAISE FND_API.G_EXC_ERROR;
3249: END IF;
3250: -- Perform the Commit (if requested)
3251: IF FND_API.to_boolean(p_commit) THEN
3252: COMMIT;
3247: x_msg_count := l_msg_count;
3248: RAISE FND_API.G_EXC_ERROR;
3249: END IF;
3250: -- Perform the Commit (if requested)
3251: IF FND_API.to_boolean(p_commit) THEN
3252: COMMIT;
3253: END IF;
3254: --Count and Get messages(optional)
3255: FND_MSG_PUB.count_and_get(
3252: COMMIT;
3253: END IF;
3254: --Count and Get messages(optional)
3255: FND_MSG_PUB.count_and_get(
3256: p_encoded => FND_API.G_FALSE,
3257: p_count => x_msg_count,
3258: p_data => x_msg_data);
3259: EXCEPTION
3260: WHEN FND_API.G_EXC_ERROR THEN
3256: p_encoded => FND_API.G_FALSE,
3257: p_count => x_msg_count,
3258: p_data => x_msg_data);
3259: EXCEPTION
3260: WHEN FND_API.G_EXC_ERROR THEN
3261: ROLLBACK TO install_new_instance;
3262: x_return_status := FND_API.G_RET_STS_ERROR ;
3263: FND_MSG_PUB.count_and_get(
3264: p_encoded => FND_API.G_FALSE,
3258: p_data => x_msg_data);
3259: EXCEPTION
3260: WHEN FND_API.G_EXC_ERROR THEN
3261: ROLLBACK TO install_new_instance;
3262: x_return_status := FND_API.G_RET_STS_ERROR ;
3263: FND_MSG_PUB.count_and_get(
3264: p_encoded => FND_API.G_FALSE,
3265: p_count => x_msg_count,
3266: p_data => x_msg_data);
3260: WHEN FND_API.G_EXC_ERROR THEN
3261: ROLLBACK TO install_new_instance;
3262: x_return_status := FND_API.G_RET_STS_ERROR ;
3263: FND_MSG_PUB.count_and_get(
3264: p_encoded => FND_API.G_FALSE,
3265: p_count => x_msg_count,
3266: p_data => x_msg_data);
3267: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3268: ROLLBACK TO install_new_instance;
3263: FND_MSG_PUB.count_and_get(
3264: p_encoded => FND_API.G_FALSE,
3265: p_count => x_msg_count,
3266: p_data => x_msg_data);
3267: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3268: ROLLBACK TO install_new_instance;
3269: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3270: FND_MSG_PUB.count_and_get(
3271: p_encoded => FND_API.G_FALSE,
3265: p_count => x_msg_count,
3266: p_data => x_msg_data);
3267: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3268: ROLLBACK TO install_new_instance;
3269: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3270: FND_MSG_PUB.count_and_get(
3271: p_encoded => FND_API.G_FALSE,
3272: p_count => x_msg_count,
3273: p_data => x_msg_data);
3267: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3268: ROLLBACK TO install_new_instance;
3269: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3270: FND_MSG_PUB.count_and_get(
3271: p_encoded => FND_API.G_FALSE,
3272: p_count => x_msg_count,
3273: p_data => x_msg_data);
3274: WHEN OTHERS THEN
3275: ROLLBACK TO install_new_instance;
3272: p_count => x_msg_count,
3273: p_data => x_msg_data);
3274: WHEN OTHERS THEN
3275: ROLLBACK TO install_new_instance;
3276: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3277: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3278: THEN
3279: FND_MSG_PUB.add_exc_msg(
3280: p_pkg_name => G_PKG_NAME,
3281: p_procedure_name => l_api_name,
3282: p_error_text => SUBSTRB(SQLERRM,1,240));
3283: END IF;
3284: FND_MSG_PUB.count_and_get(
3285: p_encoded => FND_API.G_FALSE,
3286: p_count => x_msg_count,
3287: p_data => x_msg_data);
3288: END;
3289:
3290: -- Define procedure install_existing_instance
3291: -- This API is used to assign an existing instance to a UC node.
3292: PROCEDURE install_existing_instance(
3293: p_api_version IN NUMBER := 1.0,
3294: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3295: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3296: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3297: x_return_status OUT NOCOPY VARCHAR2,
3298: x_msg_count OUT NOCOPY NUMBER,
3291: -- This API is used to assign an existing instance to a UC node.
3292: PROCEDURE install_existing_instance(
3293: p_api_version IN NUMBER := 1.0,
3294: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3295: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3296: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3297: x_return_status OUT NOCOPY VARCHAR2,
3298: x_msg_count OUT NOCOPY NUMBER,
3299: x_msg_data OUT NOCOPY VARCHAR2,
3292: PROCEDURE install_existing_instance(
3293: p_api_version IN NUMBER := 1.0,
3294: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3295: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3296: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3297: x_return_status OUT NOCOPY VARCHAR2,
3298: x_msg_count OUT NOCOPY NUMBER,
3299: x_msg_data OUT NOCOPY VARCHAR2,
3300: p_uc_header_id IN NUMBER,
3608: --c.last_vld_organization_id
3609:
3610: BEGIN
3611: --Initialize API return status to success
3612: x_return_status := FND_API.G_RET_STS_SUCCESS;
3613:
3614: -- Standard Start of API savepoint
3615: SAVEPOINT install_existing_instance;
3616:
3614: -- Standard Start of API savepoint
3615: SAVEPOINT install_existing_instance;
3616:
3617: --Standard call to check for call compatibility.
3618: IF NOT FND_API.compatible_api_call(
3619: l_api_version,
3620: p_api_version,
3621: l_api_name, G_PKG_NAME)
3622: THEN
3619: l_api_version,
3620: p_api_version,
3621: l_api_name, G_PKG_NAME)
3622: THEN
3623: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3624: END IF;
3625:
3626: --Initialize message list if p_init_msg_list is set to TRUE.
3627: IF FND_API.to_boolean( p_init_msg_list ) THEN
3623: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3624: END IF;
3625:
3626: --Initialize message list if p_init_msg_list is set to TRUE.
3627: IF FND_API.to_boolean( p_init_msg_list ) THEN
3628: FND_MSG_PUB.initialize;
3629: END IF;
3630:
3631: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3639: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
3640: FND_MESSAGE.set_token('NAME', 'prod_user_flag');
3641: FND_MESSAGE.set_token('VALUE', p_prod_user_flag);
3642: FND_MSG_PUB.add;
3643: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3644: END IF;
3645:
3646: --Validate input parameter p_uc_header_id, its two statuses
3647: OPEN check_uc_header;
3651: FND_MESSAGE.set_token('NAME', 'uc_header_id');
3652: FND_MESSAGE.set_token('VALUE', p_uc_header_id);
3653: FND_MSG_PUB.add;
3654: CLOSE check_uc_header;
3655: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3656: ELSE
3657:
3658: -- ACL :: Changes for R12
3659: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
3655: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3656: ELSE
3657:
3658: -- ACL :: Changes for R12
3659: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
3660: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
3661: FND_MSG_PUB.add;
3662: CLOSE check_uc_header;
3663: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3659: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
3660: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
3661: FND_MSG_PUB.add;
3662: CLOSE check_uc_header;
3663: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3664: END IF;
3665:
3666: ahl_util_uc_pkg.get_root_uc_attr(p_uc_header_id,
3667: l_root_uc_header_id,
3673: l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE')) THEN
3674: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_NOT_ACTIVE' );
3675: FND_MSG_PUB.add;
3676: CLOSE check_uc_header;
3677: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3678: ELSIF (p_prod_user_flag = 'N' AND
3679: (l_root_uc_status_code = 'APPROVAL_PENDING' OR
3680: l_root_active_uc_status_code = 'APPROVAL_PENDING')) THEN
3681: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
3681: FND_MESSAGE.set_name( 'AHL','AHL_UC_STATUS_PENDING' );
3682: FND_MESSAGE.set_token('UC_HEADER_ID', l_root_uc_header_id);
3683: FND_MSG_PUB.add;
3684: CLOSE check_uc_header;
3685: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3686: ELSE
3687: CLOSE check_uc_header;
3688: END IF;
3689: END IF;
3712: --We don't allow installing child instance to an extra node.
3713: FND_MESSAGE.set_name( 'AHL','AHL_UC_INSTANCE_NOT_IN_UC' );
3714: FND_MESSAGE.set_token('INSTANCE', p_parent_instance_id);
3715: FND_MSG_PUB.add;
3716: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3717: END IF;
3718: END IF;
3719: --Then validate p_relationship_id can be child of l_parent_relationship_id
3720: OPEN check_parent_relationship(p_relationship_id, l_parent_relationship_id);
3724: FND_MESSAGE.set_token('CHILD', p_relationship_id);
3725: FND_MESSAGE.set_token('PARENT', l_parent_relationship_id);
3726: FND_MSG_PUB.add;
3727: CLOSE check_parent_relationship;
3728: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3729: ELSE
3730: CLOSE check_parent_relationship;
3731: END IF;
3732: --Make sure position p_relationship_id is empty
3736: FND_MESSAGE.set_name( 'AHL','AHL_UC_POSITION_INSTALLED' );
3737: FND_MESSAGE.set_token('POSITION', p_relationship_id);
3738: FND_MSG_PUB.add;
3739: CLOSE check_position_empty;
3740: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3741: ELSE
3742: CLOSE check_position_empty;
3743: END IF;
3744:
3752: FND_MESSAGE.set_token('CSII',p_instance_id);
3753: FND_MESSAGE.set_token('POSN_REF',p_relationship_id);
3754: FND_MSG_PUB.add;
3755: --dbms_output.put_line('CSI item instance ID does not exist.');
3756: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3757: END IF;
3758: CLOSE csi_item_instance_csr;
3759:
3760: --Ensure the instance is available, not installed. For extra node, even if it
3765: CLOSE check_instance_installed;
3766: FND_MESSAGE.set_name('AHL','AHL_UC_INSTANCE_INSTALLED');
3767: FND_MESSAGE.set_token('INSTANCE',p_instance_id);
3768: FND_MSG_PUB.add;
3769: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3770: END IF;
3771: CLOSE check_instance_installed;
3772:
3773:
3777: CLOSE csi_item_instance_csr;
3778: FND_MESSAGE.set_name('AHL','AHL_COM_RECORD_CHANGED');
3779: FND_MSG_PUB.add;
3780: --dbms_output.put_line('Item Instance id object version changed');
3781: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3782: END IF;
3783: */
3784: --Validate the status of the instance
3785: IF (l_instance_rec.location_type_code IN ('PO','IN-TRANSIT','PROJECT','INVENTORY')) THEN
3813:
3814: --Validate installation date.
3815: --Keep the installation date validation only for production user(04/21/2004).
3816: IF (l_instance_rec.install_date IS NOT NULL AND
3817: l_instance_rec.install_date <> FND_API.G_MISS_DATE) THEN
3818: IF (p_prod_user_flag = 'Y' AND trunc(l_instance_rec.install_date) > trunc(SYSDATE)) THEN
3819: FND_MESSAGE.set_name('AHL','AHL_UC_INSTDATE_INVALID');
3820: FND_MESSAGE.set_token('DATE',l_instance_rec.install_date);
3821: FND_MESSAGE.set_token('POSN_REF',p_relationship_id);
3826:
3827: --Check Error Message stack.
3828: l_msg_count := FND_MSG_PUB.count_msg;
3829: IF l_msg_count > 0 THEN
3830: RAISE FND_API.G_EXC_ERROR;
3831: END IF;
3832:
3833: --Before installing the existing instance, make sure its operating unit is exactly the same as that
3834: --of the root instance.
3836: IF l_root_instance_ou IS NULL THEN
3837: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
3838: FND_MESSAGE.set_token('INSTANCE', l_root_instance_id);
3839: FND_MSG_PUB.add;
3840: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3841: ELSIF l_instance_ou IS NULL THEN
3842: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
3843: FND_MESSAGE.set_token('INSTANCE', p_instance_id);
3844: FND_MSG_PUB.add;
3841: ELSIF l_instance_ou IS NULL THEN
3842: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
3843: FND_MESSAGE.set_token('INSTANCE', p_instance_id);
3844: FND_MSG_PUB.add;
3845: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3846: ELSIF l_root_instance_ou <> l_instance_ou THEN
3847: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_UNMATCH');
3848: FND_MESSAGE.set_token('INSTANCE', p_instance_id);
3849: FND_MESSAGE.set_token('ROOT_INSTANCE', l_root_instance_id);
3847: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_UNMATCH');
3848: FND_MESSAGE.set_token('INSTANCE', p_instance_id);
3849: FND_MESSAGE.set_token('ROOT_INSTANCE', l_root_instance_id);
3850: FND_MSG_PUB.add;
3851: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3852: END IF;
3853:
3854: --Check the instance to be installed is a leaf node, branch node or sub-unit top node(in this
3855: --case, it might also be a leaf node in csi_ii_relationships if all of its descendants are empty)
3856: OPEN get_uc_header(p_instance_id);
3857: FETCH get_uc_header INTO l_sub_uc_header_id, l_mc_header_id;
3858: IF get_uc_header%FOUND THEN
3859: -- ACL :: R12 Changes
3860: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => l_sub_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
3861: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
3862: FND_MSG_PUB.add;
3863: CLOSE check_uc_header;
3864: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3860: IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => l_sub_uc_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
3861: FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
3862: FND_MSG_PUB.add;
3863: CLOSE check_uc_header;
3864: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3865: END IF;
3866: --The instance is a unit top node, needs to see whether it can be a candidate sub-unit
3867: --in that position
3868: l_instance_type := 'S';
3878: FND_MESSAGE.set_token('INSTANCE', p_instance_id);
3879: FND_MESSAGE.set_token('POSITION', p_relationship_id);
3880: FND_MSG_PUB.add;
3881: CLOSE get_uc_header;
3882: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3883: END IF;
3884: ELSE
3885: OPEN check_instance_leaf(p_instance_id);
3886: FETCH check_instance_leaf INTO l_dummy;
3890: --updated as well.
3891: l_instance_type := 'B';
3892: ahl_uc_tree_pvt.remap_uc_subtree(
3893: p_api_version => 1.0,
3894: p_init_msg_list => FND_API.G_FALSE,
3895: p_commit => FND_API.G_FALSE,
3896: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3897: x_return_status => l_return_status,
3898: x_msg_count => l_msg_count,
3891: l_instance_type := 'B';
3892: ahl_uc_tree_pvt.remap_uc_subtree(
3893: p_api_version => 1.0,
3894: p_init_msg_list => FND_API.G_FALSE,
3895: p_commit => FND_API.G_FALSE,
3896: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3897: x_return_status => l_return_status,
3898: x_msg_count => l_msg_count,
3899: x_msg_data => l_msg_data,
3892: ahl_uc_tree_pvt.remap_uc_subtree(
3893: p_api_version => 1.0,
3894: p_init_msg_list => FND_API.G_FALSE,
3895: p_commit => FND_API.G_FALSE,
3896: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3897: x_return_status => l_return_status,
3898: x_msg_count => l_msg_count,
3899: x_msg_data => l_msg_data,
3900: p_instance_id => p_instance_id,
3898: x_msg_count => l_msg_count,
3899: x_msg_data => l_msg_data,
3900: p_instance_id => p_instance_id,
3901: p_relationship_id => p_relationship_id);
3902: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3903: CLOSE check_instance_leaf;
3904: RAISE FND_API.G_EXC_ERROR;
3905: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3906: CLOSE check_instance_leaf;
3900: p_instance_id => p_instance_id,
3901: p_relationship_id => p_relationship_id);
3902: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3903: CLOSE check_instance_leaf;
3904: RAISE FND_API.G_EXC_ERROR;
3905: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3906: CLOSE check_instance_leaf;
3907: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3908: END IF;
3901: p_relationship_id => p_relationship_id);
3902: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3903: CLOSE check_instance_leaf;
3904: RAISE FND_API.G_EXC_ERROR;
3905: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3906: CLOSE check_instance_leaf;
3907: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3908: END IF;
3909: ELSE
3903: CLOSE check_instance_leaf;
3904: RAISE FND_API.G_EXC_ERROR;
3905: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3906: CLOSE check_instance_leaf;
3907: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3908: END IF;
3909: ELSE
3910: l_instance_type := 'L';
3911: END IF;
3915:
3916: --Build CSI transaction record, first get transaction_type_id
3917: AHL_Util_UC_Pkg.getcsi_transaction_id('UC_UPDATE',l_transaction_type_id, l_return_val);
3918: IF NOT(l_return_val) THEN
3919: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3920: END IF;
3921:
3922: l_csi_transaction_rec.source_transaction_date := SYSDATE;
3923: l_csi_transaction_rec.transaction_type_id := l_transaction_type_id;
3923: l_csi_transaction_rec.transaction_type_id := l_transaction_type_id;
3924:
3925: --Update installation date if provided.
3926: IF (l_instance_rec.install_date IS NOT NULL AND
3927: l_instance_rec.install_date <> FND_API.G_MISS_DATE) THEN
3928: -- Build CSI instance rec.
3929: l_csi_instance_rec.instance_id := p_instance_id;
3930: l_csi_instance_rec.object_version_number := l_instance_rec.object_version_number;
3931: l_csi_instance_rec.install_date := l_instance_rec.install_date;
3944: x_instance_id_lst => l_csi_instance_id_lst,
3945: x_return_status => l_return_status,
3946: x_msg_count => l_msg_count,
3947: x_msg_data => l_msg_data);
3948: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3949: RAISE FND_API.G_EXC_ERROR;
3950: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3951: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3952: END IF;
3945: x_return_status => l_return_status,
3946: x_msg_count => l_msg_count,
3947: x_msg_data => l_msg_data);
3948: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3949: RAISE FND_API.G_EXC_ERROR;
3950: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3951: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3952: END IF;
3953: END IF;
3946: x_msg_count => l_msg_count,
3947: x_msg_data => l_msg_data);
3948: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3949: RAISE FND_API.G_EXC_ERROR;
3950: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3951: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3952: END IF;
3953: END IF;
3954:
3947: x_msg_data => l_msg_data);
3948: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3949: RAISE FND_API.G_EXC_ERROR;
3950: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3951: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3952: END IF;
3953: END IF;
3954:
3955: --Need to check if the instance picked from CSI with serial_number has a serial_no_tag, and
3961: IF get_serial_number%NOTFOUND THEN
3962: FND_MESSAGE.set_name('AHL', 'AHL_UC_CSII_INVALID');
3963: FND_MESSAGE.set_token('CSII', p_instance_id);
3964: FND_MSG_PUB.add;
3965: RAISE FND_API.G_EXC_ERROR;
3966: CLOSE get_serial_number;
3967: ELSE
3968: CLOSE get_serial_number;
3969: END IF;
4007: x_return_status => l_return_status,
4008: x_msg_count => l_msg_count,
4009: x_msg_data => l_msg_data);
4010:
4011: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4012: RAISE FND_API.G_EXC_ERROR;
4013: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4014: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4015: END IF;
4008: x_msg_count => l_msg_count,
4009: x_msg_data => l_msg_data);
4010:
4011: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4012: RAISE FND_API.G_EXC_ERROR;
4013: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4014: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4015: END IF;
4016: END IF;
4009: x_msg_data => l_msg_data);
4010:
4011: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4012: RAISE FND_API.G_EXC_ERROR;
4013: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4014: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4015: END IF;
4016: END IF;
4017: END IF;
4010:
4011: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4012: RAISE FND_API.G_EXC_ERROR;
4013: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4014: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4015: END IF;
4016: END IF;
4017: END IF;
4018:
4034: FND_MESSAGE.set_token('NAME', 'csi_ii_ovn');
4035: FND_MESSAGE.set_token('VALUE', p_csi_ii_ovn);
4036: FND_MSG_PUB.add;
4037: CLOSE check_extra_node;
4038: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4039: ELSIF l_object_version_number <> p_csi_ii_ovn THEN
4040: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
4041: FND_MSG_PUB.add;
4042: CLOSE check_extra_node;
4039: ELSIF l_object_version_number <> p_csi_ii_ovn THEN
4040: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
4041: FND_MSG_PUB.add;
4042: CLOSE check_extra_node;
4043: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4044: END IF;
4045: l_csi_relationship_rec.relationship_id := l_csi_relationship_id;
4046: l_csi_relationship_rec.object_version_number := l_object_version_number;
4047: l_csi_relationship_rec.relationship_type_code := 'COMPONENT-OF';
4077: FND_MESSAGE.set_token('NAME', 'csi_ii_ovn');
4078: FND_MESSAGE.set_token('VALUE', p_csi_ii_ovn);
4079: FND_MSG_PUB.add;
4080: CLOSE check_unasgnd_extra_node_csr;
4081: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4082: ELSIF l_object_version_number <> p_csi_ii_ovn THEN
4083: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
4084: FND_MSG_PUB.add;
4085: CLOSE check_unasgnd_extra_node_csr;
4082: ELSIF l_object_version_number <> p_csi_ii_ovn THEN
4083: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
4084: FND_MSG_PUB.add;
4085: CLOSE check_unasgnd_extra_node_csr;
4086: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4087: END IF;
4088:
4089: -- expire the existing relationship
4090: -- Set CSI relationship record
4099: x_return_status => l_return_status,
4100: x_msg_count => l_msg_count,
4101: x_msg_data => l_msg_data);
4102:
4103: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4104: RAISE FND_API.G_EXC_ERROR;
4105: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4106: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4107: END IF;
4100: x_msg_count => l_msg_count,
4101: x_msg_data => l_msg_data);
4102:
4103: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4104: RAISE FND_API.G_EXC_ERROR;
4105: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4106: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4107: END IF;
4108:
4101: x_msg_data => l_msg_data);
4102:
4103: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4104: RAISE FND_API.G_EXC_ERROR;
4105: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4106: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4107: END IF;
4108:
4109: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4102:
4103: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4104: RAISE FND_API.G_EXC_ERROR;
4105: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4106: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4107: END IF;
4108:
4109: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4110: FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name,
4125: x_return_status => l_return_status,
4126: x_msg_count => l_msg_count,
4127: x_msg_data => l_msg_data);
4128:
4129: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4130: RAISE FND_API.G_EXC_ERROR;
4131: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4132: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4133: END IF;
4126: x_msg_count => l_msg_count,
4127: x_msg_data => l_msg_data);
4128:
4129: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4130: RAISE FND_API.G_EXC_ERROR;
4131: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4132: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4133: END IF;
4134:
4127: x_msg_data => l_msg_data);
4128:
4129: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4130: RAISE FND_API.G_EXC_ERROR;
4131: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4132: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4133: END IF;
4134:
4135: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4128:
4129: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4130: RAISE FND_API.G_EXC_ERROR;
4131: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4132: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4133: END IF;
4134:
4135: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4136: FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name,
4159:
4160: CLOSE check_unasgnd_extra_node_csr;
4161: END IF;
4162: CLOSE check_extra_node;
4163: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4164: RAISE FND_API.G_EXC_ERROR;
4165: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4166: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4167: END IF;
4160: CLOSE check_unasgnd_extra_node_csr;
4161: END IF;
4162: CLOSE check_extra_node;
4163: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4164: RAISE FND_API.G_EXC_ERROR;
4165: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4166: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4167: END IF;
4168:
4161: END IF;
4162: CLOSE check_extra_node;
4163: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4164: RAISE FND_API.G_EXC_ERROR;
4165: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4166: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4167: END IF;
4168:
4169: --If the node is the top node of a sub-unit then just itself, otherwise if it is a
4162: CLOSE check_extra_node;
4163: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4164: RAISE FND_API.G_EXC_ERROR;
4165: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4166: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4167: END IF;
4168:
4169: --If the node is the top node of a sub-unit then just itself, otherwise if it is a
4170: --branch node, then get all of its first level sub-units. For all of these sub-units,
4190: --Not necessary to check the object_version_number here
4191: --Copy the change to history table
4192: ahl_util_uc_pkg.copy_uc_header_to_history(l_sub_uc_header_id, l_return_status);
4193: --IF history copy failed, then don't raise exception, just add the message to the message stack
4194: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4195: FND_MESSAGE.set_name('AHL', 'AHL_UC_HISTORY_COPY_FAILED');
4196: FND_MSG_PUB.add;
4197: END IF;
4198: ELSIF l_instance_type = 'B' THEN --this instance is a branch node
4216: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_NOT_IN_UC');
4217: FND_MESSAGE.set_token('INSTANCE', l_get_1st_level_subunit.subject_id);
4218: FND_MSG_PUB.add;
4219: CLOSE get_uc_header;
4220: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4221: ELSE
4222: CLOSE get_uc_header;
4223: END IF;
4224:
4225: --Copy the change to history table
4226: ahl_util_uc_pkg.copy_uc_header_to_history(l_sub_uc_header_id, l_return_status);
4227: --IF history copy failed, then don't raise exception, just add the messageto the message stack
4228:
4229: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4230: FND_MESSAGE.set_name('AHL', 'AHL_UC_HISTORY_COPY_FAILED');
4231: FND_MSG_PUB.add;
4232: END IF;
4233: END LOOP;
4235:
4236: --Call completeness check API for the newly assigned instance
4237: ahl_uc_validation_pub.validate_complete_for_pos(
4238: p_api_version => 1.0,
4239: p_init_msg_list => FND_API.G_FALSE,
4240: p_commit => FND_API.G_FALSE,
4241: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4242: x_return_status => l_return_status,
4243: x_msg_count => l_msg_count,
4236: --Call completeness check API for the newly assigned instance
4237: ahl_uc_validation_pub.validate_complete_for_pos(
4238: p_api_version => 1.0,
4239: p_init_msg_list => FND_API.G_FALSE,
4240: p_commit => FND_API.G_FALSE,
4241: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4242: x_return_status => l_return_status,
4243: x_msg_count => l_msg_count,
4244: x_msg_data => l_msg_data,
4237: ahl_uc_validation_pub.validate_complete_for_pos(
4238: p_api_version => 1.0,
4239: p_init_msg_list => FND_API.G_FALSE,
4240: p_commit => FND_API.G_FALSE,
4241: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4242: x_return_status => l_return_status,
4243: x_msg_count => l_msg_count,
4244: x_msg_data => l_msg_data,
4245: p_csi_instance_id => p_instance_id,
4243: x_msg_count => l_msg_count,
4244: x_msg_data => l_msg_data,
4245: p_csi_instance_id => p_instance_id,
4246: x_error_tbl => x_warning_msg_tbl);
4247: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4248: RAISE FND_API.G_EXC_ERROR;
4249: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4250: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4251: END IF;
4244: x_msg_data => l_msg_data,
4245: p_csi_instance_id => p_instance_id,
4246: x_error_tbl => x_warning_msg_tbl);
4247: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4248: RAISE FND_API.G_EXC_ERROR;
4249: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4250: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4251: END IF;
4252:
4245: p_csi_instance_id => p_instance_id,
4246: x_error_tbl => x_warning_msg_tbl);
4247: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4248: RAISE FND_API.G_EXC_ERROR;
4249: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4250: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4251: END IF;
4252:
4253: --For sub unit top node, it is not necessary to have this item interchange type
4246: x_error_tbl => x_warning_msg_tbl);
4247: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4248: RAISE FND_API.G_EXC_ERROR;
4249: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4250: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4251: END IF;
4252:
4253: --For sub unit top node, it is not necessary to have this item interchange type
4254: --code validation check
4259: FND_MESSAGE.set_name('AHL', 'AHL_UC_ITEM_INTERCHANGE_MISS');
4260: FND_MESSAGE.set_token('INSTANCE', p_instance_id);
4261: FND_MSG_PUB.add;
4262: CLOSE get_interchange_type;
4263: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4264: ELSIF l_interchange_type_code = '1-WAY INTERCHANGEABLE' THEN
4265: FND_MESSAGE.set_name('AHL', 'AHL_UC_1WAY_ITEM_INSTALLED');
4266: SELECT f.meaning INTO l_position_ref_meaning
4267: FROM ahl_mc_relationships a,
4298: AND object_version_number = l_root_uc_ovn;
4299: IF SQL%ROWCOUNT = 0 THEN
4300: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
4301: FND_MSG_PUB.add;
4302: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4303: END IF;
4304: ELSIF (l_root_uc_status_code IN ('COMPLETE', 'INCOMPLETE') AND
4305: (l_root_active_uc_status_code IS NULL OR
4306: l_root_active_uc_status_code <> 'UNAPPROVED')) THEN
4316: AND object_version_number = l_root_uc_ovn;
4317: IF SQL%ROWCOUNT = 0 THEN
4318: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
4319: FND_MSG_PUB.add;
4320: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4321: END IF;
4322: ELSIF l_root_uc_status_code NOT IN ('COMPLETE', 'INCOMPLETE', 'DRAFT') THEN
4323: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4324: FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
4338: AND object_version_number = l_root_uc_ovn;
4339: IF SQL%ROWCOUNT = 0 THEN
4340: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
4341: FND_MSG_PUB.add;
4342: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4343: END IF;
4344: END IF;
4345: ELSIF (p_prod_user_flag = 'Y' AND
4346: x_warning_msg_tbl.count > 0 AND
4355: AND object_version_number = l_root_uc_ovn;
4356: IF SQL%ROWCOUNT = 0 THEN
4357: FND_MESSAGE.set_name( 'AHL','AHL_COM_RECORD_CHANGED' );
4358: FND_MSG_PUB.add;
4359: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4360: END IF;
4361: END IF;
4362:
4363: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4369: --Get all the error messages from the previous steps (if any) and raise the appropriate Exception
4370: l_msg_count := FND_MSG_PUB.count_msg;
4371: IF l_msg_count > 0 THEN
4372: x_msg_count := l_msg_count;
4373: RAISE FND_API.G_EXC_ERROR;
4374: END IF;
4375: -- Perform the Commit (if requested)
4376: IF FND_API.to_boolean(p_commit) THEN
4377: COMMIT;
4372: x_msg_count := l_msg_count;
4373: RAISE FND_API.G_EXC_ERROR;
4374: END IF;
4375: -- Perform the Commit (if requested)
4376: IF FND_API.to_boolean(p_commit) THEN
4377: COMMIT;
4378: END IF;
4379: --Count and Get messages(optional)
4380: FND_MSG_PUB.count_and_get(
4377: COMMIT;
4378: END IF;
4379: --Count and Get messages(optional)
4380: FND_MSG_PUB.count_and_get(
4381: p_encoded => FND_API.G_FALSE,
4382: p_count => x_msg_count,
4383: p_data => x_msg_data);
4384: EXCEPTION
4385: WHEN FND_API.G_EXC_ERROR THEN
4381: p_encoded => FND_API.G_FALSE,
4382: p_count => x_msg_count,
4383: p_data => x_msg_data);
4384: EXCEPTION
4385: WHEN FND_API.G_EXC_ERROR THEN
4386: ROLLBACK TO install_existing_instance;
4387: x_return_status := FND_API.G_RET_STS_ERROR;
4388: FND_MSG_PUB.count_and_get(
4389: p_encoded => FND_API.G_FALSE,
4383: p_data => x_msg_data);
4384: EXCEPTION
4385: WHEN FND_API.G_EXC_ERROR THEN
4386: ROLLBACK TO install_existing_instance;
4387: x_return_status := FND_API.G_RET_STS_ERROR;
4388: FND_MSG_PUB.count_and_get(
4389: p_encoded => FND_API.G_FALSE,
4390: p_count => x_msg_count,
4391: p_data => x_msg_data);
4385: WHEN FND_API.G_EXC_ERROR THEN
4386: ROLLBACK TO install_existing_instance;
4387: x_return_status := FND_API.G_RET_STS_ERROR;
4388: FND_MSG_PUB.count_and_get(
4389: p_encoded => FND_API.G_FALSE,
4390: p_count => x_msg_count,
4391: p_data => x_msg_data);
4392: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4393: ROLLBACK TO install_existing_instance;
4388: FND_MSG_PUB.count_and_get(
4389: p_encoded => FND_API.G_FALSE,
4390: p_count => x_msg_count,
4391: p_data => x_msg_data);
4392: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4393: ROLLBACK TO install_existing_instance;
4394: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4395: FND_MSG_PUB.count_and_get(
4396: p_encoded => FND_API.G_FALSE,
4390: p_count => x_msg_count,
4391: p_data => x_msg_data);
4392: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4393: ROLLBACK TO install_existing_instance;
4394: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4395: FND_MSG_PUB.count_and_get(
4396: p_encoded => FND_API.G_FALSE,
4397: p_count => x_msg_count,
4398: p_data => x_msg_data);
4392: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4393: ROLLBACK TO install_existing_instance;
4394: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4395: FND_MSG_PUB.count_and_get(
4396: p_encoded => FND_API.G_FALSE,
4397: p_count => x_msg_count,
4398: p_data => x_msg_data);
4399: WHEN OTHERS THEN
4400: ROLLBACK TO install_existing_instance;
4397: p_count => x_msg_count,
4398: p_data => x_msg_data);
4399: WHEN OTHERS THEN
4400: ROLLBACK TO install_existing_instance;
4401: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4402: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4403: THEN
4404: FND_MSG_PUB.add_exc_msg(
4405: p_pkg_name => G_PKG_NAME,
4406: p_procedure_name => l_api_name,
4407: p_error_text => SUBSTRB(SQLERRM,1,240));
4408: END IF;
4409: FND_MSG_PUB.count_and_get(
4410: p_encoded => FND_API.G_FALSE,
4411: p_count => x_msg_count,
4412: p_data => x_msg_data);
4413: END;
4414:
4416: -- This API is used by Production user to make parts change: replace an old instance
4417: -- a new one in a UC tree.
4418: PROCEDURE swap_instance(
4419: p_api_version IN NUMBER := 1.0,
4420: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4421: p_commit IN VARCHAR2 := FND_API.G_FALSE,
4422: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4423: x_return_status OUT NOCOPY VARCHAR2,
4424: x_msg_count OUT NOCOPY NUMBER,
4417: -- a new one in a UC tree.
4418: PROCEDURE swap_instance(
4419: p_api_version IN NUMBER := 1.0,
4420: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4421: p_commit IN VARCHAR2 := FND_API.G_FALSE,
4422: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4423: x_return_status OUT NOCOPY VARCHAR2,
4424: x_msg_count OUT NOCOPY NUMBER,
4425: x_msg_data OUT NOCOPY VARCHAR2,
4418: PROCEDURE swap_instance(
4419: p_api_version IN NUMBER := 1.0,
4420: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4421: p_commit IN VARCHAR2 := FND_API.G_FALSE,
4422: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4423: x_return_status OUT NOCOPY VARCHAR2,
4424: x_msg_count OUT NOCOPY NUMBER,
4425: x_msg_data OUT NOCOPY VARCHAR2,
4426: p_uc_header_id IN NUMBER,
4448: AND trunc(nvl(active_start_date, SYSDATE)) <= trunc(SYSDATE)
4449: AND trunc(nvl(active_end_date, SYSDATE+1)) > trunc(SYSDATE);
4450: BEGIN
4451: -- Initialize API return status to success
4452: x_return_status := FND_API.G_RET_STS_SUCCESS;
4453:
4454: -- Standard Start of API savepoint
4455: SAVEPOINT swap_instance;
4456:
4454: -- Standard Start of API savepoint
4455: SAVEPOINT swap_instance;
4456:
4457: -- Standard call to check for call compatibility.
4458: IF NOT FND_API.compatible_api_call(
4459: l_api_version,
4460: p_api_version,
4461: l_api_name,
4462: G_PKG_NAME)
4460: p_api_version,
4461: l_api_name,
4462: G_PKG_NAME)
4463: THEN
4464: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4465: END IF;
4466:
4467: -- Initialize message list if p_init_msg_list is set to TRUE.
4468: IF FND_API.to_boolean(p_init_msg_list) THEN
4464: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4465: END IF;
4466:
4467: -- Initialize message list if p_init_msg_list is set to TRUE.
4468: IF FND_API.to_boolean(p_init_msg_list) THEN
4469: FND_MSG_PUB.initialize;
4470: END IF;
4471:
4472: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4477:
4478: --Call remove_instance to remove the old instance
4479: remove_instance(
4480: p_api_version => 1.0,
4481: p_init_msg_list => FND_API.G_FALSE,
4482: p_commit => FND_API.G_FALSE,
4483: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4484: x_return_status => l_return_status,
4485: x_msg_count => l_msg_count,
4478: --Call remove_instance to remove the old instance
4479: remove_instance(
4480: p_api_version => 1.0,
4481: p_init_msg_list => FND_API.G_FALSE,
4482: p_commit => FND_API.G_FALSE,
4483: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4484: x_return_status => l_return_status,
4485: x_msg_count => l_msg_count,
4486: x_msg_data => l_msg_data,
4479: remove_instance(
4480: p_api_version => 1.0,
4481: p_init_msg_list => FND_API.G_FALSE,
4482: p_commit => FND_API.G_FALSE,
4483: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4484: x_return_status => l_return_status,
4485: x_msg_count => l_msg_count,
4486: x_msg_data => l_msg_data,
4487: p_uc_header_id => p_uc_header_id,
4487: p_uc_header_id => p_uc_header_id,
4488: p_instance_id => p_old_instance_id,
4489: p_csi_ii_ovn => p_csi_ii_ovn,
4490: p_prod_user_flag => p_prod_user_flag);
4491: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4492: RAISE FND_API.G_EXC_ERROR;
4493: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4494: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4495: END IF;
4488: p_instance_id => p_old_instance_id,
4489: p_csi_ii_ovn => p_csi_ii_ovn,
4490: p_prod_user_flag => p_prod_user_flag);
4491: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4492: RAISE FND_API.G_EXC_ERROR;
4493: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4494: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4495: END IF;
4496:
4489: p_csi_ii_ovn => p_csi_ii_ovn,
4490: p_prod_user_flag => p_prod_user_flag);
4491: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4492: RAISE FND_API.G_EXC_ERROR;
4493: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4494: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4495: END IF;
4496:
4497: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4490: p_prod_user_flag => p_prod_user_flag);
4491: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4492: RAISE FND_API.G_EXC_ERROR;
4493: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4494: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4495: END IF;
4496:
4497: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4498: FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
4507: IF check_relationship_id%NOTFOUND THEN
4508: FND_MESSAGE.set_name( 'AHL','AHL_UC_POSITION_NOT_SAME' );
4509: FND_MESSAGE.set_token('POSITION', p_relationship_id);
4510: FND_MSG_PUB.add;
4511: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4512: END IF;
4513:
4514: --Call install_existing_instance to install the new instance
4515: install_existing_instance(p_api_version => 1.0,
4512: END IF;
4513:
4514: --Call install_existing_instance to install the new instance
4515: install_existing_instance(p_api_version => 1.0,
4516: p_init_msg_list => FND_API.G_FALSE,
4517: p_commit => FND_API.G_FALSE,
4518: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4519: x_return_status => l_return_status,
4520: x_msg_count => l_msg_count,
4513:
4514: --Call install_existing_instance to install the new instance
4515: install_existing_instance(p_api_version => 1.0,
4516: p_init_msg_list => FND_API.G_FALSE,
4517: p_commit => FND_API.G_FALSE,
4518: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4519: x_return_status => l_return_status,
4520: x_msg_count => l_msg_count,
4521: x_msg_data => l_msg_data,
4514: --Call install_existing_instance to install the new instance
4515: install_existing_instance(p_api_version => 1.0,
4516: p_init_msg_list => FND_API.G_FALSE,
4517: p_commit => FND_API.G_FALSE,
4518: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4519: x_return_status => l_return_status,
4520: x_msg_count => l_msg_count,
4521: x_msg_data => l_msg_data,
4522: p_uc_header_id => p_uc_header_id,
4526: p_relationship_id => p_relationship_id,
4527: p_csi_ii_ovn => p_csi_ii_ovn,
4528: p_prod_user_flag => p_prod_user_flag,
4529: x_warning_msg_tbl => x_warning_msg_tbl);
4530: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4531: RAISE FND_API.G_EXC_ERROR;
4532: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4533: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4534: END IF;
4527: p_csi_ii_ovn => p_csi_ii_ovn,
4528: p_prod_user_flag => p_prod_user_flag,
4529: x_warning_msg_tbl => x_warning_msg_tbl);
4530: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4531: RAISE FND_API.G_EXC_ERROR;
4532: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4533: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4534: END IF;
4535:
4528: p_prod_user_flag => p_prod_user_flag,
4529: x_warning_msg_tbl => x_warning_msg_tbl);
4530: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4531: RAISE FND_API.G_EXC_ERROR;
4532: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4533: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4534: END IF;
4535:
4536: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4529: x_warning_msg_tbl => x_warning_msg_tbl);
4530: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4531: RAISE FND_API.G_EXC_ERROR;
4532: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4533: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4534: END IF;
4535:
4536: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4537: FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
4542: -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
4543: l_msg_count := FND_MSG_PUB.count_msg;
4544: IF l_msg_count > 0 THEN
4545: x_msg_count := l_msg_count;
4546: RAISE FND_API.G_EXC_ERROR;
4547: END IF;
4548: -- Count and Get messages (optional)
4549: FND_MSG_PUB.count_and_get(
4550: p_encoded => FND_API.G_FALSE,
4546: RAISE FND_API.G_EXC_ERROR;
4547: END IF;
4548: -- Count and Get messages (optional)
4549: FND_MSG_PUB.count_and_get(
4550: p_encoded => FND_API.G_FALSE,
4551: p_count => x_msg_count,
4552: p_data => x_msg_data);
4553: EXCEPTION
4554: WHEN FND_API.G_EXC_ERROR THEN
4550: p_encoded => FND_API.G_FALSE,
4551: p_count => x_msg_count,
4552: p_data => x_msg_data);
4553: EXCEPTION
4554: WHEN FND_API.G_EXC_ERROR THEN
4555: ROLLBACK TO swap_instance;
4556: x_return_status := FND_API.G_RET_STS_ERROR ;
4557: FND_MSG_PUB.count_and_get(
4558: p_encoded => FND_API.G_FALSE,
4552: p_data => x_msg_data);
4553: EXCEPTION
4554: WHEN FND_API.G_EXC_ERROR THEN
4555: ROLLBACK TO swap_instance;
4556: x_return_status := FND_API.G_RET_STS_ERROR ;
4557: FND_MSG_PUB.count_and_get(
4558: p_encoded => FND_API.G_FALSE,
4559: p_count => x_msg_count,
4560: p_data => x_msg_data);
4554: WHEN FND_API.G_EXC_ERROR THEN
4555: ROLLBACK TO swap_instance;
4556: x_return_status := FND_API.G_RET_STS_ERROR ;
4557: FND_MSG_PUB.count_and_get(
4558: p_encoded => FND_API.G_FALSE,
4559: p_count => x_msg_count,
4560: p_data => x_msg_data);
4561: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4562: ROLLBACK TO swap_instance;
4557: FND_MSG_PUB.count_and_get(
4558: p_encoded => FND_API.G_FALSE,
4559: p_count => x_msg_count,
4560: p_data => x_msg_data);
4561: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4562: ROLLBACK TO swap_instance;
4563: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4564: FND_MSG_PUB.count_and_get(
4565: p_encoded => FND_API.G_FALSE,
4559: p_count => x_msg_count,
4560: p_data => x_msg_data);
4561: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4562: ROLLBACK TO swap_instance;
4563: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4564: FND_MSG_PUB.count_and_get(
4565: p_encoded => FND_API.G_FALSE,
4566: p_count => x_msg_count,
4567: p_data => x_msg_data);
4561: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4562: ROLLBACK TO swap_instance;
4563: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4564: FND_MSG_PUB.count_and_get(
4565: p_encoded => FND_API.G_FALSE,
4566: p_count => x_msg_count,
4567: p_data => x_msg_data);
4568: WHEN OTHERS THEN
4569: ROLLBACK TO swap_instance;
4566: p_count => x_msg_count,
4567: p_data => x_msg_data);
4568: WHEN OTHERS THEN
4569: ROLLBACK TO swap_instance;
4570: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4571: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4572: THEN
4573: FND_MSG_PUB.add_exc_msg(
4574: p_pkg_name => G_PKG_NAME,
4575: p_procedure_name => l_api_name,
4576: p_error_text => SUBSTRB(SQLERRM,1,240));
4577: END IF;
4578: FND_MSG_PUB.count_and_get(
4579: p_encoded => FND_API.G_FALSE,
4580: p_count => x_msg_count,
4581: p_data => x_msg_data);
4582: END;
4583:
4587: -- Adithya added for OGMA issue # 86 FP
4588: --****************************************************************************
4589: PROCEDURE Get_Avail_Subinv_Instances(
4590: p_api_version IN NUMBER := 1.0,
4591: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4592: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4593: x_return_status OUT NOCOPY VARCHAR2,
4594: x_msg_count OUT NOCOPY NUMBER,
4595: x_msg_data OUT NOCOPY VARCHAR2,
4588: --****************************************************************************
4589: PROCEDURE Get_Avail_Subinv_Instances(
4590: p_api_version IN NUMBER := 1.0,
4591: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4592: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4593: x_return_status OUT NOCOPY VARCHAR2,
4594: x_msg_count OUT NOCOPY NUMBER,
4595: x_msg_data OUT NOCOPY VARCHAR2,
4596: p_relationship_id IN NUMBER,
5013:
5014: -- 0. Intial logic for the API.
5015: -------------------------------
5016: -- Initialize API return status to success
5017: x_return_status := FND_API.G_RET_STS_SUCCESS;
5018:
5019: -- Standard call to check for call compatibility.
5020: IF NOT FND_API.compatible_api_call(
5021: l_api_version,
5016: -- Initialize API return status to success
5017: x_return_status := FND_API.G_RET_STS_SUCCESS;
5018:
5019: -- Standard call to check for call compatibility.
5020: IF NOT FND_API.compatible_api_call(
5021: l_api_version,
5022: p_api_version,
5023: l_api_name,
5024: G_PKG_NAME)
5022: p_api_version,
5023: l_api_name,
5024: G_PKG_NAME)
5025: THEN
5026: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5027: END IF;
5028:
5029: -- Initialize message list if p_init_msg_list is set to TRUE.
5030: IF FND_API.to_boolean( p_init_msg_list ) THEN
5026: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5027: END IF;
5028:
5029: -- Initialize message list if p_init_msg_list is set to TRUE.
5030: IF FND_API.to_boolean( p_init_msg_list ) THEN
5031: FND_MSG_PUB.initialize;
5032: END IF;
5033:
5034: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5074: IF p_workorder_id IS NULL THEN
5075: -- Workorder is mandatory. Throw an error.
5076: FND_MESSAGE.set_name( 'AHL','AHL_COM_PARAM_MISSING' );-- check the message name here.
5077: FND_MSG_PUB.add;
5078: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5079: END IF;
5080:
5081: -- 1.b get all visit details and its validations
5082: OPEN c_get_visit_details(p_workorder_id);
5087: IF l_visit_details_rec.wip_entity_id IS NULL THEN
5088: FND_MESSAGE.set_name( 'AHL','AHL_UC_WORKORDER_INVALID' );
5089: FND_MESSAGE.set_token('WORKORDER', p_workorder_id);
5090: FND_MSG_PUB.add;
5091: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5092: END IF;
5093:
5094: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5095: FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
5116: IF l_relationship_id IS NULL THEN
5117: FND_MESSAGE.set_name( 'AHL','AHL_UC_POSITION_INVALID' );
5118: FND_MESSAGE.set_token('POSITION', p_relationship_id);
5119: FND_MSG_PUB.add;
5120: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5121: END IF;
5122:
5123: i := 0;
5124: j := 0;
5264: -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
5265: l_msg_count := FND_MSG_PUB.count_msg;
5266: IF l_msg_count > 0 THEN
5267: x_msg_count := l_msg_count;
5268: RAISE FND_API.G_EXC_ERROR;
5269: END IF;
5270:
5271: -- Count and Get messages (optional)
5272: FND_MSG_PUB.count_and_get(
5269: END IF;
5270:
5271: -- Count and Get messages (optional)
5272: FND_MSG_PUB.count_and_get(
5273: p_encoded => FND_API.G_FALSE,
5274: p_count => x_msg_count,
5275: p_data => x_msg_data);
5276:
5277: EXCEPTION
5275: p_data => x_msg_data);
5276:
5277: EXCEPTION
5278:
5279: WHEN FND_API.G_EXC_ERROR THEN
5280: x_return_status := FND_API.G_RET_STS_ERROR ;
5281: FND_MSG_PUB.count_and_get(
5282: p_encoded => FND_API.G_FALSE,
5283: p_count => x_msg_count,
5276:
5277: EXCEPTION
5278:
5279: WHEN FND_API.G_EXC_ERROR THEN
5280: x_return_status := FND_API.G_RET_STS_ERROR ;
5281: FND_MSG_PUB.count_and_get(
5282: p_encoded => FND_API.G_FALSE,
5283: p_count => x_msg_count,
5284: p_data => x_msg_data);
5278:
5279: WHEN FND_API.G_EXC_ERROR THEN
5280: x_return_status := FND_API.G_RET_STS_ERROR ;
5281: FND_MSG_PUB.count_and_get(
5282: p_encoded => FND_API.G_FALSE,
5283: p_count => x_msg_count,
5284: p_data => x_msg_data);
5285:
5286: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5282: p_encoded => FND_API.G_FALSE,
5283: p_count => x_msg_count,
5284: p_data => x_msg_data);
5285:
5286: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5287: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5288: FND_MSG_PUB.count_and_get(
5289: p_encoded => FND_API.G_FALSE,
5290: p_count => x_msg_count,
5283: p_count => x_msg_count,
5284: p_data => x_msg_data);
5285:
5286: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5287: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5288: FND_MSG_PUB.count_and_get(
5289: p_encoded => FND_API.G_FALSE,
5290: p_count => x_msg_count,
5291: p_data => x_msg_data);
5285:
5286: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5287: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5288: FND_MSG_PUB.count_and_get(
5289: p_encoded => FND_API.G_FALSE,
5290: p_count => x_msg_count,
5291: p_data => x_msg_data);
5292:
5293: WHEN OTHERS THEN
5290: p_count => x_msg_count,
5291: p_data => x_msg_data);
5292:
5293: WHEN OTHERS THEN
5294: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5295: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5296: THEN
5297: FND_MSG_PUB.add_exc_msg(
5298: p_pkg_name => G_PKG_NAME,
5299: p_procedure_name => l_api_name,
5300: p_error_text => SUBSTRB(SQLERRM,1,240));
5301: END IF;
5302: FND_MSG_PUB.count_and_get(
5303: p_encoded => FND_API.G_FALSE,
5304: p_count => x_msg_count,
5305: p_data => x_msg_data);
5306:
5307: END Get_Avail_Subinv_Instances;
5310: -- This API is used to get all the available instances for a given node in a UC tree.
5311:
5312: PROCEDURE get_available_instances(
5313: p_api_version IN NUMBER := 1.0,
5314: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5315: --p_commit IN VARCHAR2 := FND_API.G_FALSE,
5316: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5317: x_return_status OUT NOCOPY VARCHAR2,
5318: x_msg_count OUT NOCOPY NUMBER,
5311:
5312: PROCEDURE get_available_instances(
5313: p_api_version IN NUMBER := 1.0,
5314: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5315: --p_commit IN VARCHAR2 := FND_API.G_FALSE,
5316: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5317: x_return_status OUT NOCOPY VARCHAR2,
5318: x_msg_count OUT NOCOPY NUMBER,
5319: x_msg_data OUT NOCOPY VARCHAR2,
5312: PROCEDURE get_available_instances(
5313: p_api_version IN NUMBER := 1.0,
5314: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5315: --p_commit IN VARCHAR2 := FND_API.G_FALSE,
5316: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5317: x_return_status OUT NOCOPY VARCHAR2,
5318: x_msg_count OUT NOCOPY NUMBER,
5319: x_msg_data OUT NOCOPY VARCHAR2,
5320: p_parent_instance_id IN NUMBER, --in order to include the extra siblings
5593: NVL(io.operating_unit, mo_global.get_current_org_id()) =
5594: mo_global.get_current_org_id()
5595: )
5596: AND ahl_util_uc_pkg.IS_UNIT_QUARANTINED(U.uc_header_id , null) =
5597: FND_API.G_FALSE
5598: ORDER BY 2;
5599:
5600: CURSOR check_relationship_id IS
5601: SELECT relationship_id
5772: l_csi_ii_relationship_ovn NUMBER;
5773:
5774: BEGIN
5775: -- Initialize API return status to success
5776: x_return_status := FND_API.G_RET_STS_SUCCESS;
5777: -- Standard call to check for call compatibility.
5778: IF NOT FND_API.compatible_api_call(
5779: l_api_version,
5780: p_api_version,
5774: BEGIN
5775: -- Initialize API return status to success
5776: x_return_status := FND_API.G_RET_STS_SUCCESS;
5777: -- Standard call to check for call compatibility.
5778: IF NOT FND_API.compatible_api_call(
5779: l_api_version,
5780: p_api_version,
5781: l_api_name,
5782: G_PKG_NAME)
5780: p_api_version,
5781: l_api_name,
5782: G_PKG_NAME)
5783: THEN
5784: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5785: END IF;
5786:
5787: -- Initialize message list if p_init_msg_list is set to TRUE.
5788: IF FND_API.to_boolean( p_init_msg_list ) THEN
5784: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5785: END IF;
5786:
5787: -- Initialize message list if p_init_msg_list is set to TRUE.
5788: IF FND_API.to_boolean( p_init_msg_list ) THEN
5789: FND_MSG_PUB.initialize;
5790: END IF;
5791:
5792: IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5801: FND_MESSAGE.set_name( 'AHL','AHL_UC_POSITION_INVALID' );
5802: FND_MESSAGE.set_token('POSITION', p_relationship_id);
5803: FND_MSG_PUB.add;
5804: CLOSE check_relationship_id;
5805: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5806: ELSE
5807: CLOSE check_relationship_id;
5808: END IF;
5809:
5815: FND_MESSAGE.set_name( 'AHL','AHL_UC_WORKORDER_INVALID' );
5816: FND_MESSAGE.set_token('WORKORDER', p_workorder_id);
5817: FND_MSG_PUB.add;
5818: CLOSE get_wip_entity_id;
5819: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5820: ELSE
5821: CLOSE get_wip_entity_id;
5822: END IF;
5823: ELSE
5833: FND_MESSAGE.set_name( 'AHL','AHL_UC_PARENT_INST_INVALID' );
5834: FND_MESSAGE.set_token('INSTANCE', p_parent_instance_id);
5835: FND_MSG_PUB.add;
5836: CLOSE check_parent_instance;
5837: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5838: ELSE
5839: CLOSE check_parent_instance;
5840: END IF;
5841: END IF;
5857: FND_MESSAGE.set_name( 'AHL','AHL_UC_INSTANCE_NOT_IN_UC' );
5858: FND_MESSAGE.set_token('INSTANCE', l_top_instance_id);
5859: FND_MSG_PUB.add;
5860: CLOSE get_uc_status;
5861: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5862: ELSE
5863: CLOSE get_uc_status;
5864: END IF;
5865: ELSE
6045: -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
6046: l_msg_count := FND_MSG_PUB.count_msg;
6047: IF l_msg_count > 0 THEN
6048: x_msg_count := l_msg_count;
6049: RAISE FND_API.G_EXC_ERROR;
6050: END IF;
6051: -- Count and Get messages (optional)
6052: FND_MSG_PUB.count_and_get(
6053: p_encoded => FND_API.G_FALSE,
6049: RAISE FND_API.G_EXC_ERROR;
6050: END IF;
6051: -- Count and Get messages (optional)
6052: FND_MSG_PUB.count_and_get(
6053: p_encoded => FND_API.G_FALSE,
6054: p_count => x_msg_count,
6055: p_data => x_msg_data);
6056: EXCEPTION
6057: WHEN FND_API.G_EXC_ERROR THEN
6053: p_encoded => FND_API.G_FALSE,
6054: p_count => x_msg_count,
6055: p_data => x_msg_data);
6056: EXCEPTION
6057: WHEN FND_API.G_EXC_ERROR THEN
6058: x_return_status := FND_API.G_RET_STS_ERROR ;
6059: FND_MSG_PUB.count_and_get(
6060: p_encoded => FND_API.G_FALSE,
6061: p_count => x_msg_count,
6054: p_count => x_msg_count,
6055: p_data => x_msg_data);
6056: EXCEPTION
6057: WHEN FND_API.G_EXC_ERROR THEN
6058: x_return_status := FND_API.G_RET_STS_ERROR ;
6059: FND_MSG_PUB.count_and_get(
6060: p_encoded => FND_API.G_FALSE,
6061: p_count => x_msg_count,
6062: p_data => x_msg_data);
6056: EXCEPTION
6057: WHEN FND_API.G_EXC_ERROR THEN
6058: x_return_status := FND_API.G_RET_STS_ERROR ;
6059: FND_MSG_PUB.count_and_get(
6060: p_encoded => FND_API.G_FALSE,
6061: p_count => x_msg_count,
6062: p_data => x_msg_data);
6063: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6064: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6059: FND_MSG_PUB.count_and_get(
6060: p_encoded => FND_API.G_FALSE,
6061: p_count => x_msg_count,
6062: p_data => x_msg_data);
6063: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6064: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6065: FND_MSG_PUB.count_and_get(
6066: p_encoded => FND_API.G_FALSE,
6067: p_count => x_msg_count,
6060: p_encoded => FND_API.G_FALSE,
6061: p_count => x_msg_count,
6062: p_data => x_msg_data);
6063: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6064: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6065: FND_MSG_PUB.count_and_get(
6066: p_encoded => FND_API.G_FALSE,
6067: p_count => x_msg_count,
6068: p_data => x_msg_data);
6062: p_data => x_msg_data);
6063: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6064: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6065: FND_MSG_PUB.count_and_get(
6066: p_encoded => FND_API.G_FALSE,
6067: p_count => x_msg_count,
6068: p_data => x_msg_data);
6069: WHEN OTHERS THEN
6070: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6066: p_encoded => FND_API.G_FALSE,
6067: p_count => x_msg_count,
6068: p_data => x_msg_data);
6069: WHEN OTHERS THEN
6070: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6071: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6072: THEN
6073: FND_MSG_PUB.add_exc_msg(
6074: p_pkg_name => G_PKG_NAME,
6075: p_procedure_name => l_api_name,
6076: p_error_text => SUBSTRB(SQLERRM,1,240));
6077: END IF;
6078: FND_MSG_PUB.count_and_get(
6079: p_encoded => FND_API.G_FALSE,
6080: p_count => x_msg_count,
6081: p_data => x_msg_data);
6082: END get_available_instances;
6083:
6087: -- to the UC root node as extra node.
6088:
6089: PROCEDURE create_unassigned_instance(
6090: p_api_version IN NUMBER := 1.0,
6091: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6092: p_commit IN VARCHAR2 := FND_API.G_FALSE,
6093: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6094: x_return_status OUT NOCOPY VARCHAR2,
6095: x_msg_count OUT NOCOPY NUMBER,
6088:
6089: PROCEDURE create_unassigned_instance(
6090: p_api_version IN NUMBER := 1.0,
6091: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6092: p_commit IN VARCHAR2 := FND_API.G_FALSE,
6093: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6094: x_return_status OUT NOCOPY VARCHAR2,
6095: x_msg_count OUT NOCOPY NUMBER,
6096: x_msg_data OUT NOCOPY VARCHAR2,
6089: PROCEDURE create_unassigned_instance(
6090: p_api_version IN NUMBER := 1.0,
6091: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6092: p_commit IN VARCHAR2 := FND_API.G_FALSE,
6093: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6094: x_return_status OUT NOCOPY VARCHAR2,
6095: x_msg_count OUT NOCOPY NUMBER,
6096: x_msg_data OUT NOCOPY VARCHAR2,
6097: p_uc_header_id IN NUMBER,
6178: -- Standard start of API savepoint
6179: SAVEPOINT create_unassigned_instance;
6180:
6181: -- Initialize Procedure return status to success
6182: x_return_status := FND_API.G_RET_STS_SUCCESS;
6183:
6184: -- Standard call to check for call compatibility
6185: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version,
6186: l_api_name, G_PKG_NAME) THEN
6181: -- Initialize Procedure return status to success
6182: x_return_status := FND_API.G_RET_STS_SUCCESS;
6183:
6184: -- Standard call to check for call compatibility
6185: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version,
6186: l_api_name, G_PKG_NAME) THEN
6187: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6188: END IF;
6189:
6183:
6184: -- Standard call to check for call compatibility
6185: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version,
6186: l_api_name, G_PKG_NAME) THEN
6187: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6188: END IF;
6189:
6190: -- Initialize message list if p_init_msg_list is set to TRUE
6191: IF FND_API.To_Boolean(p_init_msg_list) THEN
6187: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6188: END IF;
6189:
6190: -- Initialize message list if p_init_msg_list is set to TRUE
6191: IF FND_API.To_Boolean(p_init_msg_list) THEN
6192: FND_MSG_PUB.Initialize;
6193: END IF;
6194:
6195: -- Validate input parameter p_uc_header_id
6202: FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
6203: FND_MESSAGE.set_token('NAME', 'uc_header_id');
6204: FND_MESSAGE.set_token('VALUE', p_uc_header_id);
6205: FND_MSG_PUB.add;
6206: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6207: ELSIF (l_check_uc_header_rec.unit_config_status_code = 'APPROVAL_PENDING' OR
6208: l_check_uc_header_rec.active_uc_status_code = 'APPROVAL_PENDING') THEN
6209: CLOSE check_uc_header_csr;
6210: -- UC status is not editable
6210: -- UC status is not editable
6211: FND_MESSAGE.set_name('AHL','AHL_UC_STATUS_PENDING');
6212: FND_MESSAGE.set_token('UC_HEADER_ID', l_check_uc_header_rec.unit_config_header_id);
6213: FND_MSG_PUB.add;
6214: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6215: ELSIF (l_check_uc_header_rec.parent_uc_header_id IS NOT NULL) THEN
6216: CLOSE check_uc_header_csr;
6217: -- UC is installed sub config
6218: FND_MESSAGE.set_name('AHL','AHL_UC_INST_SUB_CONFIG');
6217: -- UC is installed sub config
6218: FND_MESSAGE.set_name('AHL','AHL_UC_INST_SUB_CONFIG');
6219: FND_MESSAGE.set_token('UC_HEADER_ID', l_check_uc_header_rec.unit_config_header_id);
6220: FND_MSG_PUB.add;
6221: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6222: ELSE
6223: CLOSE check_uc_header_csr;
6224: END IF;
6225:
6236: IF TRUNC(NVL(l_end_date, SYSDATE+1)) <= TRUNC(SYSDATE) THEN
6237: FND_MESSAGE.set_name('AHL','AHL_UC_STATUS_EXPIRED');
6238: FND_MESSAGE.set_token('UC_NAME', l_check_uc_header_rec.unit_config_header_id);
6239: FND_MSG_PUB.add;
6240: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6241: END IF;
6242:
6243: -- When creating the new instances, the "From Inventory" Serial Tag should not be used anymore.
6244: IF(p_x_uc_instance_rec.sn_tag_code IS NOT NULL AND p_x_uc_instance_rec.sn_tag_code = 'INVENTORY') THEN
6243: -- When creating the new instances, the "From Inventory" Serial Tag should not be used anymore.
6244: IF(p_x_uc_instance_rec.sn_tag_code IS NOT NULL AND p_x_uc_instance_rec.sn_tag_code = 'INVENTORY') THEN
6245: FND_MESSAGE.set_name( 'AHL','AHL_UC_SER_TG_CR_INVEN' );
6246: FND_MSG_PUB.add;
6247: RAISE FND_API.G_EXC_ERROR;
6248: END IF;
6249:
6250: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6251: FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, l_full_name,
6271:
6272: -- Check Error Message stack
6273: l_msg_count := FND_MSG_PUB.count_msg;
6274: IF (l_msg_count > l_msg_count_bef) THEN
6275: RAISE FND_API.G_EXC_ERROR;
6276: END IF;
6277:
6278: -- Validate manufacturing date
6279: IF (p_x_uc_instance_rec.mfg_date IS NOT NULL AND
6276: END IF;
6277:
6278: -- Validate manufacturing date
6279: IF (p_x_uc_instance_rec.mfg_date IS NOT NULL AND
6280: p_x_uc_instance_rec.mfg_date <> FND_API.G_MISS_DATE AND
6281: p_x_uc_instance_rec.mfg_date > SYSDATE) THEN
6282: -- mfg_date is invalid
6283: FND_MESSAGE.set_name('AHL','AHL_UC_MFGDATE_INVALID');
6284: FND_MESSAGE.set_token('DATE',p_x_uc_instance_rec.mfg_date);
6296: -- parent instance is invalid
6297: FND_MESSAGE.set_name('AHL','AHL_UC_CSII_INVALID');
6298: FND_MESSAGE.set_token('CSII',l_parent_instance_id);
6299: FND_MSG_PUB.add;
6300: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6301: END IF;
6302:
6303: CLOSE csi_item_instance_csr;
6304:
6324: l_csi_instance_rec.mfg_serial_number_flag := 'N';
6325: l_csi_instance_rec.instance_usage_code := NULL;
6326:
6327: IF (p_x_uc_instance_rec.serial_number IS NOT NULL AND
6328: p_x_uc_instance_rec.serial_number <> FND_API.G_MISS_CHAR) THEN
6329: l_csi_instance_rec.serial_number := p_x_uc_instance_rec.serial_number;
6330: END IF;
6331:
6332: IF (p_x_uc_instance_rec.lot_number IS NOT NULL AND
6329: l_csi_instance_rec.serial_number := p_x_uc_instance_rec.serial_number;
6330: END IF;
6331:
6332: IF (p_x_uc_instance_rec.lot_number IS NOT NULL AND
6333: p_x_uc_instance_rec.lot_number <> FND_API.G_MISS_CHAR) THEN
6334: l_csi_instance_rec.lot_number := p_x_uc_instance_rec.lot_number;
6335: END IF;
6336:
6337: IF (p_x_uc_instance_rec.revision IS NOT NULL AND
6334: l_csi_instance_rec.lot_number := p_x_uc_instance_rec.lot_number;
6335: END IF;
6336:
6337: IF (p_x_uc_instance_rec.revision IS NOT NULL AND
6338: p_x_uc_instance_rec.revision <> FND_API.G_MISS_CHAR) THEN
6339: l_csi_instance_rec.inventory_revision := p_x_uc_instance_rec.revision;
6340: END IF;
6341:
6342: -- Build CSI extended attribs
6340: END IF;
6341:
6342: -- Build CSI extended attribs
6343: IF (p_x_uc_instance_rec.mfg_date IS NOT NULL AND
6344: p_x_uc_instance_rec.mfg_date <> FND_API.G_MISS_DATE) THEN
6345: AHL_UTIL_UC_PKG.getcsi_attribute_id('AHL_MFG_DATE',l_attribute_id, l_return_val);
6346:
6347: IF NOT(l_return_val) THEN
6348: FND_MESSAGE.set_name('AHL','AHL_UC_ATTRIB_CODE_MISSING');
6356: END IF;
6357: END IF;
6358:
6359: IF (p_x_uc_instance_rec.serial_number IS NOT NULL AND
6360: p_x_uc_instance_rec.serial_number <> FND_API.G_MISS_CHAR) THEN
6361: AHL_UTIL_UC_PKG.getcsi_attribute_id('AHL_TEMP_SERIAL_NUM',l_attribute_id, l_return_val);
6362:
6363: IF NOT(l_return_val) THEN
6364: FND_MESSAGE.set_name('AHL','AHL_UC_ATTRIB_CODE_MISSING');
6397: -- Build CSI transaction record, first get transaction_type_id
6398: AHL_UTIL_UC_PKG.getcsi_transaction_id('UC_CREATE',l_transaction_type_id, l_return_val);
6399:
6400: IF NOT(l_return_val) THEN
6401: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6402: END IF;
6403:
6404: l_csi_transaction_rec.source_transaction_date := SYSDATE;
6405: l_csi_transaction_rec.transaction_type_id := l_transaction_type_id;
6406:
6407: -- Check Error Message stack
6408: l_msg_count := FND_MSG_PUB.count_msg;
6409: IF (l_msg_count > l_msg_count_bef) THEN
6410: RAISE FND_API.G_EXC_ERROR;
6411: END IF;
6412:
6413: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6414: FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, l_full_name,
6442: ' l_return_status => '||l_return_status||
6443: ' p_x_uc_instance_rec.instance_id='||p_x_uc_instance_rec.instance_id);
6444: END IF;
6445:
6446: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6447: RAISE FND_API.G_EXC_ERROR;
6448: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6449: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6450: END IF;
6443: ' p_x_uc_instance_rec.instance_id='||p_x_uc_instance_rec.instance_id);
6444: END IF;
6445:
6446: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6447: RAISE FND_API.G_EXC_ERROR;
6448: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6449: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6450: END IF;
6451:
6444: END IF;
6445:
6446: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6447: RAISE FND_API.G_EXC_ERROR;
6448: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6449: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6450: END IF;
6451:
6452: -- Before assigning the new instance as extra node, make sure its operating unit is exactly the same as that
6445:
6446: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6447: RAISE FND_API.G_EXC_ERROR;
6448: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6449: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6450: END IF;
6451:
6452: -- Before assigning the new instance as extra node, make sure its operating unit is exactly the same as that
6453: -- of the root instance
6456: IF l_root_instance_ou IS NULL THEN
6457: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
6458: FND_MESSAGE.set_token('INSTANCE', l_parent_instance_id);
6459: FND_MSG_PUB.add;
6460: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6461: ELSIF l_new_instance_ou IS NULL THEN
6462: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
6463: FND_MESSAGE.set_token('INSTANCE', l_new_instance_id);
6464: FND_MSG_PUB.add;
6461: ELSIF l_new_instance_ou IS NULL THEN
6462: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_NULL');
6463: FND_MESSAGE.set_token('INSTANCE', l_new_instance_id);
6464: FND_MSG_PUB.add;
6465: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6466: ELSIF l_root_instance_ou <> l_new_instance_ou THEN
6467: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_UNMATCH');
6468: FND_MESSAGE.set_token('INSTANCE', l_new_instance_id);
6469: FND_MESSAGE.set_token('ROOT_INSTANCE', l_parent_instance_id);
6467: FND_MESSAGE.set_name('AHL', 'AHL_UC_INSTANCE_OU_UNMATCH');
6468: FND_MESSAGE.set_token('INSTANCE', l_new_instance_id);
6469: FND_MESSAGE.set_token('ROOT_INSTANCE', l_parent_instance_id);
6470: FND_MSG_PUB.add;
6471: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6472: END IF;
6473:
6474: -- Build CSI relationships table
6475: l_csi_relationship_rec.relationship_type_code := 'COMPONENT-OF';
6496: ' After call to CSI_II_RELATIONSHIPS_PUB.create_relationship'||
6497: ' l_return_status => '||l_return_status);
6498: END IF;
6499:
6500: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6501: RAISE FND_API.G_EXC_ERROR;
6502: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6503: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6504: END IF;
6497: ' l_return_status => '||l_return_status);
6498: END IF;
6499:
6500: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6501: RAISE FND_API.G_EXC_ERROR;
6502: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6503: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6504: END IF;
6505:
6498: END IF;
6499:
6500: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6501: RAISE FND_API.G_EXC_ERROR;
6502: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6503: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6504: END IF;
6505:
6506: -- Standard check of p_commit
6499:
6500: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6501: RAISE FND_API.G_EXC_ERROR;
6502: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6503: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6504: END IF;
6505:
6506: -- Standard check of p_commit
6507: IF FND_API.TO_BOOLEAN(p_commit) THEN
6503: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6504: END IF;
6505:
6506: -- Standard check of p_commit
6507: IF FND_API.TO_BOOLEAN(p_commit) THEN
6508: COMMIT WORK;
6509: END IF;
6510:
6511: -- Standard call to get message count and if count is 1, get message info
6511: -- Standard call to get message count and if count is 1, get message info
6512: FND_MSG_PUB.Count_And_Get
6513: ( p_count => x_msg_count,
6514: p_data => x_msg_data,
6515: p_encoded => FND_API.G_FALSE
6516: );
6517:
6518: IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
6519: FND_LOG.string(FND_LOG.level_procedure,l_full_name,'End of the API');
6519: FND_LOG.string(FND_LOG.level_procedure,l_full_name,'End of the API');
6520: END IF;
6521:
6522: EXCEPTION
6523: WHEN FND_API.G_EXC_ERROR THEN
6524: Rollback to create_unassigned_instance;
6525: x_return_status := FND_API.G_RET_STS_ERROR;
6526: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6527: p_data => x_msg_data,
6521:
6522: EXCEPTION
6523: WHEN FND_API.G_EXC_ERROR THEN
6524: Rollback to create_unassigned_instance;
6525: x_return_status := FND_API.G_RET_STS_ERROR;
6526: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6527: p_data => x_msg_data,
6528: p_encoded => fnd_api.g_false);
6529:
6524: Rollback to create_unassigned_instance;
6525: x_return_status := FND_API.G_RET_STS_ERROR;
6526: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6527: p_data => x_msg_data,
6528: p_encoded => fnd_api.g_false);
6529:
6530: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6531: Rollback to create_unassigned_instance;
6532: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6526: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6527: p_data => x_msg_data,
6528: p_encoded => fnd_api.g_false);
6529:
6530: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6531: Rollback to create_unassigned_instance;
6532: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6533: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6534: p_data => x_msg_data,
6528: p_encoded => fnd_api.g_false);
6529:
6530: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6531: Rollback to create_unassigned_instance;
6532: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6533: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6534: p_data => x_msg_data,
6535: p_encoded => fnd_api.g_false);
6536:
6531: Rollback to create_unassigned_instance;
6532: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6533: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6534: p_data => x_msg_data,
6535: p_encoded => fnd_api.g_false);
6536:
6537: WHEN OTHERS THEN
6538: Rollback to create_unassigned_instance;
6539: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6535: p_encoded => fnd_api.g_false);
6536:
6537: WHEN OTHERS THEN
6538: Rollback to create_unassigned_instance;
6539: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6540: FND_MSG_PUB.Add_Exc_Msg( p_pkg_name => G_PKG_NAME,
6541: p_procedure_name => l_api_name,
6542: p_error_text => SQLERRM);
6543: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6541: p_procedure_name => l_api_name,
6542: p_error_text => SQLERRM);
6543: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6544: p_data => x_msg_data,
6545: p_encoded => FND_API.G_FALSE);
6546:
6547: END create_unassigned_instance;
6548:
6549: END AHL_UC_INSTANCE_PVT; -- Package body,