DBA Data[Home] [Help]

PACKAGE BODY: APPS.INV_FLEX_LOT_ALLOCATION_PUB

Source


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;