1: PACKAGE BODY INV_MATERIAL_STATUS_PKG as
2: /* $Header: INVMSPVB.pls 120.18.12020000.3 2012/09/11 10:36:34 rkatoori ship $ */
3:
4: G_PKG_NAME CONSTANT VARCHAR2(30) := 'INV_MATERIAL_STATUS_PKG';
5: -- BEGIN SCHANDRU INVERES
1: PACKAGE BODY INV_MATERIAL_STATUS_PKG as
2: /* $Header: INVMSPVB.pls 120.18.12020000.3 2012/09/11 10:36:34 rkatoori ship $ */
3:
4: G_PKG_NAME CONSTANT VARCHAR2(30) := 'INV_MATERIAL_STATUS_PKG';
5: -- BEGIN SCHANDRU INVERES
6: g_eres_enabled VARCHAR2(3) := NVL(fnd_profile.VALUE('EDR_ERES_ENABLED'), 'N');
7: -- END SCHANDRU INVERES
8: FUNCTION status_assigned(p_status_id IN NUMBER) return Boolean
288: Into l_status_group_id FROM dual;
289: l_status_rec.group_id := l_status_group_id;
290: END IF;
291: --ERES Deferred
292: INV_MATERIAL_STATUS_PKG.Initialize_status_rec(l_status_rec);
293:
294: INSERT INTO MTL_MATERIAL_STATUS_HISTORY
295: (
296: STATUS_UPDATE_ID
618: l_return_status BOOLEAN;
619:
620: BEGIN
621:
622: inv_trx_util_pub.TRACE('inside non-overloaded validate_mtstatus ', 'INV_MATERIAL_STATUS_PKG', 14);
623:
624: l_return_status := validate_mtstatus(
625: p_old_status_id,
626: p_new_status_id,
630: p_inventory_item_id,
631: p_lot_number);
632:
633: if (l_return_status) then
634: inv_trx_util_pub.TRACE('validate_mtstatus: returning true', 'INV_MATERIAL_STATUS_PKG', 14);
635: else
636: inv_trx_util_pub.TRACE('validate_mtstatus: returning false', 'INV_MATERIAL_STATUS_PKG', 14);
637: end if;
638:
632:
633: if (l_return_status) then
634: inv_trx_util_pub.TRACE('validate_mtstatus: returning true', 'INV_MATERIAL_STATUS_PKG', 14);
635: else
636: inv_trx_util_pub.TRACE('validate_mtstatus: returning false', 'INV_MATERIAL_STATUS_PKG', 14);
637: end if;
638:
639: return l_return_status;
640:
660: l_dummy_param NUMBER := 1;
661:
662: BEGIN
663:
664: inv_trx_util_pub.TRACE('inside 1st overloaded validate_mtstatus ', 'INV_MATERIAL_STATUS_PKG', 14);
665:
666: l_return_status := validate_mtstatus(
667: p_old_status_id,
668: p_new_status_id,
674: l_dummy_param,
675: p_lpn_id); -- Bug 14240066
676:
677: if (l_return_status) then
678: inv_trx_util_pub.TRACE('1st validate_mtstatus: returning true', 'INV_MATERIAL_STATUS_PKG', 14);
679: else
680: inv_trx_util_pub.TRACE('1st validate_mtstatus: returning false', 'INV_MATERIAL_STATUS_PKG', 14);
681: end if;
682:
676:
677: if (l_return_status) then
678: inv_trx_util_pub.TRACE('1st validate_mtstatus: returning true', 'INV_MATERIAL_STATUS_PKG', 14);
679: else
680: inv_trx_util_pub.TRACE('1st validate_mtstatus: returning false', 'INV_MATERIAL_STATUS_PKG', 14);
681: end if;
682:
683: if (NOT l_return_status) then
684: -- ER Change: Calling the hook
681: end if;
682:
683: if (NOT l_return_status) then
684: -- ER Change: Calling the hook
685: inv_trx_util_pub.TRACE('validate_mtstatus: Calling the hook', 'INV_MATERIAL_STATUS_PKG', 14);
686: inv_material_status_hook.validate_rsv_matstatus(p_old_status_id,
687: p_new_status_id,
688: p_subinventory_code,
689: p_locator_id,
692: p_lot_number,
693: l_return_status);
694:
695: if (l_return_status) then
696: inv_trx_util_pub.TRACE('Hook returned true', 'INV_MATERIAL_STATUS_PKG', 14);
697: else
698: inv_trx_util_pub.TRACE('Hook returned false', 'INV_MATERIAL_STATUS_PKG', 14);
699: end if;
700:
694:
695: if (l_return_status) then
696: inv_trx_util_pub.TRACE('Hook returned true', 'INV_MATERIAL_STATUS_PKG', 14);
697: else
698: inv_trx_util_pub.TRACE('Hook returned false', 'INV_MATERIAL_STATUS_PKG', 14);
699: end if;
700:
701: end if;
702:
703: return l_return_status;
704:
705: EXCEPTION
706: when others then
707: inv_trx_util_pub.TRACE('Exception was raised', 'INV_MATERIAL_STATUS_PKG', 14);
708: return TRUE;
709: END;
710:
711: /* Bug 6837479: Modified the function to properly check for existing
852: l_default_status_id NUMBER; /*bug 12430080 */
853:
854: BEGIN
855:
856: inv_trx_util_pub.TRACE('inside 2nd overloaded validate_mtstatus ', 'INV_MATERIAL_STATUS_PKG', 14);
857: inv_trx_util_pub.TRACE('validate_mtstatus: old status id: '||p_old_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
858: inv_trx_util_pub.TRACE('validate_mtstatus: new status id: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
859: inv_trx_util_pub.TRACE('validate_mtstatus: organization id: '||p_organization_id, 'INV_MATERIAL_STATUS_PKG', 14);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
853:
854: BEGIN
855:
856: inv_trx_util_pub.TRACE('inside 2nd overloaded validate_mtstatus ', 'INV_MATERIAL_STATUS_PKG', 14);
857: inv_trx_util_pub.TRACE('validate_mtstatus: old status id: '||p_old_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
858: inv_trx_util_pub.TRACE('validate_mtstatus: new status id: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
859: inv_trx_util_pub.TRACE('validate_mtstatus: organization id: '||p_organization_id, 'INV_MATERIAL_STATUS_PKG', 14);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
854: BEGIN
855:
856: inv_trx_util_pub.TRACE('inside 2nd overloaded validate_mtstatus ', 'INV_MATERIAL_STATUS_PKG', 14);
857: inv_trx_util_pub.TRACE('validate_mtstatus: old status id: '||p_old_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
858: inv_trx_util_pub.TRACE('validate_mtstatus: new status id: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
859: inv_trx_util_pub.TRACE('validate_mtstatus: organization id: '||p_organization_id, 'INV_MATERIAL_STATUS_PKG', 14);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
862: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
855:
856: inv_trx_util_pub.TRACE('inside 2nd overloaded validate_mtstatus ', 'INV_MATERIAL_STATUS_PKG', 14);
857: inv_trx_util_pub.TRACE('validate_mtstatus: old status id: '||p_old_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
858: inv_trx_util_pub.TRACE('validate_mtstatus: new status id: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
859: inv_trx_util_pub.TRACE('validate_mtstatus: organization id: '||p_organization_id, 'INV_MATERIAL_STATUS_PKG', 14);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
862: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
863: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
856: inv_trx_util_pub.TRACE('inside 2nd overloaded validate_mtstatus ', 'INV_MATERIAL_STATUS_PKG', 14);
857: inv_trx_util_pub.TRACE('validate_mtstatus: old status id: '||p_old_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
858: inv_trx_util_pub.TRACE('validate_mtstatus: new status id: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
859: inv_trx_util_pub.TRACE('validate_mtstatus: organization id: '||p_organization_id, 'INV_MATERIAL_STATUS_PKG', 14);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
862: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
863: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
864: inv_trx_util_pub.TRACE('validate_mtstatus: dummy parameter: '||p_dummy_param, 'INV_MATERIAL_STATUS_PKG', 14);
857: inv_trx_util_pub.TRACE('validate_mtstatus: old status id: '||p_old_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
858: inv_trx_util_pub.TRACE('validate_mtstatus: new status id: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
859: inv_trx_util_pub.TRACE('validate_mtstatus: organization id: '||p_organization_id, 'INV_MATERIAL_STATUS_PKG', 14);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
862: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
863: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
864: inv_trx_util_pub.TRACE('validate_mtstatus: dummy parameter: '||p_dummy_param, 'INV_MATERIAL_STATUS_PKG', 14);
865: inv_trx_util_pub.TRACE('validate_mtstatus: lpn_id: '||p_lpn_id, 'INV_MATERIAL_STATUS_PKG', 14); -- Bug 14240066
858: inv_trx_util_pub.TRACE('validate_mtstatus: new status id: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
859: inv_trx_util_pub.TRACE('validate_mtstatus: organization id: '||p_organization_id, 'INV_MATERIAL_STATUS_PKG', 14);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
862: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
863: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
864: inv_trx_util_pub.TRACE('validate_mtstatus: dummy parameter: '||p_dummy_param, 'INV_MATERIAL_STATUS_PKG', 14);
865: inv_trx_util_pub.TRACE('validate_mtstatus: lpn_id: '||p_lpn_id, 'INV_MATERIAL_STATUS_PKG', 14); -- Bug 14240066
866:
859: inv_trx_util_pub.TRACE('validate_mtstatus: organization id: '||p_organization_id, 'INV_MATERIAL_STATUS_PKG', 14);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
862: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
863: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
864: inv_trx_util_pub.TRACE('validate_mtstatus: dummy parameter: '||p_dummy_param, 'INV_MATERIAL_STATUS_PKG', 14);
865: inv_trx_util_pub.TRACE('validate_mtstatus: lpn_id: '||p_lpn_id, 'INV_MATERIAL_STATUS_PKG', 14); -- Bug 14240066
866:
867: OPEN cur_mt_status(p_old_status_id,p_new_status_id);
860: inv_trx_util_pub.TRACE('validate_mtstatus: inventory item id: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
862: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
863: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
864: inv_trx_util_pub.TRACE('validate_mtstatus: dummy parameter: '||p_dummy_param, 'INV_MATERIAL_STATUS_PKG', 14);
865: inv_trx_util_pub.TRACE('validate_mtstatus: lpn_id: '||p_lpn_id, 'INV_MATERIAL_STATUS_PKG', 14); -- Bug 14240066
866:
867: OPEN cur_mt_status(p_old_status_id,p_new_status_id);
868: FETCH cur_mt_status INTO l_dummy;
861: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
862: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
863: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
864: inv_trx_util_pub.TRACE('validate_mtstatus: dummy parameter: '||p_dummy_param, 'INV_MATERIAL_STATUS_PKG', 14);
865: inv_trx_util_pub.TRACE('validate_mtstatus: lpn_id: '||p_lpn_id, 'INV_MATERIAL_STATUS_PKG', 14); -- Bug 14240066
866:
867: OPEN cur_mt_status(p_old_status_id,p_new_status_id);
868: FETCH cur_mt_status INTO l_dummy;
869: IF cur_mt_status%NOTFOUND THEN
868: FETCH cur_mt_status INTO l_dummy;
869: IF cur_mt_status%NOTFOUND THEN
870: CLOSE cur_mt_status;
871:
872: inv_trx_util_pub.TRACE('validate_mtstatus: New status also allows reservation: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
873:
874: RETURN TRUE;
875: END IF; --cur_mt_status
876: CLOSE cur_mt_status;
874: RETURN TRUE;
875: END IF; --cur_mt_status
876: CLOSE cur_mt_status;
877:
878: inv_trx_util_pub.TRACE('validate_mtstatus: New status does not allow reservation: '||p_new_status_id, 'INV_MATERIAL_STATUS_PKG', 14);
879:
880: /* Validating the organization material status for bug 1243008 */
881: SELECT default_status_id INTO l_default_status_id
882: FROM mtl_parameters
882: FROM mtl_parameters
883: WHERE organization_id = p_organization_id;
884:
885: IF l_default_status_id IS NOT NULL THEN
886: inv_trx_util_pub.TRACE('validate_mtstatus: Organization is onhand status enabled:', 'INV_MATERIAL_STATUS_PKG', 14);
887:
888: OPEN c_onhand_items(p_organization_id,p_inventory_item_id,p_subinventory_code,p_locator_id,p_lot_number,p_lpn_id); -- Bug 14240066
889: FETCH c_onhand_items INTO l_dummy;
890: IF c_onhand_items%FOUND THEN
889: FETCH c_onhand_items INTO l_dummy;
890: IF c_onhand_items%FOUND THEN
891: CLOSE c_onhand_items;
892:
893: inv_trx_util_pub.TRACE('validate_mtstatus: reservations exist for the Onhand row: ', 'INV_MATERIAL_STATUS_PKG', 14);
894:
895: RETURN FALSE;
896: END IF;
897: CLOSE c_onhand_items;
895: RETURN FALSE;
896: END IF;
897: CLOSE c_onhand_items;
898: Else
899: inv_trx_util_pub.TRACE('validate_mtstatus: Organization is Non onhand status enabled:', 'INV_MATERIAL_STATUS_PKG', 14);
900:
901: IF (p_lot_number IS NOT NULL ) THEN
902: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
903: OPEN c_lot_items(p_organization_id,p_inventory_item_id,p_lot_number);
898: Else
899: inv_trx_util_pub.TRACE('validate_mtstatus: Organization is Non onhand status enabled:', 'INV_MATERIAL_STATUS_PKG', 14);
900:
901: IF (p_lot_number IS NOT NULL ) THEN
902: inv_trx_util_pub.TRACE('validate_mtstatus: lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
903: OPEN c_lot_items(p_organization_id,p_inventory_item_id,p_lot_number);
904: FETCH c_lot_items INTO l_dummy;
905: IF c_lot_items%FOUND THEN
906: CLOSE c_lot_items;
904: FETCH c_lot_items INTO l_dummy;
905: IF c_lot_items%FOUND THEN
906: CLOSE c_lot_items;
907:
908: inv_trx_util_pub.TRACE('validate_mtstatus: reservations exist for the lot number: '||p_lot_number, 'INV_MATERIAL_STATUS_PKG', 14);
909:
910: RETURN FALSE;
911: END IF;
912: CLOSE c_lot_items;
911: END IF;
912: CLOSE c_lot_items;
913:
914: ELSIF ( p_locator_id IS NOT NULL) THEN
915: inv_trx_util_pub.TRACE('validate_mtstatus: locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
916: OPEN c_locator_items(p_organization_id,p_inventory_item_id,p_locator_id);
917: FETCH c_locator_items INTO l_dummy;
918: IF c_locator_items%FOUND THEN
919: CLOSE c_locator_items;
917: FETCH c_locator_items INTO l_dummy;
918: IF c_locator_items%FOUND THEN
919: CLOSE c_locator_items;
920:
921: inv_trx_util_pub.TRACE('validate_mtstatus: reservations exist for locator id: '||p_locator_id, 'INV_MATERIAL_STATUS_PKG', 14);
922:
923: RETURN FALSE;
924: END IF;
925: CLOSE c_locator_items;
925: CLOSE c_locator_items;
926:
927: --If api is called from subinventory/locator form.
928: ELSIF (P_subinventory_code IS NOT NULL ) THEN
929: inv_trx_util_pub.TRACE('validate_mtstatus: subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
930: -- Bug 6829224: Passing item_id to the cursor
931: OPEN c_subinv_items(p_organization_id,p_inventory_item_id,p_subinventory_code);
932: FETCH c_subinv_items INTO l_dummy;
933: IF c_subinv_items%FOUND THEN
932: FETCH c_subinv_items INTO l_dummy;
933: IF c_subinv_items%FOUND THEN
934: CLOSE c_subinv_items;
935:
936: inv_trx_util_pub.TRACE('validate_mtstatus: reservations exist for the subinventory: '||p_subinventory_code, 'INV_MATERIAL_STATUS_PKG', 14);
937:
938: RETURN FALSE;
939: END IF;
940: CLOSE c_subinv_items;
939: END IF;
940: CLOSE c_subinv_items;
941:
942: ELSE
943: inv_trx_util_pub.TRACE('validate_mtstatus: checking reservatios only for the item', 'INV_MATERIAL_STATUS_PKG', 14);
944: OPEN c_items_reserv(p_organization_id,p_inventory_item_id);
945: FETCH c_items_reserv INTO l_dummy;
946: IF c_items_reserv%FOUND THEN
947: CLOSE c_items_reserv;
945: FETCH c_items_reserv INTO l_dummy;
946: IF c_items_reserv%FOUND THEN
947: CLOSE c_items_reserv;
948:
949: inv_trx_util_pub.TRACE('validate_mtstatus: reservations exist for the item: '||p_inventory_item_id, 'INV_MATERIAL_STATUS_PKG', 14);
950:
951: RETURN FALSE;
952: END IF; --c_items_reserv
953: CLOSE c_items_reserv;
953: CLOSE c_items_reserv;
954: END IF; --P_subinventory_code IS NOT NULL
955: END IF; --l_default_status_id IS NOT NULL
956:
957: inv_trx_util_pub.TRACE('2nd overloaded validate_mtstatus: returning true', 'INV_MATERIAL_STATUS_PKG', 14);
958:
959: RETURN TRUE;
960:
961: EXCEPTION
1018: END IF;
1019: END SET_MS_FLAGS;
1020: --END INVCONV kkillams
1021:
1022: END INV_MATERIAL_STATUS_PKG;