1 PACKAGE BODY INV_FLEX_LOT_ALLOCATION_PUB AS
2 /* $Header: INVFLAPB.pls 120.0.12020000.11 2013/05/20 07:11:08 ptian noship $ */
3
4 PROCEDURE print_debug(p_err_msg VARCHAR2) IS
5 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
6 l_pkg_name VARCHAR2(100) := 'INV_FLEX_LOT_ALLOCATION_PUB:';
7 BEGIN
8 IF (l_debug = 1) THEN
9 inv_mobile_helper_functions.tracelog(p_err_msg => p_err_msg, p_module => l_pkg_name, p_level => 9);
10 END IF;
11 END print_debug;
12
13 FUNCTION GET_ALLOCATE_LOT_FLAG(P_ORGANIZATION_ID IN NUMBER,
14 P_MOVE_ORDER_LINE_ID IN NUMBER DEFAULT NULL,
15 P_TRANSACTION_TEMP_ID IN NUMBER DEFAULT NULL,
16 P_INVENTORY_ITEM_ID IN NUMBER DEFAULT NULL,
17 P_SUBINVENTORY_CODE IN VARCHAR2 DEFAULT NULL,
18 P_LOCATOR_ID IN NUMBER DEFAULT NULL,
19 P_REVISION IN VARCHAR2 DEFAULT NULL,
20 P_LPN_ID IN NUMBER DEFAULT NULL) RETURN VARCHAR2 IS
21 l_allocate_lot_flag VARCHAR2(1) := 'Y';
22 L_RELEASE_NAME VARCHAR2(20);
23 l_existSgstWithoutLot VARCHAR2(1) := 'N'; --Bug 16780709
24 BEGIN
25 print_debug('Into Stub API');
26 print_debug('P_ORGANIZATION_ID:'||P_ORGANIZATION_ID);
27 print_debug('P_MOVE_ORDER_LINE_ID:'||P_MOVE_ORDER_LINE_ID);
28 print_debug('P_TRANSACTION_TEMP_ID:'||P_TRANSACTION_TEMP_ID);
29 print_debug('P_INVENTORY_ITEM_ID:'||P_INVENTORY_ITEM_ID);
30 print_debug('P_SUBINVENTORY_CODE:'||P_SUBINVENTORY_CODE);
31 print_debug('P_LOCATOR_ID:'||P_LOCATOR_ID);
32 print_debug('P_REVISION:'||P_REVISION);
33 print_debug('P_LPN_ID:'||P_LPN_ID);
34
35 --If apps version is 12.1.x,12.2.0,12.2.1, Then keep original logic(Always Allocate Lot),Return Y
36 --Else(version = 12.2.2 or higher),return actual parameter value
37 BEGIN
38 SELECT RELEASE_NAME INTO L_RELEASE_NAME FROM FND_PRODUCT_GROUPS WHERE ROWNUM = 1;
39 print_debug('RELEASE_NAME:'||L_RELEASE_NAME);
40 EXCEPTION
41 WHEN OTHERS THEN
42 L_RELEASE_NAME := '12.1';
43 END;
44
45 IF L_RELEASE_NAME in ('12.2.0','12.2.1') OR SubStr(TRIM(L_RELEASE_NAME),1,4) = '12.1' THEN
46 RETURN 'Y';
47 END IF;
48
49 --If an item already has allocation without lots, we will not allocate lots for new allocations
50 IF inv_cache.set_item_rec(P_ORGANIZATION_ID, P_INVENTORY_ITEM_ID) THEN
51 IF inv_cache.item_rec.lot_control_code = 2 THEN
52 begin
53 select 'Y' into l_existSgstWithoutLot
54 from MTL_MATERIAL_TRANSACTIONS_TEMP MMTT
55 where INVENTORY_ITEM_ID = P_INVENTORY_ITEM_ID
56 and ORGANIZATION_ID = P_ORGANIZATION_ID
57 and TRANSACTION_STATUS = 2 --ALLOCATED
58 and NOT EXISTS (SELECT 1 FROM MTL_TRANSACTION_LOTS_TEMP MTLT WHERE MTLT.TRANSACTION_TEMP_ID = MMTT.TRANSACTION_TEMP_ID)
59 AND ROWNUM = 1;
60 EXCEPTION
61 WHEN OTHERS THEN
62 l_existSgstWithoutLot := 'N';
63 END;
64 IF l_existSgstWithoutLot = 'Y' THEN
65 print_debug('The item already has allocation without lots, we will not allocate lots for new allocations');
66 RETURN 'N';
67 END IF;
68 END IF;
69 END IF;
70
71 --Get real allocate_lot_flag value
72 IF inv_cache.set_org_rec(p_organization_id) THEN
73 --Bug 16780709,Does Not enable 'Optional Lot Allocation' For OPM Organizations
74 IF NVL(inv_cache.org_rec.process_enabled_flag,'N') = 'Y' THEN
75 print_debug('OPM Organization,Does Not enable Optional Lot Allocation Feature');
76 RETURN 'Y';
77 END IF;
78
79 l_allocate_lot_flag := NVL (inv_cache.org_rec.allocate_lot_flag,'Y');
80 END IF;
81
82
83 --User Stub Code goes here to overwrite org parameter
84
85
86 print_debug('Returning Real mtl_parameters.allocate_lot_flag value:'||l_allocate_lot_flag);
87 RETURN l_allocate_lot_flag;
88
89 END;
90
91 PROCEDURE SET_LOT_VALIDATION(P_LOT_VALIDATION IN VARCHAR2) IS
92 BEGIN
93 INV_FLEX_LOT_ALLOCATION_PUB.G_LOT_VALIDATION := P_LOT_VALIDATION;
94
95 END SET_LOT_VALIDATION;
96
97
98 END INV_FLEX_LOT_ALLOCATION_PUB;