[Home] [Help]
PACKAGE BODY: APPS.INV_CREATE_MOVE_ORDER_PVT
Source
1 PACKAGE BODY inv_create_move_order_pvt AS
2 /* $Header: INVTOMMB.pls 120.0 2005/05/25 04:58:37 appldev noship $ */
3
4 -- Global constant holding the package name
5
6 g_pkg_name CONSTANT VARCHAR2(30) := 'INV_Create_Move_Order_PVT';
7 g_version_printed BOOLEAN := FALSE;
8
9 PROCEDURE print_debug(p_message IN VARCHAR2, p_module IN VARCHAR2, p_level NUMBER DEFAULT 9) IS
10 BEGIN
11 IF NOT g_version_printed THEN
12 inv_log_util.TRACE('$Header: INVTOMMB.pls 120.0 2005/05/25 04:58:37 appldev noship $', g_pkg_name, 9);
13 g_version_printed := TRUE;
14 END IF;
15
16 inv_log_util.TRACE(p_message, g_pkg_name || '.' || p_module, p_level);
17 END;
18
19 --
20 -- Create_Move_Order : This procedure would create a move order from
21 -- minmax planning with source type subinventory transfer
22 -- or replenishment
23
24 FUNCTION create_move_orders(
25 p_item_id IN NUMBER
26 , p_quantity IN NUMBER
27 , p_secondary_quantity IN NUMBER DEFAULT NULL --INVCONV changes
28 , p_need_by_date IN DATE
29 , p_primary_uom_code IN VARCHAR2
30 , p_secondary_uom_code IN VARCHAR2 DEFAULT NULL --INVCONV changes
31 , p_grade_code IN VARCHAR2 DEFAULT NULL --INVCONV changes
32 , p_user_id IN NUMBER
33 , p_organization_id IN NUMBER
34 , p_src_type IN NUMBER
35 , p_src_subinv IN VARCHAR2
36 , p_subinv IN VARCHAR2
37 , p_locator_id IN NUMBER DEFAULT NULL
38 , p_reference IN VARCHAR2 DEFAULT NULL
39 , p_reference_source IN NUMBER DEFAULT NULL
40 , p_reference_type IN NUMBER DEFAULT NULL
41 )
42 RETURN VARCHAR2 IS
43 l_x_trohdr_rec inv_move_order_pub.trohdr_rec_type;
44 l_x_trolin_tbl inv_move_order_pub.trolin_tbl_type;
45 l_trohdr_rec inv_move_order_pub.trohdr_rec_type;
46 l_trolin_tbl inv_move_order_pub.trolin_tbl_type;
47 l_return_status VARCHAR2(1) := fnd_api.g_ret_sts_success;
48 l_msg_count NUMBER;
49 l_msg_data VARCHAR2(240);
50 msg VARCHAR2(2000);
51 l_header_id NUMBER := fnd_api.g_miss_num;
52 l_line_num NUMBER := 0;
53 l_order_count NUMBER := 1;
54 l_approval NUMBER;
55 l_debug NUMBER := NVL(fnd_profile.VALUE('INV_DEBUG_TRACE'), 0);
56 l_module_name CONSTANT VARCHAR2(30) := 'Create_move_orders';
57 BEGIN
58 /*inv_debug.message('In create transfer order');*/
59 IF l_debug = 1 THEN
60 print_debug('Input Parameters are', l_module_name, 3);
61 print_debug('p_item_id => ' || p_item_id, l_module_name, 3);
62 print_debug('p_quantity => ' || p_quantity, l_module_name, 3);
63 print_debug('p_need_by_date => ' || p_need_by_date, l_module_name, 3);
64 print_debug('p_primary_uom_code => ' || p_primary_uom_code, l_module_name, 3);
65 print_debug('p_user_id => ' || p_user_id, l_module_name, 3);
66 print_debug('p_organization_id => ' || p_organization_id, l_module_name, 3);
67 print_debug('p_src_type => ' || p_src_type, l_module_name, 3);
68 print_debug('p_src_subinv => ' || p_src_subinv, l_module_name, 3);
69 print_debug('p_subinv => ' || p_subinv, l_module_name, 3);
70 print_debug('p_locator_id => ' || p_locator_id, l_module_name, 3);
71 print_debug('p_reference => ' || p_reference, l_module_name, 3);
72 print_debug('p_reference_source => ' || p_reference_source, l_module_name, 3);
73 print_debug('p_reference_type => ' || p_reference_type, l_module_name, 3);
74 END IF;
75
76 --
77 -- From now onwards(Patchset J), Move Orders should also honor
78 -- the profile value set at the profile "INV: RC Requisition Approval"
79 -- This profile can have 3 values:
80 -- (Lookup Type 'MTL_REQUISITION_APPROVAL' defined in MFG_LOOKUPS)
81 -- 1- Pre-approved
82 -- 2- Pre-approve move orders only (Incomplete)
83 -- 3- Approval Required
84 --
85 l_approval := to_number(nvl(FND_PROFILE.VALUE('RC_REQUISITION_APPROVAL'),'2'));
86 IF l_debug = 1 THEN
87 print_debug('Approval Status profile is: ' || l_approval
88 ,l_module_name
89 ,3);
90 END IF;
91 --
92 -- Converting these codes to the ones defined in MFG_LOOKUPS under the
93 -- lookup type'MTL_TXN_REQUEST_STATUS'.
94 -- IF l_approval = 3 THEN
95 -- l_approval := 1; -- Incomplete
96 -- ELSE
97 -- l_approval := 7; -- Pre-approved
98 -- END IF;
99 --
100 IF l_approval = 3 THEN
101 l_approval := 1; -- Incomplete
102 ELSE
103 l_approval := 7; -- Pre Approved
104 END IF;
105 IF l_debug = 1 THEN
106 print_debug('Approval Status for the MO Header and Lines : ' || l_approval
107 ,l_module_name
108 ,3);
109 END IF;
110
111 l_trohdr_rec.created_by := p_user_id;
112 l_trohdr_rec.creation_date := SYSDATE;
113 l_trohdr_rec.date_required := p_need_by_date;
114 l_trohdr_rec.from_subinventory_code := p_src_subinv;
115 l_trohdr_rec.header_status := l_approval;
116 l_trohdr_rec.last_updated_by := p_user_id;
117 l_trohdr_rec.last_update_date := SYSDATE;
118 l_trohdr_rec.last_update_login := p_user_id;
119 l_trohdr_rec.organization_id := p_organization_id;
120 l_trohdr_rec.status_date := SYSDATE;
121 l_trohdr_rec.to_subinventory_code := p_subinv;
122 l_trohdr_rec.move_order_type := inv_globals.g_move_order_replenishment;
123 l_trohdr_rec.transaction_type_id := inv_globals.g_type_transfer_order_subxfr;
124 l_trohdr_rec.db_flag := fnd_api.g_true;
125 l_trohdr_rec.operation := inv_globals.g_opr_create;
126 l_line_num := l_line_num + 1;
127 l_trolin_tbl(l_order_count).created_by := fnd_global.user_id;
128 l_trolin_tbl(l_order_count).creation_date := SYSDATE;
129 l_trolin_tbl(l_order_count).date_required := p_need_by_date;
130 l_trolin_tbl(l_order_count).from_subinventory_code := p_src_subinv;
131 l_trolin_tbl(l_order_count).inventory_item_id := p_item_id;
132 l_trolin_tbl(l_order_count).last_updated_by := fnd_global.user_id;
133 l_trolin_tbl(l_order_count).last_update_date := SYSDATE;
134 l_trolin_tbl(l_order_count).last_update_login := fnd_global.login_id;
135 l_trolin_tbl(l_order_count).line_id := fnd_api.g_miss_num;
136 l_trolin_tbl(l_order_count).line_number := l_line_num;
137 l_trolin_tbl(l_order_count).line_status := l_approval;
138 l_trolin_tbl(l_order_count).organization_id := p_organization_id;
139 l_trolin_tbl(l_order_count).quantity := p_quantity;
140 l_trolin_tbl(l_order_count).secondary_quantity := p_secondary_quantity; -- INVCONV changes
141 l_trolin_tbl(l_order_count).status_date := SYSDATE;
142 l_trolin_tbl(l_order_count).to_subinventory_code := p_subinv;
143 l_trolin_tbl(l_order_count).uom_code := p_primary_uom_code;
144 l_trolin_tbl(l_order_count).secondary_uom := p_secondary_uom_code; -- INVCONV changes
145 l_trolin_tbl(l_order_count).grade_code := p_grade_code; -- INVCONV changes
146 l_trolin_tbl(l_order_count).transaction_type_id := inv_globals.g_type_transfer_order_subxfr;
147
148 l_trolin_tbl(l_order_count).db_flag := fnd_api.g_true;
149 l_trolin_tbl(l_order_count).operation := inv_globals.g_opr_create;
150
151 /*Patchset J:Enhancements:Health Care Project*/
152 IF (inv_control.g_current_release_level >= inv_release.g_j_release_level) THEN
153 print_debug('Patchset J:PAR replenish Counts Project', l_module_name, 9);
154 l_trolin_tbl(l_order_count).REFERENCE := p_reference;
155 l_trolin_tbl(l_order_count).reference_id := p_reference_source;
156
157 IF p_reference_type = 10 THEN
158 l_trolin_tbl(l_order_count).reference_type_code := inv_transfer_order_pvt.g_ref_type_repl_count;
159 ELSE
160 l_trolin_tbl(l_order_count).reference_type_code := inv_transfer_order_pvt.g_ref_type_reord_point;
161 END IF;
162
163 l_trolin_tbl(l_order_count).to_locator_id := p_locator_id;
164 END IF;
165
166 /*inv_debug.message('calling inv_transfer_order_pvt.process_transfer_order');*/
167 inv_transfer_order_pvt.process_transfer_order(
168 p_api_version_number => 1.0
169 , p_init_msg_list => 'T'
170 , x_return_status => l_return_status
171 , x_msg_count => l_msg_count
172 , x_msg_data => l_msg_data
173 , p_trohdr_rec => l_trohdr_rec
174 , p_trolin_tbl => l_trolin_tbl
175 , x_trohdr_rec => l_x_trohdr_rec
176 , x_trolin_tbl => l_x_trolin_tbl
177 );
178
179 IF (l_debug = 1) THEN
180 print_debug('Return status from Process Transfer Order is ' || l_return_status, l_module_name, 9);
181 END IF;
182
183 IF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
184 fnd_msg_pub.add_exc_msg(g_pkg_name, 'Create_move_orders');
185 RAISE fnd_api.g_exc_error;
186 ELSIF l_return_status = fnd_api.g_ret_sts_error THEN
187 fnd_msg_pub.add_exc_msg(g_pkg_name, 'Create_move_orders');
188 RAISE fnd_api.g_exc_error;
189 END IF;
190
191 RETURN l_return_status;
192 EXCEPTION
193 WHEN fnd_api.g_exc_error THEN
194 RAISE fnd_api.g_exc_error;
195 WHEN OTHERS THEN
196 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
197 fnd_msg_pub.add_exc_msg(g_pkg_name, 'Create_Move_Orders');
198 END IF;
199
200 RAISE fnd_api.g_exc_unexpected_error;
201 END create_move_orders;
202 END inv_create_move_order_pvt;