88: -------------------------------------------------------------------------------------------------------
89: PROCEDURE Create_Instance_in_WIP
90: (
91: p_api_version IN NUMBER := 1.0,
92: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
93: p_commit IN VARCHAR2 := FND_API.G_FALSE,
94: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
95: p_wip_entity_id IN NUMBER,
96: p_instance_id IN NUMBER,
89: PROCEDURE Create_Instance_in_WIP
90: (
91: p_api_version IN NUMBER := 1.0,
92: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
93: p_commit IN VARCHAR2 := FND_API.G_FALSE,
94: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
95: p_wip_entity_id IN NUMBER,
96: p_instance_id IN NUMBER,
97: x_new_instance_id OUT NOCOPY NUMBER,
90: (
91: p_api_version IN NUMBER := 1.0,
92: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
93: p_commit IN VARCHAR2 := FND_API.G_FALSE,
94: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
95: p_wip_entity_id IN NUMBER,
96: p_instance_id IN NUMBER,
97: x_new_instance_id OUT NOCOPY NUMBER,
98: x_return_status OUT NOCOPY VARCHAR2,
117: -------------------------------------------------------------------------------------------------------
118: PROCEDURE Update_EAM_Workorders
119: (
120: p_api_version IN NUMBER := 1.0,
121: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
122: p_commit IN VARCHAR2 := FND_API.G_FALSE,
123: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
124: p_wip_entity_id IN NUMBER,
125: p_instance_id IN NUMBER,
118: PROCEDURE Update_EAM_Workorders
119: (
120: p_api_version IN NUMBER := 1.0,
121: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
122: p_commit IN VARCHAR2 := FND_API.G_FALSE,
123: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
124: p_wip_entity_id IN NUMBER,
125: p_instance_id IN NUMBER,
126: x_return_status OUT NOCOPY VARCHAR2,
119: (
120: p_api_version IN NUMBER := 1.0,
121: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
122: p_commit IN VARCHAR2 := FND_API.G_FALSE,
123: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
124: p_wip_entity_id IN NUMBER,
125: p_instance_id IN NUMBER,
126: x_return_status OUT NOCOPY VARCHAR2,
127: x_msg_count OUT NOCOPY NUMBER,
168: -------------------------------------------------------------------------------------------------------
169: PROCEDURE PERFORM_MTL_XFR
170: (
171: p_api_version IN NUMBER := 1.0,
172: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
173: p_commit IN VARCHAR2 := FND_API.G_FALSE,
174: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
175: p_x_ahl_mtlxfr_tbl IN OUT NOCOPY Ahl_Mtlxfr_Tbl_Type,
176: x_return_status OUT NOCOPY VARCHAR2,
169: PROCEDURE PERFORM_MTL_XFR
170: (
171: p_api_version IN NUMBER := 1.0,
172: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
173: p_commit IN VARCHAR2 := FND_API.G_FALSE,
174: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
175: p_x_ahl_mtlxfr_tbl IN OUT NOCOPY Ahl_Mtlxfr_Tbl_Type,
176: x_return_status OUT NOCOPY VARCHAR2,
177: x_msg_count OUT NOCOPY NUMBER,
170: (
171: p_api_version IN NUMBER := 1.0,
172: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
173: p_commit IN VARCHAR2 := FND_API.G_FALSE,
174: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
175: p_x_ahl_mtlxfr_tbl IN OUT NOCOPY Ahl_Mtlxfr_Tbl_Type,
176: x_return_status OUT NOCOPY VARCHAR2,
177: x_msg_count OUT NOCOPY NUMBER,
178: x_msg_data OUT NOCOPY VARCHAR2
209: -- Standard start of API savepoint
210: SAVEPOINT PERFORM_MTL_XFR_PVT;
211:
212: -- Standard call to check for call compatibility
213: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
214: G_PKG_NAME) THEN
215: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
216: END IF;
217: -- Initialize message list if p_init_msg_list is set to TRUE
211:
212: -- Standard call to check for call compatibility
213: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
214: G_PKG_NAME) THEN
215: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
216: END IF;
217: -- Initialize message list if p_init_msg_list is set to TRUE
218: IF FND_API.To_Boolean(p_init_msg_list) THEN
219: FND_MSG_PUB.Initialize;
214: G_PKG_NAME) THEN
215: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
216: END IF;
217: -- Initialize message list if p_init_msg_list is set to TRUE
218: IF FND_API.To_Boolean(p_init_msg_list) THEN
219: FND_MSG_PUB.Initialize;
220: END IF;
221:
222: -- Initialize API return status to success
219: FND_MSG_PUB.Initialize;
220: END IF;
221:
222: -- Initialize API return status to success
223: x_return_status := FND_API.G_RET_STS_SUCCESS;
224:
225:
226: IF G_DEBUG='Y' THEN
227: AHL_DEBUG_PUB.enable_debug;
248: IF G_DEBUG='Y' THEN
249: AHL_DEBUG_PUB.debug('After calling Validate_rec');
250: END IF;
251:
252: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
253: l_error := true;
254:
255: IF G_DEBUG='Y' THEN
256: AHL_DEBUG_PUB.debug('Error in Validate_rec');
254:
255: IF G_DEBUG='Y' THEN
256: AHL_DEBUG_PUB.debug('Error in Validate_rec');
257: END IF;
258: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
259: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
260:
261: IF G_DEBUG='Y' THEN
262: AHL_DEBUG_PUB.debug('Unexpected error in Validate_rec');
255: IF G_DEBUG='Y' THEN
256: AHL_DEBUG_PUB.debug('Error in Validate_rec');
257: END IF;
258: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
259: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
260:
261: IF G_DEBUG='Y' THEN
262: AHL_DEBUG_PUB.debug('Unexpected error in Validate_rec');
263: END IF;
265:
266: END LOOP;
267:
268: IF (l_Error) THEN
269: RAISE FND_API.G_EXC_ERROR;
270: END IF;
271:
272: -- Interface table insert.
273: l_txn_Header_Id := NULL;
291: AHL_DEBUG_PUB.debug('After Calling Insert_Txn_Intf...ret_status['||x_return_status||']');
292: END IF;
293:
294:
295: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
296: l_error := true;
297: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
298: l_error := true;
299: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
293:
294:
295: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
296: l_error := true;
297: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
298: l_error := true;
299: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
300: END IF;
301: END LOOP; -- End of loop for Interface table inserts
295: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
296: l_error := true;
297: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
298: l_error := true;
299: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
300: END IF;
301: END LOOP; -- End of loop for Interface table inserts
302:
303: IF(l_error ) THEN
300: END IF;
301: END LOOP; -- End of loop for Interface table inserts
302:
303: IF(l_error ) THEN
304: RAISE FND_API.G_EXC_ERROR;
305: END IF;
306:
307: -- Now process the interface records
308: IF G_DEBUG='Y' THEN
310: END IF;
311:
312: l_result := INV_TXN_MANAGER_PUB.process_Transactions(
313: p_api_version => null ,
314: p_init_msg_list => fnd_api.g_false ,
315: p_commit => fnd_api.g_false ,
316: p_validation_level => fnd_api.g_valid_level_full ,
317: x_return_status => x_return_status,
318: x_msg_count => x_msg_count,
311:
312: l_result := INV_TXN_MANAGER_PUB.process_Transactions(
313: p_api_version => null ,
314: p_init_msg_list => fnd_api.g_false ,
315: p_commit => fnd_api.g_false ,
316: p_validation_level => fnd_api.g_valid_level_full ,
317: x_return_status => x_return_status,
318: x_msg_count => x_msg_count,
319: x_msg_data => x_msg_data,
312: l_result := INV_TXN_MANAGER_PUB.process_Transactions(
313: p_api_version => null ,
314: p_init_msg_list => fnd_api.g_false ,
315: p_commit => fnd_api.g_false ,
316: p_validation_level => fnd_api.g_valid_level_full ,
317: x_return_status => x_return_status,
318: x_msg_count => x_msg_count,
319: x_msg_data => x_msg_data,
320: x_trans_count => l_trans_count,
322: p_header_id => l_Txn_Header_Id ); -- Transaction header id
323:
324: mo_global.init('AHL');
325:
326: IF( l_result = -1 OR x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
327: IF G_DEBUG='Y' THEN
328: AHL_DEBUG_PUB.debug('INV_TXN_MANAGER_PUB.process_Transactions....errored');
329: AHL_DEBUG_PUB.debug('count of error msgs: ' || FND_MSG_PUB.COUNT_MSG);
330: END IF;
360: CLOSE Txn_Error_cur;
361: END LOOP;
362:
363: IF(l_error ) THEN
364: RAISE FND_API.G_EXC_ERROR;
365: END IF;
366: END IF;
367: -- END of if which checks the count of transactions created
368:
366: END IF;
367: -- END of if which checks the count of transactions created
368:
369: -- Standard check of p_commit
370: IF FND_API.To_Boolean(p_commit) THEN
371: COMMIT WORK;
372: END IF;
373:
374: EXCEPTION
371: COMMIT WORK;
372: END IF;
373:
374: EXCEPTION
375: WHEN FND_API.G_EXC_ERROR THEN
376: x_return_status := FND_API.G_RET_STS_ERROR;
377: Rollback to PERFORM_MTL_XFR_PVT;
378: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
379: p_data => x_msg_data,
372: END IF;
373:
374: EXCEPTION
375: WHEN FND_API.G_EXC_ERROR THEN
376: x_return_status := FND_API.G_RET_STS_ERROR;
377: Rollback to PERFORM_MTL_XFR_PVT;
378: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
379: p_data => x_msg_data,
380: p_encoded => fnd_api.g_false);
376: x_return_status := FND_API.G_RET_STS_ERROR;
377: Rollback to PERFORM_MTL_XFR_PVT;
378: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
379: p_data => x_msg_data,
380: p_encoded => fnd_api.g_false);
381:
382: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
383: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
384: Rollback to PERFORM_MTL_XFR_PVT;
378: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
379: p_data => x_msg_data,
380: p_encoded => fnd_api.g_false);
381:
382: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
383: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
384: Rollback to PERFORM_MTL_XFR_PVT;
385: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
386: p_data => x_msg_data,
379: p_data => x_msg_data,
380: p_encoded => fnd_api.g_false);
381:
382: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
383: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
384: Rollback to PERFORM_MTL_XFR_PVT;
385: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
386: p_data => x_msg_data,
387: p_encoded => fnd_api.g_false);
383: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
384: Rollback to PERFORM_MTL_XFR_PVT;
385: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
386: p_data => x_msg_data,
387: p_encoded => fnd_api.g_false);
388:
389: WHEN OTHERS THEN
390: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
391: Rollback to PERFORM_MTL_XFR_PVT;
386: p_data => x_msg_data,
387: p_encoded => fnd_api.g_false);
388:
389: WHEN OTHERS THEN
390: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
391: Rollback to PERFORM_MTL_XFR_PVT;
392: fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
393: p_procedure_name => 'Perform_Mtl_Xfr',
394: p_error_text => SQLERRM);
393: p_procedure_name => 'Perform_Mtl_Xfr',
394: p_error_text => SQLERRM);
395: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
396: p_data => x_msg_data,
397: p_encoded => fnd_api.g_false);
398:
399: END PERFORM_MTL_XFR;
400:
401: PROCEDURE Validate_Rec
494:
495:
496: BEGIN
497:
498: x_return_status := FND_API.G_RET_STS_SUCCESS;
499:
500: IF G_DEBUG='Y' THEN
501: AHL_DEBUG_PUB.enable_debug;
502: AHL_DEBUG_PUB.debug('Ahl Validating TxnType...['||to_Char(p_x_ahl_mtlxfr_rec.Transaction_Type_Id)||']');
505: -- Validate transaction type
506: IF p_x_ahl_mtlxfr_rec.Transaction_Type_Id IS NULL THEN
507: FND_MESSAGE.Set_Name('AHL','AHL_CMP_TXNTYPE_NULL');
508: FND_MSG_PUB.ADD;
509: x_return_status := FND_API.G_RET_STS_ERROR;
510: ELSE
511: OPEN TRX_ACTION_CUR(P_X_AHL_MTLXFR_REC.TRANSACTION_TYPE_ID);
512: FETCH TRX_ACTION_CUR INTO l_txn_type;
513: IF(TRX_ACTION_CUR%NOTFOUND) THEN
512: FETCH TRX_ACTION_CUR INTO l_txn_type;
513: IF(TRX_ACTION_CUR%NOTFOUND) THEN
514: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_TXNTYPE');
515: FND_MSG_PUB.ADD;
516: x_return_status := FND_API.G_RET_STS_ERROR;
517: END IF;
518: CLOSE TRX_ACTION_CUR;
519: END IF;
520:
526: IF(nvl(p_x_ahl_mtlxfr_rec.Quantity,0) <= 0) THEN
527: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_QTY');
528: FND_MESSAGE.Set_Token('QUANTITY',p_x_ahl_mtlxfr_rec.Quantity);
529: FND_MSG_PUB.ADD;
530: x_return_status := FND_API.G_RET_STS_ERROR;
531: END IF;
532:
533: IF G_DEBUG='Y' THEN
534: AHL_DEBUG_PUB.debug('Validating item_id['||to_Char(p_x_ahl_mtlxfr_rec.Organization_ID)||','||to_Char(p_x_ahl_mtlxfr_rec.Inventory_Item_Id)||']');
544: IF(AHL_ITEM_ID_CUR%NOTFOUND) THEN
545: FND_MESSAGE.Set_Name('AHL','AHL_COM_INVALID_ITEM');
546: FND_MESSAGE.Set_Token('FIELD',p_x_ahl_mtlxfr_rec.Inventory_Item_Id);
547: FND_MSG_PUB.ADD;
548: x_return_status := FND_API.G_RET_STS_ERROR;
549: END IF;
550: CLOSE AHL_ITEM_ID_CUR;
551: ELSE
552: IF p_x_ahl_mtlxfr_rec.Organization_ID IS NULL THEN
551: ELSE
552: IF p_x_ahl_mtlxfr_rec.Organization_ID IS NULL THEN
553: FND_MESSAGE.Set_Name('AHL','AHL_CMP_ORG_NULL');
554: FND_MSG_PUB.ADD;
555: x_return_status := FND_API.G_RET_STS_ERROR;
556: END IF;
557: IF p_x_ahl_mtlxfr_rec.Inventory_Item_Id IS NULL THEN
558: FND_MESSAGE.Set_Name('AHL','AHL_CMP_ITEM_NULL');
559: FND_MSG_PUB.ADD;
556: END IF;
557: IF p_x_ahl_mtlxfr_rec.Inventory_Item_Id IS NULL THEN
558: FND_MESSAGE.Set_Name('AHL','AHL_CMP_ITEM_NULL');
559: FND_MSG_PUB.ADD;
560: x_return_status := FND_API.G_RET_STS_ERROR;
561: END IF;
562:
563: END IF;
564:
573: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_SRLNUM');
574: FND_MESSAGE.Set_Token('SER',p_x_ahl_mtlxfr_rec.Serial_Number);
575: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
576: FND_MSG_PUB.ADD;
577: x_return_status := FND_API.G_RET_STS_ERROR;
578: END IF;
579:
580: IF (p_x_ahl_mtlxfr_rec.Serial_Number IS NOT NULL AND
581: nvl(l_serial_Control,1) = 1) THEN
582: FND_MESSAGE.Set_Name('AHL','AHL_PRD_SRLNUM_NOTMAND');
583: FND_MESSAGE.Set_Token('SER',p_x_ahl_mtlxfr_rec.Serial_Number);
584: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
585: FND_MSG_PUB.ADD;
586: x_return_status := FND_API.G_RET_STS_ERROR;
587: END IF;
588:
589:
590: IF G_DEBUG='Y' THEN
592: END IF;
593:
594: -- If the item is of lot controlled check if the lot number is null
595: IF((p_x_ahl_mtlxfr_rec.Lot_Number IS NULL
596: OR p_x_ahl_mtlxfr_rec.Lot_Number = FND_API.G_MISS_CHAR)
597: AND (l_lot_Control <> C_NO_LOT_CONTROL) ) THEN
598: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_LOT');
599: FND_MESSAGE.Set_Token('LOT',p_x_ahl_mtlxfr_rec.Lot_Number);
600: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
598: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_LOT');
599: FND_MESSAGE.Set_Token('LOT',p_x_ahl_mtlxfr_rec.Lot_Number);
600: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
601: FND_MSG_PUB.ADD;
602: x_return_status := FND_API.G_RET_STS_ERROR;
603: END IF;
604: -- validate lot number.
605: IF (p_x_ahl_mtlxfr_rec.Lot_Number IS NOT NULL AND (l_lot_Control <> C_NO_LOT_CONTROL) ) THEN
606: OPEN mtl_lot_num_csr(p_x_ahl_mtlxfr_rec.organization_id,
611: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_LOT');
612: FND_MESSAGE.Set_Token('LOT',p_x_ahl_mtlxfr_rec.Lot_Number);
613: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
614: FND_MSG_PUB.ADD;
615: x_return_status := FND_API.G_RET_STS_ERROR;
616: END IF;
617: CLOSE mtl_lot_num_csr;
618: END IF;
619:
621: IF (p_x_ahl_mtlxfr_rec.Lot_Number IS NOT NULL AND (l_lot_Control = C_NO_LOT_CONTROL) ) THEN
622: FND_MESSAGE.Set_Name('AHL','AHL_PRD_LOT_NOTNULL');
623: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
624: FND_MSG_PUB.ADD;
625: x_return_status := FND_API.G_RET_STS_ERROR;
626: END IF;
627:
628:
629: -- validate source sub inventory
633: IF(AHL_SUBINV_CUR%NOTFOUND) THEN
634: FND_MESSAGE.Set_Name('AHL','AHL_CMP_INVL_SRC_SUBINV');
635: FND_MESSAGE.Set_Token('INV',p_x_ahl_mtlxfr_rec.Src_Subinv_Name);
636: FND_MSG_PUB.ADD;
637: x_return_status := FND_API.G_RET_STS_ERROR;
638: END IF;
639: CLOSE AHL_SUBINV_CUR;
640:
641: -- validate destination sub inventory
645: IF(AHL_SUBINV_CUR%NOTFOUND) THEN
646: FND_MESSAGE.Set_Name('AHL','AHL_CMP_INVL_DST_SUBINV');
647: FND_MESSAGE.Set_Token('INV',p_x_ahl_mtlxfr_rec.Dst_SubInv_Name);
648: FND_MSG_PUB.ADD;
649: x_return_status := FND_API.G_RET_STS_ERROR;
650: END IF;
651: CLOSE AHL_SUBINV_CUR;
652:
653: -- validate source locator
657: IF(AHL_LOCATOR_CUR%NOTFOUND) THEN
658: FND_MESSAGE.Set_Name('AHL','AHL_CMP_INVL_SRC_LOCATOR');
659: FND_MESSAGE.Set_Token('LOC',p_x_ahl_mtlxfr_rec.Src_Locator_Id);
660: FND_MSG_PUB.ADD;
661: x_return_status := FND_API.G_RET_STS_ERROR;
662: END IF;
663: CLOSE AHL_LOCATOR_CUR;
664:
665:
671: IF(AHL_LOCATOR_CUR%NOTFOUND) THEN
672: FND_MESSAGE.Set_Name('AHL','AHL_CMP_INVL_DST_LOCATOR');
673: FND_MESSAGE.Set_Token('LOC',p_x_ahl_mtlxfr_rec.Dst_Locator_Id);
674: FND_MSG_PUB.ADD;
675: x_return_status := FND_API.G_RET_STS_ERROR;
676: END IF;
677: CLOSE AHL_LOCATOR_CUR;
678: END IF;
679:
692: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_REVISION');
693: FND_MESSAGE.Set_Token('REVISION',p_x_ahl_mtlxfr_rec.Revision);
694: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
695: FND_MSG_PUB.ADD;
696: x_return_status := FND_API.G_RET_STS_ERROR;
697: ELSE
698: OPEN AHL_REVISION_CUR
699: (
700: p_x_ahl_mtlxfr_rec.Organization_ID,
707: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_REVISION');
708: FND_MESSAGE.Set_Token('REVISION',p_x_ahl_mtlxfr_rec.Revision);
709: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
710: FND_MSG_PUB.ADD;
711: x_return_status := FND_API.G_RET_STS_ERROR;
712:
713: END IF;
714: CLOSE AHL_REVISION_CUR;
715: END IF;
719: FND_MESSAGE.Set_Name('AHL','AHL_PRD_REVNUM_NOTMAND');
720: FND_MESSAGE.Set_Token('REV',p_x_ahl_mtlxfr_rec.Revision);
721: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
722: FND_MSG_PUB.ADD;
723: x_return_status := FND_API.G_RET_STS_ERROR;
724: END IF;
725: END IF;
726:
727:
737: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_ITEM_QTY');
738: FND_MESSAGE.Set_Token('PRIM_UOM',l_primary_uom_code);
739: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
740: FND_MSG_PUB.ADD;
741: x_return_status := FND_API.G_RET_STS_ERROR;
742: END IF;
743: END IF;
744:
745: IF G_DEBUG='Y' THEN
765: FND_MESSAGE.Set_Token('CODE',l_curr_subinventory_code);
766: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
767: FND_MESSAGE.Set_Token('SER',p_x_ahl_mtlxfr_rec.Serial_Number);
768: FND_MSG_PUB.ADD;
769: x_return_status := FND_API.G_RET_STS_ERROR;
770: END IF;
771:
772: IF G_DEBUG='Y' THEN
773: AHL_DEBUG_PUB.debug('Validating serial subinv['||p_x_ahl_mtlxfr_rec.Src_Subinv_Name||']');
778: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_LOC_CODE');
779: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
780: FND_MESSAGE.Set_Token('SER',p_x_ahl_mtlxfr_rec.Serial_Number);
781: FND_MSG_PUB.ADD;
782: x_return_status := FND_API.G_RET_STS_ERROR;
783: END IF;
784: ELSE
785: -- serial number not found.
786: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_SRLNUM');
786: FND_MESSAGE.Set_Name('AHL','AHL_PRD_INVALID_SRLNUM');
787: FND_MESSAGE.Set_Token('ITEM',l_concatenated_segments);
788: FND_MESSAGE.Set_Token('SER',p_x_ahl_mtlxfr_rec.Serial_Number);
789: FND_MSG_PUB.ADD;
790: x_return_status := FND_API.G_RET_STS_ERROR;
791: END IF;
792:
793: CLOSE mtl_srl_num_csr;
794: END IF;
874: l_source_line_id := 1;
875: l_Source_Header_Id := 1;
876:
877:
878: x_return_status := FND_API.G_RET_STS_SUCCESS;
879:
880: OPEN TRX_ACTION_CUR(p_x_ahl_mtlxfr_rec.Transaction_Type_Id);
881: FETCH TRX_ACTION_CUR INTO l_txn_action, l_txn_source_type;
882: IF(TRX_ACTION_CUR%NOTFOUND) THEN
883: IF G_DEBUG='Y' THEN
884: AHL_DEBUG_PUB.debug('Did not find the Txn Type');
885: END IF;
886: CLOSE TRX_ACTION_CUR;
887: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
888: END IF;
889: CLOSE TRX_ACTION_CUR;
890:
891:
932: p_organization_id => p_x_ahl_mtlxfr_rec.organization_id,
933: p_x_mti_seglist => l_mti_seglist,
934: x_return_status => x_return_status);
935:
936: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
937: RAISE FND_API.G_EXC_ERROR;
938: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
939: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
940: END IF;
933: p_x_mti_seglist => l_mti_seglist,
934: x_return_status => x_return_status);
935:
936: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
937: RAISE FND_API.G_EXC_ERROR;
938: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
939: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
940: END IF;
941: END IF;
934: x_return_status => x_return_status);
935:
936: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
937: RAISE FND_API.G_EXC_ERROR;
938: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
939: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
940: END IF;
941: END IF;
942:
935:
936: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
937: RAISE FND_API.G_EXC_ERROR;
938: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
939: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
940: END IF;
941: END IF;
942:
943: --If the lot controlled inventory record is not null insert reocrds
1165: END IF; -- p_x_ahl_mtlxfr_rec.Quantity > 0
1166:
1167: EXCEPTION
1168: WHEN OTHERS THEN
1169: x_return_status := FND_API.G_RET_STS_ERROR;
1170: IF G_DEBUG='Y' THEN
1171: AHL_DEBUG_PUB.debug('Exception inserting into mtl_txn interface' || SQLCODE);
1172: AHL_DEBUG_PUB.debug('SQLERRM:' || SQLERRM);
1173: END IF;
1174: FND_MESSAGE.Set_Name('AHL','AHL_CMP_MTLXFR_ERROR');
1175: FND_MESSAGE.Set_Token('MSG',SQLERRM);
1176: FND_MESSAGE.Set_Token('ITEM',p_x_ahl_mtlxfr_rec.Inventory_Item_Id);
1177: FND_MSG_PUB.ADD;
1178: RAISE FND_API.G_EXC_ERROR;
1179:
1180: END INSERT_MTL_TXN_INTF;
1181: ---------------------------------------------------------------------------------------------------------
1182:
1209: -- End of Comments
1210:
1211: PROCEDURE Process_Repair_Item (
1212: p_api_version IN NUMBER := 1.0,
1213: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1214: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1215: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1216: p_inv_item_id IN NUMBER,
1217: p_item_mstr_org_id IN NUMBER,
1210:
1211: PROCEDURE Process_Repair_Item (
1212: p_api_version IN NUMBER := 1.0,
1213: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1214: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1215: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1216: p_inv_item_id IN NUMBER,
1217: p_item_mstr_org_id IN NUMBER,
1218: p_item_inv_org_id IN NUMBER,
1211: PROCEDURE Process_Repair_Item (
1212: p_api_version IN NUMBER := 1.0,
1213: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1214: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1215: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1216: p_inv_item_id IN NUMBER,
1217: p_item_mstr_org_id IN NUMBER,
1218: p_item_inv_org_id IN NUMBER,
1219: p_instance_id IN NUMBER,
1426: -- Standard start of API savepoint
1427: SAVEPOINT Process_Repair_Item_Pvt;
1428:
1429: -- Standard call to check for call compatibility
1430: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
1431: l_api_name, G_PKG_NAME) THEN
1432: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1433: END IF;
1434:
1428:
1429: -- Standard call to check for call compatibility
1430: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
1431: l_api_name, G_PKG_NAME) THEN
1432: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1433: END IF;
1434:
1435: -- Initialize message list if p_init_msg_list is set to TRUE
1436: IF FND_API.To_Boolean( p_init_msg_list) THEN
1432: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1433: END IF;
1434:
1435: -- Initialize message list if p_init_msg_list is set to TRUE
1436: IF FND_API.To_Boolean( p_init_msg_list) THEN
1437: FND_MSG_PUB.Initialize;
1438: END IF;
1439:
1440: -- Initialize Procedure return status to success
1437: FND_MSG_PUB.Initialize;
1438: END IF;
1439:
1440: -- Initialize Procedure return status to success
1441: x_return_status := FND_API.G_RET_STS_SUCCESS;
1442:
1443: IF (l_log_statement >= l_log_current_level) THEN
1444: FND_LOG.string(l_log_statement, l_full_name,
1445: ' p_inv_item_id = '||p_inv_item_id||
1540: IF (l_msg_count < FND_MSG_PUB.count_msg) THEN
1541: IF (l_log_statement >= l_log_current_level) THEN
1542: FND_LOG.string(l_log_statement, l_full_name, 'input parameters are invalid');
1543: END IF;
1544: RAISE FND_API.G_EXC_ERROR;
1545: END IF;
1546: -- ************************** Ist Validation 1::End ************************** --
1547:
1548: -- ************************** IInd Validation 2::Start ************************** --
1556: END IF;
1557: -- Please enter a positive number for the repair quantity, less than or equal to the instance quantity.
1558: FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_CMP_RPR_QTY_INVLD');
1559: FND_MSG_PUB.ADD;
1560: RAISE FND_API.G_EXC_ERROR;
1561: ELSIF (p_repair_qty IS NOT NULL AND p_repair_qty = l_item_inst_det_csr.quantity) THEN
1562: -- if the repair status is 'PLANNING' or 'PRODUCTION', then check the workorders for the instance
1563: -- - if all are complete, then complete quantity is allowed
1564: -- - else, all but 1 quantity is allowed
1571: END IF;
1572: -- Please complete the open workorders for the instance before moving complete quantity.
1573: FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_CMP_COMP_QTY_INVLD');
1574: FND_MSG_PUB.ADD;
1575: RAISE FND_API.G_EXC_ERROR;
1576: END IF;
1577: l_dummy := NULL;
1578: END IF;
1579: END IF;
1594: FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_CMP_RPR_BATCH_INVLD');
1595: FND_MESSAGE.Set_Token('REPAIR_BATCH', p_x_dst_rpr_batch_name);
1596: FND_MESSAGE.Set_Token('ITEM', l_item_inst_det_csr.concatenated_segments);
1597: FND_MSG_PUB.ADD;
1598: RAISE FND_API.G_EXC_ERROR;
1599: END IF;
1600: CLOSE chk_rpr_batch_csr;
1601:
1602: IF (l_item_inst_det_csr.lot_number IS NOT NULL) THEN
1607: -- The repair batch REPAIR_BATCH can contain only one lot-controlled item instance.
1608: FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_CMP_LOT_UPDATE_INVLD');
1609: FND_MESSAGE.Set_Token('REPAIR_BATCH', p_x_dst_rpr_batch_name);
1610: FND_MSG_PUB.ADD;
1611: RAISE FND_API.G_EXC_ERROR;
1612: END IF;
1613:
1614: OPEN Check_Past_Dated_Visit(p_x_dst_rpr_batch_name);
1615: FETCH Check_Past_Dated_Visit INTO l_dummy;
1622: -- Cannot add instances to the repair batch REPAIR_BATCH as it belongs to a past dated visit.
1623: FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_CMP_CANNOT_ADD_INSTANCES');
1624: FND_MESSAGE.Set_Token('REPAIR_BATCH', p_x_dst_rpr_batch_name);
1625: FND_MSG_PUB.ADD;
1626: RAISE FND_API.G_EXC_ERROR;
1627: END IF;
1628: CLOSE Check_Past_Dated_Visit;
1629: END IF;
1630: -- ************************** IInd Validation 2::End ************************** --
1648: -- No valid Component Visit exists for the organization 'ORG_NAME'.
1649: FND_MESSAGE.Set_Name(G_APP_NAME, 'AHL_CMP_COMP_VISIT_NULL');
1650: FND_MESSAGE.Set_Token('ORG_NAME', l_org_name);
1651: FND_MSG_PUB.ADD;
1652: RAISE FND_API.G_EXC_ERROR;
1653: END IF;
1654:
1655: -- 2) Create the summary task
1656: l_task_rec.visit_id := l_visit_id;
1680: ' l_task_rec.visit_task_id = '||l_task_rec.visit_task_id);
1681: END IF;
1682:
1683: -- if the call resulted in error, then raise it
1684: IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1685: IF (l_log_statement >= l_log_current_level) THEN
1686: FND_LOG.string(l_log_statement, l_full_name, 'call to AHL_VWP_TASKS_PVT.Create_Task errored out');
1687: END IF;
1688: RAISE FND_API.G_EXC_ERROR;
1684: IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1685: IF (l_log_statement >= l_log_current_level) THEN
1686: FND_LOG.string(l_log_statement, l_full_name, 'call to AHL_VWP_TASKS_PVT.Create_Task errored out');
1687: END IF;
1688: RAISE FND_API.G_EXC_ERROR;
1689: END IF;
1690:
1691: -- get the visit and task details
1692: OPEN get_visit_task_det_csr (l_task_rec.visit_task_id);
1811: END IF;
1812: END IF;
1813:
1814: -- if the call resulted in error, then raise it
1815: IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1816: IF (l_log_statement >= l_log_current_level) THEN
1817: FND_LOG.string(l_log_statement, l_full_name, 'call to Perform_Mtl_Xfr errored out');
1818: END IF;
1819: RAISE FND_API.G_EXC_ERROR;
1815: IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1816: IF (l_log_statement >= l_log_current_level) THEN
1817: FND_LOG.string(l_log_statement, l_full_name, 'call to Perform_Mtl_Xfr errored out');
1818: END IF;
1819: RAISE FND_API.G_EXC_ERROR;
1820: END IF;
1821: -- ************************** IVth Material Transfer::End ************************** --
1822:
1823: -- ************************** Vth Repair Batch And Scope Update::Start ************************** --
1899: ' p_x_dst_rpr_batch_name = '||p_x_dst_rpr_batch_name);
1900: END IF;
1901:
1902: -- Standard check of p_commit
1903: IF FND_API.TO_BOOLEAN(p_commit) THEN
1904: COMMIT WORK;
1905: END IF;
1906:
1907: IF (l_log_procedure >= l_log_current_level) THEN
1908: FND_LOG.string(l_log_procedure, l_full_name || '.end', 'At the end of the API');
1909: END IF;
1910:
1911: EXCEPTION
1912: WHEN FND_API.G_EXC_ERROR THEN
1913: ROLLBACK TO Process_Repair_Item_Pvt;
1914: x_return_status := FND_API.G_RET_STS_ERROR;
1915: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1916: p_data => x_msg_data,
1910:
1911: EXCEPTION
1912: WHEN FND_API.G_EXC_ERROR THEN
1913: ROLLBACK TO Process_Repair_Item_Pvt;
1914: x_return_status := FND_API.G_RET_STS_ERROR;
1915: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1916: p_data => x_msg_data,
1917: p_encoded => FND_API.G_FALSE);
1918: IF (l_log_exception >= l_log_current_level) THEN
1913: ROLLBACK TO Process_Repair_Item_Pvt;
1914: x_return_status := FND_API.G_RET_STS_ERROR;
1915: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1916: p_data => x_msg_data,
1917: p_encoded => FND_API.G_FALSE);
1918: IF (l_log_exception >= l_log_current_level) THEN
1919: FND_LOG.string(l_log_exception, l_full_name, 'Execution Error: ' || x_msg_data);
1920: END IF;
1921:
1918: IF (l_log_exception >= l_log_current_level) THEN
1919: FND_LOG.string(l_log_exception, l_full_name, 'Execution Error: ' || x_msg_data);
1920: END IF;
1921:
1922: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1923: ROLLBACK TO Process_Repair_Item_Pvt;
1924: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1925: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1926: p_data => x_msg_data,
1920: END IF;
1921:
1922: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1923: ROLLBACK TO Process_Repair_Item_Pvt;
1924: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1925: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1926: p_data => x_msg_data,
1927: p_encoded => FND_API.G_FALSE);
1928: IF (l_log_unexpected >= l_log_current_level) THEN
1923: ROLLBACK TO Process_Repair_Item_Pvt;
1924: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1925: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1926: p_data => x_msg_data,
1927: p_encoded => FND_API.G_FALSE);
1928: IF (l_log_unexpected >= l_log_current_level) THEN
1929: FND_LOG.string(l_log_unexpected, l_full_name, 'Unexpected Exception: ' || x_msg_data);
1930: END IF;
1931:
1930: END IF;
1931:
1932: WHEN OTHERS THEN
1933: ROLLBACK TO Process_Repair_Item_Pvt;
1934: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1935: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1936: FND_MSG_PUB.add_exc_msg(p_pkg_name => G_PKG_NAME,
1937: p_procedure_name => l_api_name,
1938: p_error_text => SUBSTR(SQLERRM,1,500));
1938: p_error_text => SUBSTR(SQLERRM,1,500));
1939: END IF;
1940: FND_MSG_PUB.count_and_get(p_count => x_msg_count,
1941: p_data => x_msg_data,
1942: p_encoded => fnd_api.G_FALSE);
1943: IF (l_log_unexpected >= l_log_current_level) THEN
1944: FND_LOG.string(l_log_unexpected, l_full_name, 'Other Exception: ' || x_msg_data);
1945: END IF;
1946:
1964: -------------------------------------------------------------------------------------------------------
1965: PROCEDURE Close_Repair_Batch
1966: (
1967: P_API_VERSION IN NUMBER := 1.0,
1968: P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
1969: P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
1970: P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1971: P_MODULE_TYPE IN VARCHAR2 := NULL,
1972: P_REPAIR_BATCH_ID IN NUMBER,
1965: PROCEDURE Close_Repair_Batch
1966: (
1967: P_API_VERSION IN NUMBER := 1.0,
1968: P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
1969: P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
1970: P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1971: P_MODULE_TYPE IN VARCHAR2 := NULL,
1972: P_REPAIR_BATCH_ID IN NUMBER,
1973: P_X_COST_SESSION_ID IN OUT NOCOPY NUMBER,
1966: (
1967: P_API_VERSION IN NUMBER := 1.0,
1968: P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
1969: P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
1970: P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1971: P_MODULE_TYPE IN VARCHAR2 := NULL,
1972: P_REPAIR_BATCH_ID IN NUMBER,
1973: P_X_COST_SESSION_ID IN OUT NOCOPY NUMBER,
1974: P_X_MR_SESSION_ID IN OUT NOCOPY NUMBER,
2033: -- Standard start of API savepoint
2034: SAVEPOINT Close_Repair_Batch_Pvt;
2035:
2036: -- Standard call to check for call compatibility
2037: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
2038: G_PKG_NAME) THEN
2039: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2040: END IF;
2041: -- Initialize message list if p_init_msg_list is set to TRUE
2035:
2036: -- Standard call to check for call compatibility
2037: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
2038: G_PKG_NAME) THEN
2039: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2040: END IF;
2041: -- Initialize message list if p_init_msg_list is set to TRUE
2042: IF FND_API.To_Boolean(p_init_msg_list) THEN
2043: FND_MSG_PUB.Initialize;
2038: G_PKG_NAME) THEN
2039: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2040: END IF;
2041: -- Initialize message list if p_init_msg_list is set to TRUE
2042: IF FND_API.To_Boolean(p_init_msg_list) THEN
2043: FND_MSG_PUB.Initialize;
2044: END IF;
2045:
2046: -- Initialize API return status to success
2043: FND_MSG_PUB.Initialize;
2044: END IF;
2045:
2046: -- Initialize API return status to success
2047: x_return_status := FND_API.G_RET_STS_SUCCESS;
2048:
2049: IF G_DEBUG='Y' THEN
2050: AHL_DEBUG_PUB.enable_debug;
2051: AHL_DEBUG_PUB.debug('Entered Close Repair Batch API');
2058: IF l_batch_dtl_rec.status_code IS NOT NULL AND l_batch_dtl_rec.status_code IN ('CLOSED','CANCELLED','DELETED') THEN
2059: FND_MESSAGE.SET_NAME('AHL','AHL_CMP_CANNOT_CLOSE');
2060: FND_MESSAGE.Set_Token('BATCH', l_batch_dtl_rec.repair_batch_name);
2061: FND_MSG_PUB.ADD;
2062: RAISE FND_API.G_EXC_ERROR;
2063: END IF;
2064:
2065: OPEN Get_Workorders(p_repair_batch_id);
2066: LOOP
2080: IF l_batch_qty <> 0 THEN
2081: FND_MESSAGE.SET_NAME('AHL','AHL_CMP_BATCH_QTY_NOT_ZERO');
2082: FND_MESSAGE.Set_Token('BATCH', l_batch_dtl_rec.repair_batch_name);
2083: FND_MSG_PUB.ADD;
2084: RAISE FND_API.G_EXC_ERROR;
2085: END IF;
2086:
2087: l_batch_wo_qty := AHL_CMP_UTIL_PKG.Get_Workorder_Qty(l_batch_dtl_rec.repair_batch_name);
2088: IF l_batch_wo_qty <> 0 THEN
2088: IF l_batch_wo_qty <> 0 THEN
2089: FND_MESSAGE.SET_NAME('AHL','AHL_CMP_WO_QTY_NOT_ZERO');
2090: FND_MESSAGE.Set_Token('BATCH', l_batch_dtl_rec.repair_batch_name);
2091: FND_MSG_PUB.ADD;
2092: RAISE FND_API.G_EXC_ERROR;
2093: END IF;
2094:
2095: l_cost_price_rec.visit_id := l_batch_dtl_rec.visit_id;
2096: l_cost_price_rec.visit_task_id := p_repair_batch_id;
2107:
2108: AHL_VWP_COST_PVT.Calculate_WO_Cost(
2109: p_api_version => p_api_version,
2110: p_init_msg_list => p_init_msg_list,
2111: p_commit => Fnd_Api.g_false,
2112: p_validation_level => p_validation_level,
2113: p_x_cost_price_rec => l_cost_price_rec,
2114: x_return_status => l_return_status);
2115:
2121:
2122: -- Check Error Message stack.
2123: l_msg_count := FND_MSG_PUB.count_msg;
2124: IF l_msg_count > 0 THEN
2125: x_return_status := FND_API.G_RET_STS_ERROR;
2126: RAISE FND_API.G_EXC_ERROR;
2127: END IF;
2128:
2129: --Assign to out paramenter
2122: -- Check Error Message stack.
2123: l_msg_count := FND_MSG_PUB.count_msg;
2124: IF l_msg_count > 0 THEN
2125: x_return_status := FND_API.G_RET_STS_ERROR;
2126: RAISE FND_API.G_EXC_ERROR;
2127: END IF;
2128:
2129: --Assign to out paramenter
2130: p_x_cost_session_id := l_cost_price_rec.cost_session_id;
2170:
2171: -- Check Error Message stack.
2172: l_msg_count := FND_MSG_PUB.count_msg;
2173: IF l_msg_count > 0 THEN
2174: x_return_status := FND_API.G_RET_STS_ERROR;
2175: RAISE FND_API.G_EXC_ERROR;
2176: END IF;
2177:
2178: -- Update Repair Batch and its child task Statuses to Closed.
2171: -- Check Error Message stack.
2172: l_msg_count := FND_MSG_PUB.count_msg;
2173: IF l_msg_count > 0 THEN
2174: x_return_status := FND_API.G_RET_STS_ERROR;
2175: RAISE FND_API.G_EXC_ERROR;
2176: END IF;
2177:
2178: -- Update Repair Batch and its child task Statuses to Closed.
2179: /* UPDATE ahl_visit_tasks_b
2192:
2193: FND_MESSAGE.SET_NAME('AHL','AHL_CMP_OPEN_WO_EXISTS'); --Repair Batch cannot be Closed as it has Open workorders.
2194: FND_MESSAGE.Set_Token('REPAIR_BATCH', l_batch_dtl_rec.repair_batch_name);
2195: FND_MSG_PUB.ADD;
2196: RAISE FND_API.G_EXC_ERROR;
2197: END IF;
2198:
2199: IF G_DEBUG='Y' THEN
2200: AHL_DEBUG_PUB.enable_debug;
2201: AHL_DEBUG_PUB.debug('End of Close Repair Batch API');
2202: END IF;
2203:
2204: -- Standard check of p_commit
2205: IF FND_API.To_Boolean(p_commit) THEN
2206: COMMIT;
2207: END IF;
2208:
2209: EXCEPTION
2206: COMMIT;
2207: END IF;
2208:
2209: EXCEPTION
2210: WHEN FND_API.G_EXC_ERROR THEN
2211: x_return_status := FND_API.G_RET_STS_ERROR;
2212: Rollback to Close_Repair_Batch_Pvt;
2213: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2214: p_data => x_msg_data,
2207: END IF;
2208:
2209: EXCEPTION
2210: WHEN FND_API.G_EXC_ERROR THEN
2211: x_return_status := FND_API.G_RET_STS_ERROR;
2212: Rollback to Close_Repair_Batch_Pvt;
2213: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2214: p_data => x_msg_data,
2215: P_ENCODED => FND_API.G_FALSE);
2211: x_return_status := FND_API.G_RET_STS_ERROR;
2212: Rollback to Close_Repair_Batch_Pvt;
2213: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2214: p_data => x_msg_data,
2215: P_ENCODED => FND_API.G_FALSE);
2216:
2217: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2218: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
2219: Rollback to Close_Repair_Batch_Pvt;
2213: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2214: p_data => x_msg_data,
2215: P_ENCODED => FND_API.G_FALSE);
2216:
2217: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2218: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
2219: Rollback to Close_Repair_Batch_Pvt;
2220: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2221: P_DATA => X_MSG_DATA,
2214: p_data => x_msg_data,
2215: P_ENCODED => FND_API.G_FALSE);
2216:
2217: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2218: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
2219: Rollback to Close_Repair_Batch_Pvt;
2220: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2221: P_DATA => X_MSG_DATA,
2222: p_encoded => fnd_api.g_false);
2218: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
2219: Rollback to Close_Repair_Batch_Pvt;
2220: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2221: P_DATA => X_MSG_DATA,
2222: p_encoded => fnd_api.g_false);
2223:
2224: WHEN OTHERS THEN
2225: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2226: Rollback to Close_Repair_Batch_Pvt;
2221: P_DATA => X_MSG_DATA,
2222: p_encoded => fnd_api.g_false);
2223:
2224: WHEN OTHERS THEN
2225: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2226: Rollback to Close_Repair_Batch_Pvt;
2227: fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
2228: p_procedure_name => 'Close_Repair_Batch',
2229: p_error_text => SQLERRM);
2228: p_procedure_name => 'Close_Repair_Batch',
2229: p_error_text => SQLERRM);
2230: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2231: p_data => x_msg_data,
2232: p_encoded => fnd_api.g_false);
2233:
2234: END Close_Repair_Batch;
2235: ----------------------------------------------------------------------------------------------------
2236:
2254: -------------------------------------------------------------------------------------------------------
2255: PROCEDURE Move_To_InRepair_Locator
2256: (
2257: p_api_version IN NUMBER := 1.0,
2258: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2259: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2260: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2261: p_wip_entity_id IN NUMBER,
2262: p_repair_batch_name IN VARCHAR2,
2255: PROCEDURE Move_To_InRepair_Locator
2256: (
2257: p_api_version IN NUMBER := 1.0,
2258: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2259: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2260: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2261: p_wip_entity_id IN NUMBER,
2262: p_repair_batch_name IN VARCHAR2,
2263: p_instance_id IN NUMBER,
2256: (
2257: p_api_version IN NUMBER := 1.0,
2258: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2259: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2260: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2261: p_wip_entity_id IN NUMBER,
2262: p_repair_batch_name IN VARCHAR2,
2263: p_instance_id IN NUMBER,
2264: x_return_status OUT NOCOPY VARCHAR2,
2445: BEGIN
2446: -- Standard start of API savepoint
2447: SAVEPOINT Move_To_InRepair_Locator_Pvt;
2448: -- Standard call to check for call compatibility
2449: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
2450: G_PKG_NAME) THEN
2451: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2452: END IF;
2453: -- Initialize message list if p_init_msg_list is set to TRUE
2447: SAVEPOINT Move_To_InRepair_Locator_Pvt;
2448: -- Standard call to check for call compatibility
2449: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
2450: G_PKG_NAME) THEN
2451: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2452: END IF;
2453: -- Initialize message list if p_init_msg_list is set to TRUE
2454: IF FND_API.To_Boolean(p_init_msg_list) THEN
2455: FND_MSG_PUB.Initialize;
2450: G_PKG_NAME) THEN
2451: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2452: END IF;
2453: -- Initialize message list if p_init_msg_list is set to TRUE
2454: IF FND_API.To_Boolean(p_init_msg_list) THEN
2455: FND_MSG_PUB.Initialize;
2456: END IF;
2457:
2458: -- Initialize API return status to success
2455: FND_MSG_PUB.Initialize;
2456: END IF;
2457:
2458: -- Initialize API return status to success
2459: x_return_status := FND_API.G_RET_STS_SUCCESS;
2460:
2461: IF G_DEBUG='Y' THEN
2462: AHL_DEBUG_PUB.enable_debug;
2463: AHL_DEBUG_PUB.debug('Entering Move_To_InRepair_Locator API with WIP Entity ID: '
2494: FND_LOG.string(l_log_statement, L_DEBUG_KEY,'Calling AHL_CMP_PVT.Create_Instance_in_WIP');
2495: END IF;
2496: AHL_CMP_PVT.Create_Instance_in_WIP(
2497: p_api_version => l_api_version,
2498: p_init_msg_list => Fnd_Api.g_false,
2499: p_commit => Fnd_Api.g_false,
2500: p_validation_level => p_validation_level,
2501: p_wip_entity_id => p_wip_entity_id,
2502: p_instance_id => p_instance_id,
2495: END IF;
2496: AHL_CMP_PVT.Create_Instance_in_WIP(
2497: p_api_version => l_api_version,
2498: p_init_msg_list => Fnd_Api.g_false,
2499: p_commit => Fnd_Api.g_false,
2500: p_validation_level => p_validation_level,
2501: p_wip_entity_id => p_wip_entity_id,
2502: p_instance_id => p_instance_id,
2503: x_new_instance_id => l_new_instance_id,
2504: x_return_status => x_return_status,
2505: x_msg_count => x_msg_count,
2506: x_msg_data => x_msg_data);
2507:
2508: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2509: IF (l_log_statement >= l_log_current_level) THEN
2510: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'call to Create_Instance_in_WIP errored out');
2511: END IF;
2512: RAISE FND_API.G_EXC_ERROR;
2508: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2509: IF (l_log_statement >= l_log_current_level) THEN
2510: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'call to Create_Instance_in_WIP errored out');
2511: END IF;
2512: RAISE FND_API.G_EXC_ERROR;
2513: END IF;
2514: /********************End of Dummy Instance Creation *********************************************/
2515:
2516: IF (l_log_statement >= l_log_current_level) THEN
2560: LOOP
2561: -- 3) Update EAM workorders with the new instance ID
2562: AHL_CMP_PVT.Update_EAM_Workorders(
2563: p_api_version => l_api_version,
2564: p_init_msg_list => Fnd_Api.g_false,
2565: p_commit => Fnd_Api.g_false,
2566: p_validation_level => p_validation_level,
2567: p_wip_entity_id => l_wip_entity_tbl(i),
2568: p_instance_id => l_new_instance_id,
2561: -- 3) Update EAM workorders with the new instance ID
2562: AHL_CMP_PVT.Update_EAM_Workorders(
2563: p_api_version => l_api_version,
2564: p_init_msg_list => Fnd_Api.g_false,
2565: p_commit => Fnd_Api.g_false,
2566: p_validation_level => p_validation_level,
2567: p_wip_entity_id => l_wip_entity_tbl(i),
2568: p_instance_id => l_new_instance_id,
2569: x_return_status => x_return_status,
2571: x_msg_data => x_msg_data);
2572: END LOOP;
2573:
2574: /********************End of Update of EAM Workorders**************************************/
2575: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2576: IF (l_log_statement >= l_log_current_level) THEN
2577: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'call to Update_EAM_Workorders errored out');
2578: END IF;
2579: RAISE FND_API.G_EXC_ERROR;
2575: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2576: IF (l_log_statement >= l_log_current_level) THEN
2577: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'call to Update_EAM_Workorders errored out');
2578: END IF;
2579: RAISE FND_API.G_EXC_ERROR;
2580: END IF;
2581: END IF;
2582: IF (l_log_statement >= l_log_current_level) THEN
2583: FND_LOG.string(l_log_statement, L_DEBUG_KEY,'After calling EAM_PROCESS_WO_PUB.'
2665: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'called Perform_Mtl_Xfr');
2666: END IF;
2667:
2668: -- if the call resulted in error, then raise it
2669: IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
2670: IF (l_log_statement >= l_log_current_level) THEN
2671: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'call to Perform_Mtl_Xfr errored out');
2672: END IF;
2673: RAISE FND_API.G_EXC_ERROR;
2669: IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
2670: IF (l_log_statement >= l_log_current_level) THEN
2671: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'call to Perform_Mtl_Xfr errored out');
2672: END IF;
2673: RAISE FND_API.G_EXC_ERROR;
2674: END IF;
2675: /********************End of Material Transfer ***************************************************/
2676: -- 5) For non-serialized items - update back all the open workorders / tasks (non released)
2677: -- of the repair batch with the new In-Repair locator instance.
2710: FOR i IN l_wip_entity_tbl.FIRST .. l_wip_entity_tbl.LAST
2711: LOOP
2712: AHL_CMP_PVT.Update_EAM_Workorders(
2713: p_api_version => l_api_version,
2714: p_init_msg_list => Fnd_Api.g_false,
2715: p_commit => Fnd_Api.g_false,
2716: p_validation_level => p_validation_level,
2717: p_wip_entity_id => l_wip_entity_tbl(i),
2718: p_instance_id => l_locator_inst_id,
2711: LOOP
2712: AHL_CMP_PVT.Update_EAM_Workorders(
2713: p_api_version => l_api_version,
2714: p_init_msg_list => Fnd_Api.g_false,
2715: p_commit => Fnd_Api.g_false,
2716: p_validation_level => p_validation_level,
2717: p_wip_entity_id => l_wip_entity_tbl(i),
2718: p_instance_id => l_locator_inst_id,
2719: x_return_status => x_return_status,
2721: x_msg_data => x_msg_data);
2722: END LOOP;
2723:
2724: /********************End of Update of EAM Workorders**************************************/
2725: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2726: IF (l_log_statement >= l_log_current_level) THEN
2727: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'call to Update_EAM_Workorders errored out');
2728: END IF;
2729: RAISE FND_API.G_EXC_ERROR;
2725: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2726: IF (l_log_statement >= l_log_current_level) THEN
2727: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'call to Update_EAM_Workorders errored out');
2728: END IF;
2729: RAISE FND_API.G_EXC_ERROR;
2730: END IF;
2731:
2732: -- 6) Expire the dummy instance
2733: --UPDATE CSI_ITEM_INSTANCES set ACTIVE_END_DATE = TRUNC(SYSDATE) WHERE
2735: -- Call CSI PUB API to expire the instance
2736: -- get the transaction type
2737: AHL_UTIL_UC_PKG.getcsi_transaction_id('CMRO_MAINTENANCE_WORK_ORDER',l_csi_transaction_type_id, l_return_value);
2738: IF NOT l_return_value THEN
2739: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2740: END IF;
2741:
2742: --Set the CSI transaction record
2743: l_csi_transaction_rec.source_transaction_date := SYSDATE;
2751: IF (get_csi_obj_ver_num%NOTFOUND) THEN
2752: CLOSE get_csi_obj_ver_num;
2753: FND_MESSAGE.set_name('AHL','AHL_COM_RECORD_DELETED');
2754: FND_MSG_PUB.add;
2755: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2756: ELSE
2757: CLOSE get_csi_obj_ver_num;
2758: END IF;
2759:
2765:
2766: CSI_ITEM_INSTANCE_PUB.expire_item_instance(
2767: p_api_version => 1.0,
2768: p_instance_rec => l_csi_instance_rec,
2769: p_expire_children => FND_API.G_TRUE,
2770: p_txn_rec => l_csi_upd_transaction_rec,
2771: x_instance_id_lst => l_csi_instance_id_lst,
2772: x_return_status => x_return_status,
2773: x_msg_count => x_msg_count,
2772: x_return_status => x_return_status,
2773: x_msg_count => x_msg_count,
2774: x_msg_data => x_msg_data);
2775:
2776: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2777: IF (l_log_statement >= l_log_current_level) THEN
2778: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'Error in CSI_ITEM_INSTANCE_PUB.expire_item_instance');
2779: END IF;
2780: RAISE FND_API.G_EXC_ERROR;
2776: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2777: IF (l_log_statement >= l_log_current_level) THEN
2778: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'Error in CSI_ITEM_INSTANCE_PUB.expire_item_instance');
2779: END IF;
2780: RAISE FND_API.G_EXC_ERROR;
2781: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2782: IF (l_log_statement >= l_log_current_level) THEN
2783: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'Error in CSI_ITEM_INSTANCE_PUB.expire_item_instance');
2784: END IF;
2777: IF (l_log_statement >= l_log_current_level) THEN
2778: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'Error in CSI_ITEM_INSTANCE_PUB.expire_item_instance');
2779: END IF;
2780: RAISE FND_API.G_EXC_ERROR;
2781: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2782: IF (l_log_statement >= l_log_current_level) THEN
2783: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'Error in CSI_ITEM_INSTANCE_PUB.expire_item_instance');
2784: END IF;
2785: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2781: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2782: IF (l_log_statement >= l_log_current_level) THEN
2783: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'Error in CSI_ITEM_INSTANCE_PUB.expire_item_instance');
2784: END IF;
2785: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2786: END IF;
2787:
2788: IF (l_log_statement >= l_log_current_level) THEN
2789: FND_LOG.string(l_log_statement, L_DEBUG_KEY, 'called expire_item_instance');
2793:
2794:
2795:
2796: -- Standard check of p_commit
2797: IF FND_API.To_Boolean(p_commit) THEN
2798: COMMIT;
2799: END IF;
2800: EXCEPTION
2801: WHEN FND_API.G_EXC_ERROR THEN
2797: IF FND_API.To_Boolean(p_commit) THEN
2798: COMMIT;
2799: END IF;
2800: EXCEPTION
2801: WHEN FND_API.G_EXC_ERROR THEN
2802: x_return_status := FND_API.G_RET_STS_ERROR;
2803: Rollback to Move_To_InRepair_Locator_Pvt;
2804: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2805: p_data => x_msg_data,
2798: COMMIT;
2799: END IF;
2800: EXCEPTION
2801: WHEN FND_API.G_EXC_ERROR THEN
2802: x_return_status := FND_API.G_RET_STS_ERROR;
2803: Rollback to Move_To_InRepair_Locator_Pvt;
2804: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2805: p_data => x_msg_data,
2806: P_ENCODED => FND_API.G_FALSE);
2802: x_return_status := FND_API.G_RET_STS_ERROR;
2803: Rollback to Move_To_InRepair_Locator_Pvt;
2804: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2805: p_data => x_msg_data,
2806: P_ENCODED => FND_API.G_FALSE);
2807:
2808: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2809: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
2810: Rollback to Move_To_InRepair_Locator_Pvt;
2804: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2805: p_data => x_msg_data,
2806: P_ENCODED => FND_API.G_FALSE);
2807:
2808: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2809: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
2810: Rollback to Move_To_InRepair_Locator_Pvt;
2811: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2812: P_DATA => X_MSG_DATA,
2805: p_data => x_msg_data,
2806: P_ENCODED => FND_API.G_FALSE);
2807:
2808: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2809: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
2810: Rollback to Move_To_InRepair_Locator_Pvt;
2811: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2812: P_DATA => X_MSG_DATA,
2813: p_encoded => fnd_api.g_false);
2809: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
2810: Rollback to Move_To_InRepair_Locator_Pvt;
2811: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2812: P_DATA => X_MSG_DATA,
2813: p_encoded => fnd_api.g_false);
2814:
2815: WHEN OTHERS THEN
2816: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2817: Rollback to Move_To_InRepair_Locator_Pvt;
2812: P_DATA => X_MSG_DATA,
2813: p_encoded => fnd_api.g_false);
2814:
2815: WHEN OTHERS THEN
2816: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2817: Rollback to Move_To_InRepair_Locator_Pvt;
2818: fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
2819: p_procedure_name => 'Move_To_InRepair_Locator',
2820: p_error_text => SQLERRM);
2819: p_procedure_name => 'Move_To_InRepair_Locator',
2820: p_error_text => SQLERRM);
2821: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2822: p_data => x_msg_data,
2823: p_encoded => fnd_api.g_false);
2824:
2825: END Move_To_InRepair_Locator;
2826: ---------------------------------------------------------------------------------------------
2827: -- Kasridha: Procedure to create a dummy instance in WIP
2841: -------------------------------------------------------------------------------------------------------
2842: PROCEDURE Create_Instance_in_WIP
2843: (
2844: p_api_version IN NUMBER := 1.0,
2845: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2846: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2847: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2848: p_wip_entity_id IN NUMBER,
2849: p_instance_id IN NUMBER,
2842: PROCEDURE Create_Instance_in_WIP
2843: (
2844: p_api_version IN NUMBER := 1.0,
2845: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2846: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2847: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2848: p_wip_entity_id IN NUMBER,
2849: p_instance_id IN NUMBER,
2850: x_new_instance_id OUT NOCOPY NUMBER,
2843: (
2844: p_api_version IN NUMBER := 1.0,
2845: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2846: p_commit IN VARCHAR2 := FND_API.G_FALSE,
2847: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2848: p_wip_entity_id IN NUMBER,
2849: p_instance_id IN NUMBER,
2850: x_new_instance_id OUT NOCOPY NUMBER,
2851: x_return_status OUT NOCOPY VARCHAR2,
2913: L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || l_api_name;
2914: BEGIN
2915:
2916: -- Standard call to check for call compatibility
2917: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
2918: G_PKG_NAME) THEN
2919: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2920: END IF;
2921: -- Initialize message list if p_init_msg_list is set to TRUE
2915:
2916: -- Standard call to check for call compatibility
2917: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
2918: G_PKG_NAME) THEN
2919: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2920: END IF;
2921: -- Initialize message list if p_init_msg_list is set to TRUE
2922: IF FND_API.To_Boolean(p_init_msg_list) THEN
2923: FND_MSG_PUB.Initialize;
2918: G_PKG_NAME) THEN
2919: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2920: END IF;
2921: -- Initialize message list if p_init_msg_list is set to TRUE
2922: IF FND_API.To_Boolean(p_init_msg_list) THEN
2923: FND_MSG_PUB.Initialize;
2924: END IF;
2925:
2926: -- Initialize API return status to success
2923: FND_MSG_PUB.Initialize;
2924: END IF;
2925:
2926: -- Initialize API return status to success
2927: x_return_status := FND_API.G_RET_STS_SUCCESS;
2928:
2929: IF G_DEBUG='Y' THEN
2930: AHL_DEBUG_PUB.enable_debug;
2931: AHL_DEBUG_PUB.debug('Entering Create_Instance_in_WIP API with WIP Entity ID: '|| p_wip_entity_id ||
2965: IF NOT(l_return_val) THEN
2966: FND_MESSAGE.set_name('AHL', 'AHL_UC_ATTRIB_CODE_MISSING');
2967: FND_MESSAGE.set_token('CODE', 'AHL_MFG_DATE');
2968: FND_MSG_PUB.ADD;
2969: RAISE FND_API.G_EXC_ERROR;
2970: ELSE
2971: l_csi_extend_attrib_rec.attribute_id := l_attribute_id;
2972: l_csi_extend_attrib_rec.attribute_value := TO_CHAR(SYSDATE, 'DD/MM/YYYY');
2973: l_csi_ext_attrib_values_tbl(1) := l_csi_extend_attrib_rec;
2996: IF NOT(l_return_val) THEN
2997: FND_MESSAGE.Set_Name('AHL', 'AHL_UC_TXNCODE_INVALID');
2998: FND_MESSAGE.Set_Token('CODE', 'CMRO_MAINTENANCE_WORK_ORDER');
2999: FND_MSG_PUB.ADD;
3000: RAISE FND_API.G_EXC_ERROR;
3001: END IF;
3002:
3003: IF (l_log_statement >= l_log_current_level) THEN
3004: FND_LOG.string(l_log_statement, L_DEBUG_KEY,'Before calling CSI_ITEM_INSTANCE_PUB.'
3026: FND_LOG.string(l_log_statement, L_DEBUG_KEY,'After calling CSI_ITEM_INSTANCE_PUB.'
3027: || 'create_item_instance');
3028: END IF;
3029:
3030: IF(x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
3031: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3032: END IF;
3033:
3034: x_new_instance_id := l_csi_instance_rec.instance_id;
3027: || 'create_item_instance');
3028: END IF;
3029:
3030: IF(x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
3031: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3032: END IF;
3033:
3034: x_new_instance_id := l_csi_instance_rec.instance_id;
3035:
3037: FND_LOG.string(l_log_statement, L_DEBUG_KEY,'New Instance ID: ' || x_new_instance_id);
3038: END IF;
3039:
3040: -- Standard check of p_commit
3041: IF FND_API.To_Boolean(p_commit) THEN
3042: COMMIT;
3043: END IF;
3044:
3045: -- Error Handling
3043: END IF;
3044:
3045: -- Error Handling
3046: EXCEPTION
3047: WHEN FND_API.G_EXC_ERROR THEN
3048: x_return_status := FND_API.G_RET_STS_ERROR;
3049: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3050: p_data => x_msg_data,
3051: P_ENCODED => FND_API.G_FALSE);
3044:
3045: -- Error Handling
3046: EXCEPTION
3047: WHEN FND_API.G_EXC_ERROR THEN
3048: x_return_status := FND_API.G_RET_STS_ERROR;
3049: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3050: p_data => x_msg_data,
3051: P_ENCODED => FND_API.G_FALSE);
3052:
3047: WHEN FND_API.G_EXC_ERROR THEN
3048: x_return_status := FND_API.G_RET_STS_ERROR;
3049: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3050: p_data => x_msg_data,
3051: P_ENCODED => FND_API.G_FALSE);
3052:
3053: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3054: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
3055: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3049: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3050: p_data => x_msg_data,
3051: P_ENCODED => FND_API.G_FALSE);
3052:
3053: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3054: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
3055: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3056: P_DATA => X_MSG_DATA,
3057: p_encoded => fnd_api.g_false);
3050: p_data => x_msg_data,
3051: P_ENCODED => FND_API.G_FALSE);
3052:
3053: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3054: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
3055: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3056: P_DATA => X_MSG_DATA,
3057: p_encoded => fnd_api.g_false);
3058:
3053: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3054: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
3055: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3056: P_DATA => X_MSG_DATA,
3057: p_encoded => fnd_api.g_false);
3058:
3059: WHEN OTHERS THEN
3060: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3061: fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3056: P_DATA => X_MSG_DATA,
3057: p_encoded => fnd_api.g_false);
3058:
3059: WHEN OTHERS THEN
3060: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3061: fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3062: p_procedure_name => 'Create_Instance_in_WIP',
3063: p_error_text => SQLERRM);
3064: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3062: p_procedure_name => 'Create_Instance_in_WIP',
3063: p_error_text => SQLERRM);
3064: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3065: p_data => x_msg_data,
3066: p_encoded => fnd_api.g_false);
3067: END Create_Instance_in_WIP;
3068:
3069: ---------------------------------------------------------------------------------------------
3070: -- Kasridha: Procedure to update all EAM workorders with an instance
3084: -------------------------------------------------------------------------------------------------------
3085: PROCEDURE Update_EAM_Workorders
3086: (
3087: p_api_version IN NUMBER := 1.0,
3088: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3089: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3090: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3091: p_wip_entity_id IN NUMBER,
3092: p_instance_id IN NUMBER,
3085: PROCEDURE Update_EAM_Workorders
3086: (
3087: p_api_version IN NUMBER := 1.0,
3088: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3089: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3090: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3091: p_wip_entity_id IN NUMBER,
3092: p_instance_id IN NUMBER,
3093: x_return_status OUT NOCOPY VARCHAR2,
3086: (
3087: p_api_version IN NUMBER := 1.0,
3088: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3089: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3090: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3091: p_wip_entity_id IN NUMBER,
3092: p_instance_id IN NUMBER,
3093: x_return_status OUT NOCOPY VARCHAR2,
3094: x_msg_count OUT NOCOPY NUMBER,
3150: l_wip_entityids NUMBER;
3151: BEGIN
3152:
3153: -- Standard call to check for call compatibility
3154: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
3155: G_PKG_NAME) THEN
3156: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3157: END IF;
3158: -- Initialize message list if p_init_msg_list is set to TRUE
3152:
3153: -- Standard call to check for call compatibility
3154: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
3155: G_PKG_NAME) THEN
3156: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3157: END IF;
3158: -- Initialize message list if p_init_msg_list is set to TRUE
3159: IF FND_API.To_Boolean(p_init_msg_list) THEN
3160: FND_MSG_PUB.Initialize;
3155: G_PKG_NAME) THEN
3156: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3157: END IF;
3158: -- Initialize message list if p_init_msg_list is set to TRUE
3159: IF FND_API.To_Boolean(p_init_msg_list) THEN
3160: FND_MSG_PUB.Initialize;
3161: END IF;
3162:
3163: -- Initialize API return status to success
3160: FND_MSG_PUB.Initialize;
3161: END IF;
3162:
3163: -- Initialize API return status to success
3164: x_return_status := FND_API.G_RET_STS_SUCCESS;
3165:
3166: IF G_DEBUG='Y' THEN
3167: AHL_DEBUG_PUB.enable_debug;
3168: AHL_DEBUG_PUB.debug('Entering Update_EAM_Workorders API with WIP Entity ID: '|| p_wip_entity_id ||
3193: (
3194: p_bo_identifier => l_bo_identifier,
3195: p_api_version_number => 1.0,
3196: p_init_msg_list => l_init_msg_list,
3197: p_commit => FND_API.G_FALSE,
3198: p_eam_wo_rec => l_eam_wo_rec,
3199: p_eam_op_tbl => l_eam_op_tbl,
3200: p_eam_op_network_tbl => l_eam_op_network_tbl,
3201: p_eam_res_tbl => l_eam_res_tbl,
3226: FND_LOG.string(l_log_statement, L_DEBUG_KEY,'After calling EAM_PROCESS_WO_PUB.'
3227: || 'process_wo');
3228: END IF;
3229:
3230: IF(x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
3231: IF (l_log_statement >= l_log_current_level) THEN
3232: FND_LOG.string(l_log_statement, L_DEBUG_KEY,'Error occured during setting instance '
3233: || 'for EAM workorders');
3234: END IF;
3231: IF (l_log_statement >= l_log_current_level) THEN
3232: FND_LOG.string(l_log_statement, L_DEBUG_KEY,'Error occured during setting instance '
3233: || 'for EAM workorders');
3234: END IF;
3235: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3236: END IF;
3237:
3238: -- Standard check of p_commit
3239: IF FND_API.To_Boolean(p_commit) THEN
3235: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3236: END IF;
3237:
3238: -- Standard check of p_commit
3239: IF FND_API.To_Boolean(p_commit) THEN
3240: COMMIT;
3241: END IF;
3242:
3243: -- Error Handling
3241: END IF;
3242:
3243: -- Error Handling
3244: EXCEPTION
3245: WHEN FND_API.G_EXC_ERROR THEN
3246: x_return_status := FND_API.G_RET_STS_ERROR;
3247: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3248: p_data => x_msg_data,
3249: P_ENCODED => FND_API.G_FALSE);
3242:
3243: -- Error Handling
3244: EXCEPTION
3245: WHEN FND_API.G_EXC_ERROR THEN
3246: x_return_status := FND_API.G_RET_STS_ERROR;
3247: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3248: p_data => x_msg_data,
3249: P_ENCODED => FND_API.G_FALSE);
3250:
3245: WHEN FND_API.G_EXC_ERROR THEN
3246: x_return_status := FND_API.G_RET_STS_ERROR;
3247: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3248: p_data => x_msg_data,
3249: P_ENCODED => FND_API.G_FALSE);
3250:
3251: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3252: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
3253: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3247: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3248: p_data => x_msg_data,
3249: P_ENCODED => FND_API.G_FALSE);
3250:
3251: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3252: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
3253: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3254: P_DATA => X_MSG_DATA,
3255: p_encoded => fnd_api.g_false);
3248: p_data => x_msg_data,
3249: P_ENCODED => FND_API.G_FALSE);
3250:
3251: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3252: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
3253: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3254: P_DATA => X_MSG_DATA,
3255: p_encoded => fnd_api.g_false);
3256:
3251: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3252: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
3253: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3254: P_DATA => X_MSG_DATA,
3255: p_encoded => fnd_api.g_false);
3256:
3257: WHEN OTHERS THEN
3258: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3259: fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3254: P_DATA => X_MSG_DATA,
3255: p_encoded => fnd_api.g_false);
3256:
3257: WHEN OTHERS THEN
3258: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3259: fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3260: p_procedure_name => 'Update_EAM_Workorders',
3261: p_error_text => SQLERRM);
3262: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3260: p_procedure_name => 'Update_EAM_Workorders',
3261: p_error_text => SQLERRM);
3262: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3263: p_data => x_msg_data,
3264: p_encoded => fnd_api.g_false);
3265: END Update_EAM_Workorders;
3266: --------------------------------------------------------------------------------------------------------------
3267:
3268: -------------------------------------------------------------------------------------------------------
3304:
3305:
3306: BEGIN
3307:
3308: x_return_status := FND_API.G_RET_STS_SUCCESS;
3309:
3310: IF G_DEBUG='Y' THEN
3311: AHL_DEBUG_PUB.enable_debug;
3312: AHL_DEBUG_PUB.debug('Entering Validate_Rtn_Rec Procedure');
3319:
3320: IF p_x_ahl_mtlrtn_rec.Return_Qty IS NULL THEN
3321: FND_MESSAGE.Set_Name('AHL','AHL_CMP_RTN_QTY_NULL'); -- Return quantity cannot be null.
3322: FND_MSG_PUB.ADD;
3323: x_return_status := FND_API.G_RET_STS_ERROR;
3324: ELSIF p_x_ahl_mtlrtn_rec.Return_Qty <= 0 THEN
3325: FND_MESSAGE.Set_Name('AHL','AHL_CMP_INVALID_RTN_QTY'); -- Invalid Return quantity specified.
3326: FND_MESSAGE.Set_Token('QUANTITY',p_x_ahl_mtlrtn_rec.Return_Qty);
3327: FND_MSG_PUB.ADD;
3324: ELSIF p_x_ahl_mtlrtn_rec.Return_Qty <= 0 THEN
3325: FND_MESSAGE.Set_Name('AHL','AHL_CMP_INVALID_RTN_QTY'); -- Invalid Return quantity specified.
3326: FND_MESSAGE.Set_Token('QUANTITY',p_x_ahl_mtlrtn_rec.Return_Qty);
3327: FND_MSG_PUB.ADD;
3328: x_return_status := FND_API.G_RET_STS_ERROR;
3329: END IF;
3330:
3331: IF p_x_ahl_mtlrtn_rec.Instance_Qty IS NOT NULL THEN
3332: IF p_x_ahl_mtlrtn_rec.Return_Qty > p_x_ahl_mtlrtn_rec.Instance_Qty THEN
3331: IF p_x_ahl_mtlrtn_rec.Instance_Qty IS NOT NULL THEN
3332: IF p_x_ahl_mtlrtn_rec.Return_Qty > p_x_ahl_mtlrtn_rec.Instance_Qty THEN
3333: FND_MESSAGE.Set_Name('AHL','AHL_CMP_RTNQTY_GRTR_INSTQTY'); -- Return quantity cannot be greater than instance quantity.
3334: FND_MSG_PUB.ADD;
3335: x_return_status := FND_API.G_RET_STS_ERROR;
3336: END IF;
3337: END IF;
3338:
3339: IF p_x_ahl_mtlrtn_rec.Return_Condition IS NULL THEN
3338:
3339: IF p_x_ahl_mtlrtn_rec.Return_Condition IS NULL THEN
3340: FND_MESSAGE.Set_Name('AHL','AHL_CMP_RET_COND_NULL'); -- Condition cannot be null.
3341: FND_MSG_PUB.ADD;
3342: x_return_status := FND_API.G_RET_STS_ERROR;
3343: END IF;
3344:
3345: IF p_x_ahl_mtlrtn_rec.Dst_SubInv_Name IS NULL THEN
3346: FND_MESSAGE.Set_Name('AHL','AHL_CMP_SUBINV_NULL'); -- Sub Inventory cannot be null.
3344:
3345: IF p_x_ahl_mtlrtn_rec.Dst_SubInv_Name IS NULL THEN
3346: FND_MESSAGE.Set_Name('AHL','AHL_CMP_SUBINV_NULL'); -- Sub Inventory cannot be null.
3347: FND_MSG_PUB.ADD;
3348: x_return_status := FND_API.G_RET_STS_ERROR;
3349: END IF;
3350:
3351: IF (p_x_ahl_mtlrtn_rec.Dst_Locator_Id IS NULL AND p_x_ahl_mtlrtn_rec.Dst_Locator_Segments IS NULL) THEN
3352: FND_MESSAGE.Set_Name('AHL','AHL_CMP_LOCATOR_NULL'); -- Locator cannot be null.
3350:
3351: IF (p_x_ahl_mtlrtn_rec.Dst_Locator_Id IS NULL AND p_x_ahl_mtlrtn_rec.Dst_Locator_Segments IS NULL) THEN
3352: FND_MESSAGE.Set_Name('AHL','AHL_CMP_LOCATOR_NULL'); -- Locator cannot be null.
3353: FND_MSG_PUB.ADD;
3354: x_return_status := FND_API.G_RET_STS_ERROR;
3355: END IF;
3356:
3357:
3358: l_result := AHL_CMP_UTIL_PKG.Are_All_Workorders_Complete(p_x_ahl_mtlrtn_rec.repair_batch_name, p_x_ahl_mtlrtn_rec.Instance_Id , p_x_ahl_mtlrtn_rec.Organization_Id);
3366: IF (nvl(l_srl_ctrl_code,0) <> nvl(C_NO_SERIAL_CONTROL,0) ) THEN --Serialized Item
3367: FND_MESSAGE.Set_Name('AHL','AHL_CMP_CANNOT_RETURN'); -- Cannot perform return as there exists open workorders associated to the instance
3368: FND_MESSAGE.Set_Token('INSTANCE',p_x_ahl_mtlrtn_rec.Instance_Id);
3369: FND_MSG_PUB.ADD;
3370: x_return_status := FND_API.G_RET_STS_ERROR;
3371: ELSE
3372: FND_MESSAGE.Set_Name('AHL','AHL_CMP_CANNOT_RTN_FULL_QTY'); -- Cannot return complete quantity as there exists open workorders associated to the instance
3373: FND_MESSAGE.Set_Token('INSTANCE',p_x_ahl_mtlrtn_rec.Instance_Id);
3374: FND_MSG_PUB.ADD;
3371: ELSE
3372: FND_MESSAGE.Set_Name('AHL','AHL_CMP_CANNOT_RTN_FULL_QTY'); -- Cannot return complete quantity as there exists open workorders associated to the instance
3373: FND_MESSAGE.Set_Token('INSTANCE',p_x_ahl_mtlrtn_rec.Instance_Id);
3374: FND_MSG_PUB.ADD;
3375: x_return_status := FND_API.G_RET_STS_ERROR;
3376: END IF;
3377: END IF;
3378:
3379: IF G_DEBUG='Y' THEN
3400: ----------------------------------------------------------------------------------------------------------
3401: PROCEDURE PERFORM_RETURN_TXN
3402: (
3403: p_api_version IN NUMBER := 1.0,
3404: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3405: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3406: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3407: p_x_ahl_mtlrtn_tbl IN OUT NOCOPY Ahl_MtlRtn_Tbl_Type,
3408: x_return_status OUT NOCOPY VARCHAR2,
3401: PROCEDURE PERFORM_RETURN_TXN
3402: (
3403: p_api_version IN NUMBER := 1.0,
3404: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3405: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3406: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3407: p_x_ahl_mtlrtn_tbl IN OUT NOCOPY Ahl_MtlRtn_Tbl_Type,
3408: x_return_status OUT NOCOPY VARCHAR2,
3409: x_msg_count OUT NOCOPY NUMBER,
3402: (
3403: p_api_version IN NUMBER := 1.0,
3404: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3405: p_commit IN VARCHAR2 := FND_API.G_FALSE,
3406: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3407: p_x_ahl_mtlrtn_tbl IN OUT NOCOPY Ahl_MtlRtn_Tbl_Type,
3408: x_return_status OUT NOCOPY VARCHAR2,
3409: x_msg_count OUT NOCOPY NUMBER,
3410: x_msg_data OUT NOCOPY VARCHAR2
3502: -- Standard start of API savepoint
3503: SAVEPOINT PERFORM_RETURN_TXN_PVT;
3504:
3505: -- Standard call to check for call compatibility
3506: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
3507: G_PKG_NAME) THEN
3508: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3509: END IF;
3510: -- Initialize message list if p_init_msg_list is set to TRUE
3504:
3505: -- Standard call to check for call compatibility
3506: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
3507: G_PKG_NAME) THEN
3508: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3509: END IF;
3510: -- Initialize message list if p_init_msg_list is set to TRUE
3511: IF FND_API.To_Boolean(p_init_msg_list) THEN
3512: FND_MSG_PUB.Initialize;
3507: G_PKG_NAME) THEN
3508: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3509: END IF;
3510: -- Initialize message list if p_init_msg_list is set to TRUE
3511: IF FND_API.To_Boolean(p_init_msg_list) THEN
3512: FND_MSG_PUB.Initialize;
3513: END IF;
3514:
3515: -- Initialize API return status to success
3512: FND_MSG_PUB.Initialize;
3513: END IF;
3514:
3515: -- Initialize API return status to success
3516: x_return_status := FND_API.G_RET_STS_SUCCESS;
3517:
3518:
3519: IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3520: fnd_log.string(l_log_statement,l_debug,'Entering Perform Return Txn API');
3564: fnd_log.string(l_log_statement,l_debug,'After calling Validate_Rtn_Rec');
3565: END IF;
3566:
3567:
3568: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3569: l_error := true;
3570:
3571: IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
3572: fnd_log.string(l_log_statement,l_debug,'Error in Validate_Rtn_Rec');
3574: END IF;
3575: END LOOP;
3576:
3577: IF (l_Error) THEN
3578: RAISE FND_API.G_EXC_ERROR;
3579: END IF;
3580:
3581: -- Calling Perform_Mtl_Xfr api to transfer material from Planning/In-Repair Locator to a Serviceable/Un-Serviceable Sub Inventory.
3582: FOR i IN p_x_ahl_mtlrtn_tbl.FIRST..p_x_ahl_mtlrtn_tbl.LAST LOOP
3612: IF (l_log_statement >= l_log_current_level) THEN
3613: FND_LOG.string(l_log_statement, l_debug, 'After calling Perform_Mtl_Xfr API...ret_status['||x_return_status||']');
3614: END IF;
3615:
3616: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3617: RAISE FND_API.G_EXC_ERROR;
3618: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3619: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3620: END IF;
3613: FND_LOG.string(l_log_statement, l_debug, 'After calling Perform_Mtl_Xfr API...ret_status['||x_return_status||']');
3614: END IF;
3615:
3616: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3617: RAISE FND_API.G_EXC_ERROR;
3618: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3619: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3620: END IF;
3621:
3614: END IF;
3615:
3616: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3617: RAISE FND_API.G_EXC_ERROR;
3618: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3619: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3620: END IF;
3621:
3622:
3615:
3616: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3617: RAISE FND_API.G_EXC_ERROR;
3618: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3619: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3620: END IF;
3621:
3622:
3623: -- For Partial Qty Returns, all the Open Workorders associated to the instance are updated with the remaining instance qty.
3655: -- for serialized instances, update instance condition.
3656: IF (p_x_ahl_mtlrtn_tbl(i).Serial_Number) IS NOT NULL THEN
3657: AHL_PRD_PARTS_CHANGE_PVT.Update_Part_Condition
3658: (
3659: p_init_msg_list => FND_API.G_FALSE,
3660: p_commit => FND_API.G_FALSE,
3661: p_instance_id => p_x_ahl_mtlrtn_tbl(i).Instance_Id,
3662: p_instance_condition_id => p_x_ahl_mtlrtn_tbl(i).Return_Condition,
3663: x_return_status => x_return_status,
3656: IF (p_x_ahl_mtlrtn_tbl(i).Serial_Number) IS NOT NULL THEN
3657: AHL_PRD_PARTS_CHANGE_PVT.Update_Part_Condition
3658: (
3659: p_init_msg_list => FND_API.G_FALSE,
3660: p_commit => FND_API.G_FALSE,
3661: p_instance_id => p_x_ahl_mtlrtn_tbl(i).Instance_Id,
3662: p_instance_condition_id => p_x_ahl_mtlrtn_tbl(i).Return_Condition,
3663: x_return_status => x_return_status,
3664: x_msg_data => x_msg_data,
3668: IF (l_log_statement >= l_log_current_level) THEN
3669: FND_LOG.string(l_log_statement, l_debug, 'after PartsChange Part-Condition-Update api:ret status=['||x_return_status||']');
3670: END IF;
3671:
3672: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3673: RAISE FND_API.G_EXC_ERROR;
3674: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3675: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3676: END IF;
3669: FND_LOG.string(l_log_statement, l_debug, 'after PartsChange Part-Condition-Update api:ret status=['||x_return_status||']');
3670: END IF;
3671:
3672: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3673: RAISE FND_API.G_EXC_ERROR;
3674: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3675: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3676: END IF;
3677:
3670: END IF;
3671:
3672: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3673: RAISE FND_API.G_EXC_ERROR;
3674: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3675: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3676: END IF;
3677:
3678: END IF; -- serial number
3671:
3672: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3673: RAISE FND_API.G_EXC_ERROR;
3674: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3675: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3676: END IF;
3677:
3678: END IF; -- serial number
3679:
3746: END IF;
3747: AHL_MM_RESERVATIONS_PVT.DELETE_RESERVATION
3748: (
3749: p_api_version => 1.0,
3750: p_init_msg_list => FND_API.G_FALSE,
3751: p_commit => FND_API.G_FALSE,
3752: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3753: p_module_type => null,
3754: x_return_status => x_return_status,
3747: AHL_MM_RESERVATIONS_PVT.DELETE_RESERVATION
3748: (
3749: p_api_version => 1.0,
3750: p_init_msg_list => FND_API.G_FALSE,
3751: p_commit => FND_API.G_FALSE,
3752: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3753: p_module_type => null,
3754: x_return_status => x_return_status,
3755: x_msg_count => x_msg_count,
3748: (
3749: p_api_version => 1.0,
3750: p_init_msg_list => FND_API.G_FALSE,
3751: p_commit => FND_API.G_FALSE,
3752: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3753: p_module_type => null,
3754: x_return_status => x_return_status,
3755: x_msg_count => x_msg_count,
3756: x_msg_data => x_msg_data,
3760: IF (l_log_statement >= l_log_current_level) THEN
3761: FND_LOG.string(l_log_statement, l_debug, 'After Delete_Reservation API...ret_status['||x_return_status||']');
3762: END IF;
3763:
3764: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3765: RAISE FND_API.G_EXC_ERROR;
3766: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3767: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3768: END IF;
3761: FND_LOG.string(l_log_statement, l_debug, 'After Delete_Reservation API...ret_status['||x_return_status||']');
3762: END IF;
3763:
3764: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3765: RAISE FND_API.G_EXC_ERROR;
3766: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3767: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3768: END IF;
3769:
3762: END IF;
3763:
3764: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3765: RAISE FND_API.G_EXC_ERROR;
3766: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3767: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3768: END IF;
3769:
3770: END IF;
3763:
3764: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3765: RAISE FND_API.G_EXC_ERROR;
3766: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3767: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3768: END IF;
3769:
3770: END IF;
3771:
3788:
3789: AHL_MM_RESERVATIONS_PVT.PROCESS_RESERVATION
3790: (
3791: p_api_version => 1.0,
3792: p_init_msg_list => FND_API.G_FALSE,
3793: p_commit => FND_API.G_FALSE,
3794: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3795: p_module_type => null,
3796: x_return_status => x_return_status,
3789: AHL_MM_RESERVATIONS_PVT.PROCESS_RESERVATION
3790: (
3791: p_api_version => 1.0,
3792: p_init_msg_list => FND_API.G_FALSE,
3793: p_commit => FND_API.G_FALSE,
3794: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3795: p_module_type => null,
3796: x_return_status => x_return_status,
3797: x_msg_count => x_msg_count,
3790: (
3791: p_api_version => 1.0,
3792: p_init_msg_list => FND_API.G_FALSE,
3793: p_commit => FND_API.G_FALSE,
3794: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3795: p_module_type => null,
3796: x_return_status => x_return_status,
3797: x_msg_count => x_msg_count,
3798: x_msg_data => x_msg_data,
3804: IF (l_log_statement >= l_log_current_level) THEN
3805: FND_LOG.string(l_log_statement, l_debug, 'After Process_Reservation API...ret_status['||x_return_status||']');
3806: END IF;
3807:
3808: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3809: RAISE FND_API.G_EXC_ERROR;
3810: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3811: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3812: END IF;
3805: FND_LOG.string(l_log_statement, l_debug, 'After Process_Reservation API...ret_status['||x_return_status||']');
3806: END IF;
3807:
3808: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3809: RAISE FND_API.G_EXC_ERROR;
3810: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3811: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3812: END IF;
3813:
3806: END IF;
3807:
3808: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3809: RAISE FND_API.G_EXC_ERROR;
3810: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3811: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3812: END IF;
3813:
3814: END IF;
3807:
3808: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3809: RAISE FND_API.G_EXC_ERROR;
3810: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3811: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3812: END IF;
3813:
3814: END IF;
3815:
3833:
3834: AHL_VWP_TASKS_PVT.Delete_Task
3835: (
3836: p_api_version => 1.0,
3837: p_init_msg_list => FND_API.G_FALSE,
3838: p_commit => FND_API.G_FALSE,
3839: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3840: p_module_type => NULL,
3841: p_Visit_Task_Id => l_visit_task_id,
3834: AHL_VWP_TASKS_PVT.Delete_Task
3835: (
3836: p_api_version => 1.0,
3837: p_init_msg_list => FND_API.G_FALSE,
3838: p_commit => FND_API.G_FALSE,
3839: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3840: p_module_type => NULL,
3841: p_Visit_Task_Id => l_visit_task_id,
3842: x_return_status => x_return_status,
3835: (
3836: p_api_version => 1.0,
3837: p_init_msg_list => FND_API.G_FALSE,
3838: p_commit => FND_API.G_FALSE,
3839: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
3840: p_module_type => NULL,
3841: p_Visit_Task_Id => l_visit_task_id,
3842: x_return_status => x_return_status,
3843: x_msg_count => x_msg_count,
3847: IF (l_log_statement >= l_log_current_level) THEN
3848: FND_LOG.string(l_log_statement, l_debug, 'After Delete_Task API...ret_status['||x_return_status||']');
3849: END IF;
3850:
3851: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3852: RAISE FND_API.G_EXC_ERROR;
3853: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3854: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3855: END IF;
3848: FND_LOG.string(l_log_statement, l_debug, 'After Delete_Task API...ret_status['||x_return_status||']');
3849: END IF;
3850:
3851: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3852: RAISE FND_API.G_EXC_ERROR;
3853: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3854: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3855: END IF;
3856:
3849: END IF;
3850:
3851: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3852: RAISE FND_API.G_EXC_ERROR;
3853: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3854: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3855: END IF;
3856:
3857: END LOOP;
3850:
3851: IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3852: RAISE FND_API.G_EXC_ERROR;
3853: ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3854: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3855: END IF;
3856:
3857: END LOOP;
3858: CLOSE Get_Child_Summary_Tasks;
3866: fnd_log.string(l_log_statement, l_debug,'End of Perform Return Txn API');
3867: END IF;
3868:
3869: -- Standard check of p_commit
3870: IF FND_API.To_Boolean(p_commit) THEN
3871: COMMIT WORK;
3872: END IF;
3873:
3874:
3872: END IF;
3873:
3874:
3875: EXCEPTION
3876: WHEN FND_API.G_EXC_ERROR THEN
3877: x_return_status := FND_API.G_RET_STS_ERROR;
3878: Rollback to PERFORM_RETURN_TXN_PVT;
3879: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3880: p_data => x_msg_data,
3873:
3874:
3875: EXCEPTION
3876: WHEN FND_API.G_EXC_ERROR THEN
3877: x_return_status := FND_API.G_RET_STS_ERROR;
3878: Rollback to PERFORM_RETURN_TXN_PVT;
3879: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3880: p_data => x_msg_data,
3881: p_encoded => fnd_api.g_false);
3877: x_return_status := FND_API.G_RET_STS_ERROR;
3878: Rollback to PERFORM_RETURN_TXN_PVT;
3879: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3880: p_data => x_msg_data,
3881: p_encoded => fnd_api.g_false);
3882:
3883: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3884: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3885: Rollback to PERFORM_RETURN_TXN_PVT;
3879: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3880: p_data => x_msg_data,
3881: p_encoded => fnd_api.g_false);
3882:
3883: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3884: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3885: Rollback to PERFORM_RETURN_TXN_PVT;
3886: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3887: p_data => x_msg_data,
3880: p_data => x_msg_data,
3881: p_encoded => fnd_api.g_false);
3882:
3883: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3884: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3885: Rollback to PERFORM_RETURN_TXN_PVT;
3886: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3887: p_data => x_msg_data,
3888: p_encoded => fnd_api.g_false);
3884: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3885: Rollback to PERFORM_RETURN_TXN_PVT;
3886: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3887: p_data => x_msg_data,
3888: p_encoded => fnd_api.g_false);
3889:
3890: WHEN OTHERS THEN
3891: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3892: Rollback to PERFORM_RETURN_TXN_PVT;
3887: p_data => x_msg_data,
3888: p_encoded => fnd_api.g_false);
3889:
3890: WHEN OTHERS THEN
3891: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3892: Rollback to PERFORM_RETURN_TXN_PVT;
3893: fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3894: p_procedure_name => 'Perform_Return_Txn',
3895: p_error_text => SQLERRM);
3894: p_procedure_name => 'Perform_Return_Txn',
3895: p_error_text => SQLERRM);
3896: FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3897: p_data => x_msg_data,
3898: p_encoded => fnd_api.g_false);
3899:
3900: END PERFORM_RETURN_TXN;
3901: ---------------------------------------------------------------------------------------------------------
3902: